Up next we have Paul and Guillaume who are going to present on WASM engines. Take it away. I'm going to do this one alone. I'm going to do WASM engines alone. Okay, hello. My name is Paul. I'm going to talk about WebAssembly engines for E-WASM. Those are they. One, two, three, four, five, six. The first three or four we have working in some capacity. It seems that there's a big push to use the Firefox and the Chromium WebAssembly engines. They have various sort of tiers of engines. They have their baseline engines which are just single pass, linear pass to compile to machine code. Then there are the optimized versions. So I was asked to talk about WebAssembly engines, but I just want to talk about what WebAssembly is in general. So there's a 150 page specification and it specifies a syntax of the language or a grammar, so how to construct programs. And on top of this definition of the syntax they define a validity which says you're guaranteed to return or pass some arguments and it's guaranteed to do certain things. And then finally they define execution. Execution is defined as rewrite rules. What is that? Okay. So somewhere in some WebAssembly program we have these two opcodes. Const zero and call zero. What does it mean? What does it do? Imagine zero, okay. So first of all, WebAssembly is given to you as a module. It's a WebAssembly module.wasm file. It's a set of functions. It's a memory. It's some abstraction that lets you do function pointers that's called a table. Some things to initialize these tables and these memories. Things to import and export. And you have this module which is a set of functions. So it maps well to an Ethereum account which is also an account code which is also a set of functions. And you have imports and exports so different modules can call between each other. But somewhere in one of the modules and one of the functions we see this. What is it? What does it mean? So const zero, 32-bit const and call zero. Call zero means call a function, the function in this module which has index zero. So imagine that's the function that has index zero. That's WebAssembly code. You don't have to know what it means. But it's some chunk of whatever that you can execute when you see this code somewhere else in that module. So this is how a WebAssembly program executes. We see these two opcodes and then we execute these opcodes. By rewriting wherever we see this we replace it with that chunk. So what is this chunk? We take everything in this function, loop to get local. We copy it, we paste it here. We use something called the frame. This is just what it says in the spec. I'm just mechanically doing what they say in the spec to do. It says when we have in these brackets we say locals. There's a parameter. It takes that const and zero. We copy and paste it here. Then we wrap all of this code in something called the block. That's just what it says to do. So that's what I'm doing. I'm just rewriting that. I'm deleting it and I'm replacing it with that. Then what happens? Then we rewrite the thing that says block with this. I just read the specification. I'm just doing what it told me to do. Then what? I rewrite where it says loop. I put in labels, zero, and then I copy and paste all of this text, including the loop part, into here. I wrote it in small text so it could fit. What happens next? This get local. So we're sort of going along. We saw a block. We saw a loop. Then we see a get local opcode. What does that mean? What does it do? It says to take that const zero. That's the first local. There could be more. Copy and paste it. Delete where it says get local. Paste into it where it was. I32 const zero. Then what? So we're sort of going along, and then we see these three opcodes. What do we do with these three opcodes? It's a rewrite rule again. We replace these three opcodes with the sum, the add with the sum of the two. So we replace it with a const one. As you see, it's just rewrite rules. The whole semantics, the whole execution semantics, is we're just rewriting chunks. We're copying and pasting text. What's next? We have a T local, which means we take whatever is above it, put it into the local const, and then we also paste it here, and we delete where it says T local. I'm just rewriting stuff. I'm not doing anything controversial. It's just what the spec told me to do. Then I'm doing a less than unsigned operation and replacing it with a one, because one is in fact less than three. So anyway, this just keeps going and going, and finally I get to this. This is my last slide for the Wasm Engines talk. So what's the point? Why did I just waste your time with this sort of rewrite rule stuff? I went from this somewhere in my code, and I just rewrote it a bunch of times all the way down to this. That's how we executed WebAssembly. These rewrite rules, so what's the point? That's how the spec defines it. It's just rewrite rules. Nobody implements their engine like this. People implement their engines with stacks. There could be one stack, there could be two stacks, there could be three stacks. When I implemented the engine, I did it with three stacks for various reasons. There's stacks for these function call frames. I have a stack for the function call frames, I have a stack for the labels, and I have a stack for the operands. Other people keep their function call frames and their control flow labels in the same stack. There's advantages to doing it my way because if you keep these in the same stack, every time you return from a function, you have a linear time if you're nested in a bunch of functions, so that could be a slowdown. The point is everyone implements their engines, however they want to implement it. People do it differently, but the whole goal is to make WebApps. They want to have alien fighting games in their browsers and things like that. If that crashes, if that fails, who cares? If everyone's implementing things their own way, then maybe someone's going to have a bug, someone's going to introduce an invariant that they're going to ignore later on, and something's going to go wrong. If it's a WebApp, who cares, but if it's a DAP when there's a lot of money on the line, then we might have problems. I think we have to focus and spend a lot of time making sure we implement it right to audit these engines. We talk about Firefox and Chromium. They want to have some micro-optimizations and benchmarks that they're interested in, but do we want these micro-optimizations? I'm just asking questions about do we trust this stuff? The spec says to rewrite stuff, no one's rewriting it, everyone's just doing it their own way. What's the right way to do it? I think we have to audit and keep a close eye on everything. That's the WebAssembly Engines talk. Okay? Swizzling, so I'm giving the next talk as well. It's called TurboEOSM, which is increasing transaction throughput. TurboEOSM is our code word within our team of increasing transaction throughput. This is joint work between Geomonite and other people on the team, of course, have had good conversations with us. So the big idea is what are we doing now? Ethereum execution. It's serial execution, as you all know. We're disk IO bound, they say, and we have max 20 transactions per second. What does it mean? What does serial execution mean? We're executing transaction one, then we're executing transaction two, then we're executing transaction three, and so on until the last transaction. What does disk IO bound mean? This isn't to scale, by the way, but if you took some operating systems course, you've seen some image where you're doing some work, and then you're waiting for IO, and you're waiting, and if it's disk IO bound, these sort of IO ranges dominate the work ranges. And so we're waiting, and waiting, and waiting for disk IO to come back, and it comes back, and we do work, and we do work, and we do work, and now we're waiting, and waiting again. And so we're doing 20 transactions per second, and I don't know, when sort of engineers see this kind of thing, they're bothered. Why can't we fix, improve this? Because this is awkward, and we're engineers, and we know how to do these kinds of things. Guillaume and I had some conversations about this. So Ethereum shards, we might have the same thing. Shard one might also be limited to 20 transactions, likewise with shard two, likewise with all the shards. So some use cases like these plasma on-ramps, off-ramps, state channels, payment channels, whatever, might not be usable if we only have 20 transactions per second. So sharding does scale, help us scale in some sense, but is it meaningful? We still can't use, you know, if a million people want to get out of this payment channel, it's still unusable. So let's try to talk about increasing throughput on each individual shard, and maybe cross shards. So when people say, why can we use sharding, they start talking about independent universes, independent galaxies, things are independent. What does it mean? What does independence mean? So I guess we'll define what independence means. Two transactions are independent if they do not touch the same state location. This is an illustration, transaction one and transaction two. Transaction one touches the upper left, the transaction two touches the two bottoms, and you can consider these transactions independent of each other. So within, so in different shards, we're guaranteed, they say, that a transaction in shard one and a transaction in shard two are independent of each other. So we can, that's the whole idea. There are independent galaxies, we can execute them currently. But how about transactions within the same shard? So the focus of this talk is within shard transactions and cross shard transactions. A cross shard transaction is a transaction, for example, from shard one to shard two. Okay, so what does someone that wants to scale do? An engineer usually will go to perhaps Wikipedia and look up models of concurrency and read about actors' models and process calculus models, and maybe we can use these things. And people are using, people are looking at this. I spoke with the actors with capabilities, the gentleman that invented the primea, which DFINITY is using, then AGORC is using these ideas, process-calculi, R-chain, rolling, doing great work, fantastic work, and they're talking about paralyzing and increasing transaction throughputs. They're also using this idea of independence. With primea, they're called VATS, or with the actors and capabilities in general, they're called VATS, a shard is equivalent to a VAT, in some sense, and for process-calculi, they call it namespaces. So everyone's using independence. So a good scientist or engineer says, what is this independence thing? Let's define what this means, and let's take it as far as we can take it, because we're engineers, we're working at the margins, let's see what we can do. Okay, so we're going to define what an independent subset of a block is. An independent subset of a block of transaction is such that each transaction is a subset, such that each transaction in the subset is independent of all transactions outside of that subset. That's the toughest definition of this talk. For example, an independent subset is transactions two and three. They're independent of all transactions outside of the subset, transaction two is independent of one, transaction three is independent of one, so these two are independent subsets. because transaction one, do not write to any location that the set of Tx2 and Tx, transaction two and transaction three write two. Correct. So we have some sort of maybe you can have a visual proof that you see that transaction one writes to this and it's independent based on the definition of independence which was in a previous slide which is a relationship between two transactions. And an independence partition of a block of transactions is partition into independent subsets partition. We know disk partitions partition of a set is breaking it into subsets such that their union is the whole set and their pairwise intersections empty. So the independence partition of this sort of block would be one subset is this just this transaction a subset with this transaction and other subset is these two transactions. And we notice that we might be able to run these concurrently because they're independent of each other just like shards are independent of each other. Okay, so how do we build this independence partition for three transactions we could just look and point and say look these are independent but if we have a whole block of things it might be difficult so we have some algorithms to partition the pool, a transaction pool or block of transactions into independent subsets. What is access list first of all? There's EIP648, there's a push with each transaction you say I'm gonna touch these state locations and only these state locations. If I violate this then my transaction is invalid so there's a push for access lists and shards so there's two cases either we can do it with access lists or without access lists. Let's talk first about with access lists. So I'm gonna do a visualization and it might be tough so we have our block. We order our transactions from one just forget about anything below transaction zero, transaction one all the way to transaction 63. And then we write the same transactions on this column we notice that transaction zero and transaction zero interact which are dependent on each other so we put an orange square there and also 63 whatever this is based on access lists we take these access lists we compare see if they intersect with transaction zero and 63 yes they do for zero and 63 we put a orange square there and we can partition this block of transactions into independent subsets so this subset you know this chunk of transactions is independent of all other transactions why because there's no orange things colored in here so this is maybe the kitty cat app this is a decentralized exchange this is some mixer this is some ICO these are one-off transactions and we can execute each of these sort of chunks independently of each other because of this independence property just like shards are independent yeah I'm just saying do you want me to do that so that you don't have to walk all the time I got it okay likewise if you have many more transactions you can break it into independent subsets so this is just an idea to parallelize a given block we're not doing it yet so that's the big so you see these independent there's many so we can do it we can scale this okay without access lists it's awkward we currently don't have access lists in Ethereum so we might execute a transaction see if it sort of hinders our concurrency so if it touches a bunch of these independent subsets then we won't include it of course there's a DOS tech worst case we'll go to serial execution but this is one possibility to scale the main chain and it's all based on independence it's a simple idea that independent universes galaxies we're just taking this as far as we possibly can like we're maybe scientists or engineers so then each independent subset we execute on its own CPU perhaps we've already known this since EIP648 this is nothing new but this sort of this looks like the sharding picture we're shard zero shard one to shard n but each one is sort of not shard we're sort of dynamically creating shards and we're solving two important problems within a single shard and cross shards we can use these ideas so we ohm and I are sort of trained in computer science and we sort of talk about operating systems and when you take an operating systems course you learn about threads and preemption and we have this disk IO bottleneck so our idea is to use threads so each thread corresponds with an independent subset so we start executing thread one which is the top left corner of independent or whatever it starts executing it asks for disk IO there's a scheduler in operating systems as you know it'll preempt this thread while it's waiting for IO and schedule this thread so it's doing work this thread starts waiting this independent subset is waiting for IO preempted this one's doing work so essentially we're trying to use 100% CPU so we're trying to eliminate this IO bottleneck whether it's disk IO whether it's network IO whatever it may be and we're just using things from operating systems we can just use a regular operating system with P threads or whatever this stuff is available now or do it you know with many CPUs so hopefully we can use 100% of hardware that's the dream of like you know computer scientists use 100% of hardware I think so yeah I'm pretty clean up so as a quick maybe a reminder so the question thank you was about bottleneck so IO Paul has very well explained that IO is a bottleneck in Ethereum 1.0 it's disk IO it's apparently apparently it's debated whether it's the biggest bottleneck but it's definitely up there in Ethereum 2.0 if you start having stateless clients if you need to get your state from the network it's not so much disk IO well ultimately it will be disk IO but it's not so much disk IO as network latency and things like that but that means like you will spend a lot of time waiting for your data to arrive or to be written and as a result this really makes sense to try to get the computer or the miner to do something while this is happening so what we want to do with this work like that was the preliminary research work what we want to do is to increase to extend the definition of independent independence between transactions do you want for example imagine you have like let's say an ICO or a CryptoKitty kind of profile where a lot of transactions correspond to the same contract can you also generalize the independence to cause within the same contract can you for example use something like SIMD or some MapReduce kind of programming paradigm so that you can make sure that every single thread or every single transaction touches a different area of the state and run them concurrently knowing that they wanted to fear so yeah that's what we're looking into we also want to look into other ideas for example gas calculations so you heard before about the metering or the sentinel contract something that will scan your contract and add calls to use gas to make sure that the gas get properly counted for what we would like to do maybe is well we would like to see if we can explore what we would like to explore possibilities to actually pre-meter the contract so reduce the need to do this because well first you have to scan the contract but then every time you have to make a call and that's kind of inefficient so we want to see if we can just have simple gas rules see if we can have an upper bound or a formula we just look at your binary we say okay this is roughly what it's gonna cost and charge that one of the interesting things that really where wasm really brings a benefit it's the replace contracts call with function calls so right now when you call a contract you have to re-instantiate a lot of things like you basically, I'm talking about gas you create pretty much a new VM a lot of data structures but ultimately this is what you want to do is a function call you're not actually calling a contract on a different computer you're calling something on the same computer so why not make it a function call so you would have something like import you know like pseudocode or pseudopython import that function from a contract address and just get everything loaded and you can start doing lots of things that get inspired by operating systems like managed modules like operating systems managed libraries if you see that a module gets loaded very often you just leave it in memory so that when you load it you it's already there you can do something require modules to have the full list of contracts to basically like you had access lists for state locations you could also enforce the same thing for modules we also get inspired by turbo gas unfortunately the turbo gas presentation was at a concurrent time in a different room but yes, so try to replace all the state try or at least try to optimize the way it's stored the way it's accessed maybe that's still a suggestion from the name escapes me Alex say thank you smart guy yeah very smart guy how to maybe have all those contracts all those states in a like linear contiguous space why not with protection of course yes and we also want to use some of the features of wasm that are on the roadmap they haven't been released yet or at least not officially agreed on yet but you have mutexes you have SIMD so for those who don't know SIMD is a single instruction multiple data so the processor has one instruction that does the same thing several times it uses the parallelism that is inside the processor and yeah that's what we're looking into and I think that was it doesn't work yep that's the last one okay that's the last one that's what thank you thank you very much thank you Guillaume and Paul that was really intense big applause again for them one addition to all of this is we are considering all these different improvements and we're in a really lucky position that we can consider adding these improvements to the wasm test net or spinning up a new wasm test net and add these improvements to it but hopefully if we manage to add any of these they're going to be a really good test bet to have them fully specified and finally implemented on the main net now next one on stage is Casey DiTrio Casey has been around forever he's really into research and he's more into keeping Ethereum alive and into improve Ethereum and his talk will be about a new idea how you could do scaling on a much bigger scale and we may also consider having this on the wasm at some point big applause for Casey thank you it's not exactly a new idea it's just Ethereum 2.0 the Jasper Serenity research which I heard in the news recently that Ethereum 2.0 research is stabilizing finally stabilizing which is good to hear because maybe now we can answer one of the most basic questions just how are we going to deal with a large and growing account state this is one of the main problems in scaling even if we wanted to scale 1.0 we would have to deal with the account state sorry and this actually doesn't have really anything to do with Ewasm because Ewasm is just an execution engine and the execution reads and writes to the state so if you want to implement an execution engine then you've got to decide how you're going to handle the state so I guess it kind of falls on us to decide that so we wanted to say a little bit about it this talk is not going to be highly technical this is supposed to be an overview of the developer experience and the user experience and the challenges and changes that will have to be made in order to scale Ethereum so just the goal is having a lot of users a lot of transactions and transactions and where the gas price remains cheap if the gas price is if the gas supply is limited and you have a lot of users then the gas price goes sky high so how do we keep the gas get gas prices cheap again well if you don't want to sacrifice decentralization you could just run all the validator nodes on well all transactions on 21 validator nodes on supercomputers but if you don't want to trade off decentralization then ideally you'd be able to run a validator node on any consumer laptop that way you can just keep adding more laptops and the network and scale so to solve this dilemma our hero sharding Jasper McChard face what's the plan phase one we collect a lot of data blobs we have a pretty comprehensive spec for doing this you know it's like eight different teams building it out it's the beacon chain they say you know some of these prototypes should be functional soonish and then then there's phase two well phase two we think we're going to use eWASM but we still I mean we're not really sure how we're going to do phase two we still have to iron out some details but there's good news because phase one is actually the the hard part so phase one is the consensus protocol the consensus protocol comes to consensus on the order of the data blobs coming to the consensus protocol is actually very complicated because the outcome is not deterministic every validator has a different view of the network data blobs arrive in different orders and different validators we have all kinds of hairy game theory issues with malicious actors and network partitions and yeah it's a challenge phase two relatively speaking is much more straightforward all you have is it's a deterministic system the order of the data blobs is already known you have one block you process it you get the next block comes you process it and so forth so if phase one is behind us and you only have to worry about the execution engine and phase two next then you're actually you know not that far from the finish line but we learned yesterday that Shasper is actually kind of lame he can be a bit of a buzz kill my two main complaints about Shasper are that for one it won't it won't scale contracts that exist on the main chain Shasper is going to be Serenity will be a new parallel universe of 1,000 empty shards and users will have to migrate to them redeploy contracts transfer state but when it launches it will be a ghost town get it so secondly shards are going to have the gas prices will be independent on each different shard so in theory this is not really a problem because if you end up on a really popular shard and the gas price is expensive then you can just move to a cheaper shard whether it's not as much activity I think this is it's kind of like telling people who live in San Francisco and are complaining that the city is not scaling the supply of housing that well it's no problem because you can just move to North Dakota one point no problem the scaling problem in general 1.02.0 is that there's too much state users pay a one-time gas fee to create an account in the state tree and that account is there forever and all the full knowns all the miners just have to keep all this junk around indefinitely so what techniques do we have what approaches do we have to reduce the state we have two of them stateless clients and storage rent with stateless clients there's a single 32-byte storage route and when you send a transaction to the network so miners, validators, have only the 32-byte storage route and when you as a user send a transaction to the network you have to supply the Merkle proof of your account so you can prove that your account has such and such a balance and you can send either these Merkle proofs have to be up to date so I have a visualization of that next but in contrast, storage rent validators basically users pay validators to do this job to keep the account in their state and to keep the Merkle proofs up to date and when you have storage rent with an eviction or sleep in a wake if accounts don't pay rent then they get evicted from the tree but then there's ways that they can revive their account and come back into the tree then basically those techniques are very similar to how stateless clients work so it's kind of like with storage rent there's two classes of users there's like first class people who can afford the rent who validators handles all their Merkle proofs and the second class which is all the poor people who have been evicted and will have to supply their Merkle proofs in order to reawaken their accounts with stateless clients there's just one class it's everybody you know in coach everybody has to supply their Merkle proofs it's not a new idea either this is from the Ethereum analysis report from Lisa Authority back in 2015 and it was even discussed in Bitcoin before then the problem with keeping your Merkle proofs up to date is that at the top is the state route so at the top of the tree at the bottom are the leaves these are where the accounts are so your account is one leaf and then next to you is another account and that's somebody else's account but the branch the proof data that you want to supply is this Merkle branch from your leaf account up to the state route and in that branch are these intermediate tree nodes now these intermediate tree nodes change when the guy next to you makes a transaction so it's not so if you go offline and then you come back it doesn't matter that you didn't make any transactions it matters that other people are making transactions and now your proof is out of date so you have to go back in history and kind of process these transactions to get your proofs up to date so people really don't like either statelessness or storage rent the reason they don't like statelessness is because again the problem of keeping your Merkle proofs up to date also somebody who flirts and smokes weed a lot is that when I wake up from cryosleep I just want my phone to work I don't want to have to you know you imagine if 50 years later your proof would have just been changed within the first year after you went to sleep so if those blocks are still available somewhere then you're okay but the question is what happens if those blocks are no longer available well you're screwed and that's kind of why people also you know there could be some service that says I promise I will store you know all the old blocks even if you come back 50 years trust me they'll be here and people say I don't want to trust these rickety you know layer 2 services I want to have some guarantee that validators will be storing my account obviously people dislike rent because you get evicted if you don't pay also capacity is limited so the fees can spike high it breaks user experience that we've come to expect that a contract will still be there there are workarounds for this like if you know again this sleep in a wake but that's just it adds complexity which maybe you can talk under the hood from the implementer's point of view if you're starting from scratch then in my opinion stateless is obviously the way to go it's clean simple it's ideal validator only has to store a 32 byte state route rent is messy and complex there are lots of parameters you have to decide well do you set it at 16 gigs or 32 gigs how do you do the fee market and so forth I think some people even the stateless is almost too simple engineers who sometimes like complexity and they just can't resist from adding a rent feature onto the stateless if you're not starting from scratch like if you're in 1.0 today then it's probably easier you already have a full tree that the miners forced to to store it's probably easier to add on a rent feature and start trimming the accounts then swapping out the whole thing and switching to statelessness so lastly the point is that change is coming here currently miners have this full burden and while it seems kind of easy because somebody else is I don't know if you're using inferior or made a mask or a light client it's relatively easy to sync if you're running a full node it's still difficult to sync what is going to happen is that it's not sustainable for miners to keep storing all the states so validators are the disk space is going to be minimized the core of the network you'll be able to sync very quick so life for a validator will become great you know the process of syncing and processing blocks will become very streamlined but on the other hand if you are a user or a wallet client life is going to get somewhat painful syncing is going to be harder scraping the data to you have to manage your own data you have to come up with your own proofs unless you can pay the rent so that's it wallet developers are in a tough time out of you thanks thank you KC big applause for KC again so thank you all for being here today we're going to pull up the URLs again please join the Gitter Room try the testnet the URL for that www.vism.vaterium.org all the demo what Jarrett has shown should be visible there join Gitter again get the discussion started we're going to have this EVM panel now focus on EVM we're probably going to be free after that if you guys have any more questions that's all the details you need to know thank you


This is Brett and this 2017 Ram 2500 Crew Cab Short Box Tradesman is stock number 22T23A. We are here at Summit Automotive in Fond du Lac, Wisconsin, near New and used heavy-duty truck and Ram headquarters. This 2017 Ram 2500 has the 6.4 liter V8 Hemi engine. This truck has been fully safety and inspected by our service shop per the state of Wisconsin inspection process. It has a fresh oil and filter change, all the fluids have been checked and topped off and it has four brand new tires. We're going to go inside underneath, start it up, take a look under the hood in this video. Bright silver metallic is the color and we shoot all of our videos in 1080p 60 frames per second. You have HD capabilities on your computer, tablet, smartphone or television. I highly recommend turning them on right now because it is your best way to check out the quality, condition, options and cleanliness of the vehicle before seeing it in person. If you like the video and how we do things here at Summit Automotive in the upper right hand part of the screen, consider clicking the link to subscribe to our YouTube channel where we do videos of our new and used vehicles each and every day here at Summit Auto. You may just find your next vehicle there. Comes with the steel rims with the chrome covers and brand new Firestone Transforce AT tires. These are LT 27570R18s. We put these on in our safety inspection frame and under body, pretty nice shape, just a little bit of surface rust on there but nothing too bad. Front fender is in excellent condition, no dents or dings on there. Headlight lenses are nice and clear. Front bumper is in excellent condition, I didn't see any dents, I didn't see any dings on there and the hood is in great shape as well. No dents or dings. Passenger side front fender, excellent condition too and the passenger side rim, no scuffs or scrapes. As you go down this side of the truck, take note of how clean the body is, how reflective and mirror like that paint is. We take these HD videos so if you are far away or even if you're close by and just cannot make the trip down but you're still interested in purchasing the vehicle, you can see the truck, hear the truck and have confidence in the vehicle that you're looking at before you even get here. So when you do get here, there's absolutely no surprises and you can make a smart and informed buying decision from wherever you're at. And if this video helps you make that decision, let your salesman know that you saw the video that it was helpful and that Brett sent you. Back tires are brand new as well and the frame and under body, about the same condition as the front there as all the remaining factor exhaust, cab corners, lower rockers all look really good and it comes with a nice set of chrome step bars. Passenger side of the box looks really good and the rear bumper is in excellent shape as well. No dents or dings on there. Brett does have the backup parking sensors, full towing package, which includes a receiver hitch, four pin and seven pin wiring and the tailgate is in very nice condition as well. Comes with a trucks port soft roll up tonneau cover, it's made by Truxedo. Has a shock down assist, drop in bed liner and a gooseneck hitch back here. There's your shock right there. It shuts nice and solidly and as you go down the driver's side, just as clean as that passenger's side, no dents or dings on the box. And for full disclosure, this back rim is in nice shape as well. The driver's side doors look really good. Does come with the heated fold up tow mirrors built in directional signals, they fold up like so. They also fold in like that. Inside the tradesman package gives you the gray cloth interior. No rips, no tears on the seats, they are in great shape. Does have factory floor mats, auto headlamps, power windows, power locks and power mirrors. Will hop inside, check out the miles radio and everything that this truck has to offer on the interior. You can see that this one has 72,477 miles, you do get a digital speedometer, compass and outside temperature display as well. Instrument cluster is very nice and clean. You get Bluetooth and information center controls on the left and cruise controls on the right. This one comes with the six speed automatic transmission with the optional tap shift. Does have the Uconnect five inch radio, AM, FM and Sirius XM radio capabilities on this vehicle. You can control it with the screen, it's a touch screen and then this is also where your backup camera shows up. If I can get that to go, there's your backup camera, that's working nicely.  Pass under side format and seat and carpeting are in nice shape, no rips or tears on there. Really good, smells very clean inside this truck and the headliner is in great shape as well. You do get map lights up there and we'll take a quick look at the back seats and then we'll start it up and take a look under the hood. Back seats are just as clean as front seats, no rips, no tears back here, does have the latch child safety system for any child car seats you may have, fixed glass rear window. These seats fold up like so and there is storage space underneath there. There's also in-floor storage on each side with removable bins for easy cleaning. You can put ice and drinks in there, it's like you have too many coolers where we go or just extra space, side curtain airbags, child safety locks on the back doors and the bottoms of the doors all look really good. We'll start it up, take a look under the hood, starts right up, no check engine lights or anything like that. I would personally like to thank you for checking out the video today and hopefully from this HD video you'll be able to verify the quality, condition and cleanliness of this truck all the way around inside. Now it does have the cab lights up top and under the hood we have the 6.4 liter V8 Hemi engine. Engine bay is very clean, runs very smooth and once again this truck has been fully safe and inspected by our service shop has a fresh oil and filter change, all the fluids have been checked and topped off and this truck is 100% ready to go for brand new tires. There's your emission sticker and I would highly recommend this truck for make quality and condition standpoint and see more pictures of this truck or one of our other 450 new and used cars, trucks, SCVs, minivans, Wranglers, half tons, three quarter tons, one tons, you name it we got to go to that website right there www.summodauto.com full pictures and descriptions of every single vehicle from two locations all at www.summodauto.com and if you like and if you want to check out more HD videos you can go to www.youtube.com slash www.summodauto.com remember to like, subscribe and share on this video and all the videos that you see there click the bell notifications and you'll get updates on the videos we do each and every day here at Summit Automotive. In fact in a second you will see a link to subscribe to our YouTube channel on the upper left, a link to more Ram 2500 truck videos like this one on the upper right, link to this vehicle on our website in the lower left and a link to one of our latest YouTube videos in the lower right. Click those, check us out and we really look forward to helping you with this super clean 2017 Ram 2500 crew cab short box tradesman in bright silver metallic things again for checking out the video remember to like, subscribe and share.


Hello everyone, today we are going to learn about layout of kernel in Unix operating system. The learning outcome of this session are at the end of this session student will be able to demonstrate how process changes mode from user to kernel and explain memory map of U area in kernel. Let us see layout of kernel. Though kernel executes in the context of a process, virtual memory mapping associated with the kernel is independent of all processes means multiple processes executes simultaneously in the system that we already know. So, virtual memory mapping for each and every process is independent of kernel. Kernel is not aware of the virtual memory mapping associated with the processes that virtual memory mapping which is associated with the kernel is independent of all the processes. Now the code and data for the kernel reside in the system permanently. Whenever system boot the system boot process load the kernel code into memory and set up the necessary tables and registers to map its virtual addresses into physical memory address. The virtual address is the address which is created by the CPU. So, it is necessary to convert that virtual address into the physical memory address. So, whenever system boots at that time the whole kernel code is loaded into the memory and it also initialize all the kernel data structures and register map which is required for this conversion. Now let us see how there is a changing mode from user to kernel. Now as we know we have two levels in Unix operating system user level and kernel level. So, whenever process executes in the system it moves between user mode and kernel mode. Now as shown in this figure we have register triple. First three register triples are for kernel mode and the next three register triples are user mode. Now this diagram shows the virtual address of the kernel mode where the kernel register triples start at virtual address 0 and it range up to 4M minus 1 while the user register triples start onwards from 4M, 4M onwards, ok. So, these are the virtual addresses for kernel mode and 4M onwards are the virtual address for the user mode. Now as shown here the kernel register triple points to the kernel page tables. These page tables are for user data, text and three regions of the kernel data text and stack regions, ok. So, these are the page tables which is associated with kernel register triple while these are the page table which is associated with the user register triple, ok. So, whenever there is a change in mode from user to kernel then it is mandatory to have an access to kernel addresses, kernel virtual address. So, whenever process will change its mode from user to kernel then kernel has to access the kernel addresses. But it is not mandatory whenever there is a change from kernel to user. As I already told that many processes executes in the system simultaneously. So, many processes are executing in kernel mode. So, the virtual memory mapping is independent of all the processes, ok, in kernel mode and that is why it is necessary to track the virtual address of the processes whenever there is a change from user to kernel mode, ok. So, this is how processes change its mode from user to kernel or kernel to user. Every time they have to refer the page table where the page table contains the physical address for that particular pages which is converted which is located as a virtual address in the kernel register triples. So, this contains the frame numbers of the physical memory, all page tables. So, this is how the changing mode from user to kernel or kernel to user happens. Now, let us pause the video and why write down the answer for this that when changing mode from user to kernel system permits access to kernel addresses. But it prohibits such access when executing in user mode. Why? This is so. Just pause the video and write down your answer, ok. Now, as I already told the virtual memory mapping which is associated with the kernel is independent of all the processes which are executing in kernel mode, which are executing in the system. So, as we know kernel contains highly privileged instructions, user processes cannot have access to kernel process or user mode cannot have access to kernel mode. So, but the kernel mode can have access to the user mode. And as all highly privileged instructions are executed in kernel mode, whenever there is a change in mode from user to kernel, it is necessary to check the kernel virtual addresses for converting that virtual address into the physical addresses. Because the virtual memory mapping which is associated with the kernel is independent of all the processes.  Now, as I told you that there is a virtual memory mapping, virtual address to physical address. Some system creates the virtual address same as physical address. So, both addresses are identical. So, conversion function for virtual address to physical address for such system is called as a identical function. Now, next is you area. This you area is one of the kernel data structures. Every process has its private you area. Kernel access it as if there were only one you area in the system that of the running process. Kernel changes its virtual address translation map according to the executing process to access the correct area. Now, what is the written here that kernel access you area as if there were only one you area in the system which is of running process. So, kernel changes the virtual address translation map according to the executing process to access the correct you area. When compiling the operating system loader assigns the variable you the name of the you area which has a fixed virtual address. Now, the value of the you area virtual address is used at the time of the context which by the kernel you area is probably used whenever there is a context which by the kernel by the kernel means by kernel whenever there is a context which between the kernel processes. Now, kernel is aware of address translation from virtual address to physical address of you area. So, kernel dynamically change the address mapping of you area to another physical address to physical address represent you area of two process, but kernel access them via the same virtual address means virtual address for two processes are same, but whenever they are converted into the physical address there will be two physical address for two different processes. So, two physical address represent the you area of two processes, but kernel access them via the same virtual address. The process can access its you area only when it is executing in kernel mode. Kernel can access only one you area at a time by its virtual address. So, you area partially define the context of the process. Now, this is what about the you area. Now, let us see how kernel accesses the you area of the processes which are running in kernel mode. Now, let us see the memory map of you area in the system. Now, as shown here, we have total four processes process a, b, c and d in the system and this is the kernel register triple the first register triple contents text second register triple contents information about data while the third register triple contents information about the you area. Here only we have shown the virtual address of the you area and the number of pages in the page table. Text and data is not shown here. Now, let us see that currently process d is executing in kernel mode and that is why the you area points to the page table of the process d whose virtual address is 2 m and the number of pages present in these tables are four. Now, suppose kernel wants to access you area of process a then it is necessary to change the virtual address of the process. It will load the virtual address of the process in you area and the total number of pages present in the page table for that process a. So, virtual address for process a is 1 m and the number of pages present are four. So, in this way the you area virtual address changes dynamically and while the text and data do not change because processes share kernel text and data. So, in this way the you area can be accessed only one at a time in kernel mode and whenever there is a context which from one process to another process it is necessary to change this virtual address in you area in kernel register triple. So, this third field which is present in kernel register triple changes dynamically whenever there is a context which from one process to another process. So, this is all about the how the kernel how there is a change from user to kernel mode and how kernel has to access the kernel addresses whenever there is a change in mode from user to kernel and how kernel register triple changes its virtual address whenever there is a context which from one process to another process in kernel mode. This is all about the you area and change in mode from user to kernel. These are the differences. Thank you.


Welcome to Access to Trader, the number one community for those who are committed to taking control of their trading in order to achieve success, profitability, and longevity. Thank you for joining us. Here's Dan Shapiro to help you find your edge, master your process, and own your future. Hey guys, good evening everybody. Welcome to another edition of the AccessToTrader.com weekend update show. Hope everybody is doing well. Everybody is having a nice weekend. Happy Super Bowl Sunday, bittersweet day for all of us who are football junkies throughout the year. It's the last day of the year. It's the last game of the year. And then we go into depression basically until about August, August and September when it starts out again. For all you guys who are rooting for either the Eagles or the Chiefs, it's your day. Hopefully your team makes it and makes it to the top. Unfortunately, I have no issues. We'll ever have that experience because I root for the Jets and it's like pushing a boulder with your pinky up a hill. It's never going to happen for you. So anyway, let's talk about the markets, right? If you aren't new to this channel, again, we try to give the most unbiased opinion possible of what we see the markets going on. There is no predictions. I don't know where the market is going tomorrow. You don't know where the market is going tomorrow. The only thing we're doing is taking our data from the night before research from the days before trading session and applying it of what we believe can confirm the following day via momentum. So if you are new to this channel, like, subscribe, share, comment, tell us how your journey has been going, right? Whether you're trading for a year, 10 years, 20 years, a lot of traders, again, that three to five year early development is absolutely crucial. What you're probably going through in your first three to five years is probably what 99% of other traders are doing as well. It's new to you. It doesn't make sense. You're trying to make sense out of it. You're listening to this. You're listening to that. You have a 3,000 different distractions. You're hearing about all the myths of what you think is happening, who's controlling the market. But the reality is it's all about these charts, right?  And right now we are going through a little bit of a distribution period, right? Just a little bit. We had a phenomenal, well, we were having a phenomenal, phenomenal run in the NASDAQ composite. The Q's up 12.5% for the year, despite giving back 2.5%. So entering last week we're up 15% for the year, considering it's only been five, six weeks, considering we were down 33% last year, bulls are making a pretty big statement. But as we all talk about and we've discussed in the past, gravity is real. I was looking for that 3,400 point day, that one session, that one session never came, but the totality of the move finally did. You can see here the market just got tired. That's all it was. Market just got tired. The buyers got tired the same way the sellers got tired down here.  Again, inverted hammer that we discussed in the beginning of last week's video. And the next thing you know, we had three consecutive sessions of lower highs, and then we spoke about that line in the sand on Wednesday's video. You guys remember that? On Wednesday's video, we talked about the 302 level that held several times. The bulls finally gave up that 302 levels and yada, yada, yada. Here we are going all the way down to 297 on Friday. We saw some jobs number, we saw some pal testimony, we saw all that things. But the reality is the same things that drove the market higher necessarily doesn't have to keep it higher. Because like everything else in life, like every person in life that does any physical activity, they need a rest, right? And that's what the bulls are in the process of doing. They're getting a rest, the strongest stocks that had the biggest moves. Finally getting a little bit of crack, and finally seeing a little bit of ice cracking underneath their legs. Because again, gravity is real. I mean, here's NVIDIA. You can definitely make an argue in the last several weeks. NVIDIA again has a lot of names, but NVIDIA and Tesla, two of the strongest names, they finally just ran out of a little bit of gas. Does that mean that's the top of these stocks? No, it doesn't mean that. It means that gravity is real. That means bull markets are aggressive until buyers get tired. And like we've said, nothing materialistically has changed. They just needed a rest. They just needed an organic reset. And the point is whether this is going to be another day, two days or do we resume back upwards tomorrow? The point is every single level, especially on the cues and most of these names have been respected. And that's the key. When you're trading an orderly market, when you're trading a market that is organic in nature, despite the headlines, despite if you are agreeing what the market is telling you or the market is showing you, the most important part is the levels are being respected. And that's the key. No matter how you trade, whether especially if you're in the intraday cycles, you want to make sure that you have no excitement. You want to make sure that we talked about a Wednesday's video. You don't want to see volatility. You don't want to see a market that is you have a great looking long setup and the markets up 200 and you buy it and then all of a sudden they pull it because the volatility kicks in. And next thing you know, your stock that is your A plus setup that looks great, that's been working for years, gets into a spin cycle and realizes that the market is just tired and the stock has broke out literally at the wrong day. And next thing you know, volatility kicks in and you're selling that stock in the bottom of the range. So we want boring, right? We want boring. We want lethargic. And the one thing that we talked about on Wednesday session was that we started seeing volatility, right? We started seeing aggressive moves in the at the open for most of the days, and then they pulled and there's no more. There's no better evidence that you can see that just in the last let's hear 1234567 right. So here's seven right out of the seven last seven trading sessions, six out of seven put in higher, put in lower highs and lower lows. Everybody see that right 1234567. So the key for the bulls this this week is and I think, you know, I think there's a shot that we continue to fade down to this 295 level because again, this is the rising 20 minutes. And if you if you saw the scenario here, we had kind of the same thing where this big, big run had a couple of days reversal and stopped at the 20 day moving average. The next day gapped up, tested back to 20 day moving average balance. So you could see here right here this this brown line, this diary of brown line, I guess, mustard brown line, whatever you want to call it. But this is kind of where your next measure potential is. Again, 29650 is a linear regression line. It's not as important as the next moving average. You know, you can have a pregnant pause here as well. But the key is that 295 could see another measure potential. I think the coolest part about what we're seeing with this back test is especially if you believe in trading in the morning, like I do 90 95% of my stuff in the morning because I think channels expand in the morning because people are chasing and channels contract in the afternoon because most traders are already so mentally just gun, you know, just just just wounded from the day that they just kind of leave it alone. And I think what I like what we're seeing here, even though the market is backtesting the Nasdaq is down 2.5% for the week.  And that's kind of what we talk about all the time. Like, for example, you know, the break it was X amount of breakouts on Tesla in the last, you know, since 2023 started, right? You had the 126 breakout. You had the continuation of 137. You had the reclaiming of the 50 day moving average. And you had this RISA one of 181 and then you had this 199 flag area that everybody in their mother was watching. And the cool part about it is unless you were trading, which we are, I trade channels, I trade to the upside, I trade to the downside, I'm not trying to guess where the stock is going to close. So unless you're trading these things in Friday, you know, it was a really good session trading Tesla because we had the natural 60 minute support for bounces for cash flow and then the stock started coming in opening range lows for, you know, pretty decent move down. But the point is unless you're just, unless you're just day trading this whole move here, yeah, you know, if you bought the stock anywhere in the last two, three days above 200, then yeah, of course, you're above water, underwater. Does it mean that that was the high for Tesla? No, no, not at all. Not at all. Not at all. I think it still has to test a couple of areas and, you know, down here, right? You see this whole area down here? This is going to be the line of the sand. So in case Tesla gets down to this area here, they'll have a really significant point of reference. I do think, you know, again, if the market pulls in, I think Tesla, like everything else, probably starts pulling in as well to their to their 10 and 20 day moving average. If you look at all, if you look at all the big tech heavyweights, you're going to see the same thing. Google kind of started off the selling this week. Their AI event apparently was not as smart or as productive as they wanted to be. Lost pretty decent market cap this week at three really big sessions here. And this is an important area coming in for Google for this week. So if there is a continuation of a market, you know, back test, you see the bottom channel here is Google, right? Bottom channel here, the lows of January 25th and the lows of Thursday. That's the 50 day, right? If you've been watching this video for a very, very long time, you know, if, you know, if Google closes below the 50 day moving average, right? There's a lot of room down. So Google is definitely name I want to watch this week on the video had a really aggressive pull on Friday. It broke below the five and it broke below the 10. Here's the key, right? If there is another pull in, you know, and the video starts losing the 10 day moving average. Man, there's, guys, how much room you have? You have room all the way down to like 198. So there's definitely a lot of room. Amazon continues to act pretty crappy after its earnings. However, names like Microsoft have been really, you know, relatively strong, right? Relatively strong Apple as well has been relatively strong. But again, it really does show you that it's not a stock market anymore. It hasn't been a stock market in a long time. A lot of stocks are completely disconnected. Some of them are uniformed. But a lot of stocks are disconnected. And it's not a stock market anymore. It's a market of stocks. So you have bulls could be thriving, you have bears can be thriving depending, you know, depending how you trade and what your processes and your time frame. I think it's a very good traders market. I think we've seen that now for a very, very long time. The question is, you know, what is your goal, right? And I don't mean financial goal. I think everybody agrees. Everybody wants to make money. But you know, what's your goal, right? Like what's your goal? Are you a part time trader looking to trade full time? If you're a full time trader looking to get more funding to take your trader to the next level? Is this something that you are using as quote unquote a side hustle? You know, everybody has to set goals. But the cool part about this market is it's giving you those opportunities. It's not painting you into a corner. And if you're patient enough, but all sides are, you know, all sides are thriving because the average true range in this market has been absolutely phenomenal. I don't care if you're trading from the long side, from the short side, if you're trading mean stocks, if you're trading, you know, beta names like I do, they're just something there for everybody. Even the small cap stocks are getting a lot of option flow, a lot of really aggressive buying coming in and spurts.   You know, just don't worry about all the unnecessary external factors. I think you could do well. And eventually, within that first three to five years, you'll get your aha moment. The key is, you got to make, you know, you got to make it for those three to five years. And again, that's where I think a trader finally starts slowly getting into stride. And once you hit that, you know, magical 10, 11, 12 years and up and on, I think you're an autopilot and nothing really bothers you. You start to realize that money loss is, you know, it's just the key to this business. You have to understand that you will lose money. Some days you'll take days to lose money. Sometimes it takes hours and weeks and minutes to lose money, but it's just the cost of doing business. And once everything clicks because of your independent thinking and because your ability to trust the charts and use and navigate via technical analysis, I think you can start doing really, really well. So let's, let's talk about going into this week. As you can hear by my voice, I'm a little bit tired. I made that mistake yesterday. My son had a high school dance and I allowed him and his four buddies to come here for a sleepover. Let's just say they went to sleep at four o'clock in the morning and I don't think I went to sleep yet. So if I sound less enthusiastic, I apologize. But again, welcome to dad world, right? For you guys who know it's all about the kids, not about us. So going into this week, you know, my initial thought is I still think we will have a little bit more downside bias. Again, there's a lot of good looking charts, charts that I mentioned on Netflix cracked closed below the, you know, the 20 day moving average. That looks pretty good as well. There's a lot of names that I like still to the downside if the market, if the market continues to back test. But hey, I do realize the big picture of the tape and the big picture of the tape is still telling us we're still in a massive, massive trend. So this is where we always talk about, you know, you have a bias, you have an opinion what's going to happen the next day. But until that confirms who cares, right? And that's what we always say, stay patient and have a plan for both sides of the market. In case Tesla is, you know, gives you a washout trap goes red to green. Have a plan, right? In case Tesla gaps up, you know, traps hits a lower high in the 60 minutes it goes red. Have a plan, have a contingency plan that you're always prepared.  And the most important thing is you're making to another trading day. So that's it. That's it guys. Have a wonderful, wonderful remaining of your Sunday. Have a plan, do your research, put in the work. Don't get, you know, don't get frustrated. What you're going through year two is what every trader before has gone through you and it's going to go after you. Everybody goes through the same thing. The key is how do you handle it, right? How do you continue to get punched in the face and continue to shake it off and asking for more? That's the difference between somebody trading for two years or somebody trading for 20. Guys, stay the course, stay blessed, believe in yourself and everything will work out. Guys, have a great Sunday. I believe I'm a big Patrick Mahomes fan. I'm rooting for the Chiefs. Some reason I believe it's Philly's turn this year. Jaylen Hertz is playing outstanding ball. But whoever you're cheering for, have a great session. Have a great day. Love you all. See you all tomorrow.


I'm Shri Paravimba for SID and I'm very pleased to introduce Mike Mabey, who is Chief Technology Officer for QuarkLogic. Mike, welcome to SID. Hi Shri, thank you very much. And I very much like to speak to you about this unique product that you have. And I try to get an idea as to what kind of markets you're targeting. Why is this product special? And obviously we know the benefits of electronic paper. But tell me what is the fundamental problem we're trying to solve in the marketplace with this product? So this is the Quilla World's Largest Connected E-Writer. It is finally a real true replacement for a flip chart and a whiteboard. The walk up and use features of this thing make it very useful for anybody to just walk up. You don't need to have any kind of education or knowledge of how to use it. You can just walk up and start writing on it right away. Everything you do is saved automatically. It has intuitive touch features that allow you to say select what you've written, move it around. It feels like writing on paper. It's a true replacement for a flip chart and whiteboard. If you're going to replace an ink technology with digital technology, you need to do it with digital ink. And that's what this does. It's because of the wonderful technology that's lying behind this. The largest e-ink display of this size or of this type in the world allows us to run an extremely low power. So low power you can pick it up and run it on battery for like 16 hours or so. But it is digital. So you can take your information with you. You can write stuff on here and it's automatically saved. You can go into another room, use another one of our Quillas, bring up the information that you have and it goes with you. So you never have to worry about someone coming and erasing your information and not being able to get it back again. So this type of a product, when I look at this and I think of companies, either very successful well-established companies that started their whole business by writing a plan on a whiteboard, versus companies today, startup companies are probably writing their plan, their ideas, their wishes, their dreams on something. And there's no easy way of capturing that. There's no easy way to share that. There's no easy way to collaborate. Is that sort of the core aspect of a problem, sort of the whole idea, the idea of ideation that you are converting into an electronic format and making it user-friendly? Is that sort of a decent description? Yes, that's exactly what we're trying to do. We're trying to capture the brainstorming step. So the whole point of this is that you're able to just go up, use it immediately for whatever kind of brainstorming that you want to do. You can continue like doing flowcharts, doing agendas, however you would normally use a flipchart or a whiteboard. That information that is typically done during meetings will get lost. People may take a picture on their phone, they may lose it. But in this case, using this kind of digital technology, it's always retained. You can always get it back again. And you can collaborate live on real time? Yes, absolutely. Very good point. That's right. So while this is a wonderful collaboration tool for people standing around it, it's also a great collaboration tool for people who are remote as well too. And when you say remote, does it have to be in the same building or can it be in a different city? It could be anywhere. So these devices connect up through our central software as a service offering. And it allows you to connect, say, someone who is in Toronto and someone else is in New York. Whatever one person is doing in this brainstorming session, the other people can see just as effectively and can write on there and contribute as well to something new. So the product was sort of initially announced at CES and you're here at SID with the demo. What has the response been in the marketplace for the product? It's been tremendous. There's been a huge amount of interest from this. We've got interest from a number of different market verticals and it seems like everybody is very interested in getting a flip chart or a whiteboard, which is actually fantastic. So while we've been showing it and kind of pre-announcing and getting the interest, we actually haven't been selling it yet. We're going to start doing that inside of a couple of months and we've got a huge amount of interest. We're looking forward to actually getting this into a lot of people's hands very soon. So there are products that attempted to do something similar using LCD and most of them I thought were somewhat complicated to use. How easy is it to use this product? Well, it literally is. What we say is it's walk up in use. It has some very complex modes of where you can be sharing information as we're talking about remotely, but in even its most complex mode, you can always walk up, use it with a pen, just draw on it, and you can just erase with the back of the pen. So that is the very simplest thing. Then what we've done is we've created a number of menus that are kind of on the outside that can be discovered and allow you to do things like change pen color, create content, change your workbook, that sort of thing, but you don't need any of those. On a very simple basis, it's as easy to use as a flip chart and whiteboard. Now there have been many attempts to do interactive technologies inside board rooms and meeting rooms and such. And as a general use or a general case, they're not normally used because they're too complex to start up and to get you in. Here to get going on it, you just pick up the pen and you start drawing. And you start writing. So it feels like writing on paper. May I try? Absolutely. And since we are at Display Week, we will see if you can say. Thank you. There is that feel of, there's a little bit of scratch kind of feeling that you get from the pen that, you know, it's not smooth surface. There is some roughness that wasn't deliberately done. Absolutely was deliberately done. So this is not a glass surface. This is a surface that's been married to the Nibb on this to give you a feeling, a friction feeling that you would get as, as close as we can get with pen on paper or paper. So if we want to take this outdoors, let's say, because obviously we are at the Display Week show. The show has actually ended, so people are tearing things down. So imagine we wanted to continue the conversation and we can pick it up. How heavy is this device? It's about 22 pounds. With the batteries? And it's got battery backup. It does. And if you take it outdoors, it will look good outdoors. It's a reflector display, right? Absolutely. Works better outdoors than anywhere. And how long will the battery last? 16 hours. Non-stop use. That's a lot of time for the device. Extremely low power device. Going away from the hardware, what are some unique features that you've incorporated in the product that you think are quite revolutionary? So for an e-writer, e-writers typically, because they're extremely low power, they also tend to use low power processors. In our case, we actually have a very good mix of quite powerful processor with very low power at the same time. So we're able to do some tricks that allow us, because of the extra power, we can do this networking, we can do this continuous updates, and we allow this sharing to be automatically built into the device itself. So the extra power that comes with this device, in addition to the very low power use, is I think a huge boon for it. And the other thing, of course, is the display technology married with our automatic differentiation in the touch technology. So we can tell the difference between the pen, and say a finger, and say two fingers for moving things around, and say the eraser on the back. You don't need to invoke any UI to bring about these different things. You just automatically do it. Another kind of revolutionary thing that we've put into the product. It'll be really cool if I were using this device, and I went away for a while when I come back. Is there a way for it to recognize me, and make sure that I don't see your stuff, and I only see my stuff? Absolutely. You can have the data travel with you. So it is persistent data. If you were to walk away and just use it as the whiteboard, using its own local data, you can leave it there, or you can delete it as you wish. It will stay around. If, however, you log yourself in, and there's a number of ways that you can log yourself in, the data will travel with you and is associated with you. So when you log out, it goes back to whatever it was showing before, and your data is now safe. And then the next quill you log into wherever, you're able to access that information. You can also use a USB key, data key on there, and then keep the data on the data key when you walk away. It goes with you as well. So you can either have the security or the persistence, or both. Cool. So what's the next step for you? Where are you guys going to demo this product again? Are you going to be at other shows? Absolutely. So we're going to be in Infocom, down in Orlando in mid-June, and we're going to be, again, showing this thing and be able to take pre-orders. We're looking forward to doing that. Wonderful. Well, thank you so much for being at SID. As a member of SID, I really appreciate you coming out and demoing the product and taking all the time. And even though the show has ended, you're still here supporting. Thank you so much for everything. And good luck to you. Thank you very much. And thank you very much for...