So, yeah, so thanks for the kind introduction, Bruce. And, yeah, Mexico City was a very nice time and it was really nice to see how quickly Elixir has been spreading over the last three years. As we've used Elixir Bleacher Report for about three years in October. And so this is a talk basically, as Bruce alluded to, about how we've adopted Elixir and how we've done it at scale. And there's only so much you can do. I'll try to get as much as I can in 40 minutes. But there's some areas that I won't be able to focus on that are equally important, such as documentation, how to properly test your applications, and how to deploy them as well. And the nice thing is that if we can do this at scale, then that means that anyone can do it at pretty much any size, especially if you're a smaller company, you can apply these same rules to whatever you wanna do. So we're gonna focus on four areas. The first is the business case. And unless you're developing things by yourself, you have to convince someone else, including yourself, I guess, to develop with Elixir. Why would you do this? If you're a bigger company, Bleach Report is a moderately-sized company and we're owned by Turner. So there was a lot of convincing that had to be done. The second is consistent code. When you, again, unless you're developing by yourself and even if you are, you need to have a holistic application design, and this includes how do you do code reviews, how do you make sure that these standards stay consistent across the apps. And when you're learning a new language, this is all the more critical and all the more important because if you don't do that, you end up having a lot more tech debt, which you would incur anyway, but at an increased rate when you're doing it with a new language. And this is perhaps the most interesting part is to have the realized benefits. How has Elixir worked out for us? How has Phoenix worked out for us? What do we still need to improve? And what can we do going forward? And finally, developer happiness.  So this is a survey of what we're doing at work and how our developers feel about it. And we actually have four other developers over here from Bleacher Report. So don't take my word for it. So we'll start with the business case. For us, it was sort of a perfect storm. We had, these are some stats to show the level of traffic that we have. And it's an older platform. We were transitioning away from the old platform, which is eight years of tech debt. So we started with Rails 1.0 and I was saying 10 years ago, it was more of a web-first and then we moved to mobile with the advent of the iPhone. This was when we, sorry, moving from web-first to mobile-first meant that traffic came in a different way. We had, in Silicon Valley, you stayed at a company for maybe a year or two. So we had a lot of lost domain knowledge and we had this labyrinth monolith that was full of all these dark corners that no one really knew what to do with. And finally, unpredictable traffic spikes. Since we're a media company, that means that when breaking news happened, we had to be the first to deliver the news, whether it's through notifications or any other manner. Ruby didn't handle that in a very good way, to say the least. And so we ended up having to scale up and scale down and so before big events, we would have to plan like, okay, so how do we handle this or how do we handle that? For instance, when Kevin Durant moved to the Warriors, it was a big deal. Traffic spiked four times in five minutes. And this was on the Elixir platform, which was good because we were able to handle it. Had we done this on Ruby, it would have probably crashed. And why do we choose Elixir? Everyone knows, I guess in here, the concurrency, parallelism, high availability, distributed stuff. But the nice thing about Elixir, so we evaluated other things, we evaluated Go and Node, and in my own personal research, I've used Clojure and Scala. But the nice thing about Elixir is that it looks like Ruby, which means that it's easily approachable. So you say this is a function definition. I know how to do this. If you look at Erlang syntax, it's a bit more esoteric. And so I think one of the great things that Jose did was to say, here's this great language, Erlang, it has this battle-tested VM, and now we're going to put this very familiar, very approachable syntax on top of it. And for whatever reason, functional programming has a reputation for being difficult, for being hard to understand, for being something clunky, something academic. But by giving this nice facelift with the Ruby syntax, it made it very easy for people to come and say, okay, I can get started with this pretty quickly. And, but I think, you know, we talk about, we happen to be a Rails shop, we've been using Rails, I was a Rails developer for five, five or six years before this. This is really a paradigm shift. And I think the nice way to illustrate this is with the observer. So for those who don't know, I'll show some graphical images of this as we go. But another nice thing to mention, like having the enclosure in Scala in the past or attempting to do Scala, Scala was quite difficult, never could get my head around it really. But, so in this, this is the IEX prompt, and the observer is an Erlang tool that's been around for a long time. And it's so easy to call Erlang from Elixir. You just colon observer.start. And I think this is perhaps the intention that Jose had in mind. I feel like the relationship between closure, Scala, and the JVM is much, much more clunky.  So it's a seamless integration. So this is one of the screens of the observer. You can run this with any mixed application. And you can see here in the upper left-hand corner that there's the cores here, the logical CPUs. So it's really a shift between single-threaded and multi-threaded. And the way that the Erlang VM is designed is such a way for a multi-core world that you can take advantage of all of these different cores. And this is a second shot. And this is all built-in information. It's incredibly useful. Oops, this is all built-in information that's incredibly useful. You can see there on the lower left that there's the eight cores. And you can see each of the, what's happening in all of them. And you can see that it fluctuates up to about 80%. And what I'm doing here is really to stress test my local machine. I'm taking production data and I'm seeding my local machine with all the production data. And it's really easy to do this because of the fact that you can spread out these over these eight cores. And you get a lot of other built-in information right there on the bottom as well, items, processes. And all this is very easily available, continuing with that. This is the processes table. This is a visual representation of things that other people have been talking about over the last couple of days. And it's really also a nice way to benchmark your app and define any bottlenecks because you can see the message queue. If the message queue gets stuck, you can easily see what's happening and find ways to debug it. And then last year at Elixir Conf EU, Lance gave a talk about Phoenix not being your application. And this is a visual representation of that. You can see that this is one of our, this is our first Elixir application. And you can see all of the left on, all the applications on the left. And you can see that Phoenix is listed alongside Elixir, which is listed alongside Exometer, listed alongside Cowboy, and AIM, QP, and so on and so forth. And then the graphic on the right shows the processes and all of that stuff. And it's really nice and very helpful way to visualize OTP and to understand how these things all relate together. And so now we'll come to consistent code. This is probably the most important thing about adopting Elixir other than, once you're assuming that you understand the language, when you try to train other people with the language, this is where you have to focus. And I think that Jose and Chris and have done a great job in really pushing documentation. You have XDoc, which makes beautiful documentation on Hex. It makes it very easy to immediately see what's going on. And when Jose introduced Gen Stage, there's a slide on his presentation that said that there are 1,100 lines of documentation and 1,000 lines of code. And I think this is crucial to understand that this is one of the ways to adopt Elixir. So going back to Stefan's talk, while it is harder to set up Phoenix than it is to set up Rails, you at least have the documentation available to make it to hopefully fill in these gaps. And it's actually, I joined Bleacher Report because I was interested in Elixir. That was my primary motivation for going there and all the challenges that are associated with the sports platform and the size that we have. And we had this one app and there's some issues with it. Like it was a Rails app and it kept falling over with under load.  And I ended up rewriting it at Elixir in a couple of days and it outperformed the Rails app and we still use it in production now and we keep adding onto it and we keep refactoring as we go along. But it said to me, I can do this. This is, while this is different, at least I can move forward and we have a demonstrable small chunk that we moved over to Elixir and it's working really well. And incidentally, it was the last time I really wrote Rails code. I think in the last two years of Bleacher Report I've written maybe 300 lines of code of Rails code, of Ruby code, which is really surprising because I really like Ruby. I really, you know, I have a lot of respect for the Ruby and Rails community because of all the things that they did, but now I have no real reason to write Ruby or Rails code anymore. And that, you know, two years ago I would have thought that would have been unthinkable. So now that we have this, no, so now that we're adopting this new language, this new framework, how do you teach other developers? It's one thing to teach yourself how to write Rails, right, Elixir and Phoenix code, but how do you train other people? And when we started about two and a half years ago, there weren't really any guidelines, even in fact, the Phoenix 0.5 slash dev, the one of the GitHub guidelines was do whatever you want, basically. Like, we do whatever feels natural, which is a pretty laissez-faire attitude towards running a production system. And, but somehow, you know, we tried it. And we sort of developed our own internal guides, how do we do this, how do we do that? And a lot of it was exploratory. And at the time, there were three or four of us writing Elixir and we bounced ideas off each other. But now we have Crado, which I think is a really, really helpful tool to make your code superficially consistent. I think that Crado is best used as, not as an analyzer, but just as a way to standardize things that you would miss normally in a code review. And it's also a good way to make sure that the code reviews focus on the logic and the application rather than, oh, you have a parentheses that's one space here, this indentation here. So I don't really like, I rely on Crado as sort of a gatekeeper for style, not as for substantive things, but it's still incredibly useful. And here's, like, this is the kind of information that I would want to have with Crado. And this is also really nice because a new developer can do this by themselves. They can say, okay, I'll run Mix Crado, I get these errors, and then you can drill down them. And you can actually go Mix Crado and go into the file itself and it'll give you a nice detailed rationale for why it's done. Like, for the longest time, a lot of our modules had no module doc tags. And part of this was because maybe we didn't, maybe some of the developers didn't know this was important or whatnot, but then you can see this, oh, I don't have the module doc tag, you drill it down into it, and then you can see exactly why the module doc tag is important and what its function is, which is really, really useful. And I saw something on Twitter the other day that was talking about how Crado was too, they didn't like their defaults. They didn't wanna deal with all of the defaults for Crado, so here's, you can change whatever you want. So say the only thing you care about is line length, the only thing you care about is, maybe you believe that the max nesting should be more than three, you can adjust all of these here. So you can make it, you can really use this Crado.exe file to set the standard for your entire organization's Elixir projects. And I think it's really, really nice to have this out of the way because all of these little things like module doc tags or doc tags or what have you, they're not really code-reviewable in the same sense. Code reviews are really, really important to me because this is, I think you can have an organization without code reviews, but I don't know why you would want to. It took me a long time to come to this conclusion, but the code review process is essentially an editorial process where we are programmers, but we essentially are software writers and the code reviewer is the editor. So the code reviewer will review your code like an editor. Like there's, you know, in the past there would have been no, it wouldn't have been possible to publish a newspaper or whatnot without the code review in place, but now it's so easy to publish blog posts or to write code and ship it. There's no real cost to skip the editorial process, but you lose out a lot, especially when adopting a new language. And I think that the tone of the Elixir community has done a really, really remarkable job with Jose and Chris in the sense that when you look at, you know, when people submit code reviews or pull requests, they, even if the pull request isn't accepted or even if the code is bad, Jose will take the time to write out this is why this is bad or this is why this is good. And I think that sets the tone. And so the, because in the past and other communities, the, it's been a lot harsher when with, if you write, if you submit a pull request that's not good, then you'll be really, really criticized. And it's really, really, it's detrimental to the community and detrimental to people wanting to learn the language. And so when, at Leach Report, when a new developer is learning Elixir, what we do is we do generally in-person code reviews. So you sit down, you go through the code, and it makes it a lot easier because it's a back and forth exchange. Of course you can use GitHub to write comments on pull requests, but a lot of context gets lost in comments with when you don't see the person face to face. And before the code review process, what we ask the new developer to do is to say, okay, so, you know, use a programming Elixir book, use a programming Phoenix book, get enough to where you can understand the code or here's some old Ruby code, you see the context, now write that in Elixir. So it ends up generally happening is that they write more Ruby-ish Elixir, which is okay because it works. And we also ask that you write tests, of course, so that you, so that we do refactor the code, you can be sure that the code will still work once it's been refactored. And we use a library called xcoveralls, it's just, you can print out test coverage and these kind of things, and it really helps to give us confidence when we do the code reviews that this person has done their due diligence to write tests that will cover what they need to cover. So here's an example of some code that was submitted a while ago by a newer developer. And basically what it does is it takes a URL shortener, shortened URL and it does something with it. And this works fine, there's nothing, I mean it's not bad necessarily, but it's a really nice teachable moment I think. So you can rewrite it something like this. So instead of doing the case statement, you can break things out into different functions and each function does one thing and you get to introduce the pipe operator, which people tend to really like, you get to introduce the attribute so you can put these things up, that you can give it a more semantic name and then you can handle things with private functions below that do different things. But I think it really explains how functional programming is modules and functions and if you are able to break down what functions do into simpler and simpler concepts then it makes the code that much more readable and that much better. And it also gives the developers the confidence that they're moving forward in the right direction. And this is something refactoring often, this is something that since I came to Bleacher Report, it's something that's been really important to me personally and to everyone in the organization. As I mentioned before with all of the eight years of tech debt, we didn't pay down our tech debt in the way that we should. And so we were paying the price for it, which is one of the reasons why we were investigating Elixir in the first place. And we adopted Phoenix at 0.5, Elixir had reached 1.0 but there was still a lot of changes on the Phoenix side and we ended up getting behind in a couple of versions and at this point there were breaking changes and doing whatever you feel, when the guidelines say do whatever you feel like, there are gonna be changes and there are gonna be breaking because it was pre 1.0 anyway. So we realized that since we're learning the language since the framework is changing so quickly that we need to have regular sprints or regular refactoring in all of our sprints. And in addition to that, having this mentality of refactoring often means that when, you know, when Phoenix 1.3 comes out, you have these ideas, these new concepts, you have time to say, okay, how do we evaluate this? How do we look at our app? How does this make us reconsider our infrastructure and so on? This is the first Elixir app that we wrote and this is the editions in deletions graph with some divisions. And I think it illustrates pretty clearly how much we've refactored throughout the course of the app's life cycle. In the original, the exploratory part was when we decided, okay, this is a proof of concept, let's see if we can do it, if Phoenix will do what it says it does and Elixir will do what it says it does. And then there was a break in the definition point where the product was like, oh, we have, this might be the answer to the problems that we were having, let's reevaluate how we need to do this. Let's set up, you know, set up the stories and all these things. And then the next four steps, the next four stages are when we released the production and we were adding features and then the refactor part, I think is the most interesting part because this was about a year or so after we started using Phoenix and Elixir at work, more people had started developing Elixir and this was sort of the moment when we realized, oh, you know, we should move away from this MVC pattern, we shouldn't think of modules as models in the rails or in the traditional MVC sense and to start thinking about modules as groups of loosely related functions and this transformed the way that we talked about our data transformation and data modeling. So instead of having, you know, say we have lots of different content types, we have an article, you have a video, you have Instagram posts and so on and so forth. Instead of thinking about them as distinct models in the database, let's think about all of these things, all of these different content types have common fields. So using embedded schema or using change sets, we were able to simplify our data models. So we just basically have three, we have one content type that has one content table, one content item table and then one metadata table. So it's related in a way that simplified our code base a lot and you can see this on the right side of the refactor part where we took almost all of the code that we done in the first chunk there and removed it. And at that point, the code base, I think was smaller than it had been since the beginning of the release phase. So it was a real win on our side to say, okay, we've been able to have this app that does more than we thought it would do, that has less code than it did when we first released it. And it's just, it's just an amazing feature of what happened when we started to understand how Phoenix and Elixir worked well together. And this also brings me to another point when I happened to be listening to Elixir found earlier this week and Dave Thomas was the guest and he put a really nice phrase that there was something that the concept that I was sort of mulling about in the back of my head but he called production prototyping, which is essentially what we're doing here. We have an idea, let's deploy it. This seems to work. Let's try something a little bit different and so on. And I think since we've been using Phoenix and Elixir for such a long time, I feel like, you can sort of see from a wider angle into a more finely focused point, which is I feel like what Phoenix is doing, especially with moving things with the stuff that Chris talked about with Phoenix 1.3. And we're sort of following that behind. Because we refactor often, because we understand the things we're gonna change, because we know that our understanding of how things work are going to change, we have to be ready to make these changes in production and so on. And this really opens up to the fact that we learn on the job that there's time that, and our product organization and the management really have bought into this to understand that in order for us to succeed with this, we need to be flexible enough to refactor and move on together. And it's worked out really, really well for us. And then monitoring is essential for any production application. And this was something that we struggled with about in the beginning because as a Rails shop, we used a New Relic, I think we're probably in the first 10 customers of New Relic. So, no New Relic, so what are we gonna do? We have, there are many other options. Elixir wrapper around Exometer, which is a monitoring tool. There's Static, Static's, which a coworker John just found last week that we're going to evaluate since we used Zatadog and StatsD. And then Pluglogger Jason is a library that he wrote that was really helpful in debugging some issues that we had in production. One of the most interesting bugs that we had in production that was really difficult to track down and we probably wouldn't have found without being able to monitor was that I think that it's fixed and hacking now, but if you have a high amount of traffic, the workers would get confused in the pool. So, you make a request and then it would take like 45, 50 seconds to come back and we were, I was like waking up in the middle of the night, I can't figure this out, what's going on? This is unbelievable, especially because we were putting timeouts of three seconds and it was still taking 50 seconds and we couldn't figure it out. And eventually it turns out that under high load, the workers get lost and there's a comment by Eric about he'd had the same problem with Hex with Hackney and so we disabled the pool and rely on Phoenix's to take care of it and the problem went away and then everything was back to normal. But this is just one example of having proper monitoring that we wouldn't have been able to catch had we not had this in place. And this is, I mean, this is some of the stuff that we use for monitoring. I mean, we have all sorts of metrics that we do, but it's nice. So on the top, the Erlang run queue, this is nice because with Exometer, you're able to expose the inner workings of the beam so you can project that onto whatever monitoring dashboard you use. And then CPU utilization as well. And with the CPU utilization is another interesting bit because with Rails, the problem that we had was that eventually the CPU would go up to 100 so we scale up, add another server and so on and so forth. And this is obviously unsustainable. But with Erlang and Elixir, it was hovering around two to 3% and I was convinced that we were doing the measuring wrong. There has to be a problem though. How is this? We're running all of our traffic on this and it's only 3%. And then before we released our code into production for the first time, we had Erlang solutions come by and they evaluated our code which was nice for one because we had their expert opinion to evaluate how we were doing.  But they're like, oh yeah, that's just not, the CPU utilization might not be the best metric to use for monitoring Elixir and Erlang. So these kind of things, you have to be flexible to understand that things are gonna change and your understanding of things will change over time. And so now that we have these things in place, let's talk about the realized benefits. There are a lot of things that we can talk about and you can talk to my coworkers in the back there. They will be happy to tell you about the things that they've enjoyed with Elixir and Phoenix. But this traffic-resistant response times is incredibly important. As I mentioned in the beginning, since we're a media company, we wanna be the fastest, we wanna deliver the content the fastest. No matter the size of the audience, as long as we're the fastest, that's sort of the bottom line because if you have ESPN, you have Bleacher Report and some other sports app, if you're ESPN or other sports app, notifications are consistently quicker, you're obviously gonna go there first. So here's last week's traffic. This is a standard for us peaks and valleys as people wake up and go to sleep. We have offices in the UK as well, but most of our traffic is from the States. And this is a 95th percentile. I don't know if you can see that on the left, but it's in milliseconds. On the left, it's at the very top, it's 300, 200, 100. And this is pretty standard. So our 95th percentile hovers between 100 and 150 milliseconds for all of our traffic. And it's step admissions in this talk, sub one second is good, so we're there. We still have to, I think there's still room for improvement to get under 100 milliseconds because there are some limitations that we have with our deployment process, but it takes time to do these things. And we also use Fastly as a CDN. The Fastly hit time is approximately 0.02 milliseconds and the hit rate is around 60 seconds. So figure out what gap is there between the Fastly protected end points and then the non-cached end points. And what makes unique last week was that it was a Super Bowl. This is not our biggest traffic night of the year, but it's one of the biggest nights. And in years past, as I mentioned before, we, oops, in years past, as I mentioned before, we had to scale up and prepare these things. And the last Super Bowl, there was nothing. No one, there was no meeting, there was nothing to scale up. Nothing happened at all. It was like a normal day. It was a testament to how far we've come with Elixir and Phoenix and a testament to Phoenix and Elixir as a language and a framework. So now that we have this, now that we have this platform, how do we stress test it? How do we know that at this point, this is going to succeed? So we have X amount of normal users. We have X amount of, this is our maximum. How do we know how much traffic we can handle? So we built these internal tools to ghost traffic from production to sort of a testing production environment. And then we can multiply that. And we were able to get eight times our normal traffic on our same number of instances without any additional cashing or these kind of things. And it started to fall over because of the database connection. It wasn't Elixir or Phoenix thing, the database was the issue. As I mentioned earlier, because of some of our deployment issues and things that we need to improve on in that regard, we also tested it with ETS tables and we were able to get to 10 times traffic before we started to see any issues and we just stopped there because at that point we realized that that wasn't a viable option but in the future we'll come back to that and we'll see how much more traffic we can get out of that. So that's a really nice thing to say when we deploy something into production, well we can, with reasonable certainty, say that we can support eight times the traffic which would be a dream for the product team and for the management team to say, okay, we can still handle eight times traffic and it really makes it a future proof for us as a company. And then further from that, we were able to reduce complexity by removing third-party integrations. We used to use Redis a lot, none of us are Redis experts so we just, you know, maybe this is right or maybe this is wrong and we were able to jettison these third-party integrations that were costing us a lot of money and by jettising these third-party applications and other tools, we're able to become experts in one thing which is, you know, Erlang and Elixir and it makes it a lot easier to say, okay, so instead of needing to know about the X number of things, I need to know about one thing, it makes it a lot easier and it focuses your skillset. As I mentioned earlier, tangible savings. We saved a ton of money on servers. We're still sort of fine-tuning how we use them as we understand how the beam works and these kind of things. We're able to jettison a third-party integration service that we were paying a lot of money for and it's kind of a funny story so when one of our developers went to break the news to this third-party that we're not going to use their service anymore and we were paying them a lot of money and he explained, well, you know, we're doing this with Elixir and Phoenix and now we don't need to use you anymore and all the response to this is, well, why isn't everyone else doing this? So it's a good point, why not? And we have a much more reliable platform now. As I mentioned, as I alluded to earlier, we were able to do Super Bowl Sunday without any incidents, without even bothering to check it. The NFL draft is our biggest night of the year consistently for whatever reason people really want to know when their players are drafted. I'm not sure, well, I'm not a sports person but they like it. So we rely heavily on push notifications to send out alerts for people to come into the app and check these things and in three hours we sent 225 million push notifications which is quite a lot and our push notification system, the actual thing that pushes out the notifications is running on two instances and one is for redundancy. So this is, I mean, it's a really, really nice demonstrable win and this was one of the times when both the customers who use our app were sending more app reviews like this is amazing, like Bleacher Report is always the fastest. I don't know how they do it but something changed and also the people who program the content streams, like if you follow the 49ers or I don't know the Texans or whomever, they also were like, as soon as I clicked the mouse button to send the alert my phone buzzes with the alert and before it would take, we had to do all this weird caching and these dedubing and Ruby's not the greatest at that. So it would take, if you say you sent a push notification to all NFL subscribers, which I think it's about, I think we have about 10 million, it would take up to five minutes and now as soon as you press the button within a few milliseconds you start sending them out and then it finishes significantly, I mean, I think it finishes probably in under a second or two. So it's a huge win for us. And then relatively future proof, what this means is that we've designed, as we've come to understand how Ecto and Phoenix and works and how data modeling works in a functional programming language and how we started to move away from these hard concepts of modeling like a cat as opposed to like Chris mentioned earlier, not to use a cat analogy, but a user and a registered user. We've been able to model our data in a very generic way so that if Bleach Report decided to move away from sports and onto some other topic, politics or regional cuisine, on the back end, we wouldn't really have to change anything. We would be able to say, okay, this is, so now that we're talking about politics instead of we still have the same concept, we still have a YouTube article, we still have a video, Facebook posts, all of these things. It's made our platform much more agnostic. So decoupling the data from the models has made it really, really nice for us to be confident that five, 10 years from now, maybe we'll still be running the same platform, especially given the fact that it would be, I'm pretty confident that if our CEO said, now we have eight times the traffic that we had and we're still running the same platform, everyone's happy. And then at that point, we would be able to move into other platforms, other challenges. And to this point, now that we have this stable platform, instead of being like, how do we support this? How do we do this? Now the question is, what do we do with this now? How can we push this to new limits? What are these new product ideas? And suddenly, for the longest time, the engineering group was sort of the holdup for the product. They wanted to add all these different content types. And then we redesigned the system and now what used to take a couple of three days, now a new Elixir developer can add a new content type within a few hours, which is really good for them as well, because it's the confidence, hey, here's now in the app, I see this type that I added and so on. And it gives us time. And for the first time in a while, I think product is like, okay, so you gave us all the, you over delivered all of these things. So now what do we do with them? So they're sort of figuring out the strategy of how to use these new tools as well. And finally, developer happiness. Don't take my word from it again, ask my colleagues. But when I first started Bleacher Report, we have, everyone goes on, we use Opsgene, we go on call about once a week per month. We have offices in London, as I mentioned. So if someone had an alert or if the site went down or if there was some problem with the internal tools, you would get woken up in the middle of the night. So the first few times I was on call, it was a nightmare, I would dread it, I'd carry the laptop with me all the time because there would be something that would go wrong. And now the last few times I've been on call, there hasn't been any issues. Or if there are, I mean, there have been a few small things, but it's usually during working hours and it's significantly better than it was. To the point that now, the last time I got woken up in the middle of the night was a developer and a content programmer in London complaining that their hotel wifi was down and what could I do to fix that? You know, it's, sorry, you're on your own. And it's, there's a real sense of accomplishment too. It's, you know, instead of, it's not fun to fight fires all the time. It's not fun to go into work and fight fires. It's fun to go into work and develop new stuff. And this is what we all do now. Everyone is working on new projects, whether that's taking out functionality from the old Rails monolith and moving into Phoenix and Elixir or whether that's having the option to make something new and push the limits of our platform. It's really exciting. So you're actually writing code and not just saying, okay, let's add these, you know, X number of instances to AWS. And right now, I guess now everyone for the past six months or so, everyone is an Elixir developer at Bleacher Report, which has been a really nice accomplishment for us. And everyone's pretty happy with it.  I'm doing this really well and then you hit a roadblock and how do you get past that roadblock? But once those roadblocks are overcome, everyone's really, really happy and it speaks to the design of the language and it speaks to the design of the framework as well as the community and how they have put forth the effort to make documentation in first class and a citizen and all these kind of things. And I think that everyone is really, really happy and even, you know, to Stefan's point how, you know, ramping up is slightly more difficult but I think it's also more rewarding because you're like, with the Rails thing, I mean, I remember when I first started doing Rails, I made the Rails blog and I was like, now what? Like, what do I do with this? But Phoenix gives you the tools to say, this is like, by breaking things into chunks and components and modules, it makes the development process more interesting and more engaging and I'm sure that as we go along, it will be that much better. Okay, and any questions?


All right, it's my pleasure today to welcome Eduardo, who is a developer from Tetrate, and he's presenting WebAssembly from the inside out. And if you're unaware, Eduardo works on a runtime that's really well aligned to Cloud Native called Wazeero. And I think we saw the title of this talk rotate a few times. There was going to be Wazeero from Wazeero to Wageero. But I think I love where this has landed. So please join me in walking to the stage. All right. Thank you, everyone. So this is WebAssembly from the inside out. My name is Eduardo Vaki. That's how you can find me on Twitter and pretty much everywhere on the internet. Before I start, Tetrate and Sysdig and Chinggarde are hosting the OSES security sware tonight. So if you'd like to join us, and if you want to find me at the conference, I'll be together with my colleagues at the Tetrate booth for the rest of the QCon. So let's start talking about Wazeero. Wazeero is a perfect companion for Cloud Native software written in Go, because it's a WebAssembly runtime written in pure Go. And it's sponsored by Tetrate's non-point source project. And the reason it's a perfect companion is that by being written in pure Go, you don't pay the cost of using, for instance, a Go. So you can bring it as a dependency without thinking about it twice.  So that's all because we don't need Sego. And then I'll tell you a little bit more about Sego later. Just gave it for granted.  It allows you to link against native binaries. But we don't need to do that. All right, but besides that, in general, Wazeero works as a WebAssembly runtime like most WebAssembly runtimes. So we have a compilation phase and an execution phase. So compile time happens at load time. So when you load a WebAssembly binary that gets turned into an executable form, and then you can instantiate it and execute it and invoke functions a number of times. So how do we compile functions? In general, what you do is you load the binary, the WebAssembly binary. You decode and validate such binary. And then you compile it to some executable form. In our case, we compile it into an intermediate representation, an internal, intermediate representation. And this intermediate representation can be executed directly by an interpreter that runs pretty much everywhere. The Go compiler is supported. But if you run on a supported platform, a platform that we support as Wazeero developers, you also have access to a compiler that generates native code for MD64 and ARM64 on all major operating systems. This is a straightforward translator. So you get good performance, but it's not an optimizing compiler. But the good news is that we are working on a multi-pass optimizing compiler that will bring better performance as well. Now, what happens at runtime? So at runtime, you can instantiate your module, and then you can invoke any exported function, as you would expect. But how are functions invoked? So because of the way functions, you need to play a little bit with bits and bytes and the stack and registers.  And that's why we call that a trampoline. So for instance, imagine that you're executing some wasn't function from your Go host side. And so we jump inside the execution of the executable code that we have generated, and then there's an error. So we return an error code from the WebAssembly side, which is compile code. We return with an error code.  And what if we invoke a host function? Well, interestingly enough, it's very similar to what happens when we trap. Instead of returning an error code, however, we return some identifier that represents the function that gets to be invoked. We pull data from the WebAssembly, compile WebAssembly, which represents the parameters for the Go function. We invoke the Go function on the Go host side with the right parameters. We get the results. We push it back onto the WebAssembly state. We jump back into execution of the WebAssembly function, resume execution from where we left.  But now you might wonder why a wasn't runtime in pure Go. And in order to answer that, we'll need a word from our sponsor. Do you remember the olden days when software development gave you a lot of headaches? Are you still living in the past or are you a Go developer? We bet you're in love with all the features of your favorite programming language, such as static compilation, cross-platform builds, and Go routines. But aren't you worried about extensibility? In the past, you only had one choice, use the Go. But the Go has limitation with portability, with safety, and performance.  With Go, this is how your memory layout looks. What a mess. Wouldn't you rather prefer your memory to look this tidy? Well, join the WebAssembly revolution. Powered by sandboxing. But what if even the wasn't runtime requires Go? Well, enter was0 by Tetring. Before was0, all wasn't runtimes required Go. But was0 washes all that Go away. Was0 integrates with the Go runtime in all the ways you expect, such as supporting context cancellation. And it runs on all of your favorite platforms, even the weird ones.  You still don't believe me?  Join a growing list of satisfied projects, such as Stopper, Humanity Shellr, which is a work in progress, Aquatribe, and more. See more at was0.io.  So thank you for listening, thank you for staying with me. If you enjoyed this presentation, if you can rate this session, you can find me at the Dead Red booth, and thank you, everyone. Hey, do we have any on-topic questions? Then we can go to the off-topic questions. I think saved the best for last. Thank you. We'll officially end the program for today. This was our sixth Cloud Native WebAssembly day, and I just want to thank everybody for coming out. Huge thanks goes out to our CNCF program team. Evie makes all of this work and makes it all easy with an incredible support team, but also a huge thanks to Dale on audio and the rest of the production support crew here. Tristan, everybody, you guys did a phenomenal job today keeping us on track. A huge thanks to the program committee, which is a volunteer position, by the way. Thankless, and you too could volunteer for a thankless job if you'd like, because it's time to start recruiting for WebAssembly Day EU and for WasmCon 2024, which is just around the corner. So huge thanks to the whole program committee for all reviewing over 65 talks for WebAssembly Day. It's really hard to pull together a program like this, but I hope that you agree, and you'll share your perspective on why I think this was the best WebAssembly Day we've had yet. A huge thanks to our speakers, Eduardo, you crushed it. I really think we slotted you in the right spot. Just bring us on home. And I think you are most deserved of a beer. And I think the other person that might be most deserved of award is the most mentioned person on the floor today, which would be Intel's Andrew Brown, basically the Kevin Bacon of Wasm today. You got mentioned about a dozen times or more called out for your great work in the runtime.  He's in everything. He's in Waz-E-Threads. He's in Waz-E-N-N. He's in ML. So thank you for being such an amazing community member and so generous with your time. Just one quick moment, just a pause for a second on how far we've come. WebAssembly is almost a decade old, and it's now that we've finally had our docker moment, where all around the talks today and the conference, you saw people from different companies, from different runtimes, all aligning on the Better Together story, which is a single artifact that we can build an ecosystem around that is portable and takes advantage of all of the WebAssembly inherent properties. So my view has been that WebAssembly and specifically the WebAssembly component model is not just the next big abstraction in tech, it's the final abstraction because we can finally push all the rest of this complexity, start with Bailey's toilet bowl from this morning and push it all the way down into the runtime. Developers can have a better life and we can finally have technology that truly works better for everybody. Component ties has become the new containerize. You saw components today run on WasmCloud on VMware, Wasm Labs, a Wasm worker server, on Fermion Spin, and on Michael Wands, it was one of the big contributors to another CNCF project, the Wasm Edge runtime. I talked to, and the questions I asked for Istio and Red Panda, maybe WebAssembly components coming soon there too. So I just love to see the community coalescing around something that we can all work together on. Last year we had Kelsey Hightower come out and his message to us was that in the container wars we competed too early and if you were a veteran of those wars, you know that early on people were forking runtimes and trying to lay out a proprietary path forward. WebAssembly is already open source. It's already community led and it's something we can work together on and make better together. Please join us right outside the hall here for an evening reception from 5.30 to 7. And finally, a call to action. We are accepting applications for program committee for WebAssembly Day EU and a huge shout out to two related events. Wasm I.O. is on track for 2024 in Europe. It was phenomenal last year. Strong recommend. It's about two weeks before KubeCon in Paris where we're gonna have another Wasm Day and then of course we've already booked WasmCon in Seattle for August of 2024. So we've already got a huge year planned for WebAssembly 2024. Let's make it bigger and better than ever. Thank you so much for coming today. Have a wonderful KubeCon. Bye.


What's up navigation traders? I want to take a minute to give you our trade results for the month of November 2017. At the end of each month, we post all of our closed trades so you know exactly how we performed winners and losers. November was another great month. We had 13 closed trades, all 13 winners, total profit $2,336.13. And as we say all the time, not only should you diversify the underlying symbols you trade, but also diversify the strategies. So the strategies used this month. We had a short strangle, iron condor, butterfly spreads, still had a variety of earnings related trades. So we had a pre earnings long call, pre earnings calendar spread, post earnings short put verticals, post earnings short strangles, and an earnings short strangle. All of these strategies are taught step by step in detail in each one of our courses. And in just a minute I'll jump into each individual trade to show you exactly how much capital we used on each trade to earn this total profit of a little over $2,300 a month. Keep in mind for these alerts we're using extremely small size anywhere from one to five contracts. Many of our members are using five, 10 times the number of contracts that we alert. So instead of $2,300, if you're doing 10 times the number of contracts you'd be looking at over $23,000. But you can trade these alerts at any level. We like to show very small size so that you understand if you have a smaller account you can still participate and make consistent income trading the strategies that we teach. So if you're interested in receiving all the alerts immediately live as they happen via text message and email just go to navigationtrading.com click on navigation alerts two week trial and you can get information. We're still doing the special for two week trial for new members for just $7. So if you're interested in checking it out go ahead and go there. For those who are already members all the closed trades can be found in your personal members homepage just go to navigation alerts click on close trades and let's go through the different trades that we made for the month of November. Starting with Tesla we did a pre earnings calendar spread this is a trade that we use to exploit the way that the implied volatility acts before earnings made $142 there we did a Facebook earnings short strangle so this is one that we put on the day before earnings and we take it off the day after so we're only in this for less than 24 hours made $293 there in that gas we put on an iron condor our typical monthly income iron condor made $130 there in Apple we did a post earnings short put vertical there are very specific things that happen after a stock announces earnings to where the short put verticals could be very high probability made a quick $212 there in Facebook we did a post earnings short strangle another strategy we teach in our earnings course made $130 there in the notes in the forward slash ZN we did a short strangle me made a little over $200 there in XLV which is the healthcare ETF we did a butterfly spread made $100 in ADSK did a pre earnings long call looking for some momentum and expansion of implied volatility leading up to an earnings announcement taking no earnings risk through the actual announcement this is just done before the stock actually even announces earnings made $232 there in XRT the retail ETF we did a short strangle made $170 there and footlocker did a post earning short puts and made $160 there in THO a pre earnings long call made $220 there EWZ the Brazilian ETF did a short strangle made $156 there and an XOP another short strangle for $185 so what you'll notice is that we're doing anywhere from one to five contracts for each of these trades so very small trades two contracts here five contracts in some of the lower price symbols two contracts here two contracts here just one contract in the notes one contract in Facebook two contracts in Apple so that the capital required to put on these trades is fairly minimal anywhere from 500 to a couple thousand dollars per trade so you can really do these strategies in any size account and one of the key things to remember as you can see some of these trades took some adjustments before we were able to book a profit some of them we just put on and took off for a quick profit with no adjustments necessary but that's the key component to understand is not only how to open these trades and close the trades but how to make the necessary adjustments to be profitable and consistent trading these strategies I hope this was helpful again if you're interested in learning more about navigation alerts just go to navigationtrading.com and click on navigation alerts happy trading


Can you please introduce yourself? My name is Jaydeep Bajaj. I am the managing partner for the life sciences practice in the region. What is your dream job when you were a child? Fight a pilot. If you can go back in time, would you still choose a career in the health care life science industry? Any day, always. Why? We impact people, whatever we do changes people's lives and there's a sense of purpose. What is one question you ask every client? What can I do for you? Pick one word to describe the culture at Hydrik. Fun. Is there a personal philosophy you live by? This too shall pass. What is the best piece of professional advice you have received? Slow down. What do you hope to accomplish over the next one to two years, personal or work? I want the life sciences practice in Asia to be the best run life sciences practice amongst all firms. Can you name one fun fact about yourself? I have 60 pairs of shoes. What is your favorite pair of shoes? Bright yellow Nike sneaker. What is your spirit animal? A great den. If you could have one superpower, what would it be? Fly. What's your next vacation destination? Home, Delhi. Finish these statements. As a leader, I strive to do better at? Being the best I can be for clients. I love my job because? I change lives. I am most productive? One hour before deadline. What does leadership mean to you? To serve. What is your favorite transportation mode? Motorcycles. Jatip, can you share one of your craziest story? I was riding a bike in India early in the morning and a cow walked out of nowhere and I hit it at a speed of about 80 kilometers per hour. Both of us lived to see another day.


Hello, and welcome back everyone to episode 15 of the Pirate101 walkthrough. Today We are going to be Doing this dungeon here. They're gold monkey One hour, so it'll take us that long. So, yeah In between episodes I was gonna upgrade right there, but I think I might do that in between this episode and the next one Just because I haven't had too much time So, yeah, let us talk to Aguirre. Here we go Okay, so last episode we Managed to complete the dark jungle and we got to the ancient ruins And we got to The ancient ruins which you saw just before which is kind of a lead-up area. Oh 1v1 1v1 me bro.  Of course you are And then we proved our worth and now we're going to speak to What's his face courtiers? That's his face This is perfect, you know like I can Hit him and he can do nothing to me. He's got nothing on me. I Can't hit him now, but obviously Actually, I can If I do this And put it right there. You see I can hit him Dumb It's perfect Yes, this is easy new strat confirmed He can't get me it's amazing I'm afraid this is gonna do more than 40 knees gonna come and get me, but I will get dead. Oh well Where are you going? I Don't understand these people these sometimes like Why why would you go that way? I'm done I'm not moving Exactly you can come to me if you think you're that cool you can easily get in now, so I don't see what your problem is Like look there's a perfect hole for you. Oh my god, what are you doing? What are you doing? Can we destroy the barrel?   He was a disgrace 55 gold You didn't do anything how would you expect to be defeated?  Are you afraid you should be? Okay, let's us collect these but like seriously how's he expect to win if he doesn't even hit me I Took no damage. This one's down here, right? Yes, these ones have respawned nice That was pretty easy. Oh Yes, I can count right it just doesn't update straight away That's annoying when it does not that straight away.  Come here. Now. Listen. Gortez is also a teacher He hears voices and tells us what the spirits tell him you must hear the spirits to Go into the cave of many voices and touch the glowing stones return to me when you have heard the spirit voices Let's do this it sounds easy just touch touch crystals and voices come right Don't know how how that works, but it does crystals Fun that ring trumpets captain. I hear your parents voices Oh Go to the where though Where do we need to go to? I'm getting really I'm confused. It doesn't tell us where we're going to It's not fair You have returned. Did the spirits speak to you? They did really? Impossible it is true. I followed the stranger to the cave and heard the echoing voices This is amazing You have proven yourself. I can think of no more tests You are ready now to go to the temple. Remember you do not talk to go tears You listen to him We're gonna collect our pet first actually Gortez can wait he can wait for me feed Little nine. Yes, this is the pet we got last episode You know just training them up It's actually really cute his sounds Let's you stuck on staircase not good enough. I Really hate how there's like numbers up there. So it really triggers me It's like you can't have one notification. You have to have either or with him or not Are you an assassin?  I Refuse the simpering fools at home those tame the lap dogs They have no right to judge me. They have no idea what I've found here. They refuse to see it Look around you the creatures that built these temples shattered mountains to raise their perfect pyramids They drew gold down from the stars They lived like Titans and now they're gone But the trees remain The jungle beat them it will destroy us all unless we become one with it The trees spoke to me and showed me the way when I saw this place Shining gold burning like fire. I knew who I was. I found the gold monkey The fools in Puerto Mico think the gold monkey is another priceless toy for them to steal They are wrong. The gold monkey is me They want to stop me, but they are too good to make the trip themselves Cowards I will send them an answer your broken bones children Wow that is quite a Quite a speech there use for totem statue Hmm Here's the longest distance you have like none so you can go here as much do you have you have like none as well Okay, we'll run up there and you can run up there as well Yeah Nice work prep it really put in the effort there. Okay Nice 42 that's pretty good could be there Uh-huh. They're laughing at me. I don't like it. I don't approve That's actually quite a cool sound effect to their attack They're so cute These wee little monkeys it sounds like So cool Actually, I'm gonna go all the way over to the other side You can have him You can come up there keep going there. Okay Ouch Yeah, come fight me mega hit me idea. Yeah, right bit idea First right here hit guess but idea. Yeah. Oh, yeah, see that block Statues just like the troggy shrine remember they might sink the throne. I've already pressed one. So like you don't need to yell at me Okay Kinda know what I'm doing. I just kind of I don't have a complete idea But like kind of an idea, you know, like nice worker at bed. He's nearly a half-health I think I'm just gonna take out as many of these as I can Before the go tears comes down so I can just focus on go tears and not have these annoyances in the way Nice work is half-health. That's great Because these guys are really annoying. They don't do much damage, but like but like if they They do it over a decent amount of time and I kind of like mm. Okay Okay Yeah, you're three-headed at the same time nice nice work boom All the light boom boom more light You did not hear my phone go off just then Didn't hear it. I just bit you didn't train my warriors to set villages on fire But the b-shops won't let them throw bananas because it is Unseemly, okay Here we go. Let us do this. Yes nice block there. Oh Fast strike. Yes fight me boom Okay, let's go go tears one be one me bro One be one me go tears Yeah, you've got four hundred and twenty how five house Yeah, that's right. Yeah, it's not enough. Yeah Boom Okay, red beds about to die, which is not good.   Why are you running away? Huh?  I think that's not out of here Let's go that way. Okay. Oh Don't be cheeky go tears.  Yeah, geez It's nice work. This first strike is actually good. Okay, don't make it. That's just rude Don't even hit them. There's also rude That's rude. That's a really rude These guys being really rude. I don't know if I like this fight anymore Like this is really bullying I'm really bullying. Yep. Okay. Let's just hit all of them and we'll make it hurt you Nice work. My character's down here now Nice block there Nice work one down. No, not quite. That's a shame. Okay. Here we go Nice 88 that was great damage there. Okay Who's next I can't see this is a very nice camera angle.  I think your spots did soon as well Be up to me and Bonnie soon Let's see. Oh, he's dead for sure. This is GG. No, Ray Um, here we go. He's on three. That's unfair boom That was great. Yes, Gortez is dead. The ego maniacal gorilla is down. I Repeat ego maniacal gorilla down. What am I doing with my life? You're dead You have beaten he who could not be beaten hope is beaten We are lost Then he's all that is left for us. No stay here my children fight on against the hollow man Pirate your mission was to take me not my soldiers. Leave them in peace Defeater of Gortez You have opened my eyes. Where you go. I follow where you fight. I conquer Amazing Yeah, we're taking you We be taking you Don't know no no no Three minutes Let us collect these You're back go right up the governor will definitely want to see you Okay, so we are back obviously We need to talk to governor Joe. It's a girl now what and you are you've gone where you you've done What Gortez and chains a treaty with Skull Island? I have my predecessor governor Medina was a traitor to the crown He is now working in the obsidian minds of Oryx Whatever arrangement you had with my predecessor vanished with him I have no knowledge of these matters and take no responsibility if Gortez has Transgressed it is not my place to deal with him Gortez must go to the Royal Court in Monquist City to answer for his I'm afraid I can't spare any ships. You will take him my major normal will make the necessary arrangements I bet you good day Wow, okay That's a complete plot twist we did this for nothing then Yay Yay, we went up to level six nice Level six, that's great level six normal cause great My you've caused quite the stir here these travel permits will allow you to pass the blockade into Monquista You have a windstone. I presume windstones allow a ship to pass through a storm gate and sail to other worlds Does your ship have one? I should have known Never fear our skies are plagued by privateers from Marley bone Attack them and you can win it by or once you have the stone and proceed directly to the storm gate and sail through it to Monquista When you arrive at court, do not mention my name well I will be back. There's lots of alpha which is good, so Don't know if I'll keep using him though. He seems pretty shit, but that may be because we're not fighting good people like normal people like The musket we're fighting musketeers actually will give you There we go bladestorm. Yes, actually he has a lot of damage, so that's good nice work there Bonnie and Poor Rumba getting hit. No Rumba. That's good. Everyone can hit him. He's dead That was good. Okay Hopefully we get the windstone When stone plus when stone plus when stone plus Yes, plus Yes, we did it. Okie-dokie Thank you for watching Next episode we will go through the Storm gate to Monquista So anyway, leave a like and subscribe definitely subscribe if you want more of this if you want to see Monquista know exactly when the next episode comes out you should subscribe I do it right now But I'm just gonna stop my ship here and subscribe Like do it right now press that button Okay, you're done up good. So yeah next episode we will Go on to Monquista. So yeah, thank you for watching and yeah. Bye


Our planet may be called Earth, but its surface is made up mostly of water. Water flows within us and is the driving force that unites all nature. Water is food, prosperity, energy, life. Yet today too many people go without it, while others take it for granted. Care for water, cultivate a sustainable future. Water is life, water is food. Thank you for watching!


Wastewater is generated by every home and business across our nation. However, not everyone who generates wastewater is served by a centralized wastewater treatment plant. These users must rely on an onsite wastewater treatment system, traditionally known as a septic system. Though septic systems have been considered a temporary solution for wastewater management, that philosophy is changing. Today, we see these systems as a permanent solution to wastewater management. In these systems, wastewater will remain on the property. Because of that, you have to carefully consider the amount and the type of wastewater generated. In other words, the land must be able to accept and treat the amount of wastewater you discharge. If the system is too small, problems can occur. An onsite system is designed for a specific amount of water based on the size, purpose and average use of the facility. For a home, this design is greatly affected by square footage and the number of rooms. However, there are many factors that are considered, including the water use habits of the family, such as the use of a garbage disposal or the number of water saving devices. Wastewater contains organic matter, solids, nutrients and pathogens. The strength and concentration of these elements depends largely on the activities being conducted in a facility. In general, a home will have less contaminated waste than a business. But home-based businesses, like daycares or bakeries, can't dramatically affect the quality of the wastewater. This wastewater will require additional treatment. All contaminants must be removed before the water migrates through the soil to our groundwater supplies. While soil can do an excellent job of removing contaminants and treating wastewater, not all soils are equal. In some situations, we must pre-treat wastewater to place it in a contamination level the soil can handle. The process of installing an onsite wastewater treatment system has several important steps. During these next few minutes, we will try to take you through the process and introduce you to several different systems. However, it's important to continue to research a system before you begin the installation process. It is equally important to speak with a professional, like your county permitting authority, to be sure that the system you choose is best for both the soils on your property and the regulations that govern wastewater treatment and dispersal. A wastewater treatment system should be worked into the landscape to take advantage of natural vegetation, topography and soils. Topography refers to the slope of the land and its natural drainage channels. The ideal situation places the onsite system moving downslope from the residents and all water wells. Rainfall runoff should be diverted off the treatment field. This keeps the field from being saturated and possible failure of the system. The location of the treatment system is critical. Though a treatment system must be a minimum of five feet from the building, it is usually placed further away to allow better access for operation and maintenance. Periodically, you will need to have solids pumped from the treatment tank. This is accomplished by a vacuum truck with a hose that extends down into the treatment tanks. Pre-planning on how this truck will be able to get to the tanks will assist further maintenance. The treatment tanks should not be placed in a low area where rainwater will collect and flood the system. Watertight risers should be placed on top of the treatment tanks to allow access to the tanks and prevent rainwater from entering the system. The soil should be evaluated across the site. Soil profiles can be consistent across a given track of land or can vary greatly within just a few feet. The evaluation of soil in the treatment area should reveal the most restrictive layer in the soil. This layer will determine the quantity of water that can flow through the system as it limits the flow of water through the soil. To find this layer, you evaluate the soil below the bottom of the land application system. Presence of shallow groundwater will limit the ability of the site to treat the waste water. Carefully evaluate the ability of each soil layer to transport water. This is based on the soil type or texture. The slowest of these transport rates is used to determine the wastewater loading rate of the soil. This rate, along with the quantity of wastewater generated in a home, is used to determine the size of the treatment area. Another important consideration is to place the wastewater treatment system a safe distance from any water wells. Wastewater is cleansed as it moves through the soil. But if this distance is too short, the wastewater could still contain nutrients and pathogens when it reaches the well site. If the well casing and native soils have not bonded well, partially treated water can easily flow along the casing, contaminating the groundwater below. For this reason, it's important to note the location of any neighboring wells, even those abandoned or not on your property. Wastewater is 99.9% water, contaminated with a small amount of organic matter, suspended and dissolved solids, nutrients and pathogens. These contaminants must be removed from the wastewater before it leaves the soil treatment area. The goal of the on-site wastewater treatment system is to remove these contaminants, protecting public health and the environment. Pre-treatment systems remove a sufficient quantity of the contaminants so the soil can provide final treatment and reuse of the wastewater. When selecting the pre-treatment system, you must determine the treatment capability of the soils at the site, whether you wish to reuse the water to irrigate your landscape and the type of land application system. Each land application system requires a particular quality of effluent for it to function properly, and generally reusing wastewater requires the highest quality of water. A septic tank is an enclosed watertight container consisting of one or two compartments. It collects wastewater and provides primary treatment by allowing floatable and settable solids to separate from the water. Settable solids accumulate at the bottom of the tank, while floatables, such as oils and greases, rise to the top. Water should remain in the tank for at least 24 to 36 hours to provide optimal treatment. As much as 50% of these solids remain in the tank and decompose. The rest accumulates as sludge at the tank bottom and must be removed periodically. Still, the majority of the organic matter, solids, nutrients and pathogens, remain in the wastewater as it leaves the septic tank. An effluent filter is used to assist in removing additional solids from the wastewater. This keeps larger solids from clogging the soil absorption field. This filter needs to be maintained periodically by removing it from the tank outlet to wash the solids off its surface and back into the tank. An alarm system will alert the homeowner if the filter becomes plugged and the tank water level begins to rise. Most of the septic tanks are made of concrete. However, fiberglass and plastic polyethylene tanks are becoming more prevalent. These are lightweight and ideal for hard to reach spots. All tanks must be watertight to keep water from entering the system because excess water entering the system can saturate the soil absorption field. The result is water flowing above the ground surface. Using a septic tank to pretreat sewage allows secondary treatment systems to work more effectively. The effluent emerging from a septic tank is mild, consistent, flows easily and is better treated by both aerobic and anaerobic processes. Aerobic treatment units for homes and small businesses are similar to municipal wastewater treatment systems just on a smaller scale. The effluent these systems produce is as clean as that from a municipal system and cleaner than that from a conventional septic tank. These treatment systems remove a large percentage of the organic matter and suspended solids from the wastewater. However, water exiting the system can still contain organic matter, solids, nutrients and pathogens. The aerobic treatment process contains four main components. The first is a permanent tank, generally referred to as the trash tank. This stage removes materials that microbes cannot degrade. Second is an aeration chamber. Treatment in the aeration chamber is a biological process. The air supplied by the air pump allows microbes to thrive. The microbes consume the waste, transforming it into a non-polluting cell mass, non-degradable material and gases. The chamber contains an aeration system including an air pump, piping and diffusers to force air in. The third component is a settling chamber, commonly called a clarifier. This allows the microbes to settle out. This clarifier also includes a method for returning the bacteria to the aeration chamber. Finally, the land application system distributes the treated water into the soil. It is important to maintain an active population of microbes for the system to effectively break down solids. This population is a diverse society of aerobic microorganisms that decompose a variety of materials. In the clarifier, this mass of microbes, cells and non-biodegradable materials settle from the effluent before it leaves the system. Aerobic treatment processes greatly lower biological oxygen demand, which is a common measure of system performance. It also reduces the amount of suspended solids in the effluent below that of simple sedimentation. Sand filtration is one of the oldest known wastewater treatment technologies. In simple terms, it is a lined, watertight box filled with specific sand materials. If properly designed, constructed, operated and maintained, a sand filter produces a very high quality effluent.  The sand filter box can be constructed of concrete or an excavated hole lined with plastic. Sand filters intermittently dose wastewater onto the sand bed. The wastewater passes through the bed before entering the land application system. Sand filters generally have 24 to 36 inches of sand for treatment of the wastewater. The bed is underlined with a bed of grated gravel and a collection pipe. Sand filters can either be open to the surface or buried below ground. Surface filters, called free access, are typically built above ground with a lid allowing easy access to the system. Landscape design can help blend these systems into the surrounding landscape. Below ground systems are completely buried and therefore blend seamlessly into a landscape. Recirculating media filters consists of a septic tank, recirculation tank, media bed and land application system. In these systems wastewater is pumped from the recirculation tank, distributed onto the surface of the media bed. This aerates the wastewater as it's allowed to drain back into the tank. This media may consist of sand, gravel, plastic, peat, foam or fabric. The main difference among these filters is the size of the media and the amount of wastewater that can be treated by the media. Media filters are used to aerobically treat the wastewater with microbes growing on the media surface. These filters remove large material, absorb small and dissolved material onto the surface of the media and this waste material is decomposed by the microbes. Media filters reduce the quantity of organic matter, solids, nutrients and pathogens. The quality of the effluent depends on the media size and how the water moves through the system. A film of biological growth on the media feeds on the contaminants contained in the wastewater. As the film grows it will exceed its ability to hold on to the media. Pieces of the biological growth will break off and fall back into the tank with the wastewater for decomposition. Wastewater flows from the recirculation tank into the land application system. A constructed wetland is designed to mimic nature's own processes, using plants and microbes to treat wastewater. One major difference is that in a natural wetland water is generally visible in the system. While in a residential constructed wetland the water flow is maintained at a subsurface level. This system consists of a septic tank, constructed wetland bed and land application system. These systems are designed to blend into and even enhance a landscape design. The wetland consists of a bed of grated stone with water flowing just below the surface. Aquatic plants are grown in this bed feeding on the nutrients, organic matter, suspended solids and pathogens in the effluent. The bed is set in an earthen basin lined with compacted native clay, bentonite clay, concrete, PVC or a similar water type substance. Plants in the wetland must be able to survive in a saturated medium. Though both hard and soft tissue plants can be used in the system some experts prefer hard tissue plants believing they provide a pathway for oxygen to enter the wetland during winter months and reduce maintenance. However, many homeowners prefer colorful, flowering, soft tissue plants. Disinfection systems are used as an additional safeguard against pathogens in the wastewater. Disinfection systems are placed between a secondary treatment unit and a land application system. Three methods of disinfection are available. Chlorine, ultraviolet light and ozone. Chlorinators are the most common type of disinfection system. This system relies on a monthly addition of chlorine tablets to ensure disinfection of the wastewater. Soil acts as the final stage of treatment in these systems. It's nature's own age-old system of cleaning water. Microbes that occur naturally in the soil remove the remaining organic matter, solids, nutrients and pathogens from the water. The type of land application system you can use depends on your site conditions, which were determined during this site evaluation. The most critical information is the type and depth of soil you have for treatment of the wastewater. There are several options for moving wastewater from your pretreatment system into the soil. The first systems we will discuss use gravity or the ability of water to flow downhill to distribute the water throughout the drained field. These systems generally can follow a septic tank pretreatment device and require good soils at the site. The next systems require a pump for pressurizing the wastewater and distributing it throughout the drained field. The pressurized systems are used in areas with limited soil depth available for wastewater treatment. This type of shallow soil can be in areas with seasonally high groundwater or bedrock near the soil surface. The conventional drained field consists of perforated pipes surrounded by a media such as gravel. The fluid passes through the pipe and is stored by the gravel until it can be absorbed into the soil. The microbes decomposing the waste form a biological mat at the surface of the soil and at the bottom of the drained field. The mat tends to slow down water movement and helps avoid soil saturation. Microbes in the soil feed on the waste, nutrients and pathogens remaining in the wastewater. Grass growing on the soil surface then utilizes that water. This is not a good option for soils with high clay content. Leaching chambers are an alternative to pipe and gravel systems. A hard plastic dome serves as a reservoir holding wastewater until it can be moved into the surrounding soil. These chambers have greater storage capacity than gravel filled systems which provide only 35% of the trench volume for water storage. In contrast, the dome is completely open and 100% of its open volume can't hold wastewater. Leaching chambers can also serve as reservoirs for facilities with intermittent high volume use. The components are available in a variety of sizes and have connectors to allow construction of trenches to follow the contour of a site. However, you should be aware that maintenance and soil requirements for this system are quite similar to that of the media filled trenches. This too is not a good option for soils with high clay content. Gravelous pipe is an option to media filled trenches. In this system, an 8-10 inch corrugated polyethylene pipe is wrapped with a geotextile fabric and buried in a well aerated soil. The fabric acts as a wick, evenly distributing wastewater around the circumference of the pipe. It also works to prevent backfill from entering the discharge holes of the pipe. The chief advantage of this type of system is that the pipe is flexible. It may be placed in curved trenches, fitting a specific elevation on a sloping site. However, it requires a well aerated soil to prevent buildup of the biological mat on the geotextile fabric wrap and cannot be installed in clay soils. The evapotranspiration bed relies on the natural properties of soil to lose water both by evaporation and transpiration from plants growing on top of the bed. An evapotranspiration bed is a bed of sand with trenches in the bottom for storing the water until it's evaporated or transpired by the plants. Evapotranspiration beds are used in areas where soil will not properly treat wastewater before it reaches groundwater sources or where soil will not allow water to move through it. These systems are designed based on rainfall and expected evapotranspiration rates. These beds can be either lined or unlined depending on the permeability of the surrounding soil. Gravely sands and car soils require a liner. This can be made of natural clays, synthetic lining, or concrete. Unlined beds are used for impermeable soils like clay. Plant cover is essential for the proper function of these systems. Grasses and other plants must be well maintained for them to work properly. A low pressure dosing system requires a pump tank and a network of small diameter pipes placed in trenches. The pump tank stores the wastewater and the pump doses it into the drain field so that the trenches do not become saturated. The pressurized system provides a relatively even distribution of the wastewater across the drain field. The trenches accepting the wastewater can be media filled or constructed with leaching chambers. These trenches serve the purpose of storing the water until it can be absorbed by the soil. This system is generally used to move affluent from a treatment site that sits at a lower elevation than the application site and in soils with high clay contents. It is also used in shallow soils where seasonal high groundwater and bedrock occur between three to four feet below the soil surface. A mound system consists of a pump tank and mound land application system. The mound has several layers including permeable fill material, a wastewater distribution system, a sandy loam cap, and topsoil. The mound system is ideal for areas with minimal soil between the surface and either groundwater or bedrock. A drain field is created above the natural soil surface to allow final treatment of wastewater. In essence, this is a traditional low pressure dosing system built above ground level. Its layers work in combination with native soil to treat the wastewater. Like its traditional counterparts, it relies on the soil microbes to provide the natural treatment process. A subsurface drip dispersal system provides uniform application of wastewater across the application field. The system consists of a pump tank, filtration system, subsurface drip tubing, and controller. The pump tank stores the wastewater until the controller turns the pump on to dose water into the soil. The filtration system removes the large solids from the wastewater and flushes the solids back to the pre-treatment device. The drip tubing is placed directly into the soil without the use of media filled trenches. The system relies on drip tubing with emitters to reduce the water pressure before it enters the soil. Since the emitters in the line have the same emission rate, wastewater is uniformly applied to the dispersal field. The drip field is constructed to spread water across the landscape. Tubing is placed approximately two feet apart in the landscape so the emitters are on a grid pattern. The drip lines are buried relatively shallow so the soil can provide treatment and landscape plans can use the nutrients and water. The tubing can be placed within the existing landscape. A spray dispersal system utilizes a pump tank, pump and spray heads to distribute wastewater on the surface of the ground. The pump tank stores the water until it is time to dose the water to the spray area. The system can either be an on-demand system which sprays the water whenever the tank is full or night dosing system which holds the water until night and then the water is dispersed. Most residents prefer a night dosing system when the effluent will be sprayed in the landscape. These systems distribute wastewater across the soil surface much like a traditional lawn irrigation system. Therefore, the system requires the highest quality effluent from the pre-treatment system. Wastewater must also be disinfected. The surface area must have vegetation and be landscaped to avoid runoff. Also, low trajectory sprinklers are used to minimize drift from the spray area. Wastewater is an unavoidable part of our lives but on-site wastewater treatment systems are an effective and efficient way to deal with wastewater and its contaminants. When the right combination of pre-treatment and land application systems are joined with the natural treatment of land itself, these wastes are recycled and become a benefit for all.


Hey guys! Welcome back to my channel. It is Drew here and today I'm going to Goodwill. I'm gonna do a thrift shopping home decor video which has been highly requested from you guys and I thought it would be fun to do it. So I'm just gonna go inside and do like a vlog style and see what exactly I can find. Maybe I can DIY some things and just like give a couple tips when home decor shopping like things that you might not think about buying but using for like your home decor needs and finds and purchases and I don't even know what I'm talking about. But if you're not already make sure to subscribe to my channel. You guys we are growing so fast it's crazy. So definitely subscribe to be part of the Lone Fox family and yeah let's just head on inside. Got a basket. So here's the home decor section or home good section I guess you could say not really decor. But let's see what's in here. Trinket tray sort of 99 cents. These are also pretty. I feel like Goodwill is really good for like crystals. So you can find a lot of like the crystallized glasses in different colors. If you want to feel like you accomplished something you can get a trophy. I'm just gonna write on it myself like icon. I think we need this. I'm gonna do it this Marie. Catch the water from our ceiling. Okay so I'm taking away the lampshade because I found this good and fresh vintage light which is probably gonna knock everything over but I'm gonna spray paint the wood parts brass so it'll be black and brass. And the last thing I'm gonna get is this good clock. So it's all in exactly the target that I wanted. This is only 69 so I'm gonna do something with that. I don't know exactly what but I'll figure it out. Hey guys I got all my items. I'm about to get on this bird and ride home with all of them. So it is the next day now. I got home last night and the sun went down so I wasn't able to film the DIY process yesterday but I am going to film it right now for you guys and I want to show you guys some of the things that I got at thrift store just like as a collective little miniature haul you know and then also the DIY process with a couple pieces and then we're just gonna style a couple pieces as well so let me show you what I got. So I got this good and fresh little basic frame. It's $1.99 honestly you can probably get this at the Dollar Tree but you know I was at the thrift store so I might as well. And then I got this really cool clock it's like a vintage clock the sides are a bit dirty mainly like right here so I want to clean this and then maybe do something to the silver portion of it maybe take out the glass I don't exactly know and then I got this little tiny trinket tray which I'm just gonna leave as this because it's kind of pretty it looks like it's from like anthropology or something for 20 doll hairs and then I got this little ampersand sign which I'm just going to tighten up this first down here because it's a little wobbly and I think I was going to leave this one as this as well and then same with this I just thought this was like a pretty accent it's a little bit vintage but this is just something nice as like a shelf filler and this was $3.99 it had no price tag so she just gave it to me for $3.99 but I think it might even be real silver because it's kind of tarnishing oh no it says silver plate on the bottom which I don't think means that it's real silver and the thing that I'm most excited about was this $8 lamp like a $9 lamp I just think it's so cool it's like one of those industrial looking desk lamps but what I'm going to actually do is paint all of the brown wood sections to be brass and then clean up the black sections of it and I think it's going to turn into like a really nice little um desk lamp that I could put on my desk because mine's actually completely broken so this will be perfect to add on there so for the lamp I'm going to start by taping off like the wood sections or taping off more of like the black sections because these are all going to say the same and then the wood's going to be the brass part so I really only have like some scotch tape and paper towels I'm hoping that works but I think it will because I'm not going to do anything crazy so okay I'll put it covered hopefully and I'm going to use this 18 karat gold spray to spray the wood sections and hopefully I don't get anything like messed up but we'll see golden and shimmery yes so we are going to let that dry and then I'll take off all of the wrapping okay I took all the wrapping off literally looks the best like check this out I'm going to scrape this little part off right here it got a little bit on the black but that's okay but I also need to fix this um knob so I'm just going to do that and it is complete check how good oh wait first take the tape off this gotta do that too I have an idea for this frame and my idea is to use these paint sticks that I got at Home Depot you get like a pack of 12 for like a dollar or something like that but look it there's like this really faint um like ruler print on it can you see that and I thought it'd be cool if I cut them and put them around the edge of the frame like completely and recreated the whole front like that would be so pretty with this on it so I'm going to recreate this frame and put the uh paint sticks on it and make it into like a raw wood frame the struggle here though is actually cutting the pieces because I don't know how I'm going to cut them so we will see I love being a DIYer that doesn't have a saw I'm going to mark my pieces first and then I'll cut them after I actually cut one piece um I just used a pair of scissors and just like cut on each side it snapped the piece off and then used a emery board to sand down at the edge so it's nice and smooth and this is going to go on here so I have to create three more and then I'll glue them all on finished cutting all the wood pieces they are a little jacket because I kind of just broke them but I actually like that I think it has a little bit of like um vintage esque quality I guess you can say and I'm going to glue these down using a 6000 so it sticks really nicely but you can kind of see the finished piece already and then I'm going to take the sticker off and put a photo in it if I can find one or I'll just like cut one out of a magazine so for this last project which is a little ampersand like metal thingy I'm thinking about somehow wrapping this cord completely around it and turning it into like something that looks macrame but it's not like I just am wrapping it like the most ever so it's been probably about 30 minutes and I still don't know what to do with this the cording didn't really work as well as I wanted it to oh look it's Emma on my phone but uh I think I'm just gonna like spray paint this brass too because I seem to do that with everything and I think it will make it look nice and fresh and new so let's just go do that real quick gotta get more of the spray paint soon because I seem to use it on everything I showing you how to decorate a little bit and like just giving you some ideas when you go to the thrift store on what to purchase and I hope you like this video if you did definitely give a thumbs up I think for my next one I'm gonna try to structure it more and maybe get more pieces and maybe go to a couple of them just so the video is a little bit more full because I'm not exactly sure how full this video will be until I'm editing it in a couple of hours so we'll see how that goes but definitely subscribe for more videos I'm doing a lot of home videos on this channel of course and more DIYs coming very soon and follow my personal Instagram and I'm Drew Scott I'll put it on the screen for you to follow and I will catch you next one. Bye guys!