All right, how's it going so far? How are the talks? So yeah, my name is Anna. I'm a developer. I work at a consulting shop called Carbon 5. We work with all kinds of companies, startups, growth companies, enterprise, offices all over the country. Some of my coworkers are here. I also co-founded an organization called Elixir Bridge with Matt. Matt, where are you? With Matt, it's a nonprofit. We hold free workshops, usually during the weekend, for underrepresented folks in tech to learn Elixir and Phoenix. We're actually having a workshop this Saturday at the Turing School, hosted at Turing, and sponsored by Elixir Days and Carbon 5 and Turing. If anybody is interested, please come talk to me afterwards if you're local. Should be really fun. And when I'm not doing those things, I'm trying to get better at climbing rocks. It's a picture from Bishop in the Eastern Sierras. I love it there. OK, so what I want to talk about today. I'm going to talk a little bit about Bitcoin in the blockchain, what it is, with all the hypes about, like, why is it valuable? And then a little bit about how it actually works, trying to demystify it. And then why would we want to try and build something like this in Elixir? So what is Bitcoin? And if we look up the definition, we'll see something like Bitcoin uses blockchain to implement a decentralized ledger for payments. So what does that really mean? Well, in its simplified form, what it really means is we have a bunch of nodes, and each of them essentially has a copy of a list, a singly linked list. And each piece of data in the list has a hash that points to the previous piece of data in the list. That's really all that we're talking about. And people will also say that it's this secure and semi-anonymous, talk about why semi-anonymous, store of value. But what do we mean by value? Why is Bitcoin valuable? So we'll take a step back and think about what is value and look at it in the context of something that's a little bit more familiar to us, which is our own currency, and think about our own money. And if we look at the definition of money, really, it's something of value that we can exchange for other goods and services. We can pay taxes with it. We can attribute debt to it. But why is it valuable? If we look back actually at the history of money, up until fairly recently, especially at the very beginning, most transactions were done with precious metals, gold and silver. And why is that? Well, they're hard to find, so they're scarce. They're hard to replicate, you can't really fake them. They're arbitrarily divisible, and they're really durable. So if we think back through the history of money, even as we go forward towards a more recent history, up until the 1970s, all of our currency was backed by these hard precious metals. It wasn't until 1971 where Nixon was like, nope, not gonna do that anymore. Taking the US dollar off of the gold standard, it's gonna be a fiat currency. Yet it was still valuable. And why is that? Well, people still wanted to exchange it. They were able to exchange it for goods and services. It was still relatively scarce. The central bank was able to control the flow of dollars in the economy. You could pay your taxes. And something that I think is interesting, but a little bit less clear, is that they were making a bet on the future. They assumed that the US economy was going to keep doing well, and so the dollar would keep doing well, and so they could store their value in that. So back to Bitcoin. The really big idea behind cryptocurrencies is that for the first time, we're actually doing a digital transfer of value over the internet that isn't backed by some kind of hard collateral. So this idea was what really initially fascinated me and got me interested. And there's also this piece that, you can do it anonymously, right? And that it's secure. So there are several things that really incentivize people. And remember that Bitcoin, so and if we think about the value, like think about going back to the dollar, Bitcoin, and we'll talk about this, it's still scarce. People still want to exchange it for goods and services, and you really can't pay your taxes with it, but people are betting on the future, and it's kind of where it holds its value. So I want to take a step back and really talk about the security piece for a second, because it is a really big part of Bitcoin. Early cryptography, especially in the US for the longest time, was really just an emission of the government and the military. And actually it was considered an emission of the military until the late 1990s. It seems a bit crazy. But in the 70s, like with the advent of computers and technology, cryptographers, early cryptographers really started to realize the importance of privacy in the sending of information. And there are some forefathers of cryptography that really wanted to use it to kind of break the monopoly of the state. But fast forward, I don't know if anybody has seen this photo before. There's a group of people that came together in the early 1990s, particularly three people, Eric Hughes, Timothy May, John Gilmore, who later went on to create the EFF. And they started an organization called the CypherPunks. They created a mailing list, they had a lot of people on it, there are like several hundred people at one point. And a lot of the discussion in the CypherPunks was about anonymity and privacy, and that people, individuals have a right to privacy, and that we can't trust the government or corporations to protect that privacy, we have to do it ourselves. And famously, a year later, he released the CypherPunk manifesto, and that's exactly what it's saying. We have to have privacy in the electronic age, we have to protect it, and the interesting thing about the CypherPunks was it wasn't just talking, they said we write code. So we're gonna build the tools that allow people to maintain this privacy and anonymity. So many of the people who participated in the CypherPunk movement actually started some of the early digital currencies, many of which did not work out, but this idea of digital currency was not a new idea. It's actually a famous one called HashCash, which will see why it actually Satoshi, who released Bitcoin, uses something in HashCash, called Proof of Work, that is very core to how Bitcoin functions. So fast forward again, 2008, we have the financial crisis. And again, this conversation is kind of long going, but it amps up again, the CypherPunk community continues to talk about we need somewhere else to store our value that is outside of the government, that is outside of a nation state. Coincidentally, Bitcoin is released in 2009. So it's unclear whether Satoshi, the person who created and released Bitcoin, was part of the CypherPunk community or not, but he definitely drew inspiration from it. And if we think about how he defines Bitcoin, it's a proof that essentially lets us send secure transactions anonymously and we do not need a middleman for it. So now we have this network where we can store value outside of the government and it's decentralized. So there is no single point of failure, but there's also no one party that controls how the system works. And this was kind of a core thing that the CypherPunk movement wanted. So how does it work? So I talk about it being a decentralized network of nodes. So really it's a bunch of nodes that are communicating with each other via message passing. So we can start to see the correlation, excuse me, we can start to see the correlation, especially given some of the talks today, that might fit well with Lixar. And I mentioned that each node on the blockchain has its own copy or in the Bitcoin protocol has its own copy of the blockchain, which again is really just a list of pieces of data that are pointing to the previous piece of data. And these nodes communicate via something called the Gossip Protocol. And I think Chris mentioned Gossip earlier. I thought this analogy for how Gossip sends messages was really interesting. They basically defined it as similar to the way social networks have sent information or actually epidemics. But the idea being that a node will send messages to its peers, which send messages to its peers and so on and so forth. And eventually the message will get passed through the entire network. And that might look something like this. So before I talk about the specifics of a block and how they process transactions, et cetera, I wanna take a moment and talk a little bit about asymmetric cryptography because it is a big part of how things are done on the blockchain. Asymmetric cryptography really just means public and private keys. And so if I am sending a transaction to say Ben, and I'm gonna send him a certain amount of money, in this case, in this slide, it shows Bob, I'm gonna sign that transaction with my private key. And then I'm gonna send that transaction along with my public key to whoever that transaction is going to. And when they receive it, because they have my public key, they'll be able to decrypt that transaction, but nobody can tamper with it unless they have my private key. And again, the blockchain is really just a ledger of transactions. There's no concept of accounts in the blockchain. So it's not like I have 10 Bitcoin in an account somewhere and I am going to send Ben five Bitcoin, I have five Bitcoin left in an account. Everything is really just a transaction that is written onto a ledger. So let's say I start with 10 Bitcoin in my account. Today, that's actually kind of a lot of money. I have a transaction that basically states I have 10 Bitcoin written onto the ledger.  What I'm doing is actually creating a new transaction that says I'm gonna send five Bitcoin to Ben and five back to myself. And that gets written into the ledger. So you can see we have like an in point of one transaction that gets output as a new transaction. And then this transaction is no longer valid. It's already been spent. And we call these unspent transaction outputs. So this is a little deceiving because what actually happens, let's say I have a transaction and I'm sending to three people. This will actually be just one big message that I sign that specifies I'm sending how much to each person. But it's a new output that then gets sent onto the blockchain. So what happens when a block actually receives a transaction? So remember, the transaction will be sent and then it'll have a public key. So the node that picks up the transaction to process it will be able to decrypt it and see that it's, and then check if it's valid. So how does it do that? So for our example that we're talking about later, we're actually gonna use one transaction per block just to keep things simple. But how blocks actually store transactions in the blockchain, it'll take a transaction and then they will roll through all of the transactions in the ledger because again, it's just one ledger that's saying this is how much money there is in the blockchain. So let's say I sent such a transaction that says I'm sending Bob five Bitcoin. Every node is gonna roll through all of the transactions in each block and check that that reflects in the ledger, that somewhere in the ledger is a transaction saying I had 10 Bitcoin, that I haven't spent any money since and now I can spend this transaction and it will get written to the ledger. So if the transaction is valid, then it'll say, okay, I'm gonna add that to my block. And how are transactions actually stored on the block? So we're only gonna store one. But really what happens is they get hashed into a Merkle tree. So what that means is we basically take these transactions, all the transactions that go into a block and a block can fit about one megabyte of data. So it varies a little bit and it starts hashing them by twos up until it gets to the root. And you use shot two. What we know about hashing is that if you change one character in the content that you're hashing, you're gonna get a completely different hash, right? And so this makes it really hard to tamper with transactions because if you can imagine you're saying, no, actually there was a different transaction in here, you're telling a node, that's not valid. The node can easily check because it can go back from the root hash and see all of the branches of the tree or ask another node what its tree looks like. So again, this element of security. And there's one really, another interesting piece is that, and I think Chris mentioned this, in a distributed system, there's no global sense of time. There's no real ordering. So in this mechanism for hashing, it actually allows the blockchain to order these transactions. Okay, so we add our transaction to the block. Now, how do we add our block to the blockchain? So this refers to a concept called proof of work. And this is what I was referring to when I talked about hash cache. The guy who created hash cache, Adam Beck, was really the first one to introduce this concept. So we talked about how part of the value in the blockchain is that there is this element of scarcity. Satoshi didn't want people to just keep mining blocks really quickly and then control the longest block. Because also the other idea is that blockchain, each node is always mining on the longest block. So whoever kind of has the longest block at the moment is the leader for that moment, the blockchain. So you create this idea that each block has to do a little bit of work in order to be able to add a block to the chain. And so what does that look like? So the blockchain as a whole has this concept of a work factor. There is this technical difficulty to a puzzle that each block has to solve. And all that really is, is it needs to solve a puzzle to create a hash that starts with a certain amount of zeros. So let's say the work factor for the network is three. They would need to create some hash that starts with three leading zeros. And how do they do that? Well, we talked about how each block has its hashed transactions as a root hash. And how it has a hash from the previous block. So it takes that data and then it has this concept of a nonce. And a nonce is really just an arbitrary value that it will increment and then it will hash all of that content together until it solves this puzzle. And once it's done that, it can send the message to the rest of the network saying, hey, I mined this block, here's how I did it. And if it's valid, all the other nodes will say, okay, cool, we're gonna add this block and we'll start mining off, we'll start adding blocks to this length of the blockchain. So this solves a really interesting problem because A, it provided this consensus algorithm for nodes kind of agreeing on how blocks get added to the chain. But also it solved this political problem of who gets to influence the consensus, right? Satoshi didn't want one person to really have control of the blockchain and it's changed a little bit as hashing power has become more consolidated. But when he first created the blockchain, the idea was that if you could only mine a block every so often and the work factor changes so that a block is really mined once every 10 minutes and every computer has equal, he's thinking of people's personal computers, equal amounts of hashing power, then everybody has the same probability of mining a block and then theoretically has the same power to influence the network. And this concept that blocks are going to get added to the, that nodes are always building off of the longest chain is called Nakimoto consensus. So when the node hears of a new block or a new chain, they're gonna say, oh, okay, I agree to mine off of the first blockchain of height H that I hear about. So I think some of you might already guess, like how does this relate to Elixir? Well, we talked about how we're implementing a decentralized ledger for payments and that nodes communicate sending messages via the gossip protocol. So we needed a decentralized system that has some element of concurrency and communicates via message passing. So this might sound familiar to some of the stuff that we've already heard about today. So before we go into the example that I created, which is a contrived example, but I think you'll be surprised to see it, how little it took to kind of implement this protocol leveraging Elixir, but also, or like an OTP. So first I'm gonna take a look at how message passing works and start at the basic level. Chris already talked about this a little bit, but processes, right? All the work that gets done in Elixir gets done inside of a process. They're isolated from each other. You can have thousands of them running at the same time. They're really lightweight. So we're gonna just look at how you would even spawn a process, so we'll have a simple module. We'll call it, we're just gonna subtract one value from another. And to spawn a process, right? We just pass that information to spawn. In this case, we're passing, it can take an anonymous or a name function. In this case, we're passing the module name, function name, and initial arguments, and we get back a process ID. Cool. So we know processes communicate via message passing, so how do we actually communicate to a process? Well, we have access to two functions, send and receive. So send, so we're going to, we have a module, we call it greet, we're gonna greet somebody by name. So send, we're gonna spawn a process, and send allows us to send information to this process. So we're gonna pass on arguments, the name of the person that we're greeting. And then receive is a function that we implement in our module that we're calling, in the function that we're calling, and it'll match against the arguments that we pass in, and if they match, we'll get output. So cool, we're spawning a process, we're sending it some info, if it matches, and this is really hard to see. Sorry, guys. Otherwise, we don't get anything. What if that process dies, right? In this protocol that we're building, we need to know if our nodes are communicating, we need to know the state of our blockchain, how's that gonna work? So again, this is really, really easy to do with Elixir. We can call a function called spawn link, which links our current process to the process that we're calling. So as an example here, we're gonna force our process to exit. And if we call that, we spawn a process, and we force it to exit, but we don't link to it, we don't know that it's actually done, and that it died. If we do link to it, in this case, it actually killed our process, then we don't want that. I mean, there are ways to trap the exits. That's just an example that we can easily link to another process. And we're also gonna wanna manage state. In this case, we're managing state and memory, given that it's a simple example of the blockchain, and if a node goes down, it's gonna get a message of the longest chain, and every node has a copy of the blockchain, so we're not as worried about a node going down in our current example. But we're gonna need somewhere to manage state. So we're gonna use agents. So agents are really just an abstraction around a background process that lets us manage state. So the way we start up an agent is we pass a function called start link. We call function called start link, we pass it a function, and the output of that function is going to be the state of that agent. And given that in our blockchain, it's going to be additive. We're only really adding elements to our state. We will be able to retrieve our state and then update it, right? So here we pass a function, here we said we're gonna add some stuff, and then we can retrieve it and see that that stuff's been added. So the basics around state and message passing. So back to the blockchain. Well, now that we're building this network, we're gonna need behaviors that are a little bit more sophisticated. So we saw the basics of processes and message passing, but we're gonna need some monitoring processes that are a little bit more robust and we're going to need maybe some server-client interaction, given that a node is gonna need to be able to call to another node and send a message and then process that. So we're gonna be able to have leverage OTP. So one of the things that made it interesting to build this blockchain in Elixir, as opposed to having tried building it in Ruby and JavaScript, which is actually really hard, is managing these processes. And so we get to leverage early in OTP, which is really just a framework that gives us these modules and behaviors that we can then implement and it makes it really, really easy. So finally, I mean, I've been talking a lot about, oh, there's a typo, oops. I've been talking a lot about the blockchain and how it works and how we might implement it. So let's take a look at how we do. So let's start with transactions. Oh my God, well, that's not gonna work because you all can't see that, can you? It's really blurry. Let me see. Is that gonna help? I didn't realize it was gonna be this blurry. Well, I'll just, I'll talk through it. I mean, the idea here, the code is less important as how easy we're able to leverage these callbacks. So I think I'll just talk through it. But really, we're gonna have a transaction and it's going to have a struct, right, built on top of a map. And all that's gonna have is a two key, which is the public key that we're sending our transaction to, a from key, the amount, and our signature. So we're gonna sign it with our private key again so that when we send the transaction, somebody can validate it by decrypting it with our public key. Our new transaction is really just going to be a struct with this information and we have the ability to sign it and we kind of jump into the early crypto module for that, but it makes it really easy. And then we will be able to validate. So when we receive a transaction, we can again take somebody else's public key and validate that the data that they're sending is what we expect them to be sending. So we have a transaction and we're going to need to somehow build a chain of blocks. So let's start with a single block. Oh my God, this is really bad. So again, our block is really just gonna be a struct and it is going to have, like I talked about, a nonce, which is that random integer value that you need in order to solve the proof of work puzzle. It's going to have a hash that points from the previous block and it's gonna have some transaction that it received in our case, right? And we're just going to, when we create a block, we are essentially taking the previous hash for simplicity's sake and our nonce and are iterating it over and over and over again until we solve that proof of work. And when we do, we'll send back a struct with our nonce, the previous hash, and our transaction. Something that I haven't implemented yet but that I think might be interesting is that right now this is just happening in this process, this hashing. And you can imagine with a work factor of one that it's actually really easy to find a hash start with one zero, but if you say the work factor is seven or eight, it does get pretty computationally intensive. So I would imagine that you could maybe spawn this off in a separate series of processes and have them going concurrently and maybe solving that would be more efficient. Okay, so we have a block. So how are we gonna add that block to a chain? So we're gonna have another module. It is going to, it's called blockchain. It, as you can see, has a work factor set of one and has a block reward. So one thing I forgot to mention is that when miners are mining blocks on the chain, they actually need some incentive. So when they, when they mine a block, currently the reward for mining a block is 12 and a half Bitcoin. And as the chain grows progressively longer at certain points in the chain, that reward halves. So when I think miners first started mining Bitcoin, the reward was like 50 Bitcoin per block and then it was 25 and now it's 12.5. So eventually we'll get to the point where there's no reward. There are no more Bitcoin to be blocked. There are no more Bitcoin to be mined adding to that idea of scarcity. And so when we create our blockchain, if when we start it, it is going to have, we're gonna create some, you can't see this, but we're generating some public and private keys. So our blockchain structure is really just gonna have a list of blocks, our private key and our public key. But we're gonna need to have a way of knowing whether that's up, right? It's kind of important to know the state of our blockchain. Is it how many blocks have been added, its length, et cetera. So we're going to add this concept of a supervisor. Another thing that we're leveraging from OTP, right? So supervisors really just a specialized process that lets us monitor other processes. So how do we set this up? Well, when there's not a lot of code, it's a little bit less fully. In our application file that runs when we start our application, we're gonna import this behavior and say we're gonna use our supervisor. And then we call supervisor.startlink and really all we're passing is our module and initial arguments. And then the supervisor gets a strategy defined. There are many different ones. In this case, we're just saying if our process die is restarted. I'm gonna give it the name of our module so that we can refer to the supervisor later. And if you go back to our blockchain, you'll notice that we've defined a function called child spec. So when the supervisor starts our child process, it's gonna look for this and this is gonna tell it how to start our process. And we'll tell it to use the start link function. We'll tell it to always restart. So by having this kind of monitoring, it makes adding fault tolerance for our system pretty easy. And that's kind of what we want in this distributed like blockchain system. So let's look at our blockchain module one more time. So when we're adding a block, we're going to receive a transaction, check if it's valid, and then add it to our blockchain. So remember, when we started, we were using an agent and it's storing our state. So it makes it really easy for us to call agent update, pass in that new block and really just add it to the beginning of that list. To create a block, we've added blocks to our chain. So how do we actually have nodes communicate between other nodes, right? We need this kind of server client interaction. So we're gonna take advantage of this concept called GenServer, right? It starts stands for generic server. This is another behavior of OTP that we're able to leverage. And what it does is it provides us with a series of callbacks that we can implement to, well, it provides you with callbacks, we can use to implement this client server behavior. And we can choose which of those callbacks we implement. We're only using a couple of them and I will go over them. So we'll start, we'll just create a server module. We're gonna initialize it and all it's gonna have is its own process ID, a list of blocks and a list of UUIDs. And the UUIDs, each message that gets sent on the blockchain will have a unique UUID. And that way, when a block receives a message on the chain, it'll know whether or not it's already had processed it so it doesn't have to go through validating all of the blocks on the chain if it's already done that. And given that the gossip protocol is kind of a fire and forget, so we're sending messages, but we're not necessarily waiting for a reply. So we have this asynchronous message passing and GenServer makes that really easy. We can take advantage of what it's called its cast function. So you call GenServer.cast. We tell it what module we're sending to and we pass in some arguments. And then handle cast is the callback that allows us to really easily handle that request. So handle cast will match against those arguments. In this case, we're saying, mine a block and then send it out to your peers. And so we add a block, update our state, and then we send it out to our peers. So we updated the current state of our blockchain. How do we see our current state? So again, GenServer makes that really easy. We can make a synchronous request using something called GenServer.call, pass in our module and the arguments, and then handle call lets us easily process that request. It's gonna match against the arguments we pass in and then be able to reply with our state. One thing I forgot to mention and I should have mentioned in the beginning is GenServer also allows us to manage this concept of state. So when we started in the beginning, we started with this map that held our ID, our blockchain and our UU IDs. And that gets returned with each of these callbacks is the last argument. Okay, so we add a block, we're gonna send it to our peers, but how are they actually able to receive it? So we just implement another asynchronous callback. We're gonna have a call that says, okay, now I want you to send this new blockchain to my peers. So we'll have another cast call to our module and in this case, we can specify it. In the previous call, we didn't specify a location or an address. We just said this module or current process. In this case, we can specify an address. So if we tell it where to send it, it'll send it to a different GenServer running on a different node. And that GenServer will be able to handle that request with its handle cast callback. It's gonna have a different set of arguments to match against. What we do here is we check. Is this blockchain, have we already processed this request? If we have processed this request, we say we're gonna validate the blocks. So we're gonna go through each block and make sure that it actually points to the previous block all the way through the blockchain. And imagine if we had the last block in the blockchain and the block previous to that, it's pretty easy to verify because each block has that previous hash. And so if we take the second to last block and take its previous hash and its nonce and hash that, we will get the previous hash of the last block. So that's what we do all the way down the chain. And then if that blockchain is indeed longer and it is valid, then we swap out the chain. We say, okay, we're gonna start building off of this. This is valid, this is our current state. So we go back to our agent where we had that list and say, okay, we're just gonna change it. We're just gonna update our state and have it be this new list of blocks. And the blockchain blocks, mines blocks every like 10 minutes. We wanna say that we want this to happen for the purposes of this example every 30 seconds. So another thing that GenServer lets us leverage is if you make a call, but you don't specify the type of call that you're making, that callback will be handled by something called handle info. So for us, we're saying, okay, we're gonna start and we're going to send a message. And then you can't read this, but this really says process send to self with arguments that handle info calls. So we have this loop where we're saying, okay, every 10 or every 30 seconds, send another message or send another transaction and then mine another block. So to keep an eye on this process, because this is another process that is important, we wanna make sure it's communicating between our nodes. We're just gonna add it to our supervisor, right? We're gonna have another supervision process that's watching that. We just add it to our list of arguments. We have no initial arguments and that's that. So really to implement the blockchain, all we needed was a GenServer and a couple of modules and an agent storing state, given that we're able to leverage all of this OTP behavior that comes from early. But we want this to be distributed, right? It's not just working on my little local subnet. We want it to work across nodes. So again, not surprisingly, this has made really easy for us. So if I'm just doing this on my local machine at the same IP, for each of the processes that I start up, I can just pass in a short name and then I can call connect and give it the short name that I'm connecting to in the form of an atom. And those nodes will be connected. And the interesting thing is if I have three nodes and I connect node one to node two and three, nodes two and three will be connected automatically. So you can see how it's easy to create this distributed network of nodes. But what about across machines, right? What if I want to connect to Matt's machine? I need a little bit more information, but really not much. Instead of passing a short name, I can pass a name argument and then I name my process and I pass it my IP. I pass it something, a cookie, which I name. And so these nodes are communicating via this TCP IP protocol and they're using the cookie for this kind of low level authentication. So if a node's trying to connect and they don't start with the same cookie, then they won't be able to connect. And I think there's actually way of configuring it otherwise, it's a little bit more work. So that's it. We implemented a blockchain in Elixir with very, very little work. I was gonna demo this across my machine and Matt's machine, just to show you that it actually really does work and it's really easy. I don't think the network here allows for that. So I'm gonna just demo it on my machine. It's down for one second. Maybe marrying displays is usually easier. There we go, all right. Three processes here. If I go with this, can people actually see or is it still super blurry? Is that better? At the top, okay. Okay, cool. Sorry for all the blurriness, y'all. Clear this guy. So I'm gonna start a process at my IP. And this is on my local subnet, so I don't need a cookie. I'm gonna start another process. It's generating our keys, as you can see. I'm gonna say, let's connect. So the default time is about 30 seconds, so hopefully it doesn't take too long. But really, we should start seeing, oh, there we go. Start seeing messages generated, right? So our blockchain's communicating. This is the state of our block. This is our UUID. But soon we should start receiving messages and, assuming this works, hopefully, all of our nodes start receiving messages and being able to keep track of somebody else's UUIDs. Let me flip to a different process and see if that works. For each of these, we'll be able to see that it eventually starts to change. At some point, this chain will have been swapped out for the chain that the third node has. That's it. That's all I got. It's the only problem. Because I wanted to be able to pull up and show you all, but let's see. I'm excited about that process. There we go. That was weird. Doesn't what? Yeah, I think so. Next time, don't do that. Don't do full screen, Anna. I have it on my machine. I'm trying to pull it over, but it doesn't like that I'm full screen. So I will have to show you afterwards. I don't want to waste any more time. Thank you all. Thank you for the talk. Are you aware of any plans to reduce the energy required to maintain the Bitcoin network, or is that just an inherent part of Bitcoin? That's a really good question. I am not an expert on Bitcoin. From what I understand, there are not. I mean, I think people are trying to make it more efficient, and they're thinking about that. I don't actually know. I haven't heard about that. But we know that that's the problem, right? Is that it's becoming more computationally expensive, especially as the work factor goes up, and so the energy requirements are insane. All right, thank you, Anna.


ATL Michael ATL Michael one-on-one rookie Super Fracture auto. Oh My goodness This stuff is crazy. Get your spots now y'all. Yeah, we have it listed for tonight Here's a break schedule right here y'all get your spots man What the heck?


Let us now start looking at a very simple yet insightful domain of mechanism design with transfers and that domain is the domain of single indivisible object allocation. We have already seen one example one mechanism which is truthful in this domain namely the second price option. But here we will not only try to characterize that which other mechanisms are also truthful in the context of single indivisible object allocation. We will also try to maximize the revenue earned for the auctioneer while selling the single indivisible object. Now the reason is that we get a very rich set of elegant results in this simple setting and we can actually go beyond the limits of deterministic deterministic mechanisms and we will look at some randomized mechanisms as well. So, in this domain the setup is the following. So, the type set for each agent will modify the notation slightly so that it is falling in line with the standard definitions of single indivisible object. So, the T i which is the equivalent of capital theta i as we have defined elsewhere this is a subset of real line. So, now the type set is a subset of real line which denotes that if you pick a specific type of an agent i this denotes the value that this agent gets when she wins the object. So, it is as simple as that. And now in this context the allocation a is a vector of length n that represents the probability of winning this object by the respective agent. This is the first time that we have spoken about the probability of winning an object or probabilistically deciding certain allocation. So far we have discussed only deterministic allocations, but because of the simplicity of this domain we can actually give certain results which is also probabilistic in nature. So, which is also randomized mechanisms. So, this kind of mechanisms where the final outcome or the allocation probabilistic those kind of mechanisms we are going to call as randomized mechanisms. We have not discussed this in the context of the previous cases like the gibberish other bird setting or in the context of single picked preferences or task allocation because it is much harder to get a kind of a characterization result. But because of the simplicity of this domain we can actually take a look at that and we will show that there are certain good results. So, therefore, the set of allocations in this case is no longer the set a the set of allocations the set of pure allocations rather it is a probabilistic allocation. So, the vector so this delta of a is nothing but a simplex where each of these elements in this set is a vector of numbers between 0 and 1 and they all add up to 1. So, this is nothing but a probability distribution over this in agents. The object is going to get allocated probabilistically among one of these agents and in this case we are assuming that the object is definitely going to get allocated. So, there is nothing like the object is not allocated. Now, what is an allocation rule in this case as before the Cartesian product of all the typesets the allocation function actually maps it to the set of allocations. Now, the set of allocation is this simplex over this set a. So, now we have this valuation function which is defined on that kind of an allocation which could be a randomized allocation and its own type. But now this valuation is just the expected value for that agent for that object. So, EI is the probability with which this agent wins agent I wins that object and if it wins it gets a value of TI. So, this product is giving in the expected valuation. So, similarly when we are talking about f of t. So, if we look at the function f and apply so use the type report of all the agents as its argument then we get a victor whose ith component here is nothing but the probability of winning the object for that agent I. Now, let us try to familiarize ourselves with this notation when we are looking at one of the much discussed example of second price auction the victory auction. So, the type here in that case where VIs for all these agents and let us define when we are looking at agent I what is the maximum value of all the other agents except agent I. So, that is being defined as t minus I of 2. So, the 2 stands for the second bit this 2 will be the second highest bit when I is the highest beta. Now, agent I is going to win if its valuation is larger than the the second highest bit. So, if this agent has the highest value. So, the among all the other agents their maximum value the agent I's value VI is even larger than that and that is the maximum among the whole population of bidders. So, then this will be considered as the winner and it will lose if the valuation is less than that and we can also say we can define a tie breaking rule when there is an equality. Now, the payment so, we know that under second price auction the winner pays the second highest bid. So, if an I becomes the winner then it pays t minus I for all the other cases where the PEM where VI is not the highest bidder its value is going to be 0 anyway. So, we can write the utility of this player I in the following way if VI is less than or equal to t minus I2 it is going to get a utility of 0 if it is larger than t minus I2 the difference is going to be the net utility. So, we can plot this this quantity and we can see that the utility has a very interesting shape. Now, on the x axis we have plot the plotted the valuation of this agent and on the y axis the utility up to this point of t minus I2 the value the utility of this agent becomes remains 0 and after that it increases proportionally with VI and because this is just VI so this the slope of this curve will be 45 degrees. Now, the other thing that we can observe so, if we do another plot for the allocation of this agent we see that up to t minus I2 this allocation is going to be 0 and whenever the valuation is larger than that then the allocation is going to be exactly equal to 1. So, we leave this point of the exact equality open at this moment because in that case when they are equal that means that there are at least some other agent who also has the same valuation as this agent. So, in that case one can randomly pick any of this agents as as winners and therefore any of this numbers numbers could be could be a valid allocation for this agent. So, we can make a few observations from this two curves the first thing is that this utility curve is convex. So, if you look at this curve this is a convex curve and the derivative is 0 if VI is less than or equal to this and one if the the valuation is larger than this threshold point and it is not differentiable at this at this threshold point. So, at this point t minus I2 it is non-differentiable but whenever this function is differentiable it actually coincides with the allocation we can also see that. So, these are the two two points in fact a lot of our understanding of the single object allocation will depend on the properties of convex functions and therefore we in the in the rest of this model we are going to spend some time to discuss some of this known results from convex analysis for for most of this results we will not provide a proof because they are clearly out of scope of this course. If you are interested in looking at the proofs you can take a look at some standard text like your Rockefeller but wherever necessary you will provide some sort of a intuition of why this this sort of a result is actually true. The first fact from convex analysis is that convex functions are continuous in the interior of its domain. So, which means that this kind of a convex function. So, whenever you are talking about functions which are convex you cannot have jumps within a domain of this function. So, what can happen is if a if a function has a let us say a domain from here to here that cannot be some that can never be any function which has a jump inside this because then you can actually have some some sort of a chord joining these two points which is below the curve at some point. So, this is whenever you have jumps you you are certain that that is not going to be a convex function inside its domain but this property does not hold at the end. So, at the last point there could be some jumps. So, you can have functions which goes all the way till this point and at the final point there is a certain jump. So, that is clearly convex. So, the for convex functions it is known that the they are going to be continuous in the interior of its domain. So, the second fact of convex functions is that they are differentiable almost everywhere. Now, what is this term almost everywhere mean? It means that the points where the function is not differentiable they form a countable set. So, we can see the example before that exactly at one point or maybe there are multiple other points where you can actually have it but you cannot create an interval of points for instance where it is non-differentiable. So, to be more precise this set of the set of non-differentiable points of a convex function forms a set of measures 0. So, it is something like this points if you are looking at the whole set they are almost vanishing. So, if you are looking at only finite or countable number of points in an interval which has uncountably many points those finite or countable points has measures 0 that is how more formally this is set. But let us not worry about those things it is saying that except for a few points or a countable number of points the function is going to be differentiable everywhere. Now, I am sure that this definition of the convex function is known to all of you. So, whenever we are defining a function convex function then for every point x and i in its domain. So, this is the domain of this convex function and for any lambda which is living in this interval 0 comma 1 this is true. So, that means that whenever we are looking at a convex combination of any two points. So, let us say we have a function like this and this is our x axis and we have two points let us say x and y and we are looking at the corresponding values of this function at this points. So, gx and gy and if we join a chord between them. So, therefore, lambda times gx plus 1 minus lambda times gy is some point like this and that point will always be above the value of that function at that point. So, this is let us say this is the point lambda x plus 1 minus lambda of y and the g value at that point is going to be lying below that chord. So, the chord connecting any two points will always be above the curve that is the meaning of a convex function. Now, if that function is differentiable at a point inside this domain then we denote its derivative by g prime of x this is quite standard. But we are going to define something which extends this idea of gradient or the derivative and that is known that extension is known as the sub gradient of this function. So, how is sub gradient defined? It is defined formally in this way but before going into the formal definition let us look at what is actually what is this same. So, let us look at a very specific point let us say x and we are going to a different point y z in this in its domain and what we are doing is we are first looking at the value of that function at that point and then taking the distance. So, suppose I have a I have a point like x somewhere and I am trying to find out what is the value of this function at a different point let us say z and I do a kind of a multiply this with a this difference of z minus x with a with a constant quantity x star and then add that on top of on top of this g of x. So, g of x is nothing but this point here and then we are taking a slope. So, the slope of this line is nothing but x star and we are going to this point here. So, that quantity so, this point is nothing but g of x plus x star times z minus x and that point should always be below the actual value of that actual value of the function at that point. If that happens then we are going to call this x star to be a sub gradient of g at that point x and of course, this this I have only shown the positive direction that this should hold for all z. So, it should also hold for the other direction also. So, in some sense you are essentially putting a line finding the slope of the line in such a way that the entire curve entire context curve is lying above it and that is the point which also touches the g x. So, fair enough. So, what is the property that it is giving us? So, we can actually say that now we have even though we cannot define a gradient at the point where it is not differentiable. So, for instance the point where this point was not differentiable in our previous example. So, in this convex function, but we can definitely define something like a sub gradient and naturally the sub gradient need not be unique. So, in particular it is not unique in those points where it is not differentiable.  So, similar to so this is one x star which is a sub gradient because it keeps the entire curve above it, but you can also think of another sub gradient which is also keeping the curve above it. So, there could be actually many sub gradients which are possible. The one observation that we would like to make the points where it is actually differentiable. So, let us say a point like this. So, this red colored x this point can you actually find multiple sub gradients? The answer is no because if you for instance try to find some sub gradient which is not exactly equal to its gradient here then you might end up having some points which are actually above the value of that point. So, essentially this inequality will get violated if we pick some other kind of a sub gradient some other line. So, one empirical observation that we can make here is that whenever there is a point which is differentiable of this. So, if the convex function is differentiable at a certain point then the sub gradient actually equals the gradient and in that case the sub gradient is going to be unique. So, that is something that we will state formally. So, these are the some standard results. So, you can refer to that standard takes on convex analysis any standard takes on convex analysis. The first result is that so suppose we have a convex function g and x is in the interior of i and g is differentiable at x then g prime x is the unique sub gradient of g. So, we have already told the intuition. So, this is the formal statement and it is not very difficult to show even formally. All that you need to do is to reuse this inequality for the points which are above x. So, let us say x plus epsilon and also points below x x minus epsilon prime let us say and then use the definition the fundamental definition of derivatives and one can show that this x star will be sandwiched between the left derivative and the right derivative and the points where it is actually differentiable this left and right derivatives are same. So, therefore this x star must be equal to that derivative. So, that is the that is the proof of this lemma. So, for lemma 2 again we have a convex function and we one can say that this function always has a sub gradient at all points in i. So, including the the edge points. So, the earlier result was only for interior points, but this this result is true the sub gradient exists for all points in i. The next fact that we will be using it says that if you collect together all the points where g is differentiable and denote it with i prime. Then the points where it is non-differentiable that has a that is a set of measures 0 and in addition the set of sub gradients at a point forms a convex set. So, let us say we look at a look at a bunch of points. So, there will be some points where the function is differentiable we have already seen that those points essentially. So, those kind of points are almost everywhere. So, the function is differentiable almost everywhere. So, and in those points that derivative exactly is equal to the to the sub gradient the points where it is not differentiable which is of a which is which is a set of measures 0. In those points the sub gradient might be many, but they actually form a convex set. So, it is something like an interval within which all the sub gradients leave. So, you can think of the previous example here. So, the sub gradients will start from this point. So, which is a negative gradient to this point which is a positive gradient. So, all this point. So, you can think of this as the left derivative at this point and this point green x and this slope is nothing but the right gradient and all the points between this left gradient to right gradient in that interval all those points are sub gradients of this function at that point. So, that is exactly what is we are going to state as fact 4. So, if you look at the right gradient and the left gradient of this function g at that point then the set of sub gradients at x which are non-differentiable leaves within this interval from g minus prime x to g plus prime x. So, we will use a shorthand notation to denote the set of all sub gradients of g at a certain point by this del g of x. Lemma 1 by lemma 1 we already know that the points where it is differentiable. So, these are the set this is the set where the function is differentiable it is a singleton for all the other points it is non-empty. So, the next lemma that will be that will be very much useful for us is that of a some sort of a monotonicity. So, we know that if it was a convex function and it was differentiable everywhere then we know that the derivative is monotonically increasing. I mean this is coming from the fundamental property of convex function. We can extend that idea to sub gradients and we can also say that the sub gradients when you are defining a function by. So, there are points which are where it is differentiable there you know that the sub gradient is unique for the points where it is not differentiable you just arbitrarily pick one of those sub gradients and define a function in that way. So, that is how we are going to define this function phi. So, phi of z is an element of this delta g in g z as we have defined for the points. So, for all the points in i. So, for all the points in i prime we already know that this is going to be this set is going to be singled in for all the points i minus i prime it is non-differentiable we just pick one point from that set and define the function in that way. Even in that situation we know so this lemma is saying that if you have so if you have x greater than y then the corresponding function phi will also be non-decreasing. So, it is a monotonicity condition on those sub gradient function and you can actually visualize this. So, here all these points on the on the left hand side they were having the sub gradient to be negative. So, let us say all this minus of 1 and suppose this is this gradient is plus 1. So, as we move from this direction to this direction we see that the sub gradient this phi function starts with minus 1 let us say it starts. So, this is the phi function and it starts with minus 1 initially and at this point you can arbitrarily pick any point. So, it might be any number between minus 1 and 1 and then you have this the rest of the points. So, this change over happens at this point this x and then onwards you can see that this function increases the function is always non-decreasing that is the conclusion from a convex function. And the last result that we are going to state here is a integral formula involving the sub gradients. So, we can actually find for any pair of points x and y that is living in this domain of this convex function through this integral formula. So, we can find the value of this convex function at point x starting from point y looking at the value of the function at point y and then integrating from that point to this new point from y to x using this this sub gradient. So, what it is actually saying this is something like similar to the the derivative formula. So, what is sub gradient? It is the gradient except for a few points where it is not not differentiable, but we already know that those points are kind of countable and has measures 0. So, this integral will just chop off. So, of course this requires this needs to be proved rigorously, but the point is that those points are just one point I mean they they have measures 0. So, we cannot really integrate the integral over those points will be 0 and for the rest of the points we are just looking at the derivatives. And therefore, the when we want to find this function g of x starting from g of y we can just use this integral formula and get the get the value. So, that this particular lemma will be very much useful when we try to characterize the payment of the single object option mechanism in our next modules.


Daily Tech News show is made possible by its listeners thanks to all of you including Bjorn Andre, Jeff Wilkes and Father Kadan Coming up on DTNS. Will E3 be more like packs in the future plus Sony pulls movies that people fade for and pulls discs from collectible bundles This is the Daily Tech News for Friday July 8th, 2022 in Los Angeles. I'm Tom Merritt Some deep in Dogtown, St. Louis. I'm Patrick Norton on the show's producer Roger Chang and we are very happy to have TV host and streamer Trisha Hershberger back on the show We're gonna talk about E3 we're gonna talk about Sony, but let's start with a few tech things you should know In early April Microsoft began blocking VBA macros on downloaded office documents by default as a security precaution Company said it's gonna roll back that decision citing feedback from customers Microsoft did not initially announce the rollback, but confirmed the change after customers noticed a change in the default behavior My stuff is broken SpaceX announced Starlink Maritime a satellite internet service for watercraft offering up to 350 megabits per second down Customers need to purchase dual terminals a fancy set of antennas for $10,000 is a one-time cost with a monthly service at $5,000 a month coverage at launch is limited to coastal waters in North America, Europe, Australia, New Zealand, Brazil and Chile Well, that surely sounds painfully expensive SpaceX has a case study that points out that moving to Starlink from traditional Very small aperture satellite internet service for their drone ships drop their monthly internet tab from $165,000 a month to a mere $50,000 a month while increasing what they call fleet throughput by 5,900% seriously from very limited personal experience traditional high-speed satellites in obscure areas or out on the ocean is Insanely emotionally traumatizingly painfully expensive. It's one of those compared to what you were paying. It sounds cheap. Yeah We like to keep you up to date on fast-growing services You might not hear about anywhere else, but you might hear about down the road and because you listen here You already know about them universal music groups signed a deal to make its catalog available to um dune dough MD UN DO it's the fast-growing music service with about 20 million users as of the end of June mostly in Nigeria But also expanding across Kenya Ghana and Tanzania Universal music group is behind some of the biggest labels on the continent. So it's a good get for um dune dough Def Jam Africa Blue Note Africa and Motown Gospel Africa will be joining the platform among others nice Netflix is sponsored with excuse me Netflix has partnered with Sennheiser to replace born old stereo audio with Sennheiser's Ambio 2 channel spatial audio system at least on some of its original programming most notably stranger things season 4 Just search for spatial audio and you'll find a list of Netflix titles that include the feature Netflix already offered spatial audio on supported Apple products But this is supposed to run on anything from cheap TV speakers to your cell phone headphones tablets laptops you get the idea I've had a good 10 20 minutes puttering with it and I can safely report It is ye old psychoacoustically tweak stereo sound to make it more bigger and enveloping Big props to Sennheiser by the way for giving re-reporting mixers the ability to tweak this in the production process I'm looking at you Poorly rendered spatial audio and classic albums from certain music sites that make me go why Why did you do this to this innocent album? So what you're saying is what Sennheiser doing is very spatial The wall street journal sources say google has offered to place the part of its business that auctions and places adds into a separate company But still under the alphabet umbrella remember google's part of alphabet as is waymo and a bunch of other companies They just take all the ad tech and make it its own out from that company, right? That solves the problem, right? The u.s. Department of Justice has been investigating google for abusing its position as both a broker and auctioneer of the ads Usually those are separate parts of the process There was no information about whether this part of google's proposal would be acceptable to the doj or not All right, uh, you laugh, but you never you never know until you ask i'm gonna be very Let's talk a little bit more about uh, what's going on with uh, sony and movies right now And i'm not talking about sony pictures in this case. We're talking about playstation Tell us last year in august Sorry a bit of a internet lag there last year in august 31 sony Stopped offering tv shows and movies on his playstation store and at the time it wrote that users can still access Movie and tv content they have purchased through playstation store for on-demand playback on the ps4 ps5 and mobile devices It's okay. We're just not selling any new stuff They didn't exactly say for how long though and as of august 31st this year customers in germany and austria at least Will no longer be able to view your previously purchased studio canal content. We removed from your video library A variety reports. That's about 314 titles in germany 137 in austria Most importantly for a lot of people that's going to include both pattington movies and the children wept And some lionsgate films like john wick and hunger games and the teens and older people wept We have not heard whether any refunds would be offered. I hope in sony's case They make it good on this because this is just not nice This is the exception that proves the rule most the everybody talks about being afraid that this will happen It almost never happens But this is the worst case scenario of I paid for a thing and now I can't use it anymore The reason this doesn't usually happen is when companies do close down like flickster did for instance flickster Not quickster. That was netflix flickster Was a was a tv movie rental service a sales service. They migrated you to another service Target had its own service.  They weren't going to be able to afford to continue to do that my guess here Is that there's a deal with studio canal that expired and studio canal said well if you are not continuing to make us money We're not going to renew that deal Yeah, that definitely tracks and you know like you guys were saying this is the age old argument to buy physical media Why would you buy physical media? I know a lot of us are digital only I'm mostly digital only because I have tons of dvds and blu-rays that just take up space on my shelf Now if you collect those that is like a niche thing that a lot of people go for But the argument to collect those even if that's not your specific specific collector style Is that when something like this happens You're not sol so to speak and I I feel awful for you know those folks in germany and austria right now that Paid for oh owned these movies, but don't actually own them It's it's a good reminder when you buy things on a digital service. What are you actually buying? You knew you're buying into the service and if the service is no longer there then neither are your Purchased items. I think if you look at music what we're seeing with music is People have gotten over the fear of not being able to own because so much is available so much of the time We're not there with video We don't feel secure yet that like well if I want to watch something it'll be somewhere right because most stuff is somewhere But it's also not everywhere whereas music is is pretty much everywhere right you you can find it Most things are also on tidal spotify apple music whereas in video. It's well if it's on netflix It's not on disney plus. It's not on the other thing. So it's more complicated I don't think it's necessary for everyone to switch to physical media right away This is just bad policy from sony and they should have done better By their customers from the moment they ended this last year I I'm just going to quietly ignore the large stack of blue rays and cds that occupy storage in this basements I I don't know it's I you are absolutely correct tom That this is the nightmare scenario that almost never happens You know and as trish points out, you know, most people are living the you know the the the streaming lifestyle I I also feel like the options have narrowed so much that the players that are remaining To buy content online are pretty you know me if you look at like apple google These are huge companies that that this is practically a side cell for their primary businesses So I think they'll be able to keep this supported, but it's always a little nerve-wracking Um, you know, especially if you can't do things like migrate titles to movies anywhere Which you still can't do with a bunch of titles including that would have been that would have been the other thing Right if sony was part of movies anywhere Then you would just like open a voodoo account before sony closed down Port most of your stuff over although some exceptions including lions gate Weren't part of movies anywhere, right? So that's another I was about to point that out. Yeah It's like it's so close so I was gonna ask is movies anywhere kind of generally regarded as the most ubiquitous Of the movie streaming services at this point. Well, it's it's it's the only cross service platform, right? so if if if you're going to If you're gonna participate in buying movies online, which again I think a lot of fewer people are doing that than they used to because they just decide to stream stuff off of whatever service They happen to be Using rather than owning them But but yeah movies anywhere is the way to go. It's kind of your only thing There was another one called ultra violet that went away. So you're you're pretty much, you know Your category management is movies anywhere. They just need to get everyone in in the in the store so to speak Well Similar story here But with a different spin god of war ragnarok now scheduled for release on november 9th for ps4 and ps5 And is with most big game releases these days There are special collectors editions that feature all kinds of cool extras in there For instance, the yoke gnar edition includes a mjolnir replica, you know doors hammer A knowledge keepers shrine that looks really cool a seven inch vinyl record that has the music from the game by bear mccrary You get pins. You get rings. There's a steel book display case a bunch more stuff It does not however include the game disc Neither version of the collectors edition Uh, they have two there's yoke gnar and just the collectors edition neither of them include the game disc You get a digital download code. So you get the game But it's a code a code that you cannot use Until the box with the code in it physically arrives in your hands So you're not going to be preloading you can still buy a disc of thor ragnarok Or god of war ragnarok if you want but that is separate That's the standard of the launch editions of the game the launch edition comes with some free dlc But these don't include any of the physical objects that the collectors edition do now Sony has done this before they previously omitted the disc in the collectors edition of horizon forbidden west But they did sell a special edition with a steel book and a mini art book Mass Effect legendary edition also offered a legendary cash bundle that didn't even include a copy of the game at all physical or digital But there were other versions of with collectibles that did It's no secret that growing number of gamers don't buy discs Ars Technica notes that in its retail spot check They estimate about 25 of the people who bought a ps5 opted for the one without a blu-ray drive So offering collectors editions with the download code isn't odd Ubisoft has done that a lot But not offering an option that has a disc Kind of seems like it might be an emerging trend trisha. Is this just the way of things? I mean honestly since the latest gen console releases both playstation and xbox have offered a digital only option I wonder if this is a way to Not make the folks who've purchased the digital only console feel excluded Like this way they can still get the premium collectors edition without you know a disc that feels like Oh, maybe I should have a different console I don't know. That was my only thought in reading this. I think it's very funny to get a steel case Without a disc. Yeah without a disc that seems strange But that being said I purchased the horizon forbidden west special edition I have the steel case and I just used the download code and when I got it It didn't strike me as weird at that time now when we're talking about it here I'm like, oh, yeah, that is strange But it made me think what about when I got horizon forbidden west special edition Didn't feel weird then. I guess I guess we're all just so used to digital game codes at this point Or especially if you come from pc gaming, you're very used to steam codes. I don't know patrick. What are your thoughts? No, we there's like no console gaming. The first thing we have no console the house is a play date So, you know part of me was like, that's right. People still get games on, you know Captain I have 300 blu rays is like. Oh, yes video games are still sold on discs. Isn't that fascinating out quaint But the because everything in our house all came off of you know steam or or one of the other platforms Yeah, I'm with part of me was like so tom and I were talking about this earlier part of me is like this is And then part of me was like it is really weird I think you know on the head the whole point of a steel case is to have a disc inside of it And to have a steel case without a disc is just peculiar You know, I'm also wondering when there's going to be the first sort of special edition cassette To go along with the seven inch vinyl option since I've I've I've been I've been Oh, yeah, it's coming because I've been seeing more and more people releasing cassette versions, you know, and And I've I've even found a place that claims to be doing eight tracks new eight tracks I'm trying to figure out where they're sourcing those because I thought nobody in the world was still making them So just when you thought you were done with lots of dead mediums falling back Yeah, it's not it's not weird to me that they would offer a collector's edition with a download code Uh, there's there's a bunch of music acts that I follow that do that when they put their concert stuff out on blu-ray They'll offer you a version. That's just the download code Uh, but you still get all the books and pictures and stuff and liner notes that go along with it So, uh, I get that what I don't get is not offering you the version with the disc, right? Why not also have one for the person who either uses the discs to play Or even just wants to have the disc as an artifact, right as as a thing to to have in their collection Some people are like that. They just they just want to have the physical thing Yeah, I mean is this a move by sony to Like them kind of communicating to us that they think that the physical media is on its way out. I don't know I I wonder if having a permanent copy of this So I wonder if it's that or if they just don't want to Pay to do the production run, you know, obviously they're they're making discs because they're selling the standard edition But they don't have to make as many. I don't know Yeah, it's it's it's it's just peculiar. Maybe nobody maybe somebody forgot Maybe it got through all the layers of people have to sign up on this And somebody somebody from sony america is going to be like, oh crap. We forgot that skew One with the cd in the steel case wasn't that supposed to happen Well, now they've forgot for three franchise special editions in a row, you know, yeah, yeah Or maybe maybe you could Well, I mean you can't buy it as an add-on, right? You can buy the standard edition take the cd and put it in your steel case I suppose To go with your code.  Yeah Uh And so you didn't worry about preload when you've gotten the digital code shipped to you before trisha It sounds like that wasn't a big deal No, I I you know I I try to plan it for the day that i'm going to stream the game or something like that when I have access to it and generally I will either wake up really early in the morning because i'm excited and just you know get it that morning So before my stream starts, I know I have plenty of time to download it Preload is always nice, but for me, it's not a necessity. That's a big deal Uh, well folks, uh, hopefully these are of interest to you. That's why we talk about this stuff But uh, we're always interested in what you would like to hear us talk about on the show In fact a couple of these stories today and the quick ones at the top came from our sub reddit So get in there and submit stuff and vote at daily tech news show dot reddit dot com The entertainment software association which puts on e3 when e3 happens Announced thursday that e3 will happen in the second week of june next year in person and online From the los angeles convention center as is supposed to happen in the world all will be back to normal The esa also said it will quote feature in-person consumer Components Which is what read pop is kind of famous for and I bring that up because esa is partnering with read pop Which puts on packs new york comicon star wars celebration among other things read pop also runs gaming websites Like euro gamer rock paper shotgun and games industry dot biz Uh e3 has been so many things to us over the years from a small thing in a hotel one year suddenly Uh to you know the largest video game show in the world at times Do we think that read pop can help them reach their final form? Is this the end game for e3? Can't you think of any other horrible gaming metaphors for this trish? Uh, it's a third. Yeah third form on the bus battle. Uh, I don't I don't know I'm failing on your gaming metaphors But I honestly really do hope that read pop can build e3 into something special again Whether it's just nostalgia or you know my my fan fervor Um e3 is something that holds a special place in my heart And I think that you know it's very possible that the time of e3 as it once was has now gone by Now that we see a lot of virtual keynotes at events like this But there is something still very special about a packs about a star wars celebration. That's all of these Gaming fans and enthusiasts gathering together to celebrate their love of video games and so if Esa is trying to transform e3 from an industry only event To a fan event or an industry and fan event hybrid as we've seen it in some past years I I have hope That read pop could do it. I mean packs is probably one of the best Enthusiast events as far as catering to the consumers and not just the industry that I've ever been to Again star wars celebrations very like that as well as new york comic con. Um, so Fingers crossed that that could happen Um, I you know as someone that has worked in games journalism over the years and has gone Simply just to cosplay and be a fan of video games I would love to see an in-person event come back and be really special Now if it is going to be all digital keynotes from here on out and that that fan component that Uh, even even hands-on component if that's missing I do think e3 might be dead in the water. What do what do you think abrick? I you know, it's it's funny because I read this then I read this again And then all I could think of was there were two gentlemen I I had to fly recently And I routed through I don't know phoenix or vegas but a couple of guys got on the plane were on their way home from star wars celebration and You know, these are you know two guys in their 30s And they spent like the first 25 minutes of the flight telling the The basically the grandma sitting in between them about this convention And you know, when you talk to people about star wars celebration or you talk to people about packs You know, it's just a giant fire hose of stoke. People love it. It's amazing. It's this incredible experience It taps into all this stuff that they love to do. It's inclusive It goes on and on and on and on so if anybody can make a you know E3 this extraordinary experience. I would think read pop is uh either that a read pop has just managed to associate itself with extraordinary events that it just happens You know what I mean? Like it's if the problem is the management and not the event Then I feel like E3's got a really good shot with read pop Because the stuff they put on is just beloved. Yeah, they've got amazing track record and I could see someone somewhere saying well Imagine if packs had the industry built into it already not the packs doesn't have the industry, right? But they've had to go bring the industry to it. E3 already has the industry there It's good. It's going to still show up even even with all of the Uncertainties over the past few years with covet and everything the industry is going to show up at E3 So if read pop can plug that into the consumer base I mean, I could imagine a scenario where virtual keynotes still happen But you can experience them at E3 In the hall and get hands on with the games even if the presentation isn't actually in the hall And right people still be pretty happy with that Yeah, I think I think that would be the hybrid way to do it moving forward and then of course now we also have EA summer of play and summer games fast and all of these other E3 like events taking place at the same time Vying for that E3 type mantle. If you will who's going to be the next E3 And so I think it's it's a little sad for esa that they're vying for their own title of who's going to be the next E3 But I just I as a fan and as someone who You know does work in gaming journalism from time to time I'm just sitting back with my popcorn anxiously awaiting. What comes your read popcorn my read popcorn Yeah, I mean tokyo game shows not a bad model for you know that kind of hybrid event So it can certainly be done. I uh, I look forward to seeing what what they Come up with. I don't know. Maybe they'll partner with keely or something crazy like that I'm not you know, you'd ever know There's it thinking outside of the box yet to be done Uh, speaking of thinking outside the box right now solar energy is about 3% of the global supply And when a solar panel goes dead it pretty much becomes trash, uh, it can be Sold as crushed glass or or something like that, but it's not really Effectively recycled You might want to hold on to those dead solar panels then because Norwegian Energy Industry Analyst Reichstad Believes the economy the economics of recycling solar panels is about to change It estimates the value of recyclable materials from solar panels may grow from the 170 million dollars it is now It's not nothing, but it's not a lot considering the number of panels To 2.7 billion by 2030 and there's three reasons for that expectation One solar panels are becoming more affordable to install and therefore more people are installing them Which is raising the demand for new panels Two the materials to make those new panels are becoming more in demand because they're making more panels And the handful of countries that mine and process the materials needed are coming under closer scrutiny and sometimes sanctions as in the case of some solar products made in china So there are there's a tightening of supply of the materials Not the least of which is logistics and supply chain issues that are affecting everything and three It's becoming easier and cheaper to extract valuable materials from older panels Used to be you couldn't really get the silver and polysilicon out They're making progress on being able to do that as well as many of the other materials in there So it looks like we may be able to take those old solar panels that have like a 25 year lifespan Which right now that means some of the earliest installations from the early 2000s are reaching the end of their life And possibly extract the materials to create new solar panels out of them I like this um, you know, it's been kind of crazy watching The recycling a few years ago. I fix it. Uh, kyle kind of started tracing some devices Kind of from turning them in for e-cycling to where they ended up and you know, the terrifying things Okay, some stuff ended up in Landfills despite the fact they're supposed to be recycled some stuff ends up, you know in streets In open flames basically being melted down for whatever metals they can get off of the board The rest of it kind of gets pitched and it's kind of extraordinary to watch especially as With availability on some of these rare earths get squirrelier and squirrelier or more complicated or more expensive Or just the fact that we're running out um, hopefully This continues to grow as an option because otherwise you get into that science fiction trope where you're mining landfills in your urban dystopia, you know searching for capacitors or You know bits and pieces to a walley situation. Yeah. Yeah You know nothing to sci-fi dystopia dramatic, but I love anything it keeps Stuff out of landfills is a good thing as far as I'm concerned. So yeah Pat when you were reading that did you happen to read if there were certain e-cycling services that you know Had a better track record than others There are uh, you know, I've found out that in a lot of cases it's just gotten so much better in the last few years and there's a sort of a a Best thing to do I could say is kind of go to iFix it and see where they recommend But most of the major places you can recycle stuff now I I feel comfortable in saying in most of the major places you can recycle stuff now are much better about it But uh, I do not have the latest information on on who the best places to take stuff to do this Gotcha, so cool. I will do some research Uh, and if you know some places you can email us feedback at daily tech news show dot com Let's check the mail bag now jeff wrote in Uh, and pointed out that on yesterday's show dts 43 11, uh patrick and myself Contemplated the value of a meta account versus a facebook account in relation to quest headsets The news was that they're dropping the requirement of a facebook account and implementing meta accounts in august And I was pointing out that there's not a lot of difference between those two because facebook's You know still owned by meta and meta still owns all your data either way Uh jeff writes a lot of people are contemplating whether there's a difference But for me, there's an important difference when my son received a quest to headset I had to use my facebook account to set it up So he was immediately linked with my social graph Which doesn't include anyone less than three times his age It also linked the friends he games with all of whom are less than a third my age to my facebook account Having a separate meta account means that I can finally separate him And his gaming social graph from my facebook social graph by creating his own account It also means that I can now consider getting a second headset so that we can game together since previously doing so Would have involved me creating another facebook account which not only would have violated their terms of use But been a heavy hammered approach to the small issue of wanting to game with my son That is such a good point that is such a good use case example because I do think a lot of us are talking about it of Who owns all your data? But when it comes to the practical everyday applications of using these devices, that's a really solid use case Yeah, I don't when my son's old enough to use a vr headset. I don't want all of his little gaming friends attached to my facebook But they'll be charming Well, and this is a lot of times when people say like why do you need an account for children? You know and and the the answer is maybe you don't need a facebook account for children But you might want to play games with your children on the quest in which case Do you need an account for them to play because that's the way they set up the quest unfortunately And to be fair when we say for children the quest is recommended for ages 13 and up So not little little children, right? But for teenagers. Yeah, and you might not want them to have their own facebook account yet Also, I think from a marketing standpoint There are people who think oh, I don't want a facebook account. I left facebook ages ago, but meta Is this a new thing? Yeah Yeah, we touched on that yesterday We might have just sort of assumed it more than talked about it But that's the part of it where I'm like It really is just a brand change in that respect and and that probably will help meta because some people who are anti facebook will be a Oh, oh, I'll I'll sign up. It's not called facebook now and not look too much farther into it Um, which you know good good for them. I guess I mean there's a lot of people who are pro instagram But anti facebook. So sure I I am one of them. I'm not anti facebook, but I don't use facebook I don't like using facebook and I I rarely log into it But I use instagram all the time because I don't have a moral objection to the company I just I just like one product over the other, you know What experience uh, well, let's uh, thank patrick norton for being with us for two days in a row Thank you patrick for for stepping in it was great to have you man Thanks for having me. It was great to be here As always tweet at patrick norton or head over to avxl or search for avxl And your favorite pod catcher to hear robert and I and by the way how to recycle end of life atronix Uh, ifixit.com slash wiki slash e-dash waste is a place to go to find out where to get rid of your stuff in a certified and Smart manner. So hopefully that helps everybody out and uh, there's a link in the show notes for you trish Trisha hershberger, thank you so much for bringing your sunshine into the show as always It's a pleasure to have you back where can folks find out what you've got going on online Thank you so much for having me tom. This is always so fun if people want to follow what I'm up to online Um, I stream on twitch twitch.tv slash trisha hershberger Or you can follow me on all the socials at that girl trish with no i in the girl So that g r l trish And I I do the tech and gamey hosty things for a variety of different outlets So if you watch amazon live if you watch twitch gaming if you watch ign if you watch crown channel You'll see my face pop up in those places from time to time But yeah my home base at that girl trish or twitch.tv slash trisha hershberger and thank you so much for having me Thank you and uh, thanks to our brand new boss, uh, who who made the show possible We couldn't have had trish or patrick here without the help of our patrons including the newest patron johnny homecoming. Thank you johnny for supporting the show yesterday and uh, you know if we get a brand new boss We give him a big old shout out on the show could be you tomorrow patreon.com slash d t n s There's also a longer version of this show called good day internet that starts right now for patrons available at patreon.com Slash d t n s we're live 4 p.m. Eastern 200 utc find out more daily tech news show dot com Slash live and we'll be back monday with nika monford from snobo s is our guest talk to you then This week's episodes of daily tech news show were created by the following people host producer and writer tom merit host producer and writer sarah lane executive producer and booker roger chang producer writer and host rich straffolino video producer and twitch producer joe coontz technical producer anthony lamellis Spanish language host writer and producer dan compost news host writer and producer jen cutter science corresponded dr nicky ackermans social media producer and moderator zoe deadarding our mods beatmaster w scottis one bio cow captain kipper gadget virtuoso steve guadorama paul reese matthew j stevens and jd galloway mod and video hosting by dan christensen video feed by sean way music and art provided by martin bell dan luders mustapha a a cast and len peralta a cast ad support from tatiana matias Patreon support from dylan harari Contributions for this week's show came from shannon morse scott johnson and patrick norton and our guest on this week's show Was trisha hershberger thanks to all the patrons who make the show possible This show is part of the frog pants network Get more at frogpants.com Diamond club hopes you have enjoyed this program Thank you