All right, so our next speaker is Laura Hampton, who comes to us from New York where she helps organize the New York City Python Meetup and has also worked on the organizing team for PyGotham. She's currently active in the warehouse project, but comes to us today to talk about the notoriously tricky problem of distributed consensus or how you can make computers agree on things in the face of unrivaled networks, garbage collection pauses and other nasty things that make requests get lost. Yes, it's a talk about raft, so please float Laura up onto the stage with a round of applause. Thank you very much. My name is Laura Hampton, and I'd like to thank the organizers of North Bay Python and the sponsors for making the conference possible and for having me to speak to you all today. So, you want to build a fault tolerant and scalable system that can serve a lot of requests from a lot of people in a lot of places. But you can't use a single machine because it's not reliable, it's susceptible to crashes and downtime, it needs maintenance, and if it's far away from your users, the ping times are going to be insane. So, the solution is to use a cluster of machines. But how do we get them to work together? The network connections between them are not reliable, the messages between them may be duplicated or may not arrive at all or may arrive at some arbitrary time in the future. The machines themselves may crash or fail or leave the cluster and then come back all of a sudden. The other thing is we don't want to involve people to fix things. Chances are if there's an algorithmic way to get your computers working together, you want to rely on that instead of having somebody come in at 3 a.m. on a Sunday when their pager has gone off to go and press buttons and plug things in. So, in order to do this, you need a consensus algorithm. This allows you to build reliable systems from unreliable components and allows also the machines to recover from failures and network partitions automatically. So, to be effective, a consensus algorithm needs to have the following properties. Using a consensus algorithm increases overall system reliability. You have several machines doing the same job. And in this talk, I'm going to cover naïve solutions to consensus and why they fail. Then give a brief tour of RAFT, which is a more sophisticated and fault tolerant system which is resilient to several different types of failure. I'm going to briefly touch on Paxos, which is a consensus algorithm that's kind of the granddaddy of RAFT and also of all provably correct consensus systems. And then I'm going to speak about things to consider when deploying a distributed system like RAFT. So, in order to be correct, consensus algorithm must display the following properties. Agreement, every correct process must agree on the same value, which is also called the safety property. Validity, the value agreed on, must have been proposed by another process so you can't have individual participants making things up or everyone storing none, which is called the non-triviality property. Termination, where every correct process eventually decides on a value, which is also called the liveness property. And to illustrate this last property, let's say you have Alice and Bob, and Alice wants to meet Bob at a restaurant at a certain time. But they're using a faulty messaging system that might drop messages or delay them and afford an arbitrary length of time. So Alice sends Bob a message and says, let's meet at Central Market at eight o'clock for dinner. And Bob responds to Alice and says, I have received your invitation and I would like to accept and I will see you at Central Market for dinner at eight o'clock. So then Alice realizes that Bob doesn't know that she's gotten that message. So she has to respond to Bob and say, yes, I am confirming your confirmation and I will see you there. And this process can continue indefinitely and results in a state called LiveLock where no consensus is ever reached. Alice and Bob will never have dinner. And they just keep reconfirming and confirming being like, yes, I'll see you there and nobody gets to eat anything. So in consensus, there's also something called the cap theorem, which states that it's impossible for a consensus algorithm to provide more than two of these properties. Consistency, where every read receives the most recent value, right or an error. Availability, where every request receives a response but there's no guarantee it's the most recent. And partition tolerance, where the network continues to operate despite delayed or lost or dropped messages on the network. So now let's take a look at what could possibly go wrong. There is the fail stop or crash where a participant does not recover and does not rejoin the cluster. A fail recover where after an arbitrary time caused by processing delays, networking delays or network partition, one of the participant drops out and then comes back. Network partition where a cluster participant is separated from the others due to failure of part of the network or through a change in network topology. And a Byzantine failure where one of the participants in the cluster displays arbitrary or malicious behavior and sends contradictory or conflicting data to the other participants. Now the Byzantine failure was named for a paper in which nine Byzantine generals are surrounding the city. They can only take the city if they all decide to attack at once. The messengers between them may get lost or captured. And one of these generals is a spy and he's going to try and foil the other general's plans. He may send an attack vote to four generals planning to attack and a retreat vote to four generals planning to retreat. And in this instance, the traitorous general is the malfunctioning machine in the cluster which is sending contradictory or conflicting information to the other participants. And it's a difficult problem to mitigate. And RAFT does not officially mitigate Byzantine failures but it can handle some instances of it. So in this talk, I'm going to use terms from the RAFT paper because terms and distributed systems can be confusing and can get overloaded. So in all of the following examples, including RAFT, the client sends data and is not a participant. The leader accepts data from the client. The leader sends data to its followers. All data basically flows from client to leader to follower. The log in each participant stores data and the aim is for the logs to match. And these logs are not syslog. They are not about what's going on internally in each participant but they're a record of the messages that each participant has seen from the leader to be committed to the individual logs and they function as a state machine. And in the examples that I'm going to give, logs store numbers but they could also store system commands. They could also store database rights that they could be anything that changes the state of each participant. So let's take a look at some simple consensus algorithms and see what happens. So this is two phase commit. It is a synchronous system. This and the following one are both synchronous. And these algorithms send all messages in rounds and they come in pairs in a call response pattern. So the leader sends every participant a message, waits for a response and once it's received all the responses from all of its followers, then it can send another message that says commit the value. So the leader sends a commit message, the followers respond and the participants basically wait to hear from the leader if in between message rounds. However, if the leader stops and fails while sending a commit message to its followers, some of the followers receive it, some don't, the followers logs no longer match. And it's 3 a.m. on a Sunday and guess what? So let's take a look at a slightly more complex algorithm. We're going to add another round of messages in between the proposal and commit messages. So now we have a proposed value. The followers say yes, we agree to this proposal. The leader then says okay, everyone's agreed to this proposal, but we're gonna wait to commit and then the followers say we are ready and waiting. And then finally the leader sends a message that says okay, we're all gonna commit now and the followers respond to that and everyone commits. This allows if the leader fails, like in the last example, one of the followers can take over and the cluster can more or less keep functioning. However, there is a case in which it doesn't always work. So in this example, the leader has received affirmation from the first message. All followers have indicated that they are prepared to commit. The leader sends a message that says we're all ready to commit, get ready. And then shortly after this happens, the leader crashes and doesn't receive all the confirmations from its followers. A participant sees the leader has sent the commit acknowledgement so the cluster is ready to commit, but also sees the leader has crashed. So it takes over and sends a commit message just as the leader wakes up and says, I didn't receive all the messages from my followers, we're gonna abort this transaction, we're gonna try it again. One of the followers gets a message from the original leader and one of the followers gets a message from the follower that's stepped up as leader and guess what? So now I'm going to talk about RAFT, which is a more sophisticated algorithm that can recover from both of these circumstances. So RAFT is used in several different technologies. It's a fairly flexible algorithm. It's used in fault tolerant databases in MongoDB replica sets, where each replica stores its own copy of the database. It's also used in lock managers to coordinate who can read and write to a database as in Chubby, MapReduce, and ZooKeeper. It's also used in container synchronization and scaling as in ETCD or in Kubernetes and Docker Swarm. And it's also used in systems that elect a leader to do work while the other followers are all on standby. And the interesting thing about RAFT is that any deterministic program can be implemented as a highly available replicated service by being implemented as a replicated state machine on top of a consensus algorithm. So basically if you have a deterministic program, you can apply it like frosting to RAFT, and RAFT will just take care of letting it be expandable and flexible. So RAFT is a consensus algorithm that was created by Diego Angaro at Stanford in 2014. It is asynchronous. There are no bounds on when a message might be sent or a response received. And because it's asynchronous, it's hard to tell if a participant is crashed or is slow. And now I have to warn you that asynchronous consensus algorithms with one faulty process that may fail stop may never terminate according to the FLP paper in 1985. However, like Wikipedia, these things work in practice and not in theory. RAFT has an overall rhythm. It has periods of log propagation punctuated by leader elections. A term in RAFT is important. And it is one election and the following period of log propagation. The voting terms increase monotonically and act as a logical clock. Messages in RAFT are not time stamped because computers never know what time it is anyway. Leaders in RAFT serve until they fail, which triggers a new election. And the cluster does not accept data from the client during the election because there is no leader and only the leader can talk to the client. And no log propagation happens during the election also because there is no leader. So let's take a look at a RAFT cluster. All RAFT participants are identical and any of them can serve as leader if their logs meet certain conditions. All of the participants start as followers. RAFT can recover from network partitions and participant failures and is resistant to fail recover and fail stop of any member of the cluster. So let's run an election. Each participant in RAFT has a random election timeout and followers will start elections unless they do not receive a heartbeat or append to entries message within the minimum election timeout of the cluster. If a leader discovers a follower with a larger term, it updates its term and reverts to the follower state. And elections happen within the span of the shortest election timeout because there are no heartbeats being sent and there's nothing to suppress the tendency of the followers to revert into candidates. So in order to start an election, a candidate votes for itself and then sends those request messages to followers. If the followers have not voted in the current term, they vote yes. If they have voted, they vote no. If the followers logs are longer than the candidates or at a higher index, they vote no. If the followers have heard from the leader via a heartbeat or add entries within the minimum election timeout, they vote no and do not update their term. And in terms of the timing for your RAFT cluster, the time it takes for a leader to send messages to its followers must be an order of magnitude less than the election timeout, which should be a few orders of magnitude less than the mean time between failures of the participants to ensure progress. So now we have a leader and we can enter the log replication phase. The leader is the only participant that can accept data from the client. The leader proposes log entries to all of the followers. When a majority of the followers have responded, the leader sends a commit message to followers and then they all commit. If a leader does not get a response from a follower, it retries and all messages in RAFT are adempotent. They can be sent multiple times and they will only have effect when they're received once. The messages contain information about the leader's log, the new entry to be committed and the entry in the leader's log preceding it. The leader never deletes data in its logs. It only appends it and followers can't change the leader's log. During quiet times when the client isn't sending data, the leader sends heartbeats to which the followers respond and the followers can take several actions if they received an ad entries message from the leader. They can accept the entry if their log, if the previous entry in their log and the previous entry in the leader's log match. They can redirect contact from the client to the last leader they heard from. They also ignore any accept entry message from a leader that contains a log entry they already have or from an old term. So they can just reject stale messages. However, the follower can reject an entry with, oh, and the follower rejects any entries that are behind the current term. If the entry has a higher term, the follower updates its term to match the new leaders and add entries messages contain the new entry and the committed entry in the leader's log before it, and it keeps the logs matched and I'll explain why later. However, if the log entries don't match, the follower can reject the new entry request. When that happens, the leaders respond to this by going back through their, the leader logs, sending ad entries messages to the follower who's rejecting these messages and until they find the last point at which their logs match. Then the leader goes into the follower logs, deletes everything following that and then sends new ad entries messages to get the follower caught up and match the leader logs. And this prevents some kind of failures and if you have a follower that's slow or not getting all the messages, then this allows the leader to get it caught up with everyone else in the cluster. And if the leader fails, we trigger a new election and if a follower fails, well, we've got others and the cluster can function normally as long as the majority of the participants have not failed. So let's take a look at some of the messages in Raft. This is a vote message. It contains who it's from, who it's sent to, what their status is, whether they're a leader or a candidate or a follower or a candidate, the length of their logs, what term they think it is and the value for the vote. This is an ad entries message which contains who it's from, who it's sent to, what their status is and we hope that they're a leader, what term they think it is, whether to commit or add to a provisional log, a success message that the follower can set in order to accept the entry when they respond to the leader, the index of the latest log entry, the last log entry and the new log entry. And the reason why I've been banging on about having the last and preceding, the new and preceding logs match is because logs in Raft are governed by a property called log safety. If two entries and two different logs have the same index and term, they store the same data. The leader creates at most one entry with a given log index during a term. Log entries never change position in the log and if two logs have an entry with the same index and term, the logs are identical in all entries up through that index. Raft is also governed by a property called leader completeness and this is enforced by voting no for candidates that have short logs and this prevents them from becoming leader. Since commit messages are confirmed by a majority of the cluster an entry must be stored by a majority of the participants and this selects for leaders with the longest and most complete logs. Raft can get into a situation called a split vote and in this instance a leader cannot be elected based on this configuration. The candidates need a majority of the cluster to vote for them and split votes can't elect a leader and in this case what would happen is since heartbeats are not being sent, one of the two followers will reach its random election timeout, will revert to a candidate, will update its term and will send a message to the rest of the cluster which will hopefully vote for it and we'll have a new leader again. Raft can also get into a situation where it can recover from network partitions. In this case, two of the participants have gotten separated from the rest of the cluster and messages are arriving slowly or possibly not at all and in this case one of the followers has timed out and has become a candidate however it cannot get elected leader. The leader will, once the partition is resolved the leader will contact the candidate which will revert back to follower state and the leader can get the candidate and the separated nodes logs back up to date. Raft also allows for an interesting process called log compaction where logs can become too long and unwieldy to store and replay. So the solution is something called a snapshot where the entire log is written to stable storage as a single blob. The snapshots contain metadata about the last term and log index. The snapshots can be sent to new or slow followers to catch them up as a single block. The followers can snapshot at any time without leader permission and this keeps the Raft cluster moving ahead in a fairly steady clip because depending on the level of virtualization it can take between one and 10 milliseconds to write a new add entries to stable storage so all of the Raft logs are kept in volatile storage and the snapshots allow all of the new logs to be written as a single chunk in one shot. Raft clusters also automatically handle membership changes because it may be necessary to add or remove large numbers of participants due to config changes or updates or maintenance. In this case it's important to avoid having two majorities that elect two different leaders and so during this process log entries are sent to and committed by both clusters, the old and the new and a participant from either cluster can serve as leader. Agreement on elections and entry commitment require majorities from both clusters and because it can take time to swap out and add the new participants the cluster can continue to serve client requests while this maintenance is going on. In order to affect this change a config message called old common new is sent and committed by the leader to both conjoined clusters. So even if a leader fails a follower with only the new config cannot be elected finally the leader sends out a message called new and then the servers are updated and the old ones can be shut down. So we have reached the end of Raft. In order to get data out of a Raft cluster the leader sends a round of heartbeats once a majority of the followers have responded then it will serve the client request. So now we've seen how Raft works and how it can recover from certain kinds of failure. Some it can recover from some Byzantine failures but it's recommended that you run Raft in secure network environments and a lot of the time with Docker swarm you will connect them cryptographically so they exchange keys so that you can't have people adding malicious nodes to your cluster which would be bad. So we have earned ourselves a trip to a Greek island the island of Paxos. Paxos is sort of the granddaddy of Raft. It is a consensus algorithm that shows an early proof of safety in a fault tolerant distributed consensus protocol and it was described in a paper published by Leslie Lamport in 1998 called the part time parliament and he described the algorithm by imagining that in ancient Greece on the island of Paxos there was a parliament except the parliamentarians were not they didn't prioritize their job as lawmakers very highly and they would wander in and out of the legislative chamber and communicate by kind of flaky messengers. So the idea behind Paxos is that as long as the majority of the members of the cluster have accepted a message it's considered committed and it has the same kind of process as Raft where the leader sends an ad entries message and the followers respond and then it gets committed. Raft was created in reaction to Paxos as a more understandable consensus algorithm. Paxos is more academic and kind of narrower in scope than Raft and Raft is more practical. Raft is as safe as Paxos and Paxos is focused more on the process of getting all the participants to agree to store the same value as opposed to a series of values. And one of the things about Paxos is there isn't really a mechanism for getting followers who might have missed messages or not committed messages to get their logs caught up with the rest of the cluster. Leaders in Paxos are also not distinguished and any member of the cluster can send a message saying, hey guys, commit this. So let's see how Raft works when it's time to actually use it. So when setting up a cluster, it's important to keep the following things in mind. The need for reliability, frequency of planned maintenance and how it might affect the system, risk, performance and cost. And a Raft system with two F plus one nodes can tolerate F failures. So however increasing the nodes does not necessarily increase capacity. Three fifths of a five member cluster must be available for a quorum, but four sixths must be available in a six member cluster. There are also performance considerations when deploying Raft clusters. Increasing capacity by adding more followers puts pressure on the leader's computational and bandwidth resources. There are constraints on performance. Raft is not designed as a performance algorithm. Higher performance distributed algorithms tend to rotate leaders or use a single stable leader. The leader in Raft is kind of a bottleneck on performance because the outgoing bandwidth may restrict the number and size of messages that might be sent to the follower. And leader performance problems can also limit the throughput of the algorithm. The other thing to think about is network latency. It affects performance and it can be quite significant. Round trip times within a single data center may be on the order of one millisecond, but within the United States, it's on the order of 45 milliseconds and between New York and London it's around 70 milliseconds. So that's an important consideration to think about where you're gonna locate your replica nodes. And one thing to keep in mind is the idea of failure domains. That the number of components affected by a single failure. So if you're running your whole Raft cluster on one machine, if the machine fails, you're out of business. One, if you have a running your cluster on one rack in a data center and it's using a single power supply that power supply limits your bounds of your failure and if that fails, you're done. Several racks in a data center using a single piece of networking equipment. If that networking equipment fails, your cluster's down. And data center connected via a single piece of fiber optic cable. If the cable gets cut, then you're offline. And a set of data centers in a geographical area that could be affected by a natural disaster. And if you have that natural disaster, then you're also offline. And as you can see, as the distance between the replicas increases, the latency increases, but the size of the failure can tolerate also increases. However, if all the users of a cluster are in a single geographical area, it might make sense to locate the cluster near them so that they have low ping times. And if there's like a major disaster that affects them, then your users are gonna be offline too so everyone can eventually recover from the disaster, but you don't have to provide service for them because they don't have internet. So sometimes people ask me where raft got its name. And I found this from Diego Angaro on a mailing list. And it's a sweet little story so I thought I would share it with you. There's a few reasons we came up with the name raft. It's not quite an acronym, but we were thinking about the words reliable, replicated, redundant, and fault tolerant. We were thinking about logs and what can be built with them. We were thinking about the island of Paxos and how to escape it. As a plus, we were using the randomly generated name Chizomi in the paper before we came up with the name raft in September 2012. The name appeared just over 100 times in our paper submission back then. So switching to the shorter name actually helped shrink the paper down quite a bit. If you want even more detail, we had a trouble coming up with a good name. So we made it an explicit agenda item during a RAM cloud meeting. I found two photos of the whiteboard during and after that meeting and I attached here. Looks like the top contenders were raft, knocks, as in Fort Knox I guess, redondo and cloud sense. No clue. I don't remember the details of how we ended up with raft since it didn't obviously win the vote, but I do remember the name caught on really quickly. People seem to like it almost right away. I'm so glad it's not called redondo. So thank you very much. Hey, thank you Laura, thank you, thank you.


Hey Psych2Goers! What comes to your mind when you think of someone with good self-esteem, confidence, and determination? For most of us, this is the kind of person we aspire to be. More fearless, outspoken, and strong-willed. In reality, however, people who are like this sometimes rub other people the wrong way. Their personality may be so strong that some would feel intimidated by it. Does this sound like you? If so, here are 10 signs you have a strong and intimidating personality. 1.  Do you often find yourself taking charge and leading the group when no one else is willing to? Do people turn to you when they don't know what to do next or how to accomplish it? If so, it's likely that you have a focused, confident, assertive, and goal-oriented personality, all of which makes for a great leader. The downside, however, is that some of these qualities may make you come across as too serious, bossy, or controlling, which may end up putting some people off. 2. You're unapologetically yourself. Are you comfortable in your own skin? If so, it's likely you have a strong and intimidating personality. It takes a lot of courage and confidence to be able to be unapologetically yourself.  Strong-willed and fiercely independent, you march to the beat of your own drum and yours alone. 3. You're brutally honest. Are you able or more willing to say and do things that others are afraid of? Having a brutally honest nature can add to a strong and intimidating personality, since you're not one to walk on eggshells or to beat around the bush. You're able to just come out and tell people what you think they need to hear. You can speak your mind because it's what you think is the right thing to do. 4. You question instead of conform. Do you like to do things your own way? While most people may be satisfied with simply accepting the status quo and doing things the way they've always been done, you like to question things. Analytical, original, and open-minded, you're driven to discover new ideas and new ways of doing things because you're always looking to improve and be better. If it ain't broke, don't fix it is not something you'd ever agree with. 5. You don't make excuses. Another sign of a strong and intimidating personality has to do with determination. Being tenacious and steadfast, especially when you set your mind to something may make you the type to say, you can have results or you can have excuses. Not both. Whether it's with yourself or with other people, you make sure to set clear goals and plans that you expect to be followed. 6. You're careful about who you let in. Do you tend to be more guarded when you're around other people? You may be someone who wants to be sure that someone is really worth trusting before you let yourself open up to them. But in wanting to protect yourself and your energy, your first impression to some may come across as cold and intimidating. 7. You overcome your insecurities. Everyone struggles with their own insecurities. We all have flaws and shortcomings, and often times, we all do what we can to learn to live with them. But instead of avoiding or denying them, having the ability to choose to face your insecurities head on and to work on overcoming them can increase your self-confidence. This in turn can add to a strong and intimidating personality. 8. You have a strong sense of right and wrong. Do you tend to stand firm in your principles? Having a strong sense of right and wrong and being unwilling to compromise your values no matter how hard things are is a sign that you live your life according to your strong moral values, not to other people's opinions. This can take a lot of courage and confidence, which again may come off as strong and intimidating. 9. You are driven and ambitious. Do you have goals or plans you set your eyes on? Being driven and ambitious is often a sign that you have a strong and intimidating personality because you won't let other people's opinions affect your path to your goals. You may be the type who'd rather be disliked for their ambition than be forced into mediocrity. You have big dreams in life and you're committed to becoming the very best version of yourself you can be, regardless of what other people may think. 10. You welcome challenges. Last but certainly not least, a sign you have a strong and intimidating personality is if you like to welcome challenges. While other people might run away from conflict or let difficulties scare them into giving up altogether, you may get excited to push and challenge yourself and to relish in the opportunities for growth and change.  Since this quality is often quite rare and very admirable to have, you may just end up intimidating people because of it. Do you think you might have a strong and intimidating personality? Let us know in the comments below. If you found this video helpful, be sure to like, subscribe, and share this video with those who might benefit from it. And don't forget to hit the notification bell icon to get notified whenever Psych2Go posts a new video. The references and studies used in this video are added in the description below. Thanks for watching and see you in our next video.


Let's get over to our man. It's the Dave Mazda as we do each at every other Monday You can Dave is the head of products and managing director of direction as you're right at our website right there folks Just hit that direction banner. It will bring you over as to you know bottom line in this type of market You know whether you want to hedge whether you want to be a bow whether you want to bear bear We have it all happening and we haven't had this type of marketing quite some time Dave Mazda, how you doing? I'm doing well. Happy to be back. Yes, absolutely great to have you so what I'd love to talk about is you know the Notes and bonds right You know the bottom line is that you know folks rates have been going up You know the the rate note and bond markets going down as they're going down You know your TMV. I mean that's a three. It's a 300% folks Bear position You don't have to be a bear. I'm just I'm just explaining that the bottom line is that there is always something to trade And the thing that's intriguing to me Dave about the the note and bond market in general is that you know first? We went straight down, you know, but we got a little bounce and like What I can't understand sometimes is that there's so many folks that think that the rates aren't going to go higher They're bringing the feds telling us the rates are going higher So when I actually hear that they say oh it's already baked into a marketplace I'm saying to myself, okay, the Fed fund rate is 1% They claim they're gonna go to two and a half and I can understand it.  I get it But can you talk a little bit about the the note and bond market because I see the year you're 10 year I mean, there's a lot of liquidity in that one I mean the 30 the 10 year there's not as much but the 30 years of beauty man I I trade the 30 year. I like it Yeah, so TMF and TMV provide exposure to the essentially the long bond so 20 plus year 30 year Treasuries but in a leveraged fashion. So TMF is your bull and TMV is your bear so what we are what we've seen particularly as Really rates have moved up But I think as you're alluding to really volatility in the interest rate market has has increased and remained high So there's something called the move index, which is similar to the VIX But but really for treasuries and that's remained, you know quite high for this for for the year because exactly they're saying It's unclear the market is not really accepting what the Fed is telegraphing, right? So these 50 the 50 basis points hikes that are coming and Potentially not just a 25 but a 50 on the table for September, you know these are these are these are sizable moves in the Treasury market and Even though we've seen a kind of a risk-off event pull down as people pop bonds again You know today is an example where where that might not necessarily be a one-way direction So we got to stay focused on the data because inflation keeps surprising the upside and right now Economic growth is beginning to slow doesn't mean we're in a recession tomorrow or the next month But the opportunity to take advantage of this opportunity exists. Yeah, there's no doubt So now what I'd like to do Because it seems to me, you know when We've been doing business a long time now I don't know if it's 10 or 15 years actually, but I remember at the beginning of it We used to always get so many calls about the small caps, right and all of a sudden like About two months ago the whole TNA is the whole thing's happening again It's like it's kind of intriguing. Do you know what I'm saying because you know, I can kind of tell Where people are at as to how many calls come in so can we talk about the small caps a little because those when they move They really move man Yeah, small caps have been in a tough spot, right? So for years strategists, you know in their in their forward predictions say So this is the year for small right because really for a decade if not more They've underperformed large caps and historically over the years smalls mids, you know that you're taking on more risk But they do outperform. We haven't been in that environment And we did see some green shoots for small caps really last year But that ended quickly particularly we've seen this kind of risk-off tone Pick up last year and of course really pick up starting late last year into this year however And what we saw kind of trading volume in TNA and TZA which are the bullish and bearish Three set three times use or ETFs for for the Russell 2000 index come go down a base of a stroke average because there wasn't a lot of activity there, but What what we what I would would advocate for is I think what you're saying have the investors keep both on their radar Because if we do if if if the economy, you know, China maybe reopens the zero COVID policy changes Or we hear from the Fed that it isn't gonna be 50 basis points 50 basis points 50 basis points because it or if inflation starts coming down Small caps do have the potential to really rip higher But at the same time if that doesn't happen we may still end up in a bearish environments for small caps So both of those could be tools for traders in this environment Yeah, and they're you know, and we need to take a look at it You know the small caps really didn't get a lot of juice going then all of a sudden they hit the high They came off it but they seemed to just they seem to be a little more stable right now And we all know that we don't know where the market's going That's the bottom line and this is such an intriguing place because you took the first leg down It's like okay, you know, which way do you want to go now and we're coming into the summer and you know Things slow down a little in the summer So we'll see where this goes out folks as you're on the website of the TFN Just hit that direction band that you can bring it over there They got a great news that it goes out keeps you up to date of what's going on in the direction Shares each and every day Dave you have a great one safe one. We look forward speaking to two weeks from today Thank you talk soon. Thank you, man. Have a great one. Have a safe one Stay right there folks who come right back. We have the Dow industrials right now down 21 Asics up 32 S&Ps are up 10 we'll come right back


What if I told you there is a way to produce 200 potato plants from a single tuber? It's called the pull out pull sprout method, also known as sprout jacking. Seriously, this is for YouTube, right? The pull sprout method is a technique for the rapid propagation of potatoes and other tubers, and it's sometimes used by breeders to rapidly increase the quantities of the rarest varieties. But it can also be used by gardeners who have limited access to seed potatoes or by growers who have limited means to produce all of the plants that they require from just one or two potatoes. Some sources suggest the pull sprouts can be used to limit the spread of disease from either homegrown or store bought potatoes. Of course, this is never going to be as effective as the micro propagation that are taken in sterile laboratories for the commercial potato industry. But it's another tool in our arsenal as home growers. The pull sprout method depends on a peculiar trait of potatoes and other tubers, whereby each eye on the potato contains multiple buds, and once the dominant sprout is removed, the other buds awaken. That's how some growers report getting 200 plants out of a single tuber. Most growers plant whole or cut potatoes in pots or shallow trays. Soil is important to encourage the sprouts to root. But I had to take it a step further. You see, I'd learned that people, especially during the Great Depression, would grow their potato plants from just the peels so that they could still eat the tubers. I wanted to see if I could combine these two techniques so that I could maximize the number of plants I get while also maximizing the food value of my tubers. And because I'm notorious for forgetting to water pot of plants, I decided to make myself a little DIY self watering planter so that this could be a project that I could basically set and forget until planting time. For the self watering planter, you're going to need a container, preferably one that you can drill a drainage hole in. But I've got to work around if you don't. A plastic cup with three or four slits cut into the sides, gravel, glass beads, or some other kind of drainage material to fill the reservoir, an old t-shirt, rag, landscape fabric, burlap sack, or some other kind of material that you can place in between the water reservoir and your potting soil. And then you're going to need your potting soil or compost of choice in order to fill up the planter. If you cannot add a drainage hole to your container, then you'll also need a thin strip of cardboard that's at least as long as your pipe to act as a dipstick. To construct the self watering planter, place your cup with slits in one corner of the container and place your pipe in the opposite corner. Start adding your gravel or other drainage material up to the level of the cup. On top of the gravel, you'll want to add your old t-shirt or burlap or whatever barrier you're using. Be sure to snug it in around the cup and the pipe as well as you can, although perfection isn't important. Just make sure that most of the soil isn't going to fall down into the gravel. Then fill up the cup with your compost or potting soil and then add another layer, maybe an inch or so, into the planter to cover up the barrier. If you're adding a drainage hole to your planter, you'll want to drill a hole in the side of the container just below the level of the gravel. If you're not adding a drainage hole, then what you'll want to do is put your strip of cardboard down into the bottom of the container and mark a line just below the level of the gravel. This will allow you to check the level of the water as you're adding it to the reservoir. Now add water through the pipe and if your potting medium isn't already fairly moist, then you may need to add some additional water on top just to prime the wicking action of the planter. Now let's prep the potatoes. Welcome back to Binging with Stone Tape and today we're going to discuss how to prepare potatoes to grow pull sprouts from the peels. We're going to need one or more potatoes with or without the sprouts and we're going to need a good clean kitchen knife. Let's get started. First you're going to want to inspect the potato and especially here on the ends we want to be careful to cut them off and leave as many buds intact as possible and we'll go ahead and do the other end. Sometimes it can be a bit of a weird angle. This will work just fine and once we have those separated it's time to turn the potato up on end. Now we just want to carefully take slices down the sides again being careful to keep as many buds intact as possible and you want to do a fairly thick slice. We want to keep as much flesh on to support the growing sprouts as possible but we still want to leave some potato left to eat at the end. We're going to continue around the potato like so and before you know it we are done. This can be cubed up as one will for cooking later. What we're after right now are these peels. Now that the potatoes are prepped just add a layer of peels to your planter and then add a fine layer of soil over the top. If you've decided to go with a pot or a tray go ahead and add your layer of peels just same and make sure to keep the soil slightly damp. There are no leaves and roots yet so you don't want to get it too wet otherwise your peels might just rot. If you're a little extra extra like me then you can continue to add layers of potato and layers of compost on top just know that it's going to make the next step a little bit trickier. Eventually your peels will sprout and your sprouts will form roots and at that time you can remove them as roots then it's time to plant them. If you've still got a bit of time before your weather warms up then you can pot them up and hang on to them until it's time for them to go in the ground. Did I mention that I'm really bad at remembering to water potted plants? As you can see some of the lower leaves here have dried up and felled off because I missed a few waterings but as we can see it's developing some pretty good roots. The ones that I left in the stealth watering container started to get a little bit laggy so what I've done is I've gone ahead and trimmed them off and I'm just seeing if I can get them to root in water like their cousin the tomato. Another thing that I'm experimenting with is removing the sprouts that are starting to form on store-bought potatoes and just seeing how they'll root in water rather than trying to grow whole sprouts in soil. You can see that they're starting to form roots. Here's the small patch that I set aside for growing pole sprouts separately from my Andy and potato breeding project which I mentioned in my video on growing everything on contour. Those will be grown from true potato seeds. Here I've got our hiding in the shade because it's hot. Here I've got the fresh pole sprouts that we took today as well as our little potted guy. Let's get them in the ground and show you how that goes. So what I've done here is just pull aside the mulch and because the pole sprouts are kind of thin and don't have a lot of roots on them what I like to do is use a screwdriver and just put a nice deep hole in there and wiggle it around to make it nice and wide give them plenty of room to go in and then just take the pole sprouts and drop it in the hole. I get as deep as I can. Got a little bit of compost here and I'm going to fill in around it and then pull the mulch back in around the potato. For a potted guy it's got a little bit bigger of a root system so I'm going to head and use this trowel here to dig out a nice little hole for it and we'll just drop him in the ground and fill back in around with some of the soil that we removed then I'll add some of that compost around it out. Just pull the mulch back in around and then water it in really well. This guy should be happy. Pole sprouts are a great way to stretch your dollar or conserve rare varieties. Hit the subscribe button now to find out how the yields of these pole sprouts compare to traditional planting techniques as well as find out how I rapidly propagate other lost inking crops like oka, mashua, and uyuko. Thanks for watching have a good one. Subscribe to the channel now for future permaculture experiments and then select one of these videos to continue the journey.


Britt has gone to work again for a couple of hours and left me alone. Oh no. So, you know me? Can't sit still. Gotta go get something done. I have to get things done, otherwise I feel... I feel bad at the end of the day, you know? You gotta get something done. So, our old address, uh, or our old address, our new address, we need to get our, uh, mail forwarded from our old address to our new address is what I'm saying. We haven't done that yet and we've already been here for, what, a couple of weeks? So, what we do is we get the mail forwarded so if anybody mails, like if our bills or anything, go to our old address, it gets forwarded here instead. And then when we get the mail here, it says that it's been forwarded, we can look at who sent it to the wrong address and get a hold of those people and change the address the next time they send us something, it comes here. It gives us, like, we do this for about three months, maybe, or months to three months, and then that gives us a little bit of time to, uh, to make sure we don't forget anything, because when you move, like, we've been getting mail from the old people who lived here or from the old owners from this house, we've been getting mail from them, uh, every day, pretty much. And some of it is actually pretty important mail from, like, the government. So, I'm like, they want to change your address and that's why you forward the address, so it wouldn't come to me, it would go to their new address and then they can change it, right? You get it? Okay, so I'm gonna go to the post office right now and get that done. As easy as that, brought in a piece of paperwork with all the stuff filled out already. Another thing crossed off the list. We've got a lot of things crossed off the list this week. I don't know what else there is besides organizing at the house. I was gone for 10 minutes, really? You were gone forever. I miss you so much. Look at him. Look at you. Look at you. Okay. Our neighbors love dogs. They came over and talked to me before and said, oh, don't you worry about your dogs? Because, uh, like, he came around the corner here and I was on the front porch and he said hi to me. And I said, oh, sorry, our dogs, we keep them quiet. They don't usually bark like that. They're just getting used to a new property. They don't know where their boundaries are yet. And he says, you know what, don't worry, don't worry. I love dogs. All my kids have dogs. And don't worry, even if they were to bark all night, I take my hearing aids out for a night. I can't hear anything. He's a funny guy. Now, he sounds like he has a British accent. I like the guy. He was really nice. So that's our neighbor on that side. The neighbor on this side, we, I don't even know if they exist. You never see them. I saw them once and they were very nice people. But we do keep these guys quiet though. Out of respect, you know. It's just every once in a while, we get all crazy. Every once in a while, we get all crazy. Hey, the boss, Frankie, he doesn't like it when people have fun. I'm too old for this. That's all right. Yeah. Did you survive the 10 minutes without me? What are you doing? What are you doing?  But you're beautiful. You're beautiful. Look at you. Handsome man. Handsome man. I would take him on the truck more with me. I know that a lot of you ask, why don't I take Chevy on the truck? Chevy is a homebody. He doesn't like leaving home. He gets stressed out just going to our spot like our land. I think that's what we're going to call it. I told you yesterday we're going to talk about it, but I think Britt and I really like we're going to call it our spot. The land outside of town. And when we take Chevy there, it's a little bit of a hike. It's not too far away, but it's a little bit of a drive. And he doesn't like car rides at all. He freaks out. And when he gets stressed out, his body releases this odor, this smell.  And usually he smells like a little fluffy air freshener, right? So you can always tell when he's kind of having a hard time with something.  And that's why I don't take him on the road with me. He doesn't like car rides like a normal dog. He likes being here at home. And he's also very protective over Britt. If he doesn't want you close to Britt, you're not getting close to Britt. And that was the whole purpose of getting a dog for Britt at home while I was on the road. So he does his job very well. He looks like a big fluffy teddy bear. But you look at my wife the wrong way. He turns into a big violent wolf. Right, Chevy? I'm a fluffy teddy bear. You got a pretty guardian spirit, I'd say. You got a mean side, man. I can't even hug her.  It's a good boy. We encourage that, though. You're supposed to protect mom, right? Right? Right? You want the belly rubs? You want the belly rubs? You want the belly rubs? The belly rubs! Are you passing out belly rubs, man? I'll take some, please. Can I get the senior's discount? Kind of metal posts so we can stake into the ground and a chain to go across our driveway and our spot. Our spot. Man, we like that. It rolls off the tongue. Ian Alfano. I still don't know how to pronounce your last name, man. I'm sorry. Ian. He never showed it to me, so I don't know how to pronounce it. I'd probably pronounce it properly. She's got to show it to me first. It's really windy out here right now. Here's our spot. And Diesel's very excited back there, aren't you, Diesel? Are we at our spot? Diesel? He's all quiet now. Diesel, where are we? Chevy. Can we go run now? He hates car rides. So we're pounding these steel stakes into the ground about a foot foot and a half and then hanging a chain across the driveway just to sort of make it plain to the locals that, hey, new owners are in town, trusty axe, and my wife trusts me with her life. There we go. Now we're just going to hang a no trespassing sign in the center here yet to make it obvious so that nobody on a quad or some mobile misses that chain because, you know, that's where that liability insurance would come in. Someone breaks onto your property and hurts themself on your property. You're held liable.  Ah, the backwards world in which we live. No kidding, eh? Yeah, there we go. That's to make it pretty clear. New owners in town. Hi. All right. Okay, now we can enjoy our evening here yet. You brought the mower just in case we wanted to mow a little bit more. A little windy. Make this as, nope, the other way. I'm going to lift it up as high as we can. Never sneak up on anybody with this thing. What did you find?  Do you have a fox? It's not a skunk den, is it? Oh gosh, I hope not. Hold on. Oh, okay. Oh yeah, look at that. Looks like a fox, okay? Yeah, something small. Fox fur. Really interesting, isn't it? Guys, if it's a skunk, I'm going to be very upset with you both. They like went on either side of me while I was exploring back here. They wouldn't leave my side. Nice. My little protective service. Kind of a big deal. Secret service. Per addition. Yeah, I don't think that den would be anything to worry about. I don't think skunks burrow into holes though. I don't know. I don't know. I thought beavers were omnivores and not vegetarians.  Now, we had way worse than that on the old property. So we hung out for a little while, made a little bit more progress here. Cleared out this space here. So we at least have room to turn around now in here. And I started clearing back here. We'll finish another day. It's getting a little late today. And there's a wind coming out of the north. So it's probably going to start getting cold again. Looks like the doors were blown in by the wind over there. Oh, well, got to fix that anyway. Everybody ready? Diesel? You guys all tuck it out? We'll home take the little guys for a walk on the block. Okay, I'm going to have to take that chain down. We locked ourselves in the yard. What was this? What was this? Where did you, did you go to the place without us?  He just cares about you. He doesn't care that I'm home. Oh, you brought him. I care.  Hi, weiner. Hi, buddy. I'll go get the big guys, I guess. Yeah, I'll just put the stuff down to help you. You gonna stay in here? One at a time. Come on, Diesel. I'll be right back, Chevy. Got a way to. You want me to get Chevy or you got him? Yeah. All right, Diesel, let's go in. Oh, yeah. Hey, show. I see you there. Hey, show. Hey, buddy. You home? He's so excited. You're too big to see through there, buddy. Always a warm welcome.