Well, hello everyone. Welcome to Bare Metal SIG and welcome to the hopefully quick fun presentation on ML2 neutron bare metal. So, when everyone thinks of neutron, you think of a single cube or a single component. And then sometimes you think of, oh, there are other services that are bolted next to it that like handle DHCP or that handle OVS. But ML2 is very different. And it's important to understand this difference when you start talking about managing ML2 drivers and infrastructure for bare metal because save blue cube is my my ML2 driver in this case. The ML2 driver is bolted directly to the neutron API. And that's kind of frightening for many people here. So hopefully I'll provide a little more clarity to this. But in the case of bare metal, we also have a second ML2 driver. To help the reconciliation. So let's say in this case, this one is networking generic switch and this one is networking bare metal. Networking bare metal provides the reconciliation, which allows you to take the switch configuration that is posted by Ironic and upload it to that's taken by Ironic, posted on the port bind and then basically long story short what happens is neutron API gets the request and then it goes through all the end points and all the things just loaded inside of it saying, hi, I have an update. Hi, I have an update. And if the type in that driver matches, say this driver says it's a it supports Munich bare metal, which is the type for the bare metal machine indicating that the MLT driver can manage bare metal ports, then that code executes inside the MLT driver. So in this case, the update to the networking generic switch MLT driver causes the driver to go and log into the switch and insert switch configuration. And then when we come down to the post update or post up post update step basically the networking bare metal MLT driver gets the command says, hey, I need to make sure that the state in all the state is correct and reconcile it in case there are any problems. So that's at a very high level how MLT works and how it is assembled and it's kind of scary when you think about how that works because it is bound into API and you need your API send to be able to access it. But the Neutron folks have said in the past if there's demand they are willing to retool it or support the ability for remote and L2 executions. Any questions? So this was this was made for I mean, this is the generic MLT framework in Neutron, right, which was made for virtual machines. It exactly. So what is the like difference when using this for bare metal machines and switches? So physical hardware, I mean, okay, so so I kind of go through that one has to kind of comprehend the physical model. So say I have an MLT driver here and I have my Neutron API here and here is my save my MLT, or not MLT, my Intran ODS agent or DHCP service. Basically what happens, the request comes into Neutron. It transmits it to the message bus and begins to enumerate through all the endpoints that are possibly bound or possibly exist in all the MLT drivers. When it finds a match it sends the request over. Meanwhile, this other service basically does the same thing, except it's not the MLT model. It's done via an RPC bus. So the difference in this scenario is that the other Neutron services use the Neutron, or not Neutron, they use the message bus established and used by Neutron. The MLT driver itself uses internal communication. I basically data payload is being passed and essentially what happens with a virtual machine is the payload for Neutron or Nova to request a port binding is fairly simple. Hi, I want to bind this port to this virtual machine. Done. And this is actually fairly simple because in essence the port binding request only has the VNIC ID and then the actual name or I think it's like a to do that compute name or host name of the actual server. So when Neutron is able to say, oh, here's my Neutron service. I have a request to change or do an update port or bind a port. Let me send it over for my RPC service. And this RPC service happens to be on the compute node and it's able to get this information from the message it gets on the initial post. So the RPC request gets processed by the compute node. It does the port binding. It sends back to the message bus done. And the reason it's so different with bare metal is the fact that we need the extra MLT driver interface to actually reach out into the infrastructure and do the same thing, which is why in Ironic, you have to have extra port information to achieve the binding. Why we have separate network interface drivers, by being for pre-configured networks, Neutron, if we actually have to set a certain more data into Neutron for the port binding or configuration to succeed. Also in newer versions of Ironic, you have to use the Neutron driver if you're doing stateful IPv6 for reasons. And I think that reason is largely because the IPv6 specification does not require static addresses by MAC. It operates completely differently. So we basically have to tell the DHCP server, here are all these possible addresses this host can get to support IPv6. Hopefully that provides a little more clarity. Yes, thanks. Any other questions? Any typed questions in the chat? Is that actually, do you know if this is like the main like deployment model for Ironic with like the Neutron driver for networking? Or is flat more for our deployment, for instance, as I said at previous occasions, our networking is pretty, it's pretty much a know-op. The nodes have like in a different database, they have pre-configured IP addresses, the DHCP server is somewhere else. So we're trying to more or less make sure that like Nova and Ironic do not interfere with anything on this. So it's mostly a know-op. So whenever someone has like more networking that is controlled by Ironic, I find this quite fascinating. Also because our network is relatively simple, it's really completely flat and there's no separation of like tenant networks, for instance. All we have is the BMCs on a different network. Apart from this the everything else is on the same network basically. Interesting. Basically the model people tend to use is flat and there's two reasons for this. It's easy. It's simple. Well, those are two reasons on its own. There's a, I guess there's an additional reason which is in organizations you end up in this assumption where you have to have separation of duties and the lineation of humans versus parts of infrastructure. So basically you end up with people who are in charge of the switches and they start to become very uncomfortable in software, especially software they don't control is managing a switch configuration. And it's repeatedly been an issue that we've encountered as a community. And I'm not sure there's a good path forward on that, largely because it's the only way to get people to really use it is for them to understand it and understand the value of supporting some sort of dynamic infrastructure like that. Right. In our case, for instance, the networking in our data centers managed by a completely different team which managed the network in the data center, the network on our campus, which is responsible for phones. So it's completely separate. So I think that doesn't help with introducing new tools that do configuration of their equipment. I don't know if this is the same in other data centers as well, if they have like this like more like historical or traditional separation of things. My experience is it's extremely common because organizations feel that there's a need to separate and silo these roles and be delineate that access and restrict it because if the network goes down your business or your operation is down. Right. So you have to operate a highly available, highly trusted service. And so it becomes a, oh, this is something I don't know and the natural human reaction is, I don't know it, I must fear it. Right. It's not only this also, for instance, for the networking team when they already have or when they like get servers through Ironic, they kind of, especially when it comes to servers that are critical for the operation, they're a little bit worried that some other tool has access to this very critical machines so that usually say no thank you and rather have it like completely independent. So yeah, so this makes like adoption more complicated. And in that sense, it's risk management and they perceive anything they don't directly controls risk. Right. It's again, they don't know it, they don't understand it. Thus, it's hard to trust. So I hope I provided, context people did not have before today regarding how this works. Are there more questions? Doesn't seem to be the case. So thank you very much, Julia. Rock them.


this as a nice talk for setting the stage. The original idea was to have it as a very in depth, very long two panel talk. I think that was very optimistic. So this will be hopefully a cool talk in kind of the history and the field of program analysis, how we got where we got and where we came from. Let's see, we're almost there, is it not? Can we have a countdown? All right. The stage is mine. Psych, I'm not talking about program analysis, we're going to look at cats all day. But in all seriousness, when I saw that it was the 25th anniversary of DEF CON, I had this thought because just the week before I read the CFP, I was reading some paper about program analysis that was published in the 90s and I was thinking that, you know, wow, these guys had like a lot of the same ideas that we're having now and they were talking about this in the 90s, I wonder how much other such history has kind of fallen by the wayside. And so I started looking a little bit digging through it and I wrote this proposal for the CFP to kind of go through the last 25 years of program analysis and then when I was putting together the slides, I realized that program analysis goes way farther back. So where does, you know, the 25 years number come from? And I thought about some more, I realized that 25 years is actually my involvement with program analysis. 25 years ago, my grandma gifted me a book called Professor Fortran's Encyclopedia, which had like a cat named X and a professor named Fortran and a caterpillar named Caterpillar. And it went through their adventures in computer land and taught kids all about computer. I was crazy about this book. I ditched classes in first grade to hide in the stairwell and reread this book over and over and I learned basic from it and then later on when moved on to C and so forth and I realized very early on that if I, you know, make a standard program that asked me for my name and my name is too long, my last name by the way, so I actually triggered bugs with this last name, then the program would crash. So then, you know, that turns out to be a buffer overflow and so forth. And then I started realizing that it's incredible to look at a computer program, try to understand how it really works. I mean, that's a whole different world in there, right? A world of ones and zeros and assembly instructions and logic gates and somewhere along the line it becomes alive and it becomes behaving and starts behaving in ways that you don't quite understand ahead of time. And that's manual program analysis, understanding how this works. But then you can take that and make it automated. You can create programs that can understand programs. And it's like a whole level of craziness. That's like creating some sort of intelligence almost. And that's what fascinates me about program analysis. That's what's kept me going down the path I've been going for the last 25 years. And so this talk is about, you know, the history of program analysis and it's about, you know, why we want to do program analysis in terms of kind of the dry things, like we want to, you know, hack programs, we want to make sure programs are safe. But try to approach this topic from the sort of kid's perspective of discovering a whole new world of how programs work and how programs might understand other programs. Program analysis is useful, but it's also kind of magical in a way. So with that said, let's move on to technical issues. Hmm. Hold on. Boom. Success. Let's move on to program analysis. Program analysis is a field that has basically three parts to it, right? You want to analyze a program, but you always want to analyze a program to figure something out about it. So for example, you might want to make sure that a certain specification of the program holds. The program doesn't crash. The program doesn't allow random people to unlock your smart key for your house. The program doesn't allow, you know, for your brakes to be remotely controlled and so on. And you have a goal that you want to achieve with that specification. So for example, if your specification is, hey, I, you know, don't want this to crash, you could say I want to make sure that that specification holds always, or you want to say, you might want to say I want to make sure that that specification does not hold. I want to find the crash, right? So kind of, are you looking for bugs? Are you trying to make sure things are safe? And then, of course, once you decide what you want to do, you need to decide how you want to do it. What is the technique that you're going to use to reason about specification on your program? And with these three kind of categories in mind, I'm going to run you through the history of program analysis and where along the line you collected different items, kind of different instances of these three categories. And so we're going to commence on a brief history of computing starting in the 1830s with Charles Babbage. Babbage created the analytical engine, it was a mechanical computer, a super far ahead of its time. And he wrote a bunch of programs for it. By all accounts, these programs were actually really buggy, so that's really interesting. So the first computer programs written were already buggy, we didn't have that term yet, I'll talk about that later. And about a decade later, Ada Lovelace published a series of notes and, you know, more reasoning about this analytical engine, including the first program, the first complex program for one of these machines. So this is Ada Lovelace's description of the trace of, the execution trace of this program, right? And the program computed Bernoulli numbers, and so she goes through instruction by instruction and says how variables change and so forth. And this is in the 1840s, right? And so that's where things started. In 1947, about 105 years later, we got the term bug. Grace Hopper found a, or people working with her found a actual moth inside a computer causing a computer error. So 100 years roughly after the first instance of kind of a computer in the semi-modern era, we have kind of this official term for the word bug. And this very quickly started getting people thinking about how do we kind of prevent actual software bugs, the moth, I guess, technically was kind of a wetware bug. But how do we prevent bugs in our software? And one of the kind of early visionaries here was Alan Turing, who's known for, of course, Turing machine, but also cracking enigma and onwards and onwards. But he also had the first paper that I could find that talked about, hey, maybe we should try to make sure that the program is correct, right? And he published this in 1949. So two years after the kind of invention of the term bug, people start thinking about how do we make sure that there are no bugs in the program. And this creates the field of program verification. So program verification says that, hey, given a program and the specification, we want to make sure that there are no bugs in this program, that this program carries out the computation it needs to carry out and so forth and doesn't go astray. So as an example, here's a simple program that has a crash, but that crash is not reachable, right? So if you give this program the somehow three numbers that add up where a plus b equals c, but then c minus b is not equal to a, it'll crash. And you want to see if this program is safe. You can run a program verification on it, which will identify, you know, hopefully that this condition can never hold and will produce a proof that tells you that the program is safe according to your specification. So that's great. And if everything worked like that in the real world, then we might not have bugs. And in certain cases, it does work like this in the real world. So there is formally verified hardware, according to a specific specification, of course. So things that the specification doesn't reason about, you know, maybe still can go wrong with that hardware, but things that are covered by the specification don't. So there's, you know, hardware that can provably not contain kind of timing side channel tax, for example. And there's verified software. I heard recently that Google, for example, is switching over to a formally verified crypto system. And so the problems, of course, come when the software kind of gets bigger and complexity starts getting introduced and verification stops being able to reason about things very effectively. So for example, here, we have a different type of program, right? And this program also doesn't crash. That is not solvable. There's no solution. But it took humans hundreds of years to figure this out. And the computer, you know, verification tools, unless they're special coded for this, will also be unable to handle it. So it will kind of see this condition. It will say, okay, well, if this condition is true, then the program will crash. Can I prove that the condition is always false? And if it can't prove that the condition is always false, it has no choice but to alert that the program cannot be verified. So what happens then? Right? So then you have to go in and you have to start looking at the program manually and finding bugs. And if anyone's used kind of commercially available static analysis tools, you're very well familiar with the false positive problem, right?  And some of those are actual bugs. But you spend a lot of time chasing down the alerts. So when we looked at, you know, software, open source software, for example, we often see, you know, a security check done twice, the same check. You know, if A is not null, if A is not null, why is that checked there twice? Because for whatever reason, a program verification tool alerted that there could be a bug there and the programmer figured out some hack to make it shut up. So program verification, while it's a very useful feel like I said, there is verified software and hardware out there. It's not kind of the final answer on its own. So we also at some point need to have kind of the flip side. So program verification can say that is safe. But you know, after that it says okay, I can't really reason about it. So the flip side is you have a technique that says that is not safe. I can prove it. But I can't really prove, you know, if it is safe, but if it is not safe, I'll give you a counter example. And the way this works is by, you know, finding counter examples to whatever technique. So in this case with a slightly different condition that is A squared plus B squared equals C squared, a technique might find A, B and C of three, four and five as a counter example that will reproduce a crash. And so this is, there are many techniques that, you know, we'll mention later that can be used to do program testing. But one of the very early ones, the first instance of program testing of this style that I found was in the 1950s, which is about four decades before I thought that this kind of idea was created. Program in the 1950s would program in punch cards. And to test their code, it was common practice to dig punch cards out of the trash and feed them as input to your program. This is unexpected input, just random stuff. And of course, but random stuff, your program shouldn't crash. So this is kind of an early example of this sort of kind of institutionalized testing that we're, you know, only seeing come back recently. And so, you know, there's early developments, verification, testing, the creation of those two ideas, and then the idea of what you might check for. So the, you know, trash decks, checks for crashes, touring reason about ensuring logical properties. But this is all done manually. So this is kind of our first set of tools in our tool bag, and they're manual tools. We have to dig them out. Okay, let's get our trash, you know, cards that this one got eaten by something and, you know, put into ones that won't jam your machine and try them. But none of this was automated. And so, as computers became more and more ubiquitous, the need for automation started showing itself. So again, we come on a mention of Grace Hopper here because she not only found the first bug, but she also invented the compiler. So Grace Hopper in 1952 published a paper saying, hey, what if we wrote in kind of higher level languages and it got, you know, squished down to computer code. And this took a little while to catch on, and the reason it took a while to catch on, one of the reasons is that the code that was generated by this compiler was very slow. It couldn't be, you know, it optimized as well as hand written assembly could at the time. And so this identified another need, another goal of program analysis, transformation of binaries into something different, something faster in this case. And in the modern era, you know, you can transform binaries, for example, or transform programs to ensure that they're safe. You can transfer programs to meet any sort of specification around on a different set of hardware. And so now we needed to optimize code because, you know, people write slow code when they're writing source for whatever reason. And another thing happened. People started realizing that we have all of these architectures with all of this data flowing around in them. And if you're not very, very, very careful, some data could be read from or written to a different location than intended and the memory could be corrupted. So I just played, you know, two days of a CTF full of these errors, of course, memory corruption bugs. And this was first described in 1968. In 1968, there was a paper saying, hey, you know, we noticed that if the kernel, they called it a monitor at the time, blindly trusts everything that, you know, the user space sends it, bad things can start to happen. And so this paper introduced that concept. It's also the paper that, you know, one of the early works in memory protection and virtual memory and so forth, which is pretty interesting that immediately they realized this was a problem. And a little while later, there was, you know, Ken Thompson's reflecting on trusting trust where he reasoned that you could build in a back door into a compiler that could build in back doors into sensitive code. And so suddenly we have two more things that we need to worry about in terms of specifications, or even more, but you know, including memory safety, information disclosure and authentication, right? So now you might want to verify that a program doesn't have a back door. Or you might verify that a program will not leak your sensitive private information. That is, that one is very relevant today with all of our phones having all of our information and very little control over it. And so the need for automation was pretty well established by the kind of turn of the century for sure. But even before that, those papers were like in the nineteen, you know, sixties or something late 1960s. And very quickly, oops, sorry, very quickly people started to meet this need. The research community started pumping out automated approaches. And so I'm going to introduce a couple of these automated approaches. And before I do so, I want to make you guys experts in program analysis so that we can reason about what's going on here. So we'll talk about a couple of prerequisites, right? So let's say you have a program. So on the top right, there's like a little Python program already, that's already a vulnerable program, by the way. And so you have this program and you want to analyze it. So you have to reason about a program in a slightly different way as a computer than as a human. So for example, a program is viewed by a computer as a set of basic blocks. A basic block is a piece of code that is executed all together before passing on control flow somewhere else. So in our case, we'll pretend that input is part of this basic block. So this x equals input is a single basic block and then it might branch depending on the input, right? So if you put in 42, it'll do one thing. If you put in something else, it'll do another. And so this is the end of the basic block and then the result of that F statement is two other basic blocks, the true case and the false case. And each of these has a constraint that has to be met, right? In order to go down one path, you have to put in 42. In order to go down another, you have to put in not 42. And so these are called constraints. If you then look at all of the basic blocks of a program, this is called a control flow graph because that's, you know, these are basic blocks and control flows between them. And if you look at a path down this graph, now in this case the graph is nice and simple, but in reality it could have loops, a path might hit the same node multiple times and so on. And then you look at the constraints all along this path, these are the path predicates that uniquely identified this path. So if you collect all of these constraints and you say that X is not 42, but X is 1, 3, 3, 7, that input will, any input that matches those constraints will take the same path through the program. So these are kind of the prerequisites of our program analysis techniques. So now we'll go through three of them, actually for time reasons we'll go through two of them and mention a third, but we'll start with symbolic execution. And symbolic execution got a lot of hype recently, especially with stuff like the cybergrant challenge and so on as a way for machines to reason about program code. And you think that this is something new, but it turns out that it's not. It's quite old actually. So 40 years ago, a little bit more, the first symbolic execution paper that I could find was proposed. And there were several actually right in one year basically. So this idea had some prerequisites that were met and then it exploded. And so the symbolic execution engines were developed that could then symbolic execute Fortran code. Now we have symbolic execution engines that you can download up GitHub that can execute binaries, Java, Android, whatever you want. And this is kind of a fairly powerful way of reasoning about programs. And let's run through an introduction of it with a slightly more complicated example than what we learned about program analysis with. Hold on. So here's a program that has several bugs, right? One is it, well, it definitely has one bug and that is if you enter a username of service and a command code of seven, it'll crash. You can imagine that instead of this crash, it does some system relevant stuff so it could be a back door instead of memory correction. Basically they have a program with a bug and you would like to find this bug. So let's see how you might approach this problem with symbolic execution, right? So first let's look at the control flow graph of this program starting from the beginning. And the control flow graph is made up of basic blocks and the control flow transitions between them. So we start at this input. If the input is service, it branches, if the username is service, it branches into one side of the equation where it of the program where it checks for the command code being seven. And if it is, it crashes. If not, it prints on command and then it exits. On the other side of the branch, it checks, asks for a pass code. If the pass code is invalid, it prints invalid pass code. Otherwise it calls the authentication function. Then it prints exit and exits. So this is our control flow graph and how would we use symbolic execution to try to find that crash, try to find the ability to reach this crash. So we would start executing the program in an emulator and in this emulator instead of ones and zeros, we are working on X, Y and other symbols, right? So for example, username is a symbol in this emulator. So when we pull in an input, it'll produce an unconstrained variable called username. And we don't know what username is. Username can be anything because that is how we implement our emulator. And as we check for values of username, we create what are called constraints, right? So these are the exact constraints of the basic block checks when it pushes execution forward. And we collect two constraints in this case. On the one side username equals service. On the other side it does not equals service. These are constraints and we continue executing both sides of this statement with symbolic execution. But then we hit something that is very bad for symbolic execution. We hit, for example, string processing functions. So a string processing function like A to I might check a given byte, see if it is a number. If it is a number, it'll do one thing. If it's not, it'll do another, right? Or if it's a certain number, it might do one. If it's not a certain number, it'll do another. So it'll keep branching the symbolic emulator at every, I'm sorry? Oh, awesome. It'll keep branching the symbolic emulator at every if statement, at every check on this number until we get into a situation where there are just too many checks, right? So it'll try to check for a command code of, you know, 10 bytes with arbitrary values of 9 bytes and so on. And there's an exponential path explosion here. And there are some approaches in the symbolic execution world to try to deal with this sort of path explosion. But in general, these approaches boil down to the requirement to remove paths, right? And lose this information. And so in the end, the symbolic execution engine might only find certain paths and not others and miss the bug because we have to simplify to keep things tractable. So that's symbolic execution. It might find the bug if you're lucky, right? But if you're not, and it has to simplify its state space essentially as it's executing, there are certain things that it might miss. Symbol execution was proposed as you saw in 1975. But the interesting thing is that in Ada Lovelace's notes from 1942, we can see that she did a symbolic trace of the execution of her program. So where she has this sort of program execution log in her notes, she writes down the symbol, the equation for each variable as the program progresses. And this is the first symbolic trace of a program done in 1842 before computers were invented. So that was a pretty interesting thing to find. And kind of a nice point of history that we can put as the start of program analysis in this sense. 1842, not, you know, 1975 or 1949 or any of those much, much later dates. And so symbolic execution is a kind of tool in our tool set that we can use to achieve either verification of a specification, the testing of a specification, or to support the transformation of code. Of course, how you verify a program, for example, using Symbol execution is a pretty complex thing with the Symbol execution style that I described, the sort of program testing. It generates inputs to find vulnerabilities, but it can't prove that there aren't any. But that's kind of a, we could go down that route for an entire semester course and not just a 45 minute introductory talk. So I'll leave that as future research for you guys. And we'll go on to static analysis because static analysis can show that, for example, a program is immune to a certain class of vulnerabilities or properly implements a certain specification. Static analysis, or at least one of the very common ways to do static analysis, which is abstract interpretation, was proposed in 1977, shortly after symbolic execution. And abstract interpretation looks at the control flow graph, the program as a whole, essentially. It doesn't have to figure out how to reach a certain basic block to reason about properties of the program at that basic block, which is the problem that symbolic execution had and the reason that symbolic execution could not find the bug in our example. And so static analysis with abstract interpretation might be able to find that bug, probably will be able to find that bug if it is a simple bug, or actually I should say will be able to find that bug. Because if it cannot prove that a piece of code is safe, it will raise an alert. The problem is that as we talked about, there are false positives. So in our program, it might think that that function has a bug, even if it doesn't alert on that and eat up time for a human to go through and verify all of these results. And so through abstract interpretation, we got a way to perform verification or specification on a program in 1977, 40 years ago. And then we moved on to fuzzing. And so fuzzing is kind of one of the biggest ways to find vulnerabilities in modern software. And it's actually surprisingly simple. Proposed in 1981 initially in its most basic form, which was, hey, let's throw random input at a program and see if it crashes. It's evolved quite a bit since then. And so the specific implementation of fuzzing that I'll describe here is implemented by American Fuzzy Lop. It's a fuzzer that mutates its inputs when it detects differences in program execution. And so let's see how it would run on our program here. We'll start with some randomly generated test case or human seeded test case. So a human might input a username of ASDF and a password of 111.  And so we executed the username input, of course. We executed the check for the kind of service username that could lead to the crash. We did not satisfy it. So we took the else branch, read in the passcode, and aired out on an invalid passcode. And exited. So we triggered those basic blocks. And so the fuzzer starts mutating this input. It might make a location, a capital D or something. Or it might mutate input in a way that passes another check. So it mutated the input in a way that passes that passcode check. It actually doesn't because there's another bug in the program that I didn't notice before. But let's pretend that it creates a valid size of a passcode and triggers that authentication function. So that is a new basic block that it triggers. Now with fuzzing we've triggered a block that symbolic execution before us wasn't able to trigger. Just through randomly mutating inputs. But then we get stuck. Because through randomly mutating inputs, we are unable to satisfy complex checks. We need a username of service. And we have randomly mutated usernames. The chances that we'll create the string service are very slim. And we'll keep guessing and guessing and guessing. Of course in this specific case you could seed the fuzzer with the string service. And you could scan the binary or the program for all of its strings. And automatically make the fuzzer pass this check. But string checks aren't the only complex checks in programs. There are hashes. There are complex input formats. Dependencies between different input bytes. And so in the general case we cannot guarantee of course with a fuzzer that you'll find code that is protected by these complex checks.  So fuzzing was invented in 1950. Not 1981. Or at least manual fuzzing. So again we find that program analysis techniques harken back to the middle of the century. And sometimes even farther to the 1800s. So now we have this kind of toolbox of a bunch of specifications that we can enforce. Some goals that our analysis could try to achieve. And the technique through which we can achieve them. And next we should evaluate them. Understand how these different, understand how these different goals or how these different techniques help us achieve program analysis goals. And as a scientist if you start thinking up an approach and you have a cool idea and you have a new program analysis technique. You want to evaluate it. So you want to take programs and specifications, feed them into your technique and see how well it does. This is my clip art slide by the way. So hopefully my clip art game is on point.  Well there are a number of problems with this. One is that the analysis is more complex than you might think. Because any program analysis has to deal with the environment of the program. It's analyzing. And environments like Windows, Mac OS, Linux, mobile devices, cyber physical devices, they have really complex environments. And having to model this environment even before analyzing, understanding how much better your program analysis technique is than previous techniques is quite a big investment that people often don't make or make in a kind of very fast matter. Another problem is finding a good data set to evaluate on. There's not really a good data set or there wasn't a great data set for a vulnerability user. This problem is actually being worked on and new data sets are being created as I'll talk about. But you need a good data set with ideally known vulnerabilities so you can reason about how many of them your bug finds. And with variable vulnerabilities and different programs. So your technique isn't just specifically tailored for one style of vulnerability that you happen to detect. Or one specific program that you happen to be very good at analyzing. Another problem is these specifications. Specifications in the real world are very complex. Whereas specifications that you might want to use for your analysis tool initially in the early stages of development need to be fairly simple and ideally pre provided. If you're looking at the analyzing something like Chrome and your specification is that Chrome should not leak user data to someone that should not get this user data, that's impossibly broad and impossible to enforce. Is your bank allowed to have your various cookies or something along these lines. So you need a very good data set. Standard data set with a very good standard implementation, standard set of specifications so that you can analyze how well your technique runs compared to different work and compare those results to prior work because that's a very important part of science and technical development is understanding if you're making an improvement or not. And so we had problems as a analysis community in meeting all of these goals and having a good data set of applications with a good set of specifications on a good environment that wasn't too complex to implement and that could produce results that we could reason about, that we could say, okay, you know, we have ground truth data for the vulnerabilities that are actually in this data set and we detect acts of them or we managed to rule out vulnerabilities in code that has no vulnerabilities and, you know, so our program verification is correct. And so there, like I mentioned, there have been several projects to solve this problem, to create these data sets and one of these projects essentially was the cyber grand challenge. If you guys were here last year, you probably saw all of the cyber grand challenge, you know, hoop lot where for the first time in history, seven fully automated program analysis machines fought each other in a game of capture the flag. So the same game that I spent the entire weekend playing and only got four hours of sleep is the game that machines who didn't need to sleep played yesterday, last year rather. And these machines of course suffered from all of the problems that I just talked about, the environment problem, the specification problem. And so the cyber grand challenge created a custom operating system with very specific vulnerability specifications to evaluate these systems. Now for the actual competition, of course, the source code wasn't available since then they released the source code. So you can really look at the source code, understand the vulnerability and then reason about how well your tool finds certain vulnerabilities across 249 binaries. So it's a 249 program. So it's a data set that has a lot of variants. There are a lot of different types and different difficulties of vulnerabilities. And all of this is freely available for people to analyze their tool and understand how well it does. That's my other piece of clip art. So the cyber grand challenge and the program programs that were written for these 249 programs making up the cyber grand challenge data set allowed us to do what I call, to perform what I call the program analysis and nursery experiments. So I see the cyber grand challenge data set as the nursery program analysis where you can reason about different improvements for different techniques. So for example, symbolic execution on the entire data set finds nine vulnerabilities. This symbolic execution as implemented in anger, which I'll talk about in a sec, which is an open source binary analysis program available on GitHub. But symbolic execution on this entire data set finds nine vulnerabilities. That's not a lot, right? There are vulnerabilities in every program of these 249 programs. They're only finds vulnerabilities in nine of them. Of course, we can optimize symbolic execution using various tricks. So anger supports, for example, concrete execution when there is no uncertainty in the state when all the data is known or when there are constraints on all the data. And so by utilizing all of these optimizations, we can get 26 crashes, crashing 26 binaries. Utilizing static analysis, so combining symbolic execution with very testing, which is a technique created by Carnegie Mellon University that utilizes parts of abstract interpretation to help with symbolic execution. We can push that up to 31. So I should say here that this is our implementation of very testing. And it might be suboptimal. So they're very testing. Might be considerably better. But that all pales in comparison with fuzzing. This seemingly simple technique of throwing random data and seeing what happens finds 106 crashing binaries in the data set. So this gives us an idea of where program analysis is. And this is a good showcase for the simplicity of evaluating all of these different analyses on this data set and reasoning about the results. Because now we can look at them in terms of, you know, summation numbers. But there's also some subtleties there. They find bugs, different types of bugs in different binaries. So we can look into that and make inferences and try to create new approaches. So for example, we looked at the difference in the types of bugs that symbolic execution found and that fuzzing found. And we realized that they have very different coverage. So the types of, the basic bugs that fuzzing can trigger are very different from the basic bugs that symbolic execution can trigger. And sometimes one finds a crash, sometimes another finds a crash, sometimes neither of them find a crash. In fact, very frequently. And so we decided to combine them in a very straightforward but careful way. And the idea is as follows. We begin by fuzzing the binary. This is nice and fast and achieves decent code coverage. But as we discussed, eventually get stuck on complex checks. And then we use symbolic execution to find the constraint that can get through that check. But possibly suffer from other limitations of symbolic execution and not find the actual bug.  We synchronize the knowledge of how to bypass the complex check back into the fuzzer. And it continues to mutate that input until it finds the bug. And we do this iteratively back and forth between the fuzzer and symbolic execution. So by implementing symbolic assistance for the fuzzer in this way, we achieve on this entire data set 118 crashes. And an interesting thing is here is that we have this 118 crashes in the data set. But if you take the union of all of the different techniques, all the different techniques have crashed something like this from memory 150 to 160 binaries. So there's a lot of uniqueness between the different techniques used here. Driller, the applicability of it varies by program, whether or not there are complex checks. We can run through a quick run here. So this is a control flow graph of an example program. And Driller starts in the top left corner there. And it first starts by fuzzing a portion of the program before it gets stuck in a complex check. And this is the basic block coverage on the right in this graph here. You can see just kind of flat lines, right? So then if we run the symbolic execution engine to help the fuzzer reach extra code paths, it allows us to find just a little tiny bit more basic blocks in the execute some more basic blocks in that control flow graph of the program. And if we keep invoking the symbolic execution engine to help the fuzzer get unstuck every time that the coverage flat lines like that, we eventually drill into the program deep enough to find the bug. And so that's how Driller works. There's still a lot to do. So there's this whole red area that however many programs, about 100 programs that we have never exploited before. They're going to never crash before using any automated techniques, which represent missing tools basically that humanity has yet to develop or at least we have yet to develop. And so this all sounds interesting to you. I encourage you to join in. There are several ways that you can participate in program analysis research. One is you can contribute to open source frameworks. So we run one of these frameworks in our research lab. It's called Anger. Go to Anger.io. There's a lot that we could use help with documentation environment support, better techniques and so on. And the other is that I'm always looking for students. I'm starting as a professor at Arizona State University. I just finished a PhD at UC Santa Barbara and both of those places are incredible places to go to if you want to do research in program analysis or in general security. So if you're thinking about graduate school or you are curious and want to do an internship, reach out to me. I'll put you in touch with the right people. And you can explore that. The presentation is available online. All my contact info is right here. And I guess we'll do questions in the hall. Awesome. Thank you guys.


I'm Jonathan Goodell, here at the State Operations Center, which remains activated for the fifth consecutive day, initially in response to the public safety power shutoff, and now for multiple fires in Southern California, the most significant of which is a salvage fire, burning in the San Fernando Valley. Let's take a look at the numbers. 7,500 acres have burned, 10 structures have been destroyed, but containment is up to 19%. Thousands of residents, though, still remain evacuated from their homes. Five shelters remain open in the Los Angeles area, and you can check those by going to Red Cross Los Angeles for availability. More than a thousand fire and law personnel are on the ground responding to these fires. And there are 35 OES engines deployed through Mutual Aid, along with 247 from local government and one water tender. With red flag warnings still in effect until 6 p.m. on Saturday, there are also more than 60 engines from state and local governments pre-positioned throughout the state to respond quickly if other fires break out. For the latest fired updates, follow us on Facebook and Twitter and on our blog at OESNews.com. Cal OES Logo, Governor's Office of Emergency Services, where to find us, www.oesnews.com, look search Cal OES, Twitter and Instagram handle Cal underscore OES.


here and I'll talk a little bit about that in a second and then we'll open up a town hall conversation after the panel discussion. So the cameras will be off during the first 30 minutes discussion but you can drop comments and reflections in the chat. There won't be a formal Q&A for that particular for the first portion of the program but we'll ask you to carry some of the reflections and thoughts for the breakout sessions and the town hall afterwards. So welcome all of that. So you know we'll be recording this event. We are recording this event so if you don't wish to be recorded please turn off your camera at this moment. We're also offering live captioning for this program. In the second half of the program we'll split folks into the breakout groups. So if you use live caption we'll make sure that you're in the group where there's the person there. So make sure that you message Tiara Austin so you just can search through the chat function her name and you're able to let her know that that's what you wish so she's able to put you in the right room. All right so there's some quick you know housekeeping things for tonight and just want to start tonight with a organic acknowledgement. You know as we join the Bed-Stuy neighborhood of Central Brooklyn the Long-Termite project respectfully acknowledges that we are on the occupied and unseated lands of the Connorsie who are part of the Monsi Lenape. We recognize them as the original stewards of this land and pay respects to their elders past present and future. We also invite you to honor the land and indigenous cultures whatever you may be if you're not in New York City. So with that in mind you know I want us to you know think about this program tonight so the right of citizens of the United States to vote shall not be denied or abridged by the United States or by any state on account of sex. Congress shall have power to enforce this article by appropriate legislation. I was just reading reading from the 19th amendment so ratified on August 18th 1920 this amendment granted some predominantly white middle-overclass women the right to vote and about a year ago the Park Avenue Armory and with a team led by everybody's Hoffman in the National Black Theater wanted to celebrate explore question and you know think about this this particular anniversary and they wanted to bring a lineup of complex you know artistic voices to use art as ways to reflect upon the past women's right to vote in the United States while being grounded in the present moment. With that task they invited the laundromat project alongside 10 other organizations rather across the city so we were able to commission art projects that will become part of the 100 when 100 years 100 women project. So that you know we just did that a few months ago in August and we were so honored and to be able to be working with these five amazing artists tonight they're all here so Abby Dobson, Natasha Dix, Karina Guerrera, Ski Bersiki, Jamie Sun Wu, and Catherine Tukey they created amazing amazing work and all of that it's you know we'll share some of the links to some of the resources you can able to experience their work online on the archive and our website and also you can see their bios you know also we'll share that shortly so that's some context of you know where we are and thinking about this you know this year where all of these conversations about voting and the things that are changing in this country is an important conversation to have an amazing you know roster of artists and it's through their vision that we're able to see you know new possibilities and perspectives and be inspired to imagine how far we've come but also a reminder that even 100 years later there is work to be done to secure universal suffrage so so thank you to the all of you artists you know. Now I will turn it over to our moderator for tonight and I want to welcome Ami Andrew from Mocata our executive director of Mocata. Ami is the second director of Mocata Museum of Contemporary African Diaspora Arts in Brooklyn she's also a veteran global programming and campaigns across print web mobile video and live events that are grounded in the arts and social justice we are thrilled to have her lead us in conversation this evening and without further ado I want to hand it over to Ami thank you. Thank you so much I am so honored to be in community with all of you and thank you to Kemi and Aisha and the full team at the Laundromat project for creating such an engaging program it's exciting to talk about these things and to actually give us platform to discuss these topics so again I'm honored and I'm excited. For the commissioning project I want to kind of step back a little bit for the commissioning project with the Park Avenue Armory you are asked to reflect on the 100-year anniversary of the ratification of the 19th amendment which granted some not all women the right to vote and each of your work platforms women of color with regards to the subject and I'll do the same throughout the evening pulling quotes from various women who are carrying the baton carrying the fight who are crucial in this moment but when I think about your work and how you've developed this work during an election year at a time before we would know what the outcome of this election would be I'm curious where you stand now when we're thinking about what the world is today and what the world may look like tomorrow and how so many of our rights are as women of color are still in question and still a topic of conversation so when we talk through some of these points today I love you to keep that lens so we'll talk about of course voting in the 19th amendment but we'll expand outward so Abby if we can start with you I'm looking for you on screen there you are I still have goosebumps listening to you saying still have goosebumps and your project sister outsider of course you know I thought of my damn Audre Lorde in her essays and her work and you know just her phenomenal voice and every time you said I'm not your beast of burden I'm not just an angry woman I kept thinking about a particular quote that she said in an essay a 1981 speech where she says the speech is called the uses of anger women responding to racism and she says women responding to racism means women responding to anger anger of the exclusion of unquestioned privilege of racial distortions of silence ill use stereotyping defensiveness misnaming betrayal and co-optism and she continues and she says but for corrective surgery not guilt and I'm curious does this quote speak to you and what your process was and in terms of creating your project and if so what does correcting mean for your work wow we got to start off strong now I mean I to be honest I'm not sure I understand the last part of the question but I'm not going to ask you to repeat it I'm just gonna well we could talk it through essentially you know there's this idea that women of color we we have a right to be angry right we have a right to be angry because of all of these things that have happened happened in terms of stereotyping co-optation distortions of silence etc but Audrey Lorde has a way where she says you know this is not to impose guilt on the other right but this is about corrective surgery it's about changing the lens in which we view womanhood who's a part of this idea of womanhood and I'm wondering what how does that apply to your work it applies absolutely categorically to to this piece I'm not your beast of burden I'm not just an angry woman is I think something that every black woman in particular has felt in this country after you know beyond a certain age I think you probably experienced it as early as being in grade school when when when some of us get pushed out because of how we express ourselves um the piece is very much a response to mist misrepresentation it's definitely a response to people not seeing us and more than anything else not being able to feel with us and for us um and so I agree with with uh mother lord that um that I'm not interested in guilt I agree with that I am interested in empathy and substantive empathy um real nods to wanting to understand what my walk is as a black woman as a woman of color and and correcting it correcting it in ways that matter correcting it in policy correcting in how you treat me correcting it in how you talk about me correcting it in how you um uplift me um and sponsor me quite frankly to do things that that that I care to do and want to do when I say when I say I I mean collectively yeah yeah exactly so it it's it's spot on I wasn't inspired by that particular piece but inspired by lord's work and certainly what piece what piece were you inspired by yeah well just sister outsider as a as a whole um as a whole yeah okay did you want to continue because I know I interrupted you I apologize for that um no I just think that's a great quote um and I think it's spot on and it very much captures uh the the tone of the piece which is to respond to um the ways in which we are made not to belong uh in this country and and to that also gets at the question of citizenship and and suffrage and uh the question of you know who's America is this who does America belong to um and who has a right to to sing America um embody America be America absolutely and I think Karina's piece actually speaks to that as well with vote by mail specifically talking about the legacy between mother and daughter and those experiences of voting um it made me think about my own family as a first-genner and my mom came here as a teenager from Haiti in her lens of what voting is versus my lens of voting to completely different things but this idea of voting is wrapped in our americanness completely right and I love what you said just now about who's America essentially who's America is it right um by the way everyone you can jump in at any time I'm I am going to pinpoint questions to each of you but if you feel the need to express yourself please do I see Natasha just unmuted so feel free to jump in um so yeah uh for me when I think about uh vote by mail in particular um I thought about Angela Davis um and I thought about uh you know black and immigrant women alike have the moral obligation to restrict the size of their families what was demanded as a right for the privilege came to be interpreted as a duty for the poor and I'm wondering if that's the link uh to your piece uh Karina at all and what does it mean to be and what does it mean uh what does voting mean for the immigrant woman today yeah no I I love that and I'm going to look that up I'll send it to you I don't know it I don't know it and I should um but that is the question that I was thinking about because there's so much you know there's there I think there's so much misunderstanding or assumption about immigrant voices and how like well read they are how you know knowledgeable they are how you know they are following along and have their own kind of um ideas and positions and that those are not you know they're I I guess I was really thinking about those assumptions and I wanted to give my mother that voice because I thought her and I always do this in my work anyway it's always like the entry point is always kind of audio back biographical but to talk about these like larger issues and so I thought she um would be an interesting candidate in in um in that uh I guess in that idea and I was thinking a lot about I was thinking a lot about you know the hundred year anniversary and where and and you know I my father is first generation but Jewish and so his mother would have been my grandmother would have been alive at that time um and following along and my grandmother in Ecuador would have been you know having a completely different situation right and so I was really thinking about what what their what their what that moment was and I wanted to juxtapose it with the misinformation around around immigrants and their their the reasons that they vote or don't vote and then juxtapose that with the moment of like how important the vote was um for this like momentous probably most important election I think that I I think I've ever experienced in my lifetime and I'm not that yeah absolutely and I'll ask this to all of you um you know was working on this project in particular uh cathartic was there was there a healing that or a healing process that you were going through to uh to approach the work I mean I'll ask yeah go ahead let let Latasha go for it right thank you for thank you Karina for putting me on the spot um cathartic uh yes uh for uh for one reason which hasn't come up uh which is uh the coronavirus I for me personally uh the pandemic at the very beginning um followed by uh the the deaths of those who we know died immediately following um it froze me um it froze me in a way where I struggled to imagine what I would contribute to this project and and and how necessary my point of view would be to it um and and so the process happened outside of New York City and it happened in a backyard and what I began to think a lot about was my mother um that while we are obviously celebrating the many names that we all mutually know that we all collectively know as um playing a role in various movements not just a suffrage movement um there are the names of those like my mother who are unknown they're they are the names of workers um they are the names of the domestic workers the maids the filled hands the laundromat women uh who may have not been in the position to march um who may not have been in the position to even vote when they were given the when when the 19th amendment was ratified and even later with the civil rights amendment um and that's or the equal pay act for that matter equal pay mat yes exactly and so I felt it necessary for me in acknowledging those women um in my performance um and chopping a lot of wood which was very cathartic that was amazing by the way um um and um because it was it was a lot of anger I gotta I mean I gotta say it I mean I think the beauty of everyone's contribution um uh to this is that we we we honed in on a particular mood um and my mood was anger you know it was anger it was exhaustion it was frustration it was a question of um when does the work end um yes the repetitiveness of it too yeah when does the work in I mean and and to answer your question from earlier that you asked us to think about um uh there's more work to be done there's so much work to be done I think about the work that we're all aware that Stacy Abrams and her team are doing and we pray for her we pray that you know her health stays you know good you know that her heart remains strong physically strong um and we think about the the number of volunteers who did countless hours of phone banking countless hours of knocking on doors the number of um volunteers that went into Arizona and made the flip possible simply by talking to these communities particularly indigenous communities and getting them the right information and absolutely and it's like we're still chopping we are literally still chopping wood well here's a question for all of you I'm gonna quote Gracely Boggs on this one guys uh whom I love Detroit activist um I know she's no longer with us but I am still a major fan of her work um in her book the next American revolution she says women's leadership in the public sphere didn't come from the White House or from CEOs it came only after millions of women came together in small consciousness raising groups to share stories of our second sex lives I'd love to hear your opinion on that especially Jamie with regards to equality too because I think you touch on that a lot in your piece but I'd love to hear your thoughts guys in terms of coming together how do women come together women of color come together um when we are always seeming to be the ones doing the work and overwhelmingly in large numbers um for instance you know Black women voters across America recently the Navajo Nation Latino voters coming through in Arizona how do we stand in community with um majority white women uh who are voting in support of let's say the current administration uh and for candidates who don't have our interests in mind how do we feel safe in that space yeah um I know come on save the world Jamie um I guess what was really inspiring was to just learn about all the different women who fought for suffrage and just fought for civil rights after as well um and that working in community what is not new like I feel like sometimes when people talk about um uh yeah organizing now it feels very like it kind of feels like people are constantly reinventing the wheel um and feeling like you know uh what is bracketed as let's say like an Asian issue versus a a Black issue versus like all of its though um sort of like uh bracketed where where a lot of these issues all interconnect and are kind of absolutely um and we have to raise each other we have to support each other's issues yeah because they're one and the same yeah yeah and often um you know they're all they're all pretty interconnected um which is what I try to achieve for equality tea um like for instance Mabel Pinuali fought for suffrage in Chinatown when you know it was pretty clear that you know even even with the 19th amendment it was just impossible for Asian-Americans to vote and that didn't really happen until 1952 so um and just because of the Chinese inclusion act and all of that um and of course there was like the Latinx suffragists as well who were working on this and then all the way from the beginning Native American women were already very much part of the Democratic process in the Haudenosaunee Confederacy so um that was nothing new and they were teaching actively teaching suffragists um on how to rise up and so um just kind of see like really reaching all the way back and thinking about how people came together even when they knew that they might not directly benefit but that they were kind of um contributing to one step toward that milestone um was really important to me because sometimes it is really um discouraging to be like okay I'm doing all this work but I'm not seeing the results for what I think is my community uh but when you see the larger picture and you're looking at the history in retrospect you can see how all those contributions led to something greater absolutely and they let they ladder it up to this moment where we can all convene together actually and continue doing the work um thank you for that because I actually really really enjoyed the quality to you I feel like I learned so much from that piece you know there are moments where you feel like I'm a feminist I know everything about all of us um and you realize oh wait a minute I did not know that um and it urged me to kind of dig deeper so I want to say thank you for that for sure um I said lots of reading all the all the books I just ate all of them up well I'll definitely be tapping you to get like some links for sure Catherine I don't want to forget you um you're inspired by the work of St. Jordan Truth um my love as well um and I wanted to quote her really quickly and ask you about what you feel about this quote in particular I have done a great deal of work as much as a man but did not get so much pay I used to work in the field and bind grain keeping up with the cradler but men doing no more got twice as much pay we do as much we eat as much we want as much I'm curious you know given the fact that your work speaks to uh what was happening in Egypt in the textile industry simultaneously as the suffrage movement um curious what your thoughts are on that quote and how that might apply to your project in particular yeah so um thanks for asking that question um yeah I didn't really I wasn't sure what was going to come of this project I just knew I had to do a lot of research and digging so I was doing that during lockdown and struggling like everyone else with just how to focus on this project you know because I mean it's about suffrage but it's it's about like survival and so many other things as well um so one I knew after reading and researching sojourner truth had to be in one of the collages because she is um like a rock and a foundation that's how I perceived her for what we now call intersectional feminism so and just you know reading the little excerpts that I did from her speeches and the one that you just mentioned um she really just embodies that truth that her like right to live and be alive and thrive is is not separate from it's not like compartmentalized into all these like different struggles like it's not like she was gonna like fight for suffrage and then you know fight for abolition separately and like all of these things kind of like come together and the quote that you just mentioned is about labor you know and equity in labor and that's something I still think about so much today especially as an artist and an arts worker and many of us are dealing with unemployment um as a result of a pandemic so it's just like this long legacy um in the united states and and worldwide when you're talking about exploitation of labor and resources um and I think that that quote ties in perfectly with those issues and you know suffrage is like like one one link in the chain but I don't you know I don't see it as the most important one I think like we have to push for for so much that you know hopefully this the new administration will allow us to do that but um as much as I like had a sigh of relief after this election I was like we gotta keep chopping you know the wood is still there gotta do it yeah but you know keeping that thread in mind guys you know where are we now and what are we what are we dreaming for you know um what do we want are we looking for a matriarchal society do we want to return to that um have we left that what is our dream for the moment a hundred years later since the ratification and this is for everyone do we want to start with abby first and go around sure um what am I looking for I'm looking for um a world where our dignity as human beings is recognized I'm in part of what you know my piece was about you know was one section of it was inspired also by sojourner truth and her speech ain't I a woman and even though that's the refrain that I kept singing it was all for me in the back of it is ain't I a human ain't I a human being um and the future for me that I think we all need to get to is is that recognition of our humanity and our dignity as human beings our equal right to dignity and that shows itself up in in you know how we compensate people for their work how we value what people do how we value the everyday steps that people take regardless of um you know the cultures um you know a portioning of you know um esteem towards something I'm very much inspired by because these are the people that I come from my grandmother was a domestic worker this is this is this is who is one of the people who most define who I am as a human being um their walk uh matters to me um and we live in a society where people don't value them with ignore with equal um you know regard for their dignity as human beings and we see that across the board from what they're paid to whether they can participate in the same way as other people because of the the labor that they have to do and and the the leisure that it doesn't afford them on on so many levels um so for me how can we treat people like human beings and recognize our dignity as human beings that's beyond any kind of identity that you could have absolutely absolutely amen and I also I was thinking about uh even the right to choose you know uh something of just ownership of our own bodies uh we have to negotiate which we shouldn't have to right uh Karina your thoughts what is your dream this is going to be the final question guys before we get into the town hall someone to give room for everyone to kind of chime in on this well I mean I think that as um as I you know in some ways like identify more with my mother as I get older the the two things that that I think really come from her are a sense of fairness and a sense of justice and I think you know she she believes in that for everyone like it's it she's outraged when she's been outraged for the last four years not that fairness and justice were in great supply before four years ago but there's something about the the kind of um blatantness or um aggressiveness against justice and fairness and like a complete reversal of that that has been so debilitating like in in in a you know in a kind of consciousness way or as a country um in a collective way and so I guess I for the future I I would love to see justice and fairness you know for everyone not just a kind of um exalted few or a powerful few because of their position amen I'm just like yes I'm running these down hoping that we can create our own constitution uh Catherine um yeah well I'm just thinking all these things are so important that everyone has said and and it's like we've been saying them for so long you know and not even us like so many generations before us and so how is it actually going to work how is it actually going to happen and I think a big piece of that needs to involve self-determination and needs to involve solidarity and horizontal organizing and you know not waiting for anyone to make it happen for you but reaching out to the people around you starting local and building up power you know from the people um honestly like not not sitting around waiting for a government to do it because they're failing like they failed miserably yep let's Asha hmm so um I have some notes that I wrote earlier and then I'm gonna I'm gonna try and paste them into I guess an answer um and so it's a it's two parts so one has to do with love um I love I love me I'm coming into loving me I'm coming into loving others more because I love my mom you know I and and recently just last night I watched this PBS documentary and I highly recommend it on the first rainbow collision um and that I mean I I I can't imagine myself doing as much as these individuals did but when you look at that and you think about the the the under levels it has to do with like we have to get to a point where we love each other where we love each other and we see that we are all experiencing the same things on the other side of the yard which goes into the part two um we have to have a serious conversation about capitalism you know capitalism festers on the exploitation of labor and and there's no way ends about it you know and I you know I can't I don't know what are two newly elected leaders are thinking about within that I I know I understand this country to a certain extent and I also understand that um in the next couple of decades there are going to be certain populations um in crisis um if we really don't have a hard conversation about it um and a conversation as to do we want to uh continue this roller coaster this treadmill um um because we have we simply have to because and uh I'm fluttering we have to because that's going to be part of loving ourselves and loving our communities and loving our outer our outer communities our extended communities I'm afraid unabashedly absolutely and we've got to plan it I'll just add wait sit again I said and our planet and absolutely because she's one of us actually and Jamie I don't want to forget you your dream uh yeah I second everything that everyone said um so I'll just get real specific just fill it in um this is very specific but I really want ranked voting because we can never get out of a two-party system unless there's ranked voting I don't know why voting for the candidate I want is going to you know even for the primaries like why can't I vote for someone I truly believe in why do I have to feel like it's a throwaway vote you know um I hate that I hate that I can't just vote the way I want because there's no ranked voting um the other thing that I dream of is just to oh can I explain ranked voting it just means a lot of other countries do this so basically um if you can rank who you want to vote for in order of preference and if the first uh choice doesn't get the popular you know the most votes then it'll just default to your second choice and down the list so um that's why you don't have to like there's no vote wasted really because your vote will be counted no matter what um and it'll just go to whoever got the most votes within the ranked setting um so yeah so I'm a big fan of ranked voting so we're not stuck with a two-party system where we can't actually voice our real opinions and I also um dream of just um just specifically with voting like I just wish there wasn't so much voter suppression um and especially with this election just hearing about um you know how mail and voting is fraud even though it's all about accessibility and like safety during a pandemic just the most obvious reasons why it should be okay um the idea that like people were doubting whether they could go to polling places safely like these are all things that when we were researched like I was doing my research for this project I was thinking oh well you know there's gerrymandering there's all these things but at least we don't have to deal with like people bringing guns to a polling place you know right and now thought oh my god that could be a possibility or there's people like screaming outside protesting at polling places I was like oh my goodness this is crazy like I I thought that this was kind of behind us at least just like the sanctity of being able to go to a polling place and not feel like you're in complete danger um so yeah so I dream of a day where we can vote with our mind and vote with with our heart for real and um and no like and and then maybe more people will come out to vote yeah and no electoral college uh no electoral college that too that too um thank you guys so much I know we're like running over right now I just want to say one more thing um I want to quote uh Audre Lord one more time we are women forced back always upon our women's power let's not forget that let's take that let's take this moment to set the next hundred years together as you guys have all eloquently said um you know we can write our own constitution we can lead the path forward we can follow and stand on the shoulders of giants who have come before us and who've already done this work who left the lessons behind for us so we don't have to reinvent the wheel thank you again for this opportunity Kemi and Aisha I think you guys are still here and the entire laundromat team uh laundromat project team rather um and I don't know who I'm passing the mic to right now me thank you so much this is so amazing so thank you for saying thank you Aimee for your moderation thank you uh to all the artists for your amazing you know vision and work and inspiring uh ideas and just use you know keep keep the conversation going so just I know the chat is very active so keep that going uh and looking more and more every day like a Taíno king for real um this is my hair after the pandemic anyways um so thank you Natasha and I want to hand it over now to Kemi and and we'll continue with the next part of the program thank you yes um thank you thank you thank you um Abby Jamie Latasha Karina Catherine Aimee thank you for moderating and bringing in so many incredible voices each of your voices as well as Audrey Lawrence and Sojourner Truth and so many people and your grandmothers and your mothers I so appreciated that so deeply um it feels like a time to meditate on legacy um and and women of color and the legacies that we be live in and are trying to build forward because there are days that I don't believe uh where we still are and other days and I believe it very sadly and very deeply um you guys spoke about intertwined issues and dignity and the purpose of work and the purpose of the walk um dreams thank you thank you so much for thinking about dreams and dreaming uh for us and with us that is so incredibly important and I particularly think uh for people of color it is absolutely critical that we make space to dream um and that we have a dream practice and a visioning practice because nobody else is going to do that for us or make that space for us so so deeply appreciate you thank you so much um and the second half of uh this evening is taking everything we've learned um and uh being able to have a discussion together but before we do that we have another um incredible uh uh woman uh a black woman uh we are celebrating uh today um in particular so many of the women who helped us get here and the women who are continuing to do the work again Stacey Abrams and various other folks are mentioned today one of the women who is helping us do the work in the here and now is Jen Epps Addison who is uh president and co-director at the center for popular democracy and we invited her here to give us a little bit of uh I kind of called it a state of the union address uh she and so many of her colleagues and member organization community organizations from around the country worked very hard to deliver the election that just happened uh we know community organizing got us here that all didn't just happen in one or two or even three months but many years and decades and uh we're sharing a little bit of a bio about uh uh Jen in the um chat um which we didn't have a chance to share earlier so you can learn more about her and I'll turn it over to Jen to uh just kind of give us a little bit of where we are and what the dreams and joys and possibility for justice and dignity are ahead of us thank you so much Jen for joining us thank you so much for having me thank you Kami I feel like anything for you so I'm really excited to be here and I feel like this is you know I feel really kindred to everybody all of the presenters in the previous panel and folks on the phone I knew that I was with my people when we started talking about the trappings and failings of late stage capitalism I was like yes I'm home this is my people I can be who I am in this moment and in this space so um you know thank you for having me I still you know I have so many reflections on this election and I'm actually still processing you know even as I posted a picture of Kamala uh and was reflecting on the fact that my daughter had now like can see someone who who looks like her um you know in the White House in a position of power uh you know I still felt conflicted because uh you know this election was about a number of things um but uh for us right we want to get on right get on to the progress of building the country of our dreams and we want to leave the idea that we have to be in defense of our people in defense of democracy behind and I think this election reminds us that actually it is our you know it is it is our our struggle in life our toll in life to both you know extend people's view beyond the horizon to really see uh you know what is possible for ourselves in our communities outside of the limitations that oppressors put on us um but also to really um create the space in a system that was not designed and not made for us to thrive right to create the space for us to change those material conditions and this election was about that in so in so many ways um for us as organizers we are a national network we work with grassroots organizations in 35 states Puerto Rico and Washington DC and it was really clear early on in this you know all the way back into the democratic primary process that the conversations we normally have with our people about why they should turn out to vote what's important what's at stake we're going to be insufficient um for doing what needed to be done that people um you know yes people were uh clear that uh the current president did not have their interest at heart um and you know there was lots of talk in our community views about the sort of bladed white supremacy of the current president but there was also a lot of talk in our communities about the fact that the ticket that was running didn't seem all that much more promising for the prospects of how we you know help communities of color really find true freedom in this country um you know I will say I've been working on elections uh since I was an adult 20 plus years now and I almost have I can't even recall another another election where real specific policy positions of the two candidates were discussed in such detail um within my community right like the uh you know the uh conversation around criminal justice for example um you know was a painful difficult and hard conversation for us to have as we were organizing with folks and trying to mobilize the vote um I remember real specific conversations on the ground in Milwaukee with folks who were saying to me I went to jail because of the crime bill and I only got out this year you know because of the first step act right and so there were there were deep intentional conversations and I think you know that's where for me cultural organizing art storytelling narrative all of the things that the Laundromat project like brings together um community voice really really mattered and it actually it's funny because I remember um as I was doing work in Milwaukee during uh GOtv get out the vote the weekend before election I remember thinking about a specific project that you all sponsored um which was at public libraries and it was a boombox installation where the neighborhood got to curate the playlist um and it really spoke to like what people were experiencing and yes there was like our traditional bops in our songs right but then there was also like you know real like music that really reflected kind of the struggle that the neighborhood was going through and there were I remember being told the story at one of your events about how there was tension right there was tension about this installation um and then the music that was selected in the playlist and this conversation about sense uh censorship and about voice um and you know that is I know it sounds like a stretch but actually I really thought about that um you know as we were going through this election because many of us were being told to be quiet many of us women of color that are now being celebrated um you know resoundingly I think if folks remember for example when Stacy Abrams said yeah I'm I'm in the running for vice president like I'm putting my hand in the ring how she got smacked down and now everybody's like she's the best thing since like sliced bread right um so I really thought about that in this election because we were constantly being told we can't talk about the this sort of failures or the trappings of the you know of the democratic candidates because we don't want to um you know tip the scale in favor of the current president um we were being told right to do the work but keep our mouths shut about what are what we wanted in return and you know to Abby's point about black women being the mules I mean I think that it was a clear and explicit strategy of this administration right or of the of president elect Biden's campaign for black women to play that role right and now I think what we're seeing is uh this incredible uh coal lessing of black women in different constellations saying okay we showed up we did our job but it will not be business as usual we will act like we are actually in demand of of something in return here um and so let's let's talk about this election for a little bit as I said you know we want our network desperately wanted to be in the situation in which we were having a transformative election you know in the same way that you know the republican party will be forever transformed because of trumpism and really the tea party before him right we were really hopeful that in this moment as we were facing you know real like blade and authoritarianism that we could have a moment of realignment for the country ultimately what we got was a harm reduction strategy right we got a ticket that said we're not going to be great we probably won't make anyone happy but like we won't you know purposely try to kill people or deny that covid is real or some of these other things so we got a harm reduction strategy um and so it really you know meant for us to understand that in this election you know we we knew really early on about three years ago we started to build our 2020 strategy and what we realized is that we could transform the electorate and we could change the outcome of the election without getting a single white voter to change their vote from 2016 to 2020 um and you know we focused really hard on the communities of color particularly in seven the seven states that we're going to be key to deciding the electoral college understanding that there were enough black and brown votes unregistered but but um unregistered but eligible black and brown votes in all of these states in wisconsin and michigan and pennsylvania and uh arizona and georgia to change the outcome of that state's electoral vote without actually having to change white people's hearts and minds not that we don't want to do that right that's a very long time strategy but we knew that that would not be the thing in 2020 that was going to win us the election and it turns out we were right right joe biden strategy of working with the leakin project and going after suburban white folks and real white folks was an abject failure in fact those communities voted at a white white women voted at a higher percentage for trump in 2020 than in 2016 so they haven't learned that much from us but what did happen is we were able to get people to really understand that this is not about you giving your vote to somebody it's not about you doing anybody a favor when you participate um it's about having a sober assessment of our power of flexing that power and then remaining united post-election as we begin to try to move from a position of defense into co-governance together in in this multiracial democracy and so our north star at the center for popular democracy is building a world where we all have the freedom to thrive and as we look you know past this election past the history making moment and there's so many things to feel good about right there are also some things to worry about uh donald trump got more votes from every racial demographic group in 2020 than he got in 2016 there's a lot to unpack there for black folks in particular the top two reasons if they were not evangelical black folks right the top two reasons why they shifted to trump were criminal justice reform and the economy so there's a lot you know as we talked the previous panel discussed like our conversation our understanding of capitalism as a as a tool right to move people out of poverty to sort of bring people into the um uh american experience like it's it's fundamentally flawed and if we don't begin to have these conversations um and really tease these things out within black communities we could really be setting ourselves up in 2022 and 2024 um for not just a resurgence of donald trump but quite possibly for an authoritarian um you know sort of installation that is a lot less uh easy to defeat right like that isn't as politically unsavvy as trump is and therefore is much more difficult for us to defeat um and so where do we go from here right looking at our north star right now i think the biggest challenge that we face right is that people in our country have been indoctrinated in the idea that they don't deserve nice things and this is why i think art and culture are so critically important when i think about some of the big difference makers in this election i mean i'll say the joy to the polls right that the working families party did in front line where in the movement for black lives where they really focused on creating a sensory experience through voting right so not just turn out turn out turn out wait in line don't you leave but like created a sensory experience of joy and community and culture like that was really difference making particularly in places like philadelphia where people were still waiting in line for four and five and six hours to vote um i think about the cultural work of um the new georgia project in georgia who really brought in two new constituencies to voting um first they did a an entire project with the adult entertainment industry in um Atlanta particularly with exotic dancers souls on the polls um and they did a whole bunch of really creative digital work in and artistic work with strippers um talking about voting rights and explaining the ballot process they also did a very similar thing with gamers um people of color and women make up more than half of the gaming community i know we think of like in cells like in their room by themselves like you know whatever when we think of gaming but that's just really not the case and so they focused really hard on bringing the gaming community into civic participation doing um a ton of events on on platforms like twitch one of the largest um streaming gaming platforms in the country um and so you know what i want to say is is when the story of 2020 is written it will not be about how this like uh you know skate by do no harm nothing will fundamentally change strategy of joe biden was immensely successful the truth is when the story is written it will be that black and brown and indigenous people that young people who participated at record numbers came together around a vision for this country and defeated one of the greatest threats to democracy in you know the history of our country it will be about how the people who were most uh targeted by this administration and who bore the brunt of the burden of of that oppression and hatred rose up together to create a different future for themselves and so as we move forward i'm excited to see particularly how our creators how how cultural folks how how you know black and indigenous and brown communities continue to bring um you know that spirit and that energy that got us to the place that we are that was able to overcome immense voter suppression immense intimidation i never thought in my lifetime i would see white folks with guns at polling locations i thought that was just something we learned about in history i had no idea it would come back but here we were right um and and really deep misinformation right deep misinformation about people's positions about voting about participation we overcame all of that and i think you know our cultural work was a huge piece of that so moving forward as we begin to talk about how do we build the country of our dreams what are we going to do to get people out of this pandemic with the most people alive and healthy as possible how are we going to rebuild an economy that is collapsing around us because of covid and a number of other reasons these are really really big challenging um you know uh issues to take on and it will require like it will require an artist's imagination in all of us right it will require us to like paint and envision and curate things that don't currently exist for us you know from our imagination and birth them into the world and i think most importantly it will require us to be willing to keep telling our stories to to contextualize our stories right that this moment was was not just about defeating donald trump this moment was about building a country building a democracy that is worthy of our families um and that's the story we're gonna tell and i think you know we will we absolutely understand that the cultural work the creative work the storytelling work is central um to moving the country in the direction where we all understand yes we actually do deserve not just nice things but all the things health care and housing and education and an environment that doesn't poison us all of the things um and you know help us get to the place where we're not just envisioning them but we're actually winning them for our people in real time whoo our chef thank you thank you thank you gen that was amazing and just uh really grounding for me and and hopefully uh everyone found something to hold on to there because we do absolutely deserve nice things and all of the things that's going to be my mantra moving forward uh back to those dreams we need to dream and believe in our dreams so thank you gen thank you again uh to our artists and everyone who helped um bring this program together and gave us something all these different gems and things to chew on and thank you gen for really acknowledging the role that art and culture has really played in moving our world forward both in this most recent election but also historically um so very quickly we're now going to break out into groups will be they'll be led in small teams uh you'll be in small groups led by create create change laundromat project alum that's our residency and fellowship program so laura atway jennifer and arie will be leading each of these small groups tiara will gracefully uh lead us into those um our goals for this were to have a chance to collectively think about and the election to think about issues of liberation to create space um for uh to share related projects and initiatives and to seed coalition building if there are things that you are excited about and want to continue to build creative actions here's a community to do that with um