Hi, everyone. My name is Alexei Kapitov, and I will be talking about Sysbench, more specifically about some new, recently developed features that you can use to do some pretty cool things at Sysbench. I've got some introductory slides here, but I'm curious, how many people here have never used Sysbench and don't know what it is? Please raise your hand. Okay. There are some people. Thank you. So, the next few slides are for you. So, Sysbench started as an internal project in the high-performance group in MySQL AB. The very first version was written by Peter Zaitsev, and I took over the development as soon as I joined the team. It contained an SQL-level benchmark, which we called OLTP for the lack of a better name, but there was also a number of micro-benchmarks, file system-level benchmark, memory, CPU, and scheduled benchmarks. I will not be covering them in this talk. And the tool proved to be very useful in identifying performance problems, troubleshooting customer issues, or just providing repeatable test cases for other people to investigate further. And we had some external users and some external feature requests, but most of the feature requests were internal, and most of them came from Peter. Like, can you add a new option to do the same workload, but with prepared statements, or a new option to do the same workload with stored procedures, or can you add a new option to use slightly different table schema and so on and so forth? And it soon became obvious that if things would keep going this way, that Sysbench could become unmaintainable pretty soon, simply because it is impossible to have a single benchmark application covering all possible workloads and benchmark scenarios that it can come up with. In fact, the code for Sysbench was already barely maintainable by 2006 or so. And the solution to this problem that I came up with was kind of obvious, well, let's make it scriptable, right? Let users define their workloads with some high-level API or high-level language, and let Sysbench do all the heavy lifting, like managing threads, calculating, collecting and aggregating statistics, generating random numbers, providing the DB abstraction layer, because Sysbench actually supports multiple database backends. And these things are not actually as easy as it may sound, because if you want them to be fast and scalable. So, as a result, the OTP benchmarks were rewritten as lower scripts in Sysbench 0.5. Why did they choose Lua? So, Lua is incredibly fast for dynamic language. Some people call it the speed queen of dynamic languages. It's also designed to be embedded into C and C++ applications. There's a very simple straightforward protocol that can be used to call Lua functions from C code and vice versa. It's simple and elegant, but powerful at the same time. You can do pretty complex things with just a very few, very simple underlying concepts. And if you don't know Lua and I encourage you to learn it, even if you're not planning to use Sysbench, it's a beautiful language. If you need a quick start, I can recommend this link, which is titled Lua in 15 Minutes. It explains all the basic concepts in a very condensed form. So, how did this Lua scripting thing work in Sysbench? There was a number of predefined hooks called by Sysbench from C code that you could implement in your Lua scripts. And there was an API for SQL queries and random numbers and string generations written in C that you can use in your Lua scripts to call back to Sysbench. Here's an example. So, in this example, we define three hooks. The first one is prepare. This hook is called when you call Sysbench with the prepare command. The next one is, in terms of database benchmarks in the prepare hook, you will usually want to generate the dataset for your benchmark, create tables and populate it with data. The next one is a hook is called event. It's the most important one and it's the only mandatory hook which Sysbench expects you to implement. It basically defines your workload. It tells Sysbench what it should be executing in a loop for each thread. And the next hook is clean up, which is what the name says. So, it basically cleans up after a benchmark and returns the database to its original state. And here's an example. So, if you call Sysbench with the command prepare, then Sysbench will execute the prepare hook. If you call it with some command line options and the run command, then Sysbench will create the specific number of threads and each thread will be executing the event hook in a loop. Sysbench is simple, right? So, even though that API was very simple and quite limited, I know that it worked well for a wide range of use cases. I know that it was used by many individual users and companies to benchmark my scale, compare patches, compare versions, compare different branches, and also for internal QA, when people actually created their own law scrapes to simulate their workload rather than using the standard OLTP benchmarks. I stopped active development after moving to my scale development department and later to Bercone because I was busy with other tasks that did not involve using Sysbench. And starting from about 2012, I started getting reports that Sysbench itself became a scalability issue when benchmarking on some high-end hardware, like the hundreds, of course, and that kind of stuff. Finding time to look into those issues was difficult. And on top of that, I didn't even have access to hardware to look into those issues. So, even though I was aware about those issues, they stayed unresponsive for quite some time. Things changed last year when I started working again on projects that required using Sysbench on some pretty powerful hardware. And then that's when I hit all those limitations in Sysbench scalability limitations, but also some limitations with functionality. And after analyzing them, I realized that a major refactoring effort was required to address all those issues. And I understood it would be a major project. I announced the start of that project in my blog about a year ago. But I'm not very good at blogging, so I have failed to report progress. My progress on that journey is originally planned. However, I'd like to make an announcement. People usually make announcements on conferences, and I've been working hard recently to make it happen. So without further ado, the Sysbench management team is happy to announce for immediate availability the release of Sysbench 1.0. Thank you. It is, in fact, the first Sysbench release since 0.4.12. I don't even remember. It was probably released in 2006. It also closed session number one, release of Sysbench, because, yes, it was the first issue reported when I migrated Sysbench to GitHub. The reason is that Sysbench 0.5 has never been released in a formal way. It has always existed. It's just a source called branch, which worked for me and apparently for other people, but distribution packages were unhappy about it. They needed a formal release with a tag and a change log to package it and make it available in distributions. And that's why most Linux distributions, they offered this very old, outdated version of Sysbench. But now I think it will be just a matter of time for them to pick up the new release. So the new release contains a bunch of performance improvements and some shiny new features, and we'll go over them later. But let's start with performance improvements. So the first question I had to ask myself when I started working on optimizing Sysbench is how to measure the benchmark overhead. In other words, how to benchmark a benchmark utility. There may be many ways to do it. I implemented some time ago this option called MySQL Dry Run. What it does is basically it tells Sysbench to do all the work required to generate queries, but do not actually send them to the server. Just exclude the server, exclude the client library. Just let Sysbench have all CPU resources it wants and see how many transactions per second or queries per second it can generate. So this chart shows improvements in single-freight performance. As you can see, Sysbench 0.4 generates about 2 million transactions per second. Point select transactions per second in this dry run mode. Sysbench 0.5 because of the low overhead generates about twice as low on TPS. And Sysbench 0.1.0 generates more than 6 million transactions per second, dry run transactions per second. Some changes in 1.0 that made these optimizations possible include migrating from plain Lua, interpreted Lua to LuaJit, tracing just-in-time compiler for Lua. There are lots of low-level details that needed handling to integrate LuaJit properly and use it efficiently, but I don't have time to go over them right now. But basically LuaJit provides faster low-code execution and faster calls to C from LuaCode to C calls with the mechanism which is called foreign function interface provided by LuaJit. Sysbench 1.0 also has some optimizations in the main event generation loop. It has faster random numbers generator. It now uses the generator called ZoroShiro120i+, which is incredibly fast, but it also has good statistical properties. It's the fastest random number generator passing the B-crush test suite with no systematic filers. So as a result, Sysbench 1.0 is more than three times faster than the old 0.4, which was written purely in C, and it's more than six times faster than the Sysbench 0.5. What about scalability? So this chart shows some scalability improvements and there are even more dramatic than single-thread improvements. So the red line, which is Sysbench 0.4, it basically has negative scalability. The best throughput is achieved with a single thread and then adding more threads just makes things worse. Sysbench 0.5 is a little better, but still it reaches its maximum on just the number four threads. And the blue line, which is Sysbench 0.1.0, as Dimitri Kraschuk says, no comments. Some changes in 1.0 that made this improvements possible include, well, inclusion of the concurrency kit library, which is a C99 library implementing Atomics for various CPU architectures and also some lock-free and weight-free data structures and I already used them, some of them in Sysbench code. I also contribute to some patches to concurrency kit to improve Atomic support on the ARM64 architecture. There are also no moduxes at all, at least on critical code paths. And there are no shared counters. So all statistics are now calculated per thread and only aggregated when you need them, basically either for intermediate reports during the benchmark execution or for the cumulative report at the end of the benchmark. There are also a number of changes in the command line syntax. It has been simplified to improve usability. So in Sysbench 0.5 there was this weird syntax when you had to specify the path to your lower script with the double-dash test option. It was the only required option. With Sysbench 1.0 you don't have to use it. You can just specify the path without any options. Or you can now even do this. You can use the standard Linux and Unix mechanism of hash banks, just add the Sysbench hash bank as the first line of your script, make it executable, and then you don't even have to say Sysbench your script. Which is a minor prune, of course, but I think it makes Sysbench feel a lot more like a standard Unix or Linux utility. Yes, command line options. So one serious problem with Sysbench 0.5 was that if your lower script requires some command line options, then Sysbench, basically, there was no way to declare supported command line options. Instead, Sysbench just converted all command line options into global lower variables and made it available to lower scripts. So that was a nice hack, but there was one significant downside, namely if you make a typo in your command line, then there was no way to validate those kind of things because Sysbench didn't know what kind of command line options are supported by the script. I also had to handle default variables manually in your scripts, like in this example. So in Sysbench 1.0, scripts can declare their options, so Sysbench can validate them. Like in this example, you basically define a structure or a table in LowSpeak containing names of options, their descriptions, and their default values. So now if you make a typo when passing command line arguments to your script, Sysbench will actually fail with an error complaining about option being invalid. And there's also now the help command, obviously, because Sysbench can now print descriptions of available options. And of course, all bundled LowSpeak scripts declare their options and respond to the help command. It's now also possible to use the C library because of the migration to Lua.jit. So in plain Lua, Lua tries to be as portable as possible, and that's why its standard library is quite limited, which limits the number of things you can do with it. For example, if you wanted to introduce delays in your scripts, then you had to resort to hacks like this called the sleep executable from the operating system and pass the number of seconds. Some operating system support fractional number of seconds, some do not. That was ugly. So Lua.jit, the mechanism called foreign function interface, allows you to use arbitrary functions from the C library. So this is an example showing how to use the use sleep call from the C library. You just need to declare it, Lua.jit knows what arguments are accepted by the function, the type of the return value, and then you can just call that function directly from the C library. The SQL API has also been redesigned. It now has this object-oriented look and feel. For example, to create a connection, you first need to create the driver object, and the type of driver being used depends on the command line argument again. Then you can use the driver object to create connection or connections, and then you can use the connection to execute queries. Here's the simplest example showing the new API. Yes, and by the way, they also use Lua.jit FFI for better performance. So it's now possible to create multiple connections for threads with the new API, because the old Liga SQL API, this bench used some pre-created connections automatically, and it was only possible to create to have a single connection per thread. In some cases, I think it was a feature request from Rene, he wanted to test proxy SQL with some crazy number of connections, like a million of connections, and creating a separate thread for this kind of test was basically impossible. So now it's possible to create multiple connections and use them in the same thread. Result sets. It has been a long-requested feature, even though Csbench 0.5 discarded all result sets automatically. There was no way to read and process results returned by queries. And that actually worked very well, because usually in benchmarks, you don't need the results, you just need to execute queries as fast as possible. That actually processing results is acquired by some complex benchmark scenarios, for example, linkbench. Some people have tried to implement linkbench and that was the major obstacle to do that. So now you can read results and process them in your old scripts. Let's see histograms. So Csbench has always had this data structure, an internal data structure called histograms to provide personal statistics for latency, but it has never been exposed to user. Now Csbench 1.0 has this option called histogram. If you specify it, then you will have this nice detrace like latency histograms, which provide much more better visibility into latency distribution than just percentile values. And you get it for free, because Csbench maintains this structure anyway to provide personal statistics. There's no extra runtime overhead to print these kind of things. Error hooks. One problem with previous Csbench version was that sometimes you need to provide special handling for certain SQL errors. For example, if your benchmark in a cluster, a gallery cluster or a group application cluster, then you need to provide special handling for situations when one of the cluster nodes becomes out of sync. And then instead of terminating the benchmark, you want to wait for that node to become available again, or you may want to re-root queries to another node. And there was a half-baked solution in Csbench 0.5, which is called onMySQL ignore errors, but it didn't work in some cases. So there's now a much more flexible way to handle errors in Csbench 1.0. Here's an example showing... Basically, you can define your own handler hooks and then decide whether that specific error is fatal or ignorable, and you can also provide some special actions for certain kinds of errors. You can now also define custom commands. In the previous Csbench versions, there was a predefined set of commands which would basically prepare, run, clean up, and help. In the new version, you can define your own commands. For example, in my personal scripts in benchmark speeds, I often wanted to force Csbench to load a specific table or specific set of tables to database cache, for example, before starting the benchmark. Previously, I had to do it in my own scripts. Well, not anymore because the bundled LTP scripts now have this custom command called pre-warm, which do that kind of things. Parallel commands. Another long-requested feature. Some people wanted to execute commands in multi-threaded contexts. The most useful example is the prepare command when you want to load the original dataset in Parallel. In the previous Csbench versions, all commands except run were executed in single-threaded contexts. Now you can declare your commands as supporting multi-threaded execution. In fact, the LTP scripts are capable of loading the original dataset in multiple threads. Another long-requested feature is that you can define your own report hooks which are invoked by Csbench whenever it wants to print some statistics. This is required to print statistics in some machine-readable format instead of the default human-readable one. Here's an example showing CsV reports. Basically, this hook receives a structure containing all statistics accumulated and aggregated by Csbench that it uses itself internally to print statistics. So you can replace the default human-readable format with CsV or JSON, like in this example. Using that data structure. But of course, it's not limited to just changing the report formats. You can do a lot of interesting things like storing the results in sometimes serious database like Prometheus or Graphite, or you can get custom performance metrics from the operating system or MySQL itself. In this example, it's a little artificial example, but I'm using it just to show how you can query performance schema for the top-weight event and print the average latency for that event along with standard metrics provided by Csbench. What about all scripts? I know that the world Csbench version has been around for a very long time, and some people have accumulated a lot of scripts to do their internal QA. I didn't want to break all those scripts in an instant with the new version, so I went an extra mile to make sure that the world scripts using the legacy API will work, and there are some regression tests to verify that. I also had to drop support for certain database drivers, mainly the Oracle Database, Drizl, Libetaj SQL. I don't know if anybody here cares about those, but the code is still there. I'm not sure if it even compiles. If you care about any of these things, then batches are also welcome. Yes, view support has also been dropped for a number of reasons, but after a long consideration, because believe it or not, the most frequently asked question about Csbench is, where can I download a Windows binary? I don't know why, but supporting Windows and moving forward makes moving forward very hard. So, the future. So far, this is the only documentation for all the new features, but I'm serious about changing this thing, because I don't want Csbench to repeat the fate of previous versions, where a lot of useful functionality was available, but people didn't know about it, so they were shy to use it. I'd like to create packages for Csbench.  Implementing Cslink-Vench, there is the link-Vench implemented in Csbench law is also possible, and I'm not the first one to come to this idea. MongoDB driver is also my to-do, and my Cslink-Vench protocol driver, which is the new key on the blog, I think it's only a matter of time before people start requesting this functionality. So, to sum up, Csbench 1.0 is probably the most significant milestone so far in Csbench development history. I hope it will be as useful for you as it already is for me, just in case the link to the GitHub project and these slides can be downloaded from my website. Thank you for listening. Does anybody have any questions? No questions? Thank you. Did it work? Thank you. Can I see yours? Maybe you won't see it. You just see me. Is that a problem? I wouldn't really like to see them here. That's... Is that your screen to just mirror, maybe? Yeah, that's what I will try to do. Let's see if we can... It seems to be right. You see, it's cut. Yeah, it's indeed just eating a bit of the slide. Can you maybe change it? No. So, I'm Daniel Van Ede. I'm here to give the talk about Ghost. Many of you might have expected Slomi Noach here, but unfortunately he couldn't make it. So, you're stuck with me. So, Slomi is the main order of Ghost. But I... and some of my colleagues also worked on some of the Ghost source code for Slomi. And we discussed ideas about Ghost. I'm working for Booking.com. What we do is we sell hotel rooms. But we also run on many, many MySQL servers. And we do many schema migrations like every day. So, maybe to start off with a question who of you are using schema migrations other than just running alter table? Okay.  So, who of you are using Perconas online schema chains? Who of you are using another tool?  So, Ghost is the online schema migration tool from GitHub. And to start off, there are a few limitations about things which are currently not working. Of course, there might change in the future because there's ongoing work. For some of these things there is a problem, but it's not merged yet. So, foreign keys don't work currently. For us, it's not too much of an issue, but for other people it might. Triggers doesn't really work. It requires row-based replication for now. And it requires a full RBR image which should not be too much of an issue for most people. Generated columns in 5.7 is not yet supported, same for like the similar feature in MariaDB. Multisource replication is not supported. Well, it probably works somewhat, but it's not really tested. So, probably don't use Ghost with multisource. If you use an active-active multi-master, then Ghost is not the tool you want to use. It might be possible to add that later. So, Ghost has much more code and is much more involved with what's going on than most of the other tools like PT Online Schema Chains. So, there is more room for error there, because it does a lot more than just monitoring stuff, basically. There's a GitHub Paste and there you can see all the issues which are and all the limitations because, well, things might change and have changed a bit already.  Well, then Percona made the online schema change tool and there were a few other similar tools to do schema changes, sometimes with like a multimaster and then switching replication. There were many tricks and the Percona online schema change tool worked really well for most of the people for a long time. So, it is a tool which served everyone well but there are also other options. Facebook also made one of the made a tool. I think it's written in PHP which limits its user a bit. So, I don't really think many people are using that outside of Facebook but they they do it in a different way which is interesting to see. Of course, these slides they were originally made by Sloamy so there might be some GitHub related stuff on there about internal operations at GitHub. I will skip over most of it. I might add some information about how we do schema migrations in booking and how we are using ghost in booking. So, this basically is a PT online schema change. You're creating a new table. You're altering the new table and then to get all the data changes applied to your new table you put like three triggers in place trigger for the insert, for the delete and for the updates. So, all the things happening on the original table will also happen on your new table. And then of course it also needs to copy rows from the old table to the new table because not all rows might be touched while the online schema change is running of course. This is what Facebook is doing with Facebook online schema change tool. So, all the insert, the delete and the update are going to a change lock table. So, it's like a three step approach because then later on all the changes are being applied on the new table which does help a bit but it also has its limitations. So, one of the things ghost does is that it's not using triggers anymore. There have been a few issues with using triggers for online schema changes. First one with sort procedures is well, they're interpreted, not compiled. So, each trigger is running and it adds a lot of overhead on the master just to execute the trigger. And of course there are a lot of issues with locks because there are locks of course on the old table, on the new table also at the eventual cut over there are some locks and the more active your server gets the higher the risk gets of actually these locks blocking your online schema change and also blocking inserts and updates on the original table because with the triggers anything which happens on the table also has to happen on the new table. If anything is blocking the new table then of course the insert cannot happen on the new table which means that your application gets an error. The other issue is that it's not possible to suspend the triggers. So, you're running your online schema change, certainly there's like a big peak in traffic and you just want to pause the online schema change for a bit. Well, that's not possible. You can stop the copying of rows from the old table to the new table but the triggers still have to be in place and they still add overhead. So, that's a bit of an issue there and I don't think I've ever seen anyone running multiple online schema changes with the PT online schema change tool in production and be actually be happy with it. I also wouldn't recommend doing that. And there's the issue about testing with the PT online schema change it's not really easy to actually test if a code change in PT online schema change does the right thing because well it has to put those triggers in place and remove them at the right moment.  So it's difficult to actually test all the online schema change tooling. So of course, Ghost does everything in a different way because there's a lot of data that's binary logs which have to be in row based format then parses the information in a binary log and applies it to the master if it's running in production mode. And of course it also still has to copy rows from the old table to the new table. So basically this is how it looks like. There are inserts, deletes and updates on the original table into the binary log. The read by Ghost writes them to the new table but if anything goes wrong with reading from the binary log and inserting on the new table the inserts on the original table will still go on so it's much more reliable in that way. Does everyone understand how this is working? Any questions? Feel free to stop me if you have any questions later on. So of course it's best to use a replica or a slave, however you want to call it. So if you're reading from the replica there's even less load on the master and the only thing the master actually sees is normal inserts in a table which is well normal operation. Nothing special going on the master. So of course we can read the binary logs from whatever thing is providing the binary logs so that really helps. And Ghost controls the whole data flow because Ghost is reading the data from the binary log and applying it and with PT online schema change the trigger is doing the work but here we have to actually read the data and write the data again. But also because we are actually touching all the data we can do some interesting things with that. And so again the writing to the master reading from a replica from binary log and then eventually we switch a replica, switch the two tables. Also the there's an interesting method about how a cutover is done with Ghost. It's quite difficult to actually log two tables and rename them autonomically. But there is a trick Ghost is using which actually ensures that when you're switching those two tables they always exist. There's no gap in which no table exists in that place. So all the writes which go on will still find a table and work normally. It's best to use a replica but it's also possible to connect to a master. And the third option here is to test on a replica which is a really unique feature for Ghost because that really allows you to run Ghost only on a slave see what it does see what the end result is compare the old table, compare the new table see if there are any changes So at booking the first Ghost version we tried we actually were testing on a slave and we always test on a slave before we run in production. So we were testing on a slave and we noticed that well some of the timestamp columns were like off by like one hour, sometimes two hours well one hour or two hour well that's daylight saving time or not daylight saving time in Amsterdam so that was obviously a time zone issue because Ghost is used at GitHub Ghost is used at booking but of course the environment is different we might use different time zones we might use different schema layouts different server versions so it's really good to do some testing because your environment might be different and this really gave us the option to test see what was happening on the data work on the code fix the bugs, the bug is fixed for quite some time already and then when we were confident that the data was correct after running the migration we could just run it in production and we now often run Ghost in production at booking and I know that at GitHub they are running multiple Ghost migrations a day so let me just yeah this is the testing so of course you can do some more testing because you can just automate and do a really simple no op migration and test every day if your data still looks the same before and after an online schema change because if you're adding a new column like a JSON column well you want to know if it still works or that you need to work on the code there's a Unix socket and Ghost allows you to connect on the Unix socket ask about the status change the troddling change which slaves are being troddled on and change more parameters and usually when you're in Ghost it will add like a delay of less than one second because it's using a heartbeat mechanism so it's not really adding any replication delay which is really good also it's possible to delay the eventual cutover so you start your Ghost online schema change then when it's ready for a cutover you make sure that you're in the office that you had your coffee and then you start a cutover and then you can monitor it and do anything if something goes wrong at booking we never saw any issue with the cutover but you might want to be in the office anyways because a client might do something strange or if you're adding an extra column the client might start to do something differently of course Ghost allows you to run a number of different hooks so at GitHub they're using chat ops so it's possible to integrate Ghost with things like chat systems to give you a message when it's ready for cutover for example so one of the last things I want to mention is that now the row copy is done with just a insert into a select from but eventually there are ideas about decoupling that then you can actually read from a table and write to another table and then there are other things you can do eventually like a live table migration so you're reading from the binary logs you're reading from the original rows from the server you're writing it to a completely unrelated server which allows you to a live migration of a table which is pretty nifty there are some other things Slomi's working on and Slomi's colleagues and we are also working on one of those things is a resurrection to actually restart an online schema change if it was stopped and of course it's open source and of course it's on github but that's well I guess you guessed it already some example well I think that's it so please have a look at Ghost give it a test so it's really easy to just test on slave see what it does no production impact whatsoever and if you're confident you can run it in production thank you any questions? I think that should be possible not only for Ghost but probably also for pto online schema change so the question is after the cut over it's really difficult to do a rollback so both Ghost and pto online schema change will just keep the old table around if you use the right options Ghost does that by default pto online schema needs an option for it but for Ghost it might be just possible to reverse the operation of inserting in the old table so that would for sure be possible I think with both of those tools but someone has to do it yes so all the details about how that's working are on the documentation on github so basically what happens is that there's a rename table and it blocks that by having a lock and when it's done applying all the binary locks then it will remove the phantom table and do some other tricks to actually make sure that it's atomic so the first thing you have to do is do a lock tables and then you have two tables under a lock and then you want to do a rename table once everything is right but another threat is still applying so there are like two threats which have to coordinate work so that's yes so one of the yes so once you have the lock in another threat you're running the rename tables and the rename tables will have a higher priority of already running inserts and updates but all the information about how exactly that's working is on github so the question was does it support gtid yes we are running with gtid in a lot of places I would have to think about in which places gtid really matters there so probably the most important thing when running with gtid is that you want to have the gtid actually matching in the end but you're inserting on the master well every insert is just a regular insert because that's the things you're applying for the binary lock and you're doing an insert into select star from which will also just generate normal gtid so I don't really think we have to do that much special things to allow gtid to work properly thank you so hi everyone the talk will begin in 5 minutes and during those 5 minutes Frederick will distribute some goodies that I brought there are some seeds here in front 3 maybe 4 2 over there just watch out the beer just need to keep this one free it's mine there is still one the more I try, the better


Hey y'all, my name's Jake and you're watching Trucker Josh and Diesel on TJV. Come on! Our first delivery for today, then we got to rush over to Edmonton to the other side of Edmonton to the west side to Atchison and Deliver our second load. It's five and a half hours from here. The time is now about 8 30-ish Hopefully they'll be quick unloading us so we can be out here by like nine and be over there by two thirty-three o'clock Plus we've got stuff for coffee here three three thirty three. I wanna get unloaded today.  There's a nice quiet night. It's fantastic. I slept great And lucky for us our delivery is Just around the corner here Get a little tug on my trailer make sure she's not gonna fall off A double triple sure even though I checked it We just got to go just around the corner To drop this off Then we'll be on our way to Edmonton. So I stopped here for my minimum eight hours In Canada you don't have to stop for a full 10 You can just stop for eight consecutive hours and then start moving you have to make up those extra two hours Sometime throughout your 16 hour day from like the time I started rolling right there Or from the time I started my pre-trip to the end of my day like I got 16 hours To account for another two hours In a minimum half hour increments Now like I said in past videos, I'm actually kind of a fan of the elogues, you know, I don't know if I call myself a fan Oh that flag over there to the right. Hey that used to be a big Saskatchewan flag They put the Canada flag back up I noticed that after the last federal election they took down the Canada flag and put up the Saskatchewan flag I guess they put the Canada flag back up Anyways Rabbitrel squirrel. Yeah, these elogues. I don't mind them. I wouldn't go myself a fan, but I don't mind them at all, you know Those of you who are still on paper and are you know, just Wondering what it's going to be like because Canada's elog what you might call it Mandate elog mandate comes in this year. I believe or next year 2020 or 2021 Just like the us and I drive in the us a lot So I had an elog anyway because you have to drive down there drive on their soil avoid obey their rules So I'm used to it already, but those of you who are wondering what it's going to be like You know, there's a lot of negativity about it on the internet and I understand all of it. I understand all the negativity They have a point But I'm just gonna say from my point of view. It's not that bad.  And uh When I see people fighting against the elog that's all I can think of I'm like the only reason you wouldn't want it is if you want to drive illegally that's just my own personal opinion, but I'd love to know your opinions down below in the comment section What are the real reasons you hate elogs? And what are some of the reasons you like it? Let me know down below So that all the new people thinking about getting into trucking can sort of know What the consensus is I'm on the side of It's not that bad Where do you stand on the issue? Have me nosed up against this snowbank so they could unload me So we are finished here. It is 9 20 in the morning something like that I think Get ourselves out of here.  I want to deliver this afternoon I don't want to have to wait till the morning Because I want to make my way into bc tonight yet What do you think Chevy? What do you think so far? Who's that over there? Why is he wearing a funny hat? He does have a magnificent beard though, doesn't he Chevy? Maybe one day my beard will be that magnificent Right now it's all over the place I'm trying to grow it out again. We'll see we'll see it's winter time. So it's a good time to grow it out keeps me warm But this year this is doing something weird here today. This is what I mean keeping like A beard properly groomed on the road Well, it would be easy if I had all the right tools, but uh I'll have to get a few grooming products soon I already have in mind what I'm gonna get so By the time it gets long enough to use them I should have them Plus I have something that I have from the last time I grew my beard out last year. I got them from my friend, uh, James We guys have seen in the videos a couple of times Chevy hey, what do you think should I grow my beard out like that guys? I'm probably not gonna wear the same hat as him though. No Got my own hats What do you think? Do whatever you want, dad. Is mom here? Where do we go? Where is she? Mom Mom We'll go home later diesel Chevy. Oh, I called you diesel keep calling them diesel Diesel apparently is doing well. Uh, seems like his foot is healing up a little bit at home But uh, you know Brett's keeping a close eye on him. She's on holidays now still so Uh, she can she's got to soak it and put cream on it and put a sock on him so he doesn't like it He's in good hands And so is she heavy great. So is she heavy. We're gonna have a great time, man We're gonna go and celebrate new years together 2020 just me and you man 2020 Two guys kicking it out in the wild man The scale was open In Saskatchewan, that's weird And I didn't even get pulled in for an inspection. Thank you very much. I didn't want to talk to you either I'm not offended at all. Just send me on my way Saskatchewan opens their scale houses. It's for inspections Almost every time they're very rarely open But when they are they're open It's nuts here. I'm getting out of here and open both directions They just want to look at people. Oh, no lights are flashing on outside too. They have both directions open Sneaky sneaky It's supposed to be the holidays, you know, it's kind of weird not very many trucks on the road today because today's When I'm filming this is December 30th. It's the holidays, right? That's why there was so much parking at the Flying J yesterday because everybody's at home with their loved ones There's not very many trucks in the highway. There's people like me who you know Took all their time for Christmas and Have to work over new years So why wouldn't you be open when it's busier? There's nobody out here Why would you open the scale on a day like this? Maybe because we're not expecting it But yesterday we're talking about whorefrost.  It turns the trees white It's the most beautiful part of winter When the trees get all the frost on it like that, can you see it? It's not gonna last long because the sun's gonna melt it off soon That's not even that bad. I go on the left way over there. Can you see that? The pine trees really show it Now this isn't even that bad sometimes it gets like really bad or really good. However you look at it And the whole tree is just completely crystal white just sparkling right and then the sun comes up in the morning And everything is just sparkling like diamonds. That's a coach on the side of the highway a leather couch Whoops But anyway, it's just amazing just you look outside and it's just especially on the prairies the flatlands as far as you can see just sparkling white beauty. It's just It's the most beautiful time of year. I think it's not my favorite time of year, but it is the most beautiful time I mean summer's nice too, but summer Well, everyone loves summer because it's not winter Starting to get very spooky out here western Saskatchewan We're getting close to Alberta Apparently we got to go through this cloud first and we come out the other side On the sunny side, maybe I don't know The days were noticeably getting longer already yesterday to me daylight hours So we're headed straight. Well, not quite straight west right now, but I'm headed west, right? So in wintertime When you're heading west the sun will set far to the left of this highway But in summertime when you're driving the same road the sun will set far to the right of this highway Very fascinating to see you see it the further north you go the more evident and obvious it is It's really neat the way the earth its rotation and its tilt and orbit all that works. It's really neat. I don't know So we're actually a little ways from Alberta yet. Oh, it's like about an hour or so But it looks like we will arrive on time. I forgot that we're still in central time because Saskatchewan uh Felt back to keep Manitoba warm through the winter. So Alberta is off on its own. It's the only province in mountain time right now And part of bc I guess half of bc is in mountain time, right? Which makes sense because There's mountains there But the other half of bc is in pacific time and that's where we're going to be Uh later on tonight. We won't quite make it to cam loops. Unfortunately. There's uh We're going to be like an hour short If my calculations are correct, but we don't have our motel reserved till tomorrow anyway So probably have another night in the truck That's a long drive to I'd be a full 13 hour drive and I don't think we'll quite make it Depending on how traffic and why there is in the mountains But what I was getting at here is that Alberta's in mountain time. I'm still in central time So I forgot about that. So we're actually an hour earlier to deliver than I thought we would be I thought we were going to be arriving between 3 30 and 4 and I was getting a little nervous I was like, if anything goes wrong, I might be late. I don't know when they go home Probably around 4 35 o'clock don't want to be late Turns out not going to be late at all Gained an extra hour as soon as we're crossing Alberta As long as this fog doesn't get too thick that'll slow us down Well, we did it we got here on time and we delivered on time You have six hours and 45 minutes of remaining drive time And we have six hours and 45 minutes of remaining drive time Would you look at that? Fantastico Cool, so we're gonna get pretty far. Camloops is 800 kilometers from here a little bit under so a little bit under 500 miles Won't quite be able to make it tonight, but that's okay. We'll get nearby I'm kind of hoping to get a reset even though. I don't think I'll need it but If I get there tomorrow early enough and then I stay there till the second Early in the morning, right? Remember we got the motel for two nights there It's a cheap motel is like 50 bucks a night So it's it didn't look like a dive, but we'll make our judgments once we get there. I'm not paying 150 bucks a night for a fancy hotel I'm fine as long as you got a bed free of bed bugs and A tv with cable and a shower Throw in a little mini fridge and you've won my heart Maybe I'm just not very picky. I don't really care a cheap motel So as long as it's pet friendly, right? So we'll be there till the second early in the morning. I mean we get there on 31st. We'll be reset That means I have a full 70 hours available to us But we're going home for the iui, but if the iui doesn't take long like we got to wait for a brit cycle And when it's time, we got to go into the doctor like immediately and do this procedure So I got to stay home till that happens But the way I have it worked out as long as I have a load which I don't have yet As long as I get a load straight back home I should be home on The fifth or so And that's right around the time when we're thinking We're going to need to do the procedure Six seventh somewhere in there and oh and on the tenth I have a doctor's appointment I don't want to be home all week though Might have to reschedule that doctor's appointment The doctor's appointment to follow up on all my CT scans and everything And if it was an emergency they'd be calling me to You know go to the hospital so I'm not too worried about that But I do need to do a follow-up with my doctor that I can reschedule if I have to but the iui That is dependent solely on her cycle on brit cycle For those of you just tuning in my wife and I brit have been having fertility issues From what we can tell it's on my side, but I'm not infertile We're good. We're just getting a little elevator ride We're getting our team just sort of dropped off at the finish line because they're not very good swimmers So anyways With that little recap out of the way We're trying to get this iui procedure done This month that means Very very very good chance if we get it right on the head nailed on the head right on the right day Very good chance that she could be pregnant after this month Let's hope and pray We're waiting. We're waiting. We want a baby pretty badly. So It'll happen. It'll happen. The doctors say there's nothing preventing us from having kids We're just getting a little help along the way so that it happens a little bit smoother and quicker and Good chance that it could be multiples too because they got her on these like hormones or these drugs that Make it possible that she could have More than once we might have twins very good chance You right We'll figure it out. We'll figure it out Okay, so let's get back to trucking here. We have a Bit of a long road ahead of us. We're going to stop by the truck stop just around the corner here Grab some washer fluid because i'm running low and we're going to need a lot And we're going to walk to chevy Because he's been such a good boy all day Such a good boy You know, your mother's been asking about you non-stop She says she misses you so much so much And i miss my weasel too, but we're having fun, right? We're having fun Okay, let's go to the truck stop, but i can't walk you here Okay, this doesn't start up baby Yeah, there you are. I knew you liked me You have six hours and 45 minutes of remaining drive time. You already told me that thank you There was just one stop remaining I wonder if i could deliver this tomorrow. I could probably get all the way down to I wouldn't get there in time They're only working a half day tomorrow because it's new year's eve So i wouldn't get there in time and waste my time going down there No, we already have a motel reserve for us.  I don't always get motels, but yeah, the right price comes along and it's got truck parking So that's important. So many motels don't have truck parking. That's frustrating And I can't go there But it is kind of nice that most motels nowadays are pet friendly Here we just had to pay an extra 20 fee every night, which is kind of ridiculous, but at least they allowed Chevy in there I usually try to stay at places like motel six They usually have pretty good rooms really good rates and pets stay for free That's usually my go-to But not this time Just on the next block over Petro pass we've come in here many times all of us together If this time there's probably gonna be parking right on 26230 township road 531 element turn right into 170 meters Do not enter here. Okay. We're supposed to enter over here 300 meters turn right on 26230 No idea what you're talking about Karen Turn right into 170 meters We've been driving for about five hours today already.  We're going into the mountains and I'd like to have full tanks of fuel. Why not? Just to be safe to be safe And plus I know these de-up pumps are gonna work well surprise We didn't actually go to camloops We couldn't make it today and I wanted to sleep in a motel tonight. So we canceled that reservation at the riverland Uh, I think it's called the riverland in on river street in camloops and we're staying in hinton alberto instead Works out better because now I get a whole evening here on the 30th yet And then tomorrow I get the whole day new year's eve and I can participate in whatever they do for new years around here, probably I'll probably just watch tv and do the countdown by myself and Me and Chevy will be like, whoo Happy new years. Right Chevy right It worked out better because now I can leave here on the first Well, I got to check out before 11 a.m. So if I would have gone to camloops I would have had to leave at about Or get up at about four in the morning leave at about five to six So I could be down on the second like I would have left on the second, right? I would have stayed from tomorrow night to the second, but now I can have all the all evening tonight all day tomorrow And I don't have to get up at four in the morning on the following day The first I'll just get up at you know, whatever whenever I get up eight seven thirty eight nine and uh Make our way down to Langley from here on the first to deliver on the second. Does that make sense? That's what I decided to do. So Here we are That actually worked out because this place is way nicer. This is the quality in in hinting. It's way nicer bigger more spacious newer Pet friendly and it's cheaper It was going to be 87 dollars a night in uh With the pet fee because there was a pet fee on top of everything right and after taxes and everything It's going to be 87 dollars a night So here it was only 65 dollars a night With everything included Saving money getting the same amount of time off in a hotel room for new years. So this is where we'll be mean chevy Are chevy This place smells funny Your water in here I brought in bottled water for you buddy. So you don't have to drink this uh Tap water here. I don't I'm sure it's fine Let's see what this place looks like with all the lights on I'll get some natural. Okay. I'm turning this light on too. I'm guessing that I like the warm Okay, see this is the kind of bulb I like in a motel room. It's that warm white right that warm color That color is like the daylight color that irritates me. It's not natural In my in my eyes. So see what this one is Oh, see this one's warm. What's wrong with that bulb then white that bulb with different color Look at chevy. Look at this madness.   I'm gonna switch them I'm gonna switch them right now.  Why is there a different bulb in here? That's just careless. That's just That's too many levels of not caring. We're gonna fix this Okay, so this fluorescent bulbs It's gotta be symmetrical people I don't own a motel, but I know this oh and this one's just like a regular bulb. I guess There's an led. Oh, that's why it's an It's an led as opposed to fluorescent And somebody bought the wrong bulbs somebody were bought the wrong bulbs bubbles Okay, let's put that down in there. Yeah Yep, and there we go See you can be there all by yourself all weird Also over here, we're gonna match Sorry for dragging you along on this, but this is very exciting vlog material very exciting. I couldn't turn it down Here we go Still doesn't quite match. Oh what in the world you got three different bulbs Whatever it's closer it's closer This is more like a desk lamp. Anyways, right right am I crazy? I've got a little bit of a Christmas belly happening here. That's okay though. I have an excuse. It's the holidays after the holidays It's gonna be like that You'll see you'll see So what have we all gotten here? We got a microwave with 17 seconds left on it. I don't know why We got Pretty decent fridge here. Do we got to turn it on check this out? Chevy you could almost fit in there Here's Is it on? Oh, yeah, it's all the way on. It's all the way on. Okay like blasting Blasting anything on the freezer. He didn't leave me anything Okay Do we got her on coffee maker? Okay coffee. Yep What else we got in the closet? With a bag Ironing board sweet. I was hoping they'd have one of those good But no iron What am I supposed to do with an ironing board without an iron? Chevy that's a dilemma That is not convenient Well, we have an ironing board just in case No iron Oh irons over here. Is that an iron? I don't know what that is over there. How do I turn these lights on? What are we going on here? What's this? That is definitely not an iron That is supposed to be hanging on the wall But it is literally just on the shelf With the wire hanging down like that which holds in the wall where it should be Not so much quality in anymore. Is it? They just call it the quality in doesn't get it. She is quality I mean, it's nice. Don't whatever that doesn't bother me might bother some people though. So fix that I don't know why is that fan so loud? What's going on? Oh Special switch just for the fan that is convenient I wish our bathroom at home had that the one we're demolishing only had one switch And it turned on the lights and the fans if you wanted to leave the fan on you had to leave the lights on that make no sense convenient Bathroom sink here. What do we got going on back here? Chevy take a look at this come in here chef come on get in here. Take a look at this Why do you want me to bail when that's weird, man? I'll wait out here Okay, bad not bad What happened up there? So they obviously renovated the outside the exterior of this building and did not Exactly bring the interior up to date along with it mismatched bulbs stained ceilings Hair dryers broken off the wall missing irons 17 seconds left on the microwave No complimentary drinks in the fridge But do they have a bible? Where would it be here? I think it's here Chevy Think it's over here. Wow Maybe it's here. No no bible. What? Well, what? What about this one? What they do with the bible? There's always a bible in every hotel room in north america There's a bible placed by the Gideons Unless if they specifically take it out Oh, hey, look, we got a toaster and a water kettle Where's the bible? Bible Bible Nope Nope extra plates bible. Nope. Nope. There's no bible Oh Well, how are the guests supposed to hear about the good lord jesus? No bible in this This is a heathen motel Oh, no I'll see you guys tomorrow tomorrow. We'll be right here in the motel room. I'll make a video. I don't know what we're gonna do But I'll make a video for the countdown, but you're gonna get it like a week after new year So it'll be like a re happy new year for you Maybe I'll live stream it Chevy should we live stream more? I'll live stream it. I'll live stream it. Okay, so you've already seen that already See you already know i'm in here You sneaky people paying attention Okay, all right, so this is all just repeat for you. So thanks for tuning in I'll see you tomorrow Don't forget to subscribe guys It means a lot All right, Chevy. Hey, Chevy. You gotta look at them when you're talking to them They make me nervous. They're all so good-looking. That's a nice thing to say


So from the National Archives, my name is Missy McNatt and I'm an Education Specialist in Washington, D.C. and welcome to the National Archives Comes Alive Young Learners Program. We offer these programs once a month and you can find information about upcoming programs on the National Archives website under events or the National Archives Facebook page. This morning we will meet the Reverend Dr. Martin Luther King Jr., Baptist minister, activist, leader, and eloquent spokesperson for the Civil Rights Movement in the 1950s and 1960s. Dr. King is portrayed by the Reverend Dr. John Moore, internationally recognized minister and orator who has portrayed Dr. King at schools, universities, colleges, churches, and organizational gatherings around the nation. This Monday, July 18th is the federal holiday that commemorates the birth of Dr. King and is also a time for us to remember and to celebrate his many accomplishments. In the holdings of the National Archives, we have numerous records related to Dr. King and the Civil Rights Movement and this one is, first one is a photograph of Dr. King at the 1963 March on Washington where he gave his very famous I Have a Dream speech and we literally have hundreds of photographs, video recordings, and textual documents about the 1963 March on Washington. This next document is a telegram from Dr. King to President Johnson about the 1965 Voting Rights Act and you can find these documents and many, many more in docsteach.org. Our featured document for today is on Docs Teach about Dr. King and we will have this slide up again at the end of the program. So at the end of Dr. King's presentation, we will have a question and answer session. So please write your questions in the YouTube chat box and let us know where you're watching from today. We have a National Archives staff person who is monitoring the chat box for us. This program is brought to you by the National Archives Education staff. The National Archives and the National Archives Foundation. And now it is my great pleasure to introduce to you the Reverend Dr. Martin Luther King, Jr. whose words and actions changed our history.  Today, I want to share with you about my legacy, about my family, and about the different things that I was able to do in order to make this country a better place. So take this journey with me. See, it all began at my birthplace in Atlanta, Georgia. The address of that home right there is 501 Allburn Avenue. It was in that home that I had wonderful friends and siblings and we played games outside.  My father was a great man and a great preacher. My mother was an organist and a great mom. My grandmother loved me so much. I think my grandmother loved me more than any of the other kids. And I got to share that home with my brother and sister, A.D. King and my sister Christine. We grew up and we really experienced some great things. But there was something that happened that changed my life. When I was a little boy and I was seeing my friend in the neighborhood and I wanted to play with him, but there was a little problem.  And we both looked at him and didn't understand it because you see, there was a thing in the South called segregation and it didn't allow people of different colors to be together. And so he told me I couldn't play with my friend any longer and that really bothered me. So instead of getting angry, I decided to do something. And you know, I knew that school was my ticket to being able to be successful. And so at just 15 years old, I was able to enter into Morehouse College in Atlanta, Georgia. I had skipped my senior year and was able to go into that school. I met a great man by the name of Dr. Benjamin E. Maze who became my mentor and he began to teach me some wonderful things about what I could do. But as I was there, I kind of realized what it is that I was going to do after finishing school for my destiny was already set. You see, it's very simple. My father's a preacher. My great-grandfather was a preacher. My great-great-grandfather was a preacher. My uncle was a preacher. My daddy's brother was a preacher. So I didn't have much choice. So I knew I was going to go into the ministry and preach along with my father. And it was one of the greatest things to do, to follow into my father's footsteps. And it was very exciting to work alongside with my father. We were both pastors at the Ebenezer Baptist Church in Atlanta. Of course, my dad was the senior pastor. And I was his co-pastor. So when my father wouldn't preach, he would allow me to preach. And everything was so great. And there were other key events that happened in my life at the church. At just a tender age of 26 at Boston University, I was able to get my PhD. Therefore, then being known as the Reverend Doctor, Martin Luther King Jr.  It was called marriage. And I remember meeting this beautiful young lady when I was a student at Boston University. And her name was Coretta Scott. We fell madly in love. And we were married in her hometown in Alabama. And it was beautiful. Once we got married, then my family began to grow. And we had our first child. Her name was Yolanda. I affectionately called her Yoki. Oh, they come home at night at the hard-day work and to look into her little eyes. It meant so much to me. I loved her so much. And we enjoyed that daughter. But our family continued to grow. And from there, we had three more children. My son Martin Luther King III, my son Dexter King, and then my youngest daughter, Bernice King. And we enjoyed ourselves as a family. It was absolutely amazing. I got my first job as a senior pastor in Montgomery, Alabama. It was at a church called Dexter Avenue Baptist Church. It was right next to the Capitol building in Montgomery. And I started preaching there. Things were going well. People were enjoying the ministry. But then while I was preaching there a few years later, something happened that changed my life. There was a woman by the name of Rosa Parks. And they had this segregation issue with the public buses. And one day Ms. Parks was tired. She had came home from work. She was in her seat. The bus driver demanded that she give her seat to a white passenger. She was tired. And she refused to give up her seat. And that changed history for all the things that I was doing. And I was asked to be the leader of the organization that led that march. Now, there were many times when I was arrested, I've been arrested over 18 times for the things that I was doing to be able to support these marches. But yet still I wanted to be the great leader that they needed me to be. And so they called me to be this leader in this great organization. That organization was called the Southern Christian Leadership Conference. And I can remember that time as the leader there. And there were many people who didn't like what we were doing. As the leader of the Southern Christian Leadership Conference, I led these marches. But then those people who knew that we were doing good, they weren't happy with those marches. And so we started seeing people in the community that were angry with the things of what we were doing. Yes, those many people were not happy with what we were doing. As you can see in the next slide, they argued with us. They screamed at us. They said all types of mean things against us. But we didn't let that disturb us because we knew that we were in a fight for freedom. And we weren't going to let anything turn us around. But it was worth it, you see. It was worth it to fight for freedom. And in fighting for that freedom, it led me to this great march called the March on Washington. It was August the 28th, 1963. There were 250,000 people gathered in there to hear 12 speakers share the importance of American democracy. And I was the final speaker that was there.  I have a dream. So even though we face the difficulties of today and tomorrow, I still have a dream. It is a dream deeply rooted in the American dream. I have a dream that one day this nation will rise up and live out the true meaning of its creed. We hold these truths to be self-evident that all men are created equal. I have a dream that one day on the Red Hills of Georgia, the sons of former slaves and the sons of former slave owners, will they be able to sit down together at the table of brotherhood. I have a dream, my four little children, will one day live in a nation where they will not be judged by the color of their skin, but by the content of their character. I have a dream today. So let freedom ring from the prodigious hilltops of New Hampshire. Let freedom ring from the mighty mountains of New York. Let freedom ring from the heightening elegannies of Pennsylvania. Let freedom ring from the snow caberacches of Colorado. Let freedom ring from the curvaceous slopes of California. But not only that, let freedom ring from Stone Mountain of Georgia. Let freedom ring from Lookout Mountain of Tennessee. Let freedom ring from every hill in Moe Hill in Mississippi, from every mountain sign. Let freedom ring and when this happens, when we allow freedom ring, when we let it ring from every village in every hamlet, from every state in every city, we will be able to speed up that day when all of God's children, black men and white men, Jews and Gentiles, Protestants and Catholics, will be able to join hands and sing in the words of the Odeonigro spiritual. Free at last, free at last, thank God Almighty, we are free at last. Oh, that speech still has so much relevance today. And it was that speech that led me to so much recognition, not only in the United States but across this country and its world. It led me to being recognized by Time Magazine in 1964 as the Time Magazine Man of the Year. But there was an even greater prize that I won called the Nobel Peace Prize. I was only 35 years old at the time that I won that prize and at that moment I was the youngest person to ever win this great honor. And you know it came with money, but I decided to take all of the prize money and invent that money in the movement of what we were doing in our fight for freedom. And that led to many more marches, my friends. There was a great march down Highway 80 from Montgomery to Selma, Alabama. We left Selma, Alabama and crossed the Edmund Pettus Bridge. You may have seen that in an incident called Bloody Sunday. We crossed that bridge and we walked miles in all types of conditions, in the heat, in the stormy rains, in all types of windy conditions. But we didn't stop until we reached the capital and we shared at Montgomery how much we wanted to see this world be a better place. And that led to my final march in Memphis, Tennessee.  They weren't paying them much money because they were black. They weren't allowing them to ride inside of the cabins of the trucks even in a rainstorm. And because of this, they felt that they were being treated unfairly when they were telling those in Memphis, Tennessee, I am a man. And so it was there in Memphis, Tennessee on April the 3rd, 1968, that I gave my final address titled The Mountaintop. It went like this. Well, I don't know what will happen now. We've got some difficult days ahead, but it really doesn't matter with me now because I've been to the Mountaintop and I don't mind. Like anybody I would like to live, her long life, longevity has its place, but I'm not concerned about that now. I just want to do God's will and He's allowed me to go up to the mountain and I've looked over and I've seen the Promised Land. I may not get there with you, but I want you to know tonight that we as a people will get to the Promised Land. So I'm happy tonight. I'm not worried about anything. I'm not fearing any man. My eyes have seen the glory of the coming of the Lord. The next day on April the 4th, 1968, I was standing on the balcony at the Lorraine Motel where I often would stay when I was in Memphis, Tennessee. When we were talking about a dinner we were getting ready to go to, was getting late. It was about six o'clock in the evening and I walked out again and I was speaking to the people that were down in the parking lot. When my driver told me to go get a coat and in the moment of silence, all of a sudden you heard the gunshot. It was a bullet that came from a rifle shot by James Earl Ray and it took my life that day. Many people thought that the dream was over. There were so many people who came out to my funeral, thousands of people from all over the country, especially those right there in Atlanta, Georgia, followed my casket from Spellman to Morehouse to Ebenezer Baptist Church to say their final farewell. Many people thought that the dream had died, but I'm telling you young people today that the dream has not died. The dream is still alive. That dream lies in each and every one of you. You may say, well, Reverend Dr. King, how can you who have passed on and have come to visit us today, how can you say that the dream lives on? Now I want to tell you in this special way, in the way that I spell dream. To make your dream become what it is, you must do these things. First, if you would allow me to show you in the next slide what making the dream a reality is, that dream first is to be dedicated. That means young people give everything you've got to make your dreams come true. The R in dream, the R stands for resilient. That means my friends that when challenges come your way, like the challenges I had to face with people who wanted to take my life, I stood strong up against those challenges and continued to move forward. When you're running the challenges in the classroom, when you're running to problems that you think you can't overcome, be resilient. You will achieve your dream, the E in dream. That means you have to be enthusiastic. You have to have enthusiasm about life. You have to be excited every day that you wake up. They just say that this is another day that I have an opportunity to make things better in my life. The A in dream, that stands for attitude. Having a positive attitude, it causes a chain reaction, a positive thoughts, events and outcomes. It is a catalyst and a spark that creates extraordinary results. And the final letter, the M in dream is to be motivated. Don't wait for anybody to do anything for you students. You get in that classroom and you work hard. You get home at night before your parents can tell you, you start doing your homework. You start doing your research. You start finding out the things that are necessary in order to be able to be a success. And then when you remember how to spell that, be dedicated, resilient, enthusiastic, having the right attitude and being motivated. You can make your dream come true. So it has been my honor to spend this time with you today. I hope that all of you will in some way or another on Monday, my 91st birthday, be able to celebrate through the power of service. You know the national theme for my holiday, it's a day on, not a day off. And there's nothing greater that you can do on that day than to do some public service, help somebody in need, help the hungry by giving them something to eat, help the homeless by being able to provide them something that can help them with shelter, help another young person who needs a friend by being able to be there for them. And when you do these things, you keep my dream alive. God bless you and thank you so much. Well, thank you so much, Dr. King. That was truly, truly inspirational and really has changed the way I see Monday and made me start thinking about what I'm going to do on Monday to make a difference. So thank you. We have folks watching from across the country from Maryland, Utah, Texas, New York. So you know, it's wonderful to have so many people. What a great way to meet people. We do have a few questions for you. The first one is how important were peaceful demonstrations in the civil rights movement? Absolutely. I was an absolute advocate for nonviolence. And so it was my theory that as my great mentor, Mahatma Gandhi once said, an eye for an eye leaves everybody blind. And we know that when we are out protesting, we can protest without violence. There's a powerful center in that. It's not a weakness. But the powerful center of nonviolent resistance was to love the old who were hating you. And there's a redemptive power. Please try to understand this.  Or if someone pushes you or tries to be mean to you, instead of being mean back, you show them kindness. What happens in the movement is when we did that, people who once despised us began to see our point of view because violence achieves nothing. But when you want harmony, you must do these things nonviolently. Young people, I want you to know that what happened at the camp until the other day, the insurrection, it solved nothing. But when we come together and speak our peaceful minds together, we can come up with solutions. And that's why we believe in the civil rights movement, nonviolence was the answer. Thank you. The next question, can you name other people who helped in the civil rights movement? You mentioned Rosa Parks, but some other people who really stand out for you. I know there were so many people, but yeah, a few, thank you. Well, this man made you young people. You may hear me say people like Ralph Abernathy who walks side by side with me in the Southern Christian Leadership Conference along with Andrew Young and Hosea Williams and James Orange. But let me tell you about one special person. Her name was Mother Pollock. She was an older lady, but English wasn't very good. As a matter of fact, when we were having a bus boycott, we tried to stop one time to ask her if she needed a ride. And she said, no, I don't need no ride. And then we went a little further. We stopped because she looked like she was tired. And I asked her that, we said, well, aren't you tired? And she said it this way, my feet is tired, but my soul is rested. And it was because of people like that that you may never read about who were instrumental in coming off the sidelines and inspiring us to not give up. So Mother Pollock and all the different people in the churches, all the great people whose names won't be in history books were just as important as the famous people that you do read about in the civil rights movement. Oh, that's wonderful. I just got an update. We've got folks not only from across the country, but across the world. We've got folks from Russia and Canada. That's fantastic. So here is a question. What do you think of the current Black Lives Matter movement? Well, I would say this. I'm very proud of what I've seen with this movement. You know, when I gave the I Have a Dream speech, I made a very profound statement that many people may not hear. It said, the marvelous new militancy, which engulfs the Negro community, must not lead us to a distrust of all white people. For many of our white brothers, as evidenced by their presence here today, have come to realize that their destiny is tied up with our destiny and their freedom is inextricably bound to our freedom. We cannot walk alone. And when I admire those in the Black Lives Movement, it wasn't just a Black Lives Movement that you saw people out there, but there were people of all colors walking on behalf of Black Lives that mattered. And when this country comes to realize that it's not about color, as I said in I Have a Dream speech, we want to be judged not for the color of our skin, but for the content of our character. Black Lives Movement showed me that. They looked beyond the color of skin. And my friend, what they saw was humanity, people who are just like you and I. And it's a great statement I've often shared with folks.  So whenever we see injustice, we all have to step up and make a difference. And that's why I applaud those in a Black Lives movement. Well, thank you. I think that's a terrific, terrific answer and something we can all take to heart and learn from. Another, well, I also see we have folks from Washington, D.C., as we should, I'm happy about that. But another question was there's one particular thing in the civil rights movement that you thought was the most important thing that you did, anything, you know, the one thing that stands out. You know, I would say this. There were many achievements that we had in the civil rights movement. But I think the one that really marked me the most took place in 1963. It was a campaign called the Children's Campaign, B-Day. And what had happened is I had come down to Birmingham because of all of the segregation actions that were taking place there with a gentleman down there by the name of Bull Connor under the leadership of the governor, George Wallace, and they were denying people of color the opportunity to just live in liberty. They had signs in the store that said black and white. They had those Jim Crow signs at the water fountains. And so it was one thing for us to march. As a matter of fact, I went down there and got arrested, which is where I wrote my letter from a Birmingham jail. But here was the remarkable victory that came out of that that I will never forget. It was the young people. It was young people coming by the thousands who decided not to go to school on a day and go into those streets and face those police and face those negative energies. How did they face them? They faced them when they put hoses on them. They faced them when they attacked them with dogs. But again, non-violently, they stood their ground. And when people were able to see these things on national television, it changed laws. But now all of a sudden, those signs that said black and white in the department store, those signs that said black and white by the water fountains, they all began to go away. And it was so courageous that these young people were willing to go to jail so that we can enjoy that freedom today. What a remarkable moment. The jails, another question. What was it like to be in jail? You said you were arrested several times. Well, you know, I would say this and please don't get this misunderstood. I didn't go to jail because I thought that it was a place of comfort and where I can get some solitude. But my attitude was this, to go into a jail and turn it from a dungeon of shame to a haven of freedom and dignity. And so I was going to those jails and I'd think there. I'd pray there. I'd meditate there. And the reason I went to those jails is because I was willing to break unjust laws. There are just laws and there are unjust laws. And I was willing to go again and again until laws were changed so that people could be free. You know, I think one time when I was in jail in Birmingham and I could remember when all of the wardens and the prison guards came around asking us questions. And you see, this always offered an opportunity to talk with people and they were telling us how wrong we were with desegregation and how right they were. But then when I found out how much they were getting paid and where they were living, I told those brothers, you need to be out there marching with us because you're seeing just as much injustice as anyone else. And so being in prison allowed me to have the opportunity to talk to different people. But it also gave me the opportunity to stand up for what was right and I was willing to do that over and over again. And because of those imprisonments, we saw laws change. We have two people asking the same question.  I don't think it would. I still believe in nonviolent resistance. I think that it even proved itself to a point in the Black Lives Matter movement. Listen and follow this. Normally when those protests took place during the day, they were peaceful protests. People were out there with signs. They were singing. They were standing there on these Capitol steps. No violence, no looting. They were just making their point. The unfortunate thing was that there were people who followed them, who came down with an ulterior motive, who wanted to be disruptive, who wanted to destroy property, who wanted to loot. And so those would be the very things that I would speak against. I would say looting achieves nothing. Burning businesses achieves nothing. Hating people achieves nothing. But when we come together in peaceful protests and we make our voices heard and we be consistent and come day after day after day, and when we know that we have tremendous power as we have seen in the selection, when we stand in peace and make our voices heard through the ballot box, then we can change those in office who do not want to treat us fairly. And in being able to change those persons doesn't take an act of a gun or a knife or any type of evil. It's just the power of going in there and casting votes for people who will be concerned about your welfare. So I think my movement back then of non-violence would be just as affected today as it was in the 1950s and 60s. Okay, another question. I think we'll have time for two more questions. We're running out of time. But a question, do you think that America has changed since the civil rights movement? That's a very good question. You know, again, I'm sorry to refer to this. When you saw the insurrection on Wednesday, you may have felt defeated.  And is racism still a problem? Absolutely. It's been a problem long before the civil rights movement, long before this country was established. The differences in people. But I believe that we have come a mighty long way because if you look at national offices, if you look at Fortune 500 companies, as you look at our universities and you look at the celebrities that are enjoying the freedom and wealth that America promises, we've come a mighty long way. And I'm very proud of that. Okay. Now, I will say we have a long way still to go. Yes, this is the last question. And what do you think your impact on children has been? Well, you know, I believe that children, and this may sound like a song, I believe that children are our future. Children are everything. You know, when I speak to children and I look in their innocent eyes, I see the promise of what this country is all about. And I believe that as we train our children to be able to work diligently in the classroom, to learn the academia that they need, to be able to get into the science and technology and engineering and mathematics and arts that they can transform the world. You know, whoever asked that question, I want you to get this.  And so you give us hope. You give us inspiration. So do your part. Continue to learn. As you're learning today on this here, great session.  Help those in need. Help those that are maybe not doing as well as you are in school. And I'm telling you, children, you are the true dreamers of today. Well, thank you so much. My goodness, and I tell you, so inspirational. I'm gonna get a little tears. But it is one more comment from just not a question. A parent who says, thank you for telling children to do their homework and the dream. And, you know, I was a teacher for many years and it's because I believe in our future and our children too. So again, I cannot thank you enough for joining us and being so inspirational. So you have a wonderful rest of your day and the weekend and take care. Thank you. God bless you. Continue to keep the dream alive. As promised, here is the DocsTeach activity about Dr. King that you can access. Again, docsteach.org. And if you go to the menu at the top left and click on that and then go to activities and click on Dr. King, you will find it. So I encourage you to check this out and check out our numerous other records about the Dr. King and the Civil Rights Movement. And then our last slide is about our program in February. We will have Harriet Tubman joining us on February 11th. And I know it will be a terrific program where just like with the past, we learned so much. So again, thank you everyone for joining us. And I wish you all a great day and a wonderful weekend. And as Dr. King told us, go out and do something for someone. Thank you.


Senator Elizabeth Warren has introduced the Ultra Millionaire Tax Act, which is basically a wealth tax that would quote, levy a 2% annual tax on the net worth of households and trusts between $50 million and $1 billion, as well as a 1% annual surtax on assets above $1 billion for a 3% tax overall on billionaires. Now the bill doesn't necessarily have that much support as of yet, and I don't really expect it to get that much support legislatively, although Bernie Sanders is a co-sponsor of this legislation and in the House, Pramila Jayapal and Brendan Boyle have introduced a companion piece to this legislation, but even though what we're talking about is just a 2% wealth tax effectively, this is apparently super controversial. Senator, what do you make, though, of the idea that people believe, or some people believe, this would be considered confiscatory, but perhaps more importantly, that oftentimes is there are quote, unquote, unrealized gains. We've seen remarkable gains in the stock market this year, but who knows what's going to happen next year. We've seen Bitcoin millionaires and billionaires get made, but of course, it's a very volatile asset if it's an asset at all. You know, Andrew, I hope you're embarrassed to ask if 2 cents is confiscatory. You know, this is 2 cents. So it gives me absolutely no pleasure to say this, but Elizabeth Warren is absolutely right here and I don't even want to talk about this because I don't want to give her credit, but she's correct. To say that this is confiscatory is, I mean, I don't know how else to put it. You should be embarrassed to ask that question. Is it not confiscatory to exploit the labor of your workers, get rich off of their hard work and then buy yourself mansions and yachts and Lamborghinis? How are you not asking that question? I'll tell you why because CNBC is a network for elites. That's all it is. So that question is absolutely horseshit. And again, like she's right to say this isn't necessarily that large of a tax. It's 2%. So what does this look like in practice? Well, Joseph Choi of the Hill actually crunched the numbers and he finds that would mean Amazon founder Jeff Bezos, the richest person in the world would face an additional $5.4 billion in taxes if the bill were signed into law this year. According to Bloomberg News, Tesla CEO Elon Musk would pay an additional $5.2 billion. Bill Gates would pay $4 billion more. And Facebook CEO Mark Zuckerberg would see his tax bill increased by about $3 billion. So in total, drumroll please, that would mean that this legislation, if it were signed into law, would cost the top 100 richest elites in America a combined $78 billion. That's it. So Elizabeth Warren is correct, 2% on every dollar is not much to ask. And that's specifically the problem. This isn't good enough. First of all, it's not going to pass. So basically what this is is symbolism. So assuming this even gets a hearing, why not opt for Bernie Sanders 10% wealth tax from his 2020 campaign platform? Because what's going to happen is if this is actually genuinely discussed and debated on, you're not going to get the 2% that you're asking for. So if it gets watered down, wouldn't you rather it be watered down from 10% to 2% rather than like 2% to 0.5% it doesn't go far enough $78 billion is barely enough to fund tuition free public colleges. So if this isn't going to pass, and this is basically political theater, which can be beneficial, why not like go bigger here? Why not ask for more? And I know what you're thinking, Mike, I mean, what do you want to do? Bleed these billionaires dry? Yes, that's exactly what I want to do. Because we only talk about bleeding them dry or whether or not we're being too mean when we're actually referring to elites. Because again, we live in a late stage capitalist society. So when workers get paid crumbs and barely have enough to survive, when Walmart schedules their employees just below full time so they don't actually have to provide them by law with health care benefits, nobody talks about how, wow, maybe that's a little bit too mean, maybe that's a little bit too severe. But when we're talking about taxing billionaires, two percent on their wealth, well, all of a sudden that's terrible. We see billionaires like Leon Cooperman literally cry on national television and make it seem as if we're trying to, you know, be too punitive towards elites. But we should be punitive to them.  So Elizabeth Warren is right to introduce the wealth tax, but this is too meager. It's not good enough. A two percent wealth tax is not going to have the transformative change that we actually need in this country. It's not going to solve the issue of income and wealth inequality in this country. It's just not enough. And when it's not even going to pass, why not ask for more? Furthermore, like if she actually believed in this, I'm sorry, I've got to bring it up again. Why would you shiv the presidential candidate that actually supported a more comprehensive, more robust wealth tax? Than this, why not support? Why didn't you support him during the primaries? You were silent and effectively helped Joe Biden win. So it's really hard for me to take Elizabeth Warren seriously when she comes up with anything like I am more than willing to put aside my biases and give her credit where it's due. But when it comes to bills like this, it's good. You know, she makes a solid point. And I'm glad that in that interview with CNBC, she held her ground. But it needs to be more than this. This isn't the type of legislation that's that's actually going to make a difference. Like seventy eight billion among a hundred combined elites in America. That's that's just not that's laughable. I'm sorry. That's not enough. Billionaires should not exist. And if this is something that we want to make a reality so that way nobody has more than a billion dollars in net worth, you've got to shoot higher than two percent because that's just that's not enough. I'm sorry.


On our Army's 240th birthday, we remember who we are, soldiers, America's trusted professionals. Throughout this nation's history, millions of men and women have fought for our freedoms. Today is no different as we have over 140,000 soldiers deployed or forward stationed protecting our nation's freedoms. We can never forget the sacrifice of our soldiers, civilians and families who have made us Army strong. Happy birthday, United States Army.