Hello everybody. Hi. So this is the first time... Hold on, I got my mic straight. My first time speaking in front of security folks. Usually I talk about my stuff in front of Ruby on Rails programmers. So... Oh, no. No, okay, who hates Ruby on Rails? Raise your hand. Who thinks Ruby on Rails stole your Java lunch? Oh, no. I hate to tell you, but Sun took that by making it very big and hard to eat. Just the Ruby part, yeah. So, a bit about me. How many people actually know who I am? I'm like sort of famous. I am. I'm serious.  Say again? Oh, maybe. Actually, I've given my autograph out. Yeah. I've signed a boob. Have you signed a boob? Oh, okay. No, okay, so I'm a programmer and basically got into the Ruby on Rails stuff most recently and wrote a web server called Mongrel. It's a really tiny little Ruby on Rails web server. There's some people whose entire companies are built on that, so they're going to be really pissed off when I change the license to commercial and make them pay me. Ha, ha, ha. No, I won't do that. I'm sorry. No, it's totally free, and it was a web server that I wrote maybe about a year and a half ago. So that's kind of where I got a little bit of my fame. And also since then, basically just speaking and talking and being sort of funny and obnoxious. And I have a laptop that has a screensaver, so Legos will see this. Anyways, so my talk today, though, is about something that's not Ruby on Rails, but there is some Ruby in it. And my talk is about social stuff, not tech stuff. So when I start talking about this, a bunch of you are going to scream, but it's a technical solution to a social problem, and it's not. It's actually a technical solution to a technical problem that was created by a social problem created by another technical solution. Okay? So once you can wrap your head around that, you'll get it. And we'll see if this works. I'm using, like, ghetto arch Linux, which turns off my main screen, so you'll have to be my eyes. All right, so first off, my project is called U2. U2 is the Maori word for this revenge system that they had in New Zealand back in the day. It was literally like if your son had killed someone else's grandfather, then 100 years later they could make that guy pay three pigs and some land or money or whatever. And it was this really intricate system of retribution and revenge and reputation, and it carried along family lines. And I got the name U2. I had been working on this project for, you know, like two years thinking, you know, hey, how can we add more social controls to internet communications? Because I gotta tell you, IRC blows. Who likes IRC? Like, honestly, who likes IRC? Okay, like four people like IRC. But do you think IRC could be better? And you notice my math is off?  Okay. It was actually more like 25, I don't know. So, okay, IRC just sucks, right? It seems to be like real-time spam. It's just the worst thing possible, okay? So I thought, how am I going to get rid of IRC? Like, IRC is so bad.  I was studying sociology at the time, social network analysis.  Like, for example, you can walk away from people. You can punch them in the nose. You can call the cops on them, these kinds of things. Let's see if we can do that. So this turns into this huge, almost philosophical exploration. And I have this problem. I can't work on a project until I have a name for the project. I read this article about this guy who's an actor in New Zealand, and he gets pissed off because Amazon took four days to send him a book instead of two. So he does the research, files the claim, gets $3,000, and tries to invalidate the one-click patent, and actually comes pretty close to doing it. And in the middle of the article he goes, and I felt it was time for a bit of Utu. I go, oh, Utu is like this great word. What is that? He's like, oh, it's a Maori system of revenge. It's the Sumerian god of the dead. It's like a really great name for the whole project. And the grand experiment is it's a sociology experiment. I want to see can you actually try to solve a social problem, right? Basically really poor communications on IRC with a technical solution. So it's doomed to fail, but I want to see how far the envelope can you push. How much can you do with it, right? So what I've got is kind of three pieces of the philosophy for Utu. And when I say I want to kill off IRC, right, is I want to basically try to not really replace it. I don't even think Utu will make a dent in IRC. There's just too much porn, trolls, griefers, assholes, dickheads, operators, botnets. I mean IRC is great for like 90% of the people on the internet, right? I mean all the people running Tor and FreeNode and all that stuff. Oh those guys are great.  I actually want to have meaningful communications and not have to do a little spam. So what I came up with is kind of the cornerstone of human communication.  You have to have strong identity. So you have to know who I am and who you are. This is why we have passports, why we move around, why we have identity, why it's also kind of difficult to subvert. It's a really flexible concept. It's hard to define. So that's a difficult piece. You have to have reputation. So you have to know my reputation. When I started this presentation I wanted to do. I said I'm a hacker. I've coded a parser. I wrote a web server. How many people here wrote a web server? Is your web server famous? Okay. Ha! I have a reputation. It's not a... Huh? Oh you wrote it in real language? I did too.  Unless you did PDP 11 assembler you ain't better dude. Okay. I'm sorry guys. So the idea with this is if you have strong identity, reputation and retribution, and there's some interesting philosophical pieces to that, then you can actually add some of the controls. So let's say, for example, strong identity. First off, you know who I am. So there's ways of building a reputation around them, attaching some identity and some events, some historical moments. You also have retribution.  If I mix all this together, then I can actually start adding together or bringing back some of the social controls that you get on the internet as is. I mean in human communication as is. So here's the problem though.  It's actually just connected computers. Huh? Oh, I'm sorry. I typed this like two minutes before they're coming in here. I'm like totally dyslexic. Yeah, this is going to suck. Don't worry. You'll have to get past it. I gave a presentation once and it was going to be on mathematics, testing and security. It was going to be awful. And I said, so to prevent it, I said there's going to be this guy. I called him that guy and I had responses and that guy's a guy, he's a guy who's always in the back.   It's a presentation. But I like you guys talking. Okay. So, seriously, you're not, I mean, no. So it's who. It's who. So, yeah, sort of. Come on, we've got to get through this. I only got 50 minutes and the goons are going to kill me. Then you have reputation. So once I identify you, oh and the identity right, the best I can do is you have a key. So the whole system is based on asymmetric cryptography and you get a key. Now the problem is that you can make keys. They're just like bits. They don't have any meaning or anything like that. So in order to kind of get around that, we're playing with it, is it'll be invitation only. So someone else, just like the same with the PGP Web of Trust. Someone else will say, yeah, I certify that that guy is so-and-so and he can come in. And that actually turned out to be a really difficult problem because if you take a system like say Gmail or some of these other invite systems where they don't really care who the receiver is, there's only one half of it.  They give you a giant chunk of a lucky number. But if you want to actually care who the other person is, you almost have to do a three-way handshake. So you have to do, I certify that I want to give this to Joe and then Joe comes in and says, oh yeah, that's actually from Zed. So then I certify I want to be invited and then Zed goes okay and I want to say that Joe comes in. Which is something you don't see in a lot of other invite systems. Basically there's no non-repudiation on the actual handshake between including and people. So once we have that, once we got this non-repudiation and this invite and a key, well that's about the best you can do. I mean there's not much more. So what this has to do then is we have to base the rest of the system on reputation.  And this will build up over time your reputation and then eventually people can be proactive. They can just say they just don't want to talk to you and see 300 people hate you or you've hated thousands of people. So when they say you though, they mean that key. We can't really say the person and that's the best we can come up with. And this is kind of a basic philosophical thing. There's people been arguing about it for a long time. This is the concept of identity. Well let's hold off on that for a bit. There's like a Q&A session. Just let me be funny and then heckle me a bit. That guy. Anyway, I'm sorry man, I'm just teasing you. So then we have retribution.  You don't really know where they come from. They can go through NATs. You have no real way of stopping them. But with identity and a solid key that's been invited, we kind of do. We can actually play some retribution against your key. We can do certain things to you, which is what we'll see in a second. And this is where I get the concept of hate. So the whole point of U2 is that it's a chat network where you can hate people. And the process of hating them actually makes them calculate hash cash. Now it's not the real hash cash because that had some technical problems but it's mostly you make them try to break a weak cryptography problem. And you can scale it.  And then you have to calculate up to about a 2 to the 16 random number, right? And try to break that. So with that kind of retribution and the fact that this is all signed and encrypted, I can now start gathering information about who hates who, who talks to who, where they come from. And we can start looking at the social problem. Because what this turns into is it turns into a weighted social network that you can actually analyze and crunch numbers on and start saying, well, OK, if we change the hate model to be this way, or we change the hate model to be that way, how does the social network change? Do the jerks go further away? Another alternative to hate is that it's distance. Because people aren't prevented from talking to you, it just takes them a little while longer.  You could yell at me there. But back of the room would be harder, right? OK, see? All right, so the thing is, I'm a programmer, but I'm a super duper lazy programmer, which is probably why my stuff tends to run reasonably well. This is the entire protocol. I send two bytes for the size so that you only get about 64k. Remember, it's a messaging protocol. So I'm not trying to send huge files or anything like that. It's just text messages, whatever. And then I send a data structure. So I'll show you what the data structure is. Do we have any Lisp fans? There's got to be like 10 Lisp fans in here. Oh, seriously. Come on, four. Oh, five. All right, rock. Yeah, yeah, exactly. It's all the parentheses waiting their arms down. You don't get it. So what we have within the protocol. So the basis of the protocol is that you have your, remember the seven layer Burrito, right?  OK, yeah. IP goes up to about maybe layer four. And after that, you're kind of on your own. So what the two bytes do is they give me my framing. So framing in internet protocols really blows. You've either got HTTP where the framing is kind of boundary based, and then they've got seven different boundaries. They've got MIME types and content lengths and connection close operations and things like that. So the framing is kind of mixed in. And the problem with that is you run into the classic escape problem. You always have to escape something that could be actual data and differentiate it from the framing. With this system, you can do just pre-framing. It's not a binary versus a parsed protocol system. It's I frame the protocol with just two bytes. You get a little more fancy with it, but I found you don't need anything more. And that sets up the actual frame that gets layered on top of TCAPIP's randomness. And then the receiver knows, OK, I'm just going to read this much. That's the message. So then the actual data that's transmitted is this weird-ass protocol I created called Stack-ish. It was actually a joke. It was an XML joke. There were other people who were whining that XML stole Lisp's S expression and then made it really bad, which is kind of true.  You've got to be really good, but this is a fourth stack-based S expression system. You've got to be hardcore to do that. So what you get is if you read the bottom, you see I've got a root, a child, and then two nodes under the child. And then right above that is the Stack-ish. And all it is is the exact same data structure, exact same properties as S expressions, exact same everything. What the difference is, and this is nice for network protocols, is you know when you're done, you know exactly how much you're going to read, and I have a new thing in it called a blob. It's like a net string from Dan Bernstein. It's just literally, I tell you how much is going to be in the string, a colon, and then that's the string. So that way everything is pre-sized. The frame sets up the entire data message. Any binary elements are framed within net strings. Works great. Because it's stack-based, it gets loaded into trees really easy. You can actually build a tree online. You don't need to maintain any others to actually do anything. It's very easy to parse. So that makes your protocols nice and small, fast, simple. So now the semantics of the protocol are pretty simple. You've got a hub.  And these people talk on routings or rooms. And then as messages come in, the hub just sends them to different rooms.  It actually doesn't really store anything on disk or do anything major. It will eventually just because you have to, you can also just try to keep it in memory. The hub is only about 5,000 lines of C code. It's fairly well documented, very straightforward C code. Nothing really advanced. I didn't write my own crypto. I'm just borrowing everything I can. It's very tiny. And it only runs in about 7 megs of RAM. So you can actually fire one of these things up really quick, easy. It's an ANCC for the most part. And then the dating and coding is just ASCII text. Now the problem that you have is everyone goes, oh my god, you need UTF-8 because the internet's international. The data and coding can be pretty much anything you want. And just today, I had a bug. You know, you never change anything five minutes before a presentation. So I'm trying to get the client to work.  I'm like, oh. Because all my unit tests only use like tests as the message I was sending because I'm brilliant. And so what I had to do is, I had to go into the client and dig around. And I'm using JRuby for this and Java. And it's like, you know, it's a lot of fun, but you know, it's kind of nasty to try and dig through. And I find out I was using a file writer, which translates UTF-8, and I'm trying to send binary data. So I had to use a file output screen. So that's the problem you run into. If I just say it's ASCII, that's it. Then what you can do is if you have to send UTF-8, you put it in a blob. The blob doesn't care, and the receiver's responsible for figuring out what to do with it. So the actual encoding and transport is very straightforward. And remember, it's simplicity, right? You can't have bugs if there's no code. So it's very, very simple and straightforward. All right? You're laughing. That's true. How many people believe that? Why are the Java programmers raising their hands? Huh? Seriously. Okay. That's right, called out. I think we should beat them with sacks of oranges. I'm sorry. I'm not that violent. I swear, I'm just being funny. Am I being funny? Good. All right, cool. Anyways, so the main thing is in the protocol, right? I wanted to use SSL, but there's a problem with SSL is that it was designed way back in the decade when, you know, everyone had a 386 computer and they were trying to surf their porn and they wanted to really pay for that porn. And so then SSL came out and they go, damn, these computers can't calculate any crypto. The server has to do it all. And so the problem is you can take an SSL client, connect, give some bogus data, make the server do some crypto, and disconnect. Because, you know, there's no control over TCPIP. And since you never really gave a client certificate, the server has no way of blocking that certificate the next time. It's just really difficult to control. So I went and I did some research and I used this mechanism called, hello? Called ISO Mechanism 648-2 Without the Hell's Sinking Vulnerability or something like that. It's in a book. I just looked at the book and it said, do this. And the main thing that that protocol there was is it was a peer-based protocol that used asymmetric crypto only to do its key exchange. It does the key exchange for the session key and then identity exchange. So you can tack people's identity on, they have to have a valid key, everything works. Public crypto key, all that. But it was peer-based. So originally the protocol was designed so that the client did less work than the server, but it's peer, so I just switched it. So what happens when the client connects, the server goes, this is my key. The client has to go in and calculate all this crypto and all this stuff to validate who they are and then gives it to the server. The server can easily validate that and if it's wrong, the server can put that key in a blacklist and then boot them. So the server doesn't do the calculations first. The reason for doing this kind of protocol is that TCP IP doesn't give me any real controls over which clients can connect or where they're coming from or who they are. So I have to rely on the next layer, the framing and the semantics and the cryptography.  If it goes on the internet, it's a social piece of software. It shouldn't be designed assuming everyone likes you. That's what they did back in the DARPA days. What have we got? We have HTTP. Right? Remember, I wrote a web server. I'm going to milk that for everything it's worth, right? I'm going to be like 90. I wrote a web server. Move my wheelchair. So by taking the approach that it goes on the internet, it's social. Eventually, some person is going to hack it. Eventually, someone's going to try and abuse it. Then what I can do is say, all right, well, let's do as much as I can. I'm not going to be able to stop everyone.  But if the server and the protocol, like from the base of the protocol on up, is designed to make it so that it's harder. It's not making it impossible, just harder. Then what I'm doing is banking on the predator concept. A predator, when picking two different types of prey, will pick the weakest one. So there's IRC or some other, like, website or something in denial service, or mine, which is a little more difficult. They got to get an invite and they got to set up a cluster and they got to do all this stuff. They're just going to move on.  Right?  Oh, wow, man, this is two things, really hard to... Oh, IRC! All right, I'll run my botnet on that. So the cryptography that I used is the number one rule is you never write your own crypto because there's people way smarter than me. Right? I mean, way smarter. And there's people who actually, like, get paid money by the government to do that. And I'm not a cryptographer. In fact, I'm really, really bad at math, as you guys saw. These are the standards I used. This is nothing fancy. The library I used is this one called LibTom Crypt. It's a small, ANSI-C-based one, totally free and grab it, do whatever you want with it. Right? It has all these standards in it. First off, AES. Nothing new there. There's test vectors. There's everything valid that it's working correctly. 256 bits. There's this weird problem where if you use an asymmetric crypto and then you try to wrap it like you use it to establish a key for a symmetric, they have to be the same key size. Otherwise, they're just not useless. You get the lowest one. The problem is, is elliptic curve cryptography has weird key sizes. So you can't, you have to match them. And the only matching is that you get 256 or 64. It gets really weird. So this is actually insane. This is probably way more than I actually need. And then SHA-256. So those are all matching. And then 128-bit nonces. Those are just rotated as the messages go back and forth. And then that's the mechanism that I'm using. And the cryptography, CCM. I don't even know what it means. But basically, I forget what it stands for. But it's basically, it hashes it and does the HMAC and all that stuff in a very standard way that NIST has decided works really well. And AAD is additional authenticated data. So this is the stuff where the header goes in.  It's like the message and when it was sent and stuff like that. So it's not going to be encrypted. It kind of has to be read and validated before the actual messages is peeled out and decrypted. So it's just authenticated though. So I'm going to tamper with that. And then finally, I'm using Fortuna, which is a pseudo-random number generator. Okay, so who got all that? All right. Okay. And by the way, you can actually take, there's one C file that does all this. And if you wanted to get a glimpse into how to actually implement something like this, it's very well commented and documented. You grab the one C file and go through it. And if you wanted to audit it, I'm trying to rewrite it in a literate style. So I've got these two implementations of it. U2Protocol.info is where you can go and get like basically the code and whatnot, but it's a little rough. Where you want to go to is saving the internet with hate.com. And that's actually, yeah, I think if you go there, you'll kind of like that site. Mostly, basically, it's this presentation in written form. And it almost made it so I didn't get my job at Bear Stearns. So lots of cussing. And then IHateRubyForge.org is the client I'm going to show you. The client is done in JRuby, which is basically Ruby done on Java because real Ruby kind of blows. And like bad.   You know, so you'll have to like figure out where it all is, but yeah. Just go read the garbage collection code for Ruby. Java is great, but kind of on the slow side. So you'll see. I mean, it takes like, you know, 30 seconds to start up the client stuff. But it's a lot of fun because what I can do is then I can use a nice kind of fairly proven platform that's been pounded on a while. And then I can get some JRuby love and I can use my Ruby language and whatnot. And actually, I don't necessarily prefer or not prefer Ruby. It's just that a lot of people who are interested in the client know Ruby. So they'll be able to go in and write plugins. They'll be playing with it and everything. And all this stuff is GPL-ed free. It's open. You guys can grab it. You can do it. I'm not making any money off it. I just want people to play with it. It's totally fun. So one other thing I've done is I've tried to implement some really secure coding practices. And what I'm doing is kind of like a self-analysis, a statistical self-analysis of this. So as I code... Oh. All right, good. The guy kept telling me that my resolution was insane. So maybe I burned that one out. So what I do is I run Valgrind on my stuff all the time. I have a testing suite that reruns every time I do a build. And it just sits there and just rolls in a loop. And then I have these stats that print out like how many stack buffer overflows I've had and how many null pointers and how many errors and messages and how many other messages I do. And Valgrind is fantastic.   Or Purify is another commercial one, if you want to do that. Valgrind is great, though, because it's free. It works everywhere. All you Mac fans, I think, get used to work on PowerPC and they switch to Intel chips, so now you're screwed. They just don't care anymore. But under Linux, it's great. And you basically run your source code. It works really good. Does it stuff? Basically, it prints out wherever all the source lines that you have, buff overflows, null point or de-references, trying to use memory wrong. And by doing this, I'm basically doing a statistical analysis of all my stuff. I'm calculating these numbers and at the end of each release, I go in and calculate the statistics and try to figure out how many defects I might have injected versus coding or testing. It's completely nerdy. It's so weird. I have stats up in graphs. You have to kind of get into statistics. But if people are interested in that, let me know. It's one of the things that I'm doing to just kind of play with how can you write secure code. Everyone tells you write secure code, but they don't know how to actually tell you how to do it.  So this is kind of going out through the back end. Write a tool that's really good in tests and stuff that tell you when you're not writing secure code and then use statistics to kind of keep it low. Keep your stats low. So what I'm testing when I do statistical quality control stuff is how many valgrind errors I get, unit errors and logged errors. So that's the program itself saying, I found this is wrong, that's wrong. And normally when you code in some of these new fancy languages, you don't have these problems, right? You don't have these buffer overflows so much or anything. Well, you're supposed to not have them, but yeah. And when you code in C, you have all these buffer overflows and memory problems and memory leaks. So by running under a tool like this and then keeping track of it, you can actually keep your code small and secure. But the problem is that it's really tedious. So this is why I didn't do the client in C. It was just too much for me to do a nice, gooey client, everything in it. And I also review my code fairly frequently. I'll take a source file and I'll open it and I'll actually go bottom up, top down, and I'll try to review it. But I really do want to get other people to go in and review the code and check out the source and everything. And then when I code in C, I'm using this library called B string. Everything is pre-sized. Like you notice when it did the protocol, from the base up it's pre-sized. It knows how big everything is. Like today when I said I had that bug, it was actually given the wrong frame size and that actually just turned into a protocol error.  Right. Belts and suspenders programming. It's, you know, Java's belts and suspenders programming. I want a string variable name equals a string. I said I want a string new and then, you know, that's belts and suspenders programming. Just in case you don't get a string. You got to make sure it's a string.  You might not get a string. Because nobody's doing type inference, right? No. Right? Haskell's another belts and suspenders kind of style programming. Programmers shouldn't worry about code execution.  That's the whole point of writing a program. So with C, the belts and suspenders that you have to do, you have to do this, is always checking return values and then always making sure that you bail out and always making sure you clean up. Okay. So what I've got is these really nifty macros that kind of do that.  I'm basically using the C preprocessor as a code generator and it's code generating me this ghetto style exception handling. And it works. But, you know, I kind of want to do something different. So I'm looking to maybe write a little bit of a mod to C that I would best play with. But this is the kind of program that I'm doing to make sure that the hub stays up. And it's been running pretty successfully so far. I mean, it hasn't crashed or anything. Oh, like four, so. She asked what is most users? Like, I think 16 at tops, right? It's really small, but I pound the hell out of it.  I would love to see a picture of like somebody like bent over a barrel and, you know, I owned your code. Cool. Where? That'd be great. So one of the things I'm trying out also is the server always change routes into a directory, right? I don't know if there's too many other servers that do this, but this one, when it demonizes, it always change routes into a directory. So if it gets compromised, it's just you have that one directory. I'm not sure if I did it right. So if anyone knows how you're supposed to do it right, let me know. I called some function called daemon. So I don't know, does Linux do that right? We'll see. I don't leave any resources open really. Like I said, I try to run everything I can in RAM, and it only opens files periodically. So the directory that it changes routes to just has data that the hub needs. That's it. It doesn't have anything else. Ah, so let's do a practical demonstration. This is a sort of practical demonstration. So over there is the chat client, and you can see it's super fancy. Now, some interesting things about it is I'm a huge fan of parsers. When you do a protocol, you're translating text. And parsers are the most well-established, researched way of properly translating text. That's pretty much what you're doing. So I write a lot of parsers. Most people, when they write network protocols and servers, they do this by hand, and that's how you inject defects. So if you have a parser generator, and it's well-written and well-established, and you can generate something that parses text, then you remove, one, a source of errors, and two, a source of time sync. Some quick analysis that I did of the Apache source is that a lot of the defects are just in the handwritten parser for HTTP. So when I wrote Mongrel, and it's like every standard parser knows exactly when it's done, when it's in error, when it's supposed to be working right. When I did this, we were running the project with a PIP. It's like the OpenID project. And someone started pounding the server and hitting it with security attacks. And then Mongrel was just going, oh, that's not valid HTTP. That's not valid HTTP, and just blocking. And it blocked about 80% of the attacks straight off. It wasn't doing anything security-wise. It wasn't checking anything. And it was a fairly loose parser because the browsers don't get it right. So this is the thing that you get. When you write your parser by hand, you're basically making a blacklist for the input. You're basically saying, this is how it should go out, oh, accept this, accept that, accept that, accept that. When you write a parser, you're basically making a whitelist. This is the only allowed grammar for this particular text stream. And that's pretty much the standard when it comes to security, is you use whitelists wherever you can. And that's why when I do parsers and when I do protocols now, it's always a parser. Even with this one, with U2. So on this, there's a parser that actually translates the emoticons and the text and turns it red and everything. That's actually parsed. So it's actually parsing it, tokenizing it, and then handing it to the chat pane. So that makes it harder for someone on the other end to send you stuff that would bust your client because when it comes back from the server, it gets parsed and translated. And if it can't parse it, just prints it out as text. And since I have the concept of a blob, then it's just a binary thing. It gets printed out. Now, I'm sure there's probably something weird in the Java chat pane that makes it so you can totally hack the hell out of that thing, but can you hold it? Yeah, can you wait a little bit? Yeah, you can totally do it in all the servers that way. But yeah, just a second. What we have down at the bottom, this is just simple JRuby. And that's just the standard chat pane there. Nothing big to it. The code... That's kind of the core of the code in Ruby that parses out the stack-ish protocol. I mean, that's pretty much it. Since it's a stack-based protocol, all you have to do is just lexically analyze each piece and then follow the stack. You don't have to actually do any grammar or anything like that. So this removes one more kind of pain point or potential attack area. You can actually have some grammars that have recursive elements that can be attacked. But this is just a straight lexing. Now, this is Ruby code. So this is kind of using the Ruby string scanner and Ruby's known to have some problems. So... And then... This is... So this is the code that's actually doing the swing GUI. And if you notice, it's doing Java. It's using swing and everything, but that doesn't look like swing code. As what this is, this is basically just a Ruby library I wrote called Proflegassi. So this is basically doing the swing. The reason why I'm showing you this stuff is that if you want to contribute, this is kind of the most difficult stuff you have to do. If you want to work on the client and play around with it, this is basically fun kind of Ruby hacking. If you want to get in on the server and see how that's going, then you can do that too. And this is actually the entire chat pain that you're looking at. Is that fairly readable? Kind of readable? Sucks-ass? Who's asleep? Sorry. I'm trying. And then if you look off to the right, the bottom right over there, actually I can swap this. I did a presentation in Boston. The only question I got at the end for most people was, what's that window manager you're using? I'm like, I just talked for an hour about cool cryptography and stuff, and you want to know my window manager? Yeah, it's really neat. It's DWM. Or just meet me afterwards. If you see over there, see that stuff where it's showing transitions, it showed the messages? Okay. The core of the hub is based on a finite state machine. So what happens is, those are events that are going through and the hub's processing them and telling you where it goes. This is again, it's making a whitelist for how the hub should behave. So if it goes into any bad states, if it goes into any direction, like if someone figures out a way to try to get it to do something it wasn't anticipating, the great advantage of using a parser in state machines is that if you have these mechanisms to make it a whitelist for what the program should be doing and specify it, then you get a better response when it's attacked. The response in this server is basically just a crash to abort. But you can actually handle errors a lot better. So there's some security flaws? The 10-minute sign. So the security flaws that are in it are mostly because I'm still debugging it and still putting it together. So right now the header, there's an ID that's just sequential, that's so that I can go and actually see what message might have died and stuff like that. There's no versioning on the packets. It's pretty much just in flux, so I say here's a new version, go grab it and then people use it. Eventually we'll put a version in the header so that keeps track of it. And the cryptography that I'm using, how I'm using the cryptography, hasn't been evaluated. So the library that I'm using has been evaluated by a few companies, but my stuff actually has been evaluated. Questions? Okay. Two, go for it. Oh, I'm sorry, okay. That's the whole point. Let's go back over this. He said I'm a dumbass because I'm not talking about the revenge system. Right? Yeah, cool. I'm sorry, I'm sorry. So I went over the protocol and everything and because I figured you guys, look, the whole point of U2 is that you have this revenge system in it and what you're doing is when you're chatting you're going to add the social controls that you get when you talk to regular people. The problem is it's an internet protocol so there's no way to really enforce things. So what it does is everyone has a unique key and have an invite path or who's invited them.  And then I'm also able to ask the hub info about you. I'm going to say, hey, who hates this guy? Where is this guy coming from? Who invited him? Okay? How many times has he been hated? What's his average hate level for the whole system? I want to make it where the client can go in and basically say, I don't want to talk to people that have this kind of reputation. Okay?  Now the revenge part is really interesting. When I talk to men, they go, ooh, revenge. When I talk to women, they go, ooh, why do you have hate? So I have an alternative concept. Okay? It's actually distance. When you hate someone, the calculations they do give you distance. It gives that person distance from everybody else. So if you imagine you're chatting in a room, right? Over there.  What will end up happening is after the writer peoples pictures. And what I want to do is have four little pictures for each person, right? You'll have people can put a little picture on their IM. You'll have four. One for I'm neutral, I'm happy, I'm sad, and I'm angry.   What this translates into technically is that the people doing the hating pick how much they hate you. It's a two to the something. So let's say they pick a 16. Then that turns into a random number and the hub says, hey, okay, in order to do that, you gotta pay a tax.  So the hater calculates this tax and then submits that back to the server. And it's all signed and validated with the crypto. The hub goes, okay, great. And it tallies up this kind of rolling average of everyone who hates this person in the room. And then every time that person who's the receiver has to talk, they have to calculate this hate again and again. So this effectively slows them down. When you get a hate that's around say a two to the four, two to the ten, it's not too much of a penalty. It's like maybe a second at the most, two seconds is the most modern computers. When the calculation gets up to around two to the 16 to say about two to the 20, it turns into minutes, tens of minutes. When it goes above 20, it turns into like hours. Because it's fairly exponential. So what you're getting is this kind of tax that people have to pay to hate someone once. And then after that, your average is calculated based on what they voted for you. Now, this is kind of up in the air. What I'm doing is calculating information and data about who hates who and using these hate calculations as a weighting, and then I'm going to be using some social network analysis. There's a really great library called iGraph. There's another library called Prefuse. And those are going to be part of the visualization.  So this is all merging back into, you have this retribution that translates into your reputation, and that impacts your identity online. So you're going to be building up this identity. When you have this retribution system, there's a lot of stuff I don't know. There's all sorts of odd social things that I don't know about. I don't know if an average is going to be good. I don't know if I'm going to have it reset. I don't know if it's going to have to decay.   And then you have your juvenile record expunged. And then you get to be an adult. And then it applies from then on. I'm like, that's actually a really great idea. Another one is, for whatever reason, love does not work on the internet. It just doesn't work. If you have people calculate love, that's a positive thing. So what they'll do is they'll just calculate all the positive stuff they want. It doesn't penalize anyone. But hate, nobody wants to calculate that. It's a penalty. So being forced to calculate that acts as a deterrent. Now I'm pretty sure there's some kind of philosophical basis for this or whatever, but basically I can't let you to some charity by doing some work for them, say, SETI at home or something like that. And then the charity will tell the hub, yeah, that guy's a good guy. Pay his hate down by about this much. So you do charity work. The what? No, I'm not. Can you tell me later? Okay, cool. Yeah. That's part of the whole social experiment. So I want to see how this plays out. This is the part where you're getting into wild territory where I don't know. I don't know much data analysis and research as I can. And it could be that's the whole, like this whole social part is just a total failure of it. Did that explain it well enough for everybody? Okay, let's get one more question. Super quick. You and the hat. Yeah, that guy. Right, so you'll have a reputation. Yeah, you'll have a reputation. And you'll have this kind of tree. You just keep inviting yourself. You invite like thousands of bots and everything. And what I want to try and do is you can actually do this weird stuff in social network analysis where I can cluster you together because you all act the same. And I can actually just lop off that whole arm of the network. Right? So basically, cabal analysis is what I'm calling it. But I don't know. It could totally be that some really pissed off dude at Google goes, whatever. And also keep in mind that I'm not trying, like when I say strong identity, I actually mean like stronger identity. When I say denial service resistant, I mean more resistant. It's not completely possible to stop it all the time, but I'm just trying to make it a little more difficult for people trying to attack it. So that way they'll go somewhere else. That's the basis for it. And then the central thing about it, after you just got done doing Tor, this is kind of the inverse. We're basically saying we want to identify everyone. We want to know exactly who they are.  Right? So when you use Tor is you can just make all your data go through those three data centers in Washington, D.C. where they calculate about 15% of all the traffic. And if you ever study statistics, you realize 15% sample is actually enough to figure out just about everything you need to about 90% of the traffic. Thank you very much.


Three-year-old Cade inspires thousands with a viral photo highlighting his battle with short bowel syndrome. I never in a million years thought it would go viral. When I seen the images and I loaded them in to start editing on them, I actually, my eyes started watering. I'm like this, this image speaks such volumes. The snapshot taken during a recent photo shoot with moments of the heart photography has not only touched hearts, but also shed light on the struggles faced by children like Cade and their families. I wanted something to document like what it took every day to take care of him just so that when he's older he can look back and see and maybe how far he's come. Cade's incredible journey began when he was just seven months old. The Varney family received a life-changing call informing them that he was ready to be discharged from the hospital and now Cade is happily adopted with five siblings. He only had about seven centimeters of his small intestines left and a normal infant has about 255 centimeters. Before bringing Cade into their loving home, they underwent two weeks of intensive medical training to ensure they could provide him with the specialized care he needed. Cancer, it's a very scary word, but an outstanding treatment facility was here at home. I was led to the Lawson Cancer Center. As a nurse practitioner at the Lawson Cancer Center, we are champions for our patients. I am so happy for Robert. The treatment worked. It was super scary in the beginning. Our routine was terrifying. I mean, you could make a mistake that could cost somebody their life. But honestly, we're made to adapt and now TPN hookups and unhooks are just our normal. One crucial aspect of Cade's treatment is total parental nutrition, a life-sustaining therapy that delivers nutrients directly into the bloodstream. Currently, Cade receives TPN for 14 hours a day. Although he has all of that stuff around him.  He just does things different. As the image continues to circulate across social media, messages of support and admiration for Cade and the Varney family have flooded in from all corners of the globe. Last time I checked, it was like a 46,000 and I'm thinking, you know, that is such a wonderful testimony of God. Cade has short bowel syndrome, but a short bowel syndrome will never have Cade. He is wild and resilient. Reporting for Mountain Top News, I'm Ethan Miller.


Today, as you can see behind me, the second Navy ship from Croatia Navy is just landing and we'll take the offload some U.S. equipment that we took from Port of Bar in Montenegro for the immediate response access. We're here supporting the exercise with Croatian military and helping them arrange all the transportation and transit of all these vehicles that we have. My role was kind of helping guide people and making sure all the vehicles would start coming on and off the ship and then getting them onto the Croatian Navy vessel and getting them to the star safely. For immediate response, as you can see, one of the main issues was the Barsom where Croatian Armed Forces provide logistic support for division HQ which will be deployed in Udbina. At the same time, we have astronaut exercise which is linked to the immediate response which is working on the protection of the airport. This is the first time in the history that the ally is providing full support to the U.S. and that's how to say it's a trust that we are building among us. Working with Croatian allies is a lot of fun. Definitely a very unique experience that not a lot of people will ever get to do in their lifetime and it's very interesting seeing the way that they kind of do their day-to-day roles and take after their jobs and all that kind of stuff. Future NATO soldiers definitely take any opportunity you get to come and do awesome missions like this. Don't pass up that opportunity. You'll learn a lot and you're never going to forget the experience.


Hi friends, welcome back to my channel and a very special welcome. If you're new here, my name is Jen. I'm a certified weight loss and nutrition coach and I'm on WW personal points. Happy Friday friends. I hope that you had an absolutely amazing week. When you're watching today's video, I'm in San Diego. I actually flew out yesterday afternoon, Thursday to spend about four days with my best friend, Rachel. So I actually weighed in yesterday and filmed this video so that it would be up for you guys today. There will not be a meal prep on Monday because I will be coming home from San Diego pretty late in the day on Sunday and Sunday is generally when I film Monday's meal prep. I will go ahead and link this last week's meal prep in the description box for you. So you have three really good recipes to try out this next week and you can check out the video if you missed it. Today we're going to talk all about my week. I have lots to share with you. This week's a WW workshop topic and of course I'll share my weigh in. So if you're excited, give this video a thumbs up. Make sure you're subscribed and your bell notification is turned on because I do a weigh in every Friday and I upload five videos a week. Check out the description box down below for nutrition coaching. I offer macros and calories personalized to you to help you reach your weight loss goals. I highly recommend this and one on one coaching if you would like to talk with me directly and use me as accountability. I would love to help you link discounts to my favorite things in my Facebook group. Come on over, join us there for lots of motivation and support. We'd love to have you. So let's jump into my week, my weigh in and the WW workshop topic. First, I want to talk with you guys a little bit about my week. So in last Friday's weigh in, I shared with you that I have officially hired a fitness coach who is pretty hardcore. I am not going to lie. I am having to take a 20 to 30 minute walk every single day and I've been going to the gym three days a week to do strength training.  I've been going first thing in the morning because that is when I like to exercise. It sets me up for success for the day. I'm not going to go exercise to screw it up with food throughout the day. So it keeps me a little bit more on track nutrition wise and it really just starts my day off on the right foot. I feel really good after my activity. I also have been going to the gym and following the strength training routine that my coach has given me.  Love, love, love my morning walk. I've been sharing it on my Instagram and in my Facebook group. So make sure you follow me there because I share updates, posts, pictures every single day. But the strength training has been a big adjustment for me. I have been so sore. So sore. I mean the sores I have ever, ever been so sore that it's hard for me to get up and down off the couch, out of my car, out of bed. My legs are sore. My arms are sore. My core is sore. Everything is sore. So I did reach out to my coach on our weekly check-in. I now take two days in between strength training. So what I was doing was if I strength, did strength training on Monday, I would take Tuesday off, go back on Wednesday. Well now I actually take two days in between and that's actually really helped with the soreness and I'm still getting in my three days of strength training every week. I will also tell you another thing that I have noticed rather quickly and that's that my body has changed quite a bit. I feel smaller, leaner than I did prior to starting this whole regular exercise routine and that's huge motivation for me. That definitely makes me want to stick with it and another thing that I noticed that maybe isn't on the most positive side kind of depending on how you look at it is the scale has been consistently doing this since I started my workout routine. I had a conversation with my coach and I know this being a weight loss and nutrition coach myself that when we tear down our muscles by doing strength training, our muscles have lactic acid. They retain fluid. They're inflamed and so the scale isn't going to be our friend when we're starting a strength training routine. It takes sometimes several weeks for our body to get used to it and for the scale to really do what the scale should be doing. So I noticed that my weight was creeping up, had a conversation with her and I just let it roll. I know that it's not that I'm gaining fat. I know that my body is sore and recovering and I'm tearing down and breaking down those muscles which is my goal and that's why sometimes the scale isn't my friend. I also know that this is going to change so I just roll with it and keep doing what I know is best for my body, my weight loss, and my overall health. My nutrition this week has been on point. I even packed lots of healthy snacks to take with me to San Diego for the airplane and just to have on hand if I can't get to the store right away, I need to make sure that I have healthy snacks on hand that help me reach my weight loss goals. Fail to plan, plan to fail and I do not want to gain weight on my trip to San Diego. We have lots of activity plan, we're taking hikes, we're doing walks, we're going out to dinner with one of my subscribers here, hey Robin and we just have a lot of really fun active things planned for my trip. We're also planning on going to the beach, walking on the beach, doing some shopping. Again, I will be posting snippets on my Instagram so make sure again that you follow me over there to keep up with me on my little vacation. Before I jump into this week's weigh in, I want to talk with you guys about this week's WW workshop because it's really good and this is how to find your why or rediscover the reason you started your weight loss journey in the first place. Chances are that there's a reason you started this, there's a reason you joined WW, there's a reason you track macros and calories, there's a reason you're trying to lose weight. That's your why, that's what inspires you to start a program, stick with the program and reach your goals. If you're new to a weight loss journey or maybe you've lost your way a little bit and you don't really remember what your why was, here's some tips and tricks from WW on how to begin a new why or to reignite the why that got you here in the first place. Number one is to answer off the top of your head. Why do you want to get healthier? Why do you want to lose weight? I know for me the answer to this question is super simple. I want to feel better in my body. I don't want my knees to hurt, my back to hurt, I don't want to be out of breath climbing a flight of stairs. I want to feel better and be healthier overall. Number two is to dig a little bit deeper. We went off the top of our head with our why but let's dig a little bit deeper into why this is your why. What does this look like to you? How would your life be different? For me, how would my life be different if my knees and back didn't hurt every day? My quality of life would substantially improve and I'll tell you that I no longer suffer from back pain, knee pain and I could up and down and fly the stairs without being out of breath and that is huge. Number three is to ask yourself again. Why do you want to get healthier? Take time and really deep dive into the why. Make it specific, personal and make sure it's positive. I want to lose weight so my knees don't hurt so I can walk more and spend more time outside playing with my dogs, my kids, my family. And number four is make it your own. Make it your why. Say it again and again and again. Repeat your why every time you're struggling, every time you want to give up, repeat your why. Better yet, write it and place it somewhere where you see it every day. A visual constant reminder of why you're doing what you're doing to get healthy. We also know that things change. As we lose weight, sometimes our why even changes.  So for me, my why now has to change because that why has been fulfilled. I've done it. So as we progress through our weight loss journey, the reason why we're still moving along is going to change. My why has changed for sure. Now my goal is to be the leanest, strongest, healthiest I've ever been. Build lean muscle, be strong and healthy and reach my fitness goals. So my why has shifted from health goals to fitness goals and that is completely okay and normal as we progress through our weight loss journey. The most important thing to take away with a why is to make sure that it is specific. Don't make your why blanket. I want to get healthy. I want to lose weight. Make it specific so that you can visualize it. I want to lose weight so my knees don't hurt anymore, my lower back doesn't hurt and I'm not out of breath climbing a flight of stairs. That is much more specific than I want to get healthy. If your why isn't specific and you don't actually have a goal or a target in front of you, it's going to be a lot harder to stick with it. So no matter what your why is, follow the steps from WW and make it specific to you. I love love love this topic. I'm glad that WW incorporates this regularly in some type of fashion in the workshops because like I said, our why changes as we progress through our journey. So it's important to have a constant reminder of why the why is so important. Let me know down in the comments, what is your why for being on your weight loss and health journey. Now let's go ahead and jump into this week's weigh-in. Like I mentioned, the scale was doing a lot of this throughout the week due to strength training. I stepped on the scale first thing this morning. I actually fly out a little bit later this afternoon and I'm actually down in weight. I am down 0.6. That's a huge win for me. The fact that my weight has been up well over a pound the entire week and as my body has started to adjust to my new workout routine, I actually am down 0.6 on the scale today. I fully expected to come into this week's weigh-in and tell you that I gained weight and I would have been 100% okay with that. I would have been 100% okay with that because I know that the weight isn't fat. It isn't something that I'm doing to actually gain weight. It's because I'm strengthening my body and I'm building muscle and I'm developing a healthy exercise and workout routine. So no matter what the scale says, at this point it doesn't matter. I'm already noticing huge changes in my body and that makes me so incredibly happy. Now I want to hear from you guys. Let me know how your week was. Did you gain? Did you lose? Definitely let me know what your why is. I can't wait to hear what your why is for your health journey and just let me know how you are doing down in the comments. I absolutely love hearing from you.  Follow me on Instagram and join my Facebook group so you can keep up with me. Date today. I'll do my best to share lots and lots of video clips and pictures with you of my trip and we'll see what next week's weigh-in brings. Post vacation and the second full week of a regular exercise routine. So if you enjoyed today's video, don't forget to give it a big thumbs up. Subscribe if you're not and turn your bell on because I do a weigh-in every single Friday and I do upload five days a week. Check out that description box for nutrition coaching. Highly recommend macros and calories. That's how I'm reaching my goals. That's how a lot of you are killing it on your weight loss journey and if you would love some extra accountability, I would be happy to have a one-on-one coaching session with you as well. Links, discounts to my favorite things and my Facebook group are down in that description box. Thank you for watching. Happy Friday. Happy weekend and I'll see you all in tomorrow's grocery haul. Bye.


A lot has been said by the Minister of Justice and rightly so. All I want to add is to say the world and the leadership of individual countries, Africa included, leaders of today must gather courage to do what is right. They must not hide behind past events. We have had this issue before us, the death penalty, before us for a long time. And some leaders in this country on our continent and the world would say, It's okay, let it remain there as a deterrent because after all we have not executed some people in the last 20 years or so. That's not good enough. We must gather courage as leaders to do what is right and to do it for humanity. So for me, for us in this government, for me it was a non-issue. It was a question of the process. And today we have this lunch hall to celebrate the decision that this government took. I want to thank my colleagues on the Cabinet table and to thank my colleagues in Parliament, our colleagues in Parliament for doing what is right, for doing this for humanity. Thank you to the citizens of Zanzibar for allowing us, we are only servants after all, for allowing us to do what we have done for humanity, to remove the death penalty from our laws. I remember people debating that no, no, you can't do that without a constitutional amendment. Many did not even read our laws, including the Constitution. But that's not the issue for today. The issue today is to celebrate the decision, our decision as a country. Please don't credit this president, don't credit this cabinet and credit this government. Credit the people of Zanzibar. I repeat, credit the people of Zanzibar for doing what is right. So thank you to the people of Zanzibar. I want to say something, a little bit of something here. You heard the figures, numbers of people were escuted, those who were not. I can bet as I stand here that some of those who were escuted never committed crimes that led them to being escuted. How do I know? I know. Because I know I was on the death row myself. Technically, prison is a death row. I was a prison detainee with five others. I'm looking at someone else who was also in prison in this audience. I know that person did not commit a crime of prison, but was on the death row. Definitely, I can vouch that the six of us never committed any prison. We never planned to overtake a government by labor means. We never, not even a thought of it. Never, ever. But we were there in jail in Mukovec on prison. If we were in that situation, and it depends on the prosecution. If the prosecution had a stronger lawyer than our lawyers, and the trial went on, we could have been convicted by one of these judges. It's true, isn't it? It's very true. Frightening to some people. But for me, I was a happy detainee because I knew I never committed a offense. But I could have been hanged by the neck until pronounced. And I found that this is an opportunity to end this death penalty. Because others before us could have been killed, yet they never committed a crime. Think about that. So let's do what is right when we've been given an opportunity to provide leadership in the church, in the civil society, in last, in a ministry, as chiefs, traditional leaders. You can condemn we the subjects. You even chase us from your chief books and banish us. Sometimes we reflect on this thing before we do them. Because sometimes we're given wrong information, and we act on it. I know one of the criticisms I get is that in the guise of being methodical, I am slow. It's deliberate. A lot of reports, those vice presidents will tell you, this vice president will tell you, a lot of reports are brought to us.  But they bring them anyway.  It is important in leadership to have a picture. Yes? You can't question us of being indecisive. No. No, no, no, no. The two are different. But doing what is great, taking a decision on a great matter, requires a sober mind, a thoughtful mind. Sometimes you put a file away, and then I will look at it tomorrow. Tomorrow you look at it the following day. You put it away again and say, no, no, let me look at it again. Is this what I'm reading? What this chart wants me to do? No, I'm not going to read. I'm not going to read. So it's not enough to say we didn't hand the paper. So we must leave with this sentence on our books, such two books. No. So we're very delighted that today we're having this luncheon with our international colleagues, local colleagues, and also for me to simply say, to see a number of you here, General Meanda included, today, to see Honourable Gabinella here, to see Honourable Moomba, to see my brother Sakis. There. That in itself is good. That's what the country must be. There are issues with issues against each other, but there are issues we must converge. And I want to invite and recognize the sixth Republican president, wherever he is, that at times the country needs you. Doesn't matter what we feel about each other. We must be together doing your work. We also appreciate that you could be busy wherever. That too is appreciated and respected. I think I've said enough. Except to say, Minister of Justice, the removal of the deformation of the president, criminal deformation of the president is equally important. And as confessed here, this is one decision that I carried an overwhelmed cabinet because many were unhappy about it. Why? Because they say the president is being insulted every day. After all, secondly, this is an old law. Even in other countries, presidents are protected. My answer was that that's the very reason we should remove it. The president who is insulted must let's remove it and pull the carpet away from those that are using this law and find pleasure in it. Can you see that? The victim must reflect and be the one who can actually solve the problem that's long standing. It depends on how your mind works. Honestly speaking, so we're very delighted that we've taken away the criminal deformation of the president. Honours is on colleagues who like abusing a president as an office. Let's debate issues. Let's differ on issues. Because my ears will remain big. That's how God made it. It won't change my ears. No matter how much you say LCH is big ears, it doesn't change anything. Let's talk about the efficacy of, if you like, the fight against corruption. Let's talk about that. Why would someone support the fight against corruption? Because it takes away resources from children in school, desks, retirement benefits, all of that. So we're very delighted to piggyback on this luncheon to say we're very happy to have removed the criminal deformation of the president. And this journey will continue looking at laws that are cake. I dare say here, including commercial laws, the laws around tendering are too winded. 18 months to go through this environmental assessment, to go through this and that, the world is not waiting. We need to reconstruct our economy like yesterday. The tender laws are too winded and will be addressing this. So it's not just this area of death, penalty, criminal deformation of the president, but also commercial laws, economic laws that are inhibiting acceleration of economic growth, investments. So I want to say to the people of Zambia and to the world, it's a total package we'll be reviewing. And we'll do it in good faith. We mean well for this country. Compliments to the citizens. Merry Christmas, happy new year, God bless us all. Thank you very much.


This video will share the guiding documents for basic education for adults here in Washington State. The Washington State Board for Community and Technical Colleges, or SBCTC, is responsible for administering the Adult Basic Education Components of the Workforce Innovation and Opportunity Act of 2014, Title II Adult Education and Family Literacy Act, or AEFLA. Our adult basic education programs are guided by BEDA's vision, mission, values, and goals, and leverage the essence of these documents in their collaboration with workforce and social service partners to ensure students have equitable access and support to gain skills and access resources to meet their educational and career goals. Services provided under Title II of the Workforce Innovation and Opportunity Act, and WIOA, are integrated into BEDA's vision, mission, values, and goals to the greatest extent possible to tightly align training and support services to the realities of today's job market and the needs of our students, clients, and workforce. The actualization of these guiding documents is critical in meeting the educational and workforce challenges in Washington State. Primary among the challenges in Washington are the facts that in the next three to five years there will be over 740,000 job openings in our state, with the majority over 70%, requiring some post-secondary education. And we simply do not have the person power with the skills to fill those jobs. At the same time, we have over 685,000 adults in Washington State who lack the skills needed to meet identified workforce needs with over 545,000 individuals 18 years of age and older without even a high school credential. This does not include individuals in our state 16 to 18 years of age. And in 2019, we served only 44,371 of those 685,000 adults in basic education for adults programs. We are currently working with Washington's Adult Education Advisory Council on a marketing campaign to greatly increase the number of Washingtonians taking advantage of our basic education for adults pathways. These pathways are being implemented across the nation because of their evidence-based success. Our work in basic education for adults is also critical in meeting the Washington Student Achievement Council, Governor Inslee's, and our state's road map attainment goals. Those goals are that by 2023, all adults in Washington ages 25 to 44 will have a high school diploma or its equivalent, and that at least 70% of Washington adults ages 25 to 44 will have a post-secondary credential. This is our work in basic education for adults. Our work and guiding documents in BETA and across the system are guided by the SBCTC vision. The SBCTC vision is as follows. Leading with racial equity, our colleges maximize student potential and transform lives within a culture of belonging that advances racial, social, and economic justice in service to our diverse communities. We in the Basic Education for Adults Office are dedicated to develop all policies, procedures, trainings, and activities in support of racial equity and are fully committed to the SBCTC vision. In alignment with the SBCTC vision, the Education Division at SBCTC adopted the following mission statement. The Educational Division is committed to promoting the rights, welfare, and institutional needs of all students to access equitable educational opportunities. We strive to create inclusive learning environments by advocating for and supporting high-quality, evidence-based, rigorous education and career pathways to prepare a future workforce for a rapidly changing economy. The SBCTC vision and Education Division's mission are both in alignment and integral pieces to our development and implementation of guided pathways. Moreover, they support our Basic Education for Adults Workforce Innovation and Opportunity Act state plan vision, mission, values, and goals. BEDA's vision is to advance racial and economic justice. Basic Education for Adults provides equitable programming for all Washingtonians to realize their potential as they launch on a supported college and career pathway to living wage employment and strengthen the vitality of their communities. Our mission, Basic Education for Adults works collaboratively to offer culturally responsive and equity-focused college and career pathways that address barriers and enable students to obtain meaningful employment, meet workforce needs, and reduce economic disparities. And our values are critical drivers in our work together. Basic Education for Adults Work is guided and informed by our commitment to students' cultural capital, voice, experience, perspective, diversity, equity, inclusion, racial, economic, and social justice, quality, collaborative, evidence-based, innovative pathways. Our success is measured by the success of our students. But BEDA's goals are where the rubber hits the road. Our goals are to intentionally review, develop, and implement culturally responsive policies and practices that promote racial and economic justice. Implement and scale equity-focused, comprehensive, and innovative college and career pathways to accelerate student completion and advance racial and economic justice. Provide students with the equity-focused navigational and support services needed to create and follow a college and career pathway plan that identifies the funding and resources needed to reach their goals. Create and strengthen inclusive instructional practices that honor and support the diverse needs of all students, while maintaining academic integrity that ensures college and career readiness. Guide and support culturally responsive and equity-focused instructional practices that accelerate student completion to certificates, one year of college plus a credential, degrees, and living wage employment. Develop and offer culturally responsive coursework that is contextualized to college and career pathways leading to high school completion, post-secondary education, and living wage employment. Create and maintain strategic partnerships and alliances to leverage local resources and support integrated service delivery. Create an environment that values and respects the diverse identities and strengths of students and empowers individuals to claim their personal agency. These collective goals and basic skills are all focused on moving each individual we serve towards success. And we're lucky that our work with the Lumina and Ford foundations has identified what that success looks like. The research identified the greatest increase in economic attainment as being one year of college level credits plus a credential. This became known as the tipping point for students needing to find family sustaining jobs. In 2005, over 15 years ago, English language learners reaching the tipping point had an annual earnings increase of $7,000 and adult education students had an increase of $8,500. Our goal in basic skills is to ensure that every student's pathway is designed to, at minimum, get each individual we serve to that tipping point. And we cannot do that without the expertise of all of you. Thank you for the work you do and will continue to do. Please explore the additional resources available in Canvas for more information on our vision, mission, values and goals. Of particular relevance to this video are the following documents and websites, Workforce Innovation and Opportunity Act, Washington State Roadmap Attainment Goals, SBCTC Vision Statement, BETA WIOA Title II State Plan, or 2020-2023 Adult Education Four Year Plan, Tipping Point Research.


So team keep it clean before we start this video. I got to give a really really special shout out to my guy Nick Wallace Nick Wallace he currently going through a couple things right now But I just I want to let you know that I appreciate you man. I appreciate you still despite everything Always showing love always showing support So I hope everything turns around for you man. I hope everything gets better for you And I hope you can pull through What it is that you're facing right now? So I got a lot of love for you. Thank you. Shout out to you. Shout out to your wife Shout out to your whole family man. So I appreciate you a whole lot man But what I wanted to talk about today is with Odell Beckham, Jr. and the Baltimore Ravens It's like they're in an upside-down world or something and the reason I say this is because Exactly what I was thinking was going to happen to the Baltimore Ravens. It ended up happening to the Jets Because and work literally word for word word for word verbate them exactly what we thought we were gonna hear about the Baltimore Raven because We know the Jets were interested in Odell Beckham, Jr. The Ravens were interested in Odell Beckham, Jr. But the Ravens they obviously closed the deal But what I thought and I expressed it with y'all so many times before What I even even the day of the day that Odell Beckham, Jr. got signed we talked about in the video that we did it Wasn't looking good and we thought that this is what we're gonna hear We thought we were gonna hear the Baltimore Ravens. They they really were interested in Odell Beckham, Jr. They even made a competitive offer To Odell Beckham, Jr. But he decided to go with the New York Jets, but listen to this Listen to the wording. This is from Mike Florio from pro football talk I know a lot of Ravens man not big Florio, but anyway, it says the article is called how close were the Jets to signing Odell Beckham, Jr. He said as of last Sunday receiver Odell Beckham, Jr. Was ready to visit the Jets on Monday then suddenly the Ravens signed Beckham with no visit to the Jets So if the Ravens hadn't moved so quickly to close the deal, what would have happened here? It goes listen This is the part Jeremy Fowler of ESPN.com reports that the Jets made Beckham a very competitive Contract offer That's the one right there. That's the one that I'm sold and we're so used to hearing About the Baltimore Ravens We've heard that so many times. It's like whenever I see that I automatically associated with the Baltimore Raven because it's happened plenty of times and I respect the the effort in trying but there'd be so many times we heard that in Obviously the the player went another route. They went to another team So it's nice to be on the flip side of things. It's nice to be on this side of hearing that phrase Because Ravens one they got they got the guy and Like I know we've talked about this a lot But it's something that's worth celebrating because it just don't be happening like this It's like and and and last year Last year was one of the worst and last year was one of the craziest times with that actually Because it happened At least two times on the defensive side of the ball. So that that was the shocker right there twice on the defensive side of the ball last year because remember last year Bobby Wagner. Oh Bobby Wagner inside linebacker Bobby Wagner and the Ravens they were caught them They were like a Bobby like look, we love you We we trying to bring you on board man You would be a perfect fit and I'm over here thinking Well, yeah Ravens could easily sell Bobby Wagner. He's an inside linebacker. They could be like look You remember Ray Lewis. Yeah. Hey, we know that you've been a good inside linebacker, too We a defensive team. Oh, I thought it was a four-shore thing and the Ravens even offered him more Guaranteed money then he got with the Rams There for the more guaranteed money. So you when you get more guaranteed money, you got a hit less incentives To end up getting a getting closer to the max your deal There's still gonna be some incentives or whatnot but you got more guaranteed like they offered you more guaranteed money and He said no He's from the West Coast and whatnot. So we get but still they made a competitive offer But it didn't happen didn't work out And then even last year too it it went past competitive offer for Zadaria Smith if we all recall Because in the legal tampering period, which I still hate I can't stand it In the league they need to just get rid of that. Just just ask stat But in the legal tampering period the Ravens had came to an agreement with Zadaria Smith So everybody like oh, yeah, yeah, it's a nice reunion. He's coming back to town. Okay. We got a pass Russia. Let's get it but then couple days past And we hadn't heard anything about Zadaria Smith officially signing his deal with the Baltimore Ravens The stuff was weird And it was like, okay What's going on with Z? What's happening? So a couple days pass and in time pass and then it was like, oh, well We started hearing rumors that well, maybe maybe the Zadaria Smith ain't really feeling the deal anymore We were like, huh, but I thought they agreed to But I thought this thing was set in But I thought Zadaria Smith was getting ready to return to be a Baltimore And it just didn't happen and then he ended up taking his talents to the Minnesota Vikings so I guess he really he really wanted to be in purple but Just not with Ravens purple. I guess that the tone was it's a little too different for him. But anyway So that was another one and then it turned out with that one that the deal that he would have had with the Ravens It was a better offer than what he got with the Vikings so Maybe he was just like one of them people where and it's unfortunate But where again, I gotta gotta link it to a relationship where it's a guy that likes a girl But this girl she really likes a different guy. She doesn't like the guy that really likes her But she likes a different guy. So the guy a likes the girl, but the girl she likes guy B and She will use guy a To try to make guy be jealous Because that happens sometimes we see it all the time in it happens in a lot of relationships, but it happens in NFL too to where The girl she may be available She may be available. Nobody's talking to her. Nobody trying to hit up or nothing.  It happens all the time When these guys are there'll be free agents just sitting out there in free agency. Nothing's happening. They're just looking around waiting Chilling their free agency Nobody interested no offers. No visits.  Oh, we interested now then team seeding team deal. It happens all the time We always see that so I Guess maybe Zadaria Smith was trying to make the Vikings a little bit jealous Well, I don't know what it was. But I mean, I think it went a lot past jealousy Because the Ravens were like, hey, we got our guy back because you know last year was a reunion year They brought back Michael Pierce, too Anyway, so yeah, that's that's just life in the NFL man But again back to Odell Beckham, Julian this whole thing I am very happy that the Ravens are actually on the right side of the whole contract offer But just wanted to share that with y'all and again, the reason I wanted to share with y'all was because of the the wording very competitive offer That that that was the sole purpose of this video because that that phrase Us Ravens fan we just know about it so much But this time we're on the good side and I love it team keeping clean I love y'all again special shout out to my god Nick Wallace. We love you man We appreciate you and we rocking with you man. We have