Maybe just a quick question. How many of you have written the Meso's framework or DCO service before? Max yes, I know All right, there's one more hand pretty cool. So I hope we can show you like see Basics and actually like this talk is going to be focused more on the challenges Which actually arise if you want to write still stateful services, but we'll also actually show Some approach making it really easy to come up with new frameworks or new services So for all of those who haven't done it yet, it's going to be like an easier start then for example I know like a regular DB. They were one of the first ones. They had a pretty rough time Which we also going to see throughout this talk. So us that's actually Ken here Ken is a distributed systems engineer at Mesosphere and it's a dear colleague and He was actually one of the persons who started this SDK We're going to talk about it brings this talk and I myself and also distributed systems engineer So I mostly work in the Apache Mesos project But I also like go out throughout the world talk about stuff and actually help partners like for example Max over here Writing those services and frameworks So this is why I also really like to see that we have something like an SDK making it easier for people to get Started and actually allowing us to get more services running on both missiles and DCOS All right, maybe the first question the title of the talk was actually Writing stateful frameworks writing a stateful services. So maybe the first question Why does this matter in such kind of like micro service world? I actually just looked at the top X Docker hub images And there's actually a pattern like if you check like a year ago or so There were like really few stateful services, but over time I actually marked all the ones which have like some stateful service or some stateful containers For example my sequel MongoDB the Docker registry So actually even like in the Docker store is Docker hub a lot of these Repositories a lot of the images are stateful images So we're seeing that despite we are moving towards this micro service world still state is a really important and as we'll see state is also pretty hard the second saying which we if we talk about state Is actually that we see like a lot of those big data frameworks Which was actually also one of the initial motivations to come up with something like missiles to basically enable all those Frameworks to run like on the same cluster So actually like the challenge right now is how do we combine all those stateful services together with potentially all those Stateful containers, and this is what we're going to explore a little bit in this talk Talking about all those stateful frameworks. There's actually like a pretty Nice term and pretty high term right now, which is called smack stack. So this smack stack It's actually it stands for a spark Mesos Christmas is being used to run all of this It's Mac then we are back up which is used for like actually writing your applications in it's like an active base framework for Java Then we have CC which stands for Cassandra, and then at the end we got Kafka for like see this group message queue So this is like a pretty common stack right now. We see people deploying for analyzing or Processing big data sets or like more also like in the screen processing world where they want to analyze data and challenge We have then is if you want to run this so basically without me So so if you just have like a sex deck then you actually end up what we see also with a lot of customers You actually you end up with like a sub dividing your cluster use partitioning your clusters So you're having like a number of nodes where you would run Your spark stack you would have a number of nodes where you run your Cassandra stack and so on and actually the resource utilization pretty is pretty low as you really need to get this for like the maximum you like maximum performance and so you're actually wasting a lot of resources and if you're Actually going through this smack stack and this is also why I believe it's like such a trendy and high topic right now You can actually consolidate all of this and with like missiles You're having missiles underneath or DCS and you can actually run it in fewer notes It's been actually share those nodes between the different services But now we've seen yet. This is pretty cool We can reduce all of this but it actually means we have to write a framework schedule for that We have to write framework schedule is for Cassandra for spark and all those services It's a good news for you is actually for the smack stack. We already done that so that's already like either being Finished or it's still like in the process So that's nothing you personally have to be concerned about but actually what happens if you want to write your own stateful service your own stateful framework and As that being said, it's actually is pretty hard because in general distributed systems You have to deal with like so many different failure scenarios and I really like this quote like Murphy's law for distributed system It's not that just that they're simple failures where you can detect. Hey, this note just failed or There's a network petition often. It's like this partial or failures Which are really hard to all imagine up front when you're designing a framework and all basically being handled and so Actually, it's really hard to basically figure out those all those failures or partial failures in the distributed system in General did coming up with the distributed system. It's already quite hard. So this for example, it's the architecture of a regular DB, which is like a distributed database and we see we have like different components We've got coordinators. We got database servers. We got an agency So there are actually a lot of components which I need to Individually scale which have different failover semantics. So for example when some agency fails I need to do something different than for example as a different database server fails so first of all coming up with all of this what Transitions you want to have and what you actually want to do is pretty hard by itself and then actually Writing that as a mesas framework or as a framework on like any distributed scheduler It's another challenge because you actually you have to codify all those different failure scenarios If you set set it up like manually, you would have like an operator manual Which tells you hey if the agency fails you need to do this is this if a database server fails you need to do this is this and With a framework or service you actually you have to codify all of this knowledge in the scheduler. So that's pretty challenging and You might also have to deal with other like problems. So for example Placement constraints if you have a stateful service, you might also want to co-locate for example data So if we take for example who do as an example Whenever you run to do one HDFS one of the core ideas is that you actually you co-locate the computation Where like the data resides in HDFS? So when you have like the stateful services or also then the data processing on top you actually you end up with a lot more placement constraints than you would with like stateless services if In contrast be compared this was like a stateless services This was a stateless service failover would be really really simple It would basically be my engine X failed. It doesn't have state I can restart it on any note in my cluster, but it's different if we have like stateful services So with stateful service, I really would like to reuse a data So I'll probably I'll try to restart it like on the same note. This isn't an example to Showed how different like stateful and stateless services are stateless services. They are pretty easy still challenging but stateful services are a totally different story and Missus is actually doing a lot to help you with that. So especially like from a storage perspective Missus is providing a number of primitives which help you to deal with storage and They're like mainly like three categories. So if you start your default missus task, which is going to happen You're going to write all your data into your sandbox that sandbox once your task fails It's basically it's gone. So you're not you're not able to recover your data It's different if you start using so-called persistent or local persistent volumes They're actually there are no local storage. So whenever your task fails when that note gets rebooted You actually you get re-offered the data you previously written to that volume, which is a pretty nice thing especially if you have something like for example Cassandra Cassandra internally already Replicates the data. So you can't actually live with if there is like a total note failure If that note doesn't come back up That data would still be lost because it's still it's just a local persistent volume It's not stored like any distributed way. It's just stored on that note But as Cassandra internally actually replicates the data, we're happy with that because we can be replicated We don't have any lost data as we can always use one of the replicas If we're using like legacy softwares, for example a single MySQL instance or a single post-press instance We want to run in our cluster similar as we did in like the pre-distributed systems world It's slightly different because if we only write the data to single note and that note where I was running My MySQL instance would fail actually all my data would be gone So there actually need to do something different. So I would use something like external storage Which can either be like for example Amazon EBS or it could be some distributed file system underneath I used to store my MySQL data in. So this is just to show you that Mesos actually offering different solutions for different kind of applications because many applications have slightly different considerations or slightly different requirements when it comes to storage and Going into detail like why it's so hard to actually write a framework Using those local persistent volumes. Again, this is actually a state diagram We came up with a WranglerDB when we initially came up with the WranglerDB framework Which is similar as the class of like Cassandra frameworks So Cassandra and WranglerDB, they use those local persistent volumes because they actually have internal Replication and they can actually live with note failures, but we still see it's still pretty hard to basically make sure That we end up with those local persistent volumes because what you actually have to do you first have to reserve resources You have to make sure that you own basically for your role for your framework So first of all the disk resources, but you also you have to be able to still start the task on the same node So you also want to own CPU and memory resources on the same node and actually it's a lot of state transitions Writing up that framework actually we ended up with around like 9,000 lines of C++ code And this is just really really a lot for just writing like a scheduler to distribute like a database within your cluster or to deploy a database on the Mesos cluster and When seeing that that was actually like really motivation for us where we reconsidered this Initial idea of Mesos so Mesos was initially also written to be an SDK to write distributed systems And at that point you realize it was a great SDK for writing Stateless services or stateless frameworks, but now when we adding all those Primitives we might actually want to add something easier to use or simpler to use for framework writers And this actually brought us To the SDK so This was the motivation to come up with the SDK and I would actually briefly hand over to my colleague Ken here because he's going to start the demo because it takes a while to deploy and Then we're going to talk about what the SDK is actually doing as So as mentioned, I was a part of the team that Started creating this but I Maybe six months ago or so and it's taken on a completely new set of features, which is really cool Probably the the big brain behind it is if you're familiar with our team is Gabriel He's out of a tremendous amount. So if you're engaged with the community when you see his name come up He has a lot of value to add into this the other thing I'll add in before I jump into this demo is that You know what we're doing with the SDK isn't like a scaffolding builder Which is one at one way to manage things right you could actually build up scaffolding based on State or what you seem to find here in the slides But another way is to actually provide default behavior like the behavior is there you're configuring that behavior So let's get started. I am right now. I have a cluster established Which is what we're looking at here. It is an ECOS, but under the covers. It's it's mesos We have established a custom universe and so part of that Includes a framework that we created with the SDK, which we've just called hello world Of course, you have to have a hello world, right? And things are about that. Did you make the sacrifices to the demo gods? It doesn't feel like it Let's see here real quick. Yeah, we're still online. All right. Oh It didn't happen So Real quick we go into the repositories if you know a little bit about DCS. We have a We have this guy here Which is the whole of world local which is established repository which has the SDK application in the service So because of that if we look in the universe one of the options down here Is the hello world? What I'm going to do right now is local to that environment. I'm in a vagrant instance. I'm actually going to just say DCS Package install hello world, which is the package name for this thing and we'll just say install this thing I'm going to show you a lot more of the code behind it What the beautiful part of Bob what we're seeing here is the installation of a service that was created with the SDK and core to this And we're going to jump into more details here shortly is that this framework the main for this is one The code for this is one class and that class Leverages a YAML that defines the behavior of what we're seeing here including all the commands that are written So we'll go into much more detail and that's I want to emphasize one point. This isn't This isn't YAML replaces everything. This is this is an option We have the ability to recognize this YAML file to create some behavior around certain features And we can also add code to this so we have the ability to configure things with default behavior We can add code to this and the end result is we're launching off the service if we go look at the service This is going to take a few minutes to deploy so while we're watching or waiting for that to deploy We're going to continue on with the presentation. You can see here that it's staging by the time we get back to this We'll have several this is staging the service which will then launch off several tasks We'll look at those tasks and look how we might be able to make some configuration changes either on the fly within the DC West environment or As a developer creating a whole new aspect of this framework Thank you very much for showing this and Yeah, let's maybe briefly dive into like what how the SDK is structured or what it tries to solve so it's actually it's built on top of DCS and Mesos and It basically it gives you like This approach a Kendrick's mentioned that it's basically gives you default behavior to write services And we'll see you actually you have a lot of options to even specify more Detailed behavior if you need something more special But like the general ideas it should be as easy as possible to basically cover the default use case default use case of writing a service and So this is what's meant by having like a default scheduler out of the box for Providing stateful services and if you're using that state of default scheduler It's actually sufficient to just write a YAML file and that actually is going to create all the code You need for your framework for your DCS service And as we saw we can then just install it with like this one command to see us package install my new package I just created all right, and This is exactly like see her of it as I like to call it Showing it that simple things should be simple So if I only want to deploy like a single container it should be it shouldn't take me like more than 50 lines of code or 50 against lines of YAML for example If I want to do more complicated stuff if I need like certain failover behavior, for example because I'm writing like a really complex dependencies and I actually need different failover scenarios for different services running within my service I actually I might have to write some code and those could be like custom plans or custom strategies and Actually, I also have some choice of not really utilizing the SDK to generate all that code for me But basically if I'm deciding I might want to write my own framework I might actually start and look at and just take for example the offer evaluation classes from within the SDK and still write my own Scheduler but basically utilizing a lot of this common functionality So when writing your own service, you'll see it's actually And you actually write several services you'll see it's like the basic parts they are often like the same and you can basically take those classes from the SDK and Avoid writing them yourself There's actually like a force option, which is not on here This would basically be writing your scheduler from scratch Which is for example, what we saw before with the example of a wrangler to be When the wrangler to be started this was in the round So you still have like this option if you need something totally which doesn't fit into the SDK You maybe you want to write Marathon for example Marathon would be like not such a good fit for this SDK is it's really like focused not for meta schedulers what Marathon is but more for like really a stateful Service in that case is you it could still be Send it could still make sense to basically write it entirely from scratch Which is like adding even more lines of code you would have to write but if you're within this domain and As said you just want to have your default scheduler. It's a simple demo file. You don't have to be concerned about What was actually going underneath you don't really have to understand too much What's going on in DC us underneath is you just specify for example run this one docker container for me if you actually if you're dealing with Custom plans and strategies you might actually have to write a little code and you should understand Why you need these custom plans if you need some more Understanding of your application you can't just take like a doctor image and save run it You should really understand what's going on underneath What is the dependency between different parts of your applications underneath? But you still you don't need like specific knowledge underneath like how does Mesa's Allocate all those persistent volumes Do I need to reserve resources first? This is basically all taking care of you by the SDK and Actually this upper part like the default scheduler and see custom plans and strategies This is what we want to focus on in this talk as down here like writing your own scheduler That's probably like at least it on its own pro like more than 40 minutes Because it's a really complex topic. So we'll focus like what you can utilize the SDK for to generate all this code for you And Here we actually we have a simple example like a hello world. It's basically it's just writing how a world into like a persistent volume we Allocated and like the interesting part here is this is all specified in YAML But what's actually happening underneath and we'll see this on the next slide It's actually it's the same I could use the same in Java So I don't really have to have this trait of like either YAML, which would be more like a configuration fun or Java but it's actually It's it's both because the YAML is not used as a configuration found it's actually used to generate the same Java code we saw on the other slide here Looking at the YAML for example like this part down here where we create the Persistent volume this is like this would take so much more lines if I actually have to do that myself because as mentioned before Is this actually implies we are reserving resources this implies? We're creating a persistent volume and here it's basically like a really nice specification and The code is doing all of this will be generated for us in the background All right as mentioned here's the same in Java So I can actually do everything I can do there. I can also do in Java and There actually you have more options if I want to do like more detailed plans if I want own recovery plans for example and Plans it's another really interesting topic. So We we saw before we specified like this task. So let me just switch back maybe so here Here we actually we have a task called server and the server actually has a goal that it's running and If we now go to this plan We actually see it's Referencing certain steps. So plan is consisting of certain steps And they can those individual steps can have different goals So for example the goal we saw before it was that it's running running actually means that it Keeps on running as well. It's like a long-lived thing. They can be other goals as well as for example the format stage here Format is something which you want to do once in the beginning. We don't want to keep on formatting our Persistent volume over and over again. We want to do that once in the beginning and set up everything. So that's actually task Which would have the goal finished and finished means it's done once and once that's finished I'm happy and always good Just I Maybe it was clear but like a normal strategy when you have something like this is a great example This is HDFS right in order for this service to land somewhere in a mesos cluster There's a certain order of things that it's important that that order is followed exactly So if you're not familiar with HDFS the first thing I need is three journal notes I mean if those landed on three separate notes, that's a strategy for how to land those things That's codified somewhere, but you can see here that the first phase is the journal phase The next thing that needs to happen is a name note needs to land and there's certain rules for that Those name notes have to land first one at a time and to they have to land on a journal note So the strategies for how that happens is codified somewhere, but it's detailed here the order of things So the concept that we have within the DC us SDK is that you have a plan and that plan has phases and those phases have steps And that's that's what you would detail on the order of things and you can see here That it's all defined serially at the bottom here You can see that there's a strategy for the data node, which is parallel So these things have to happen in a serial order that it's important to maintain the order of those things But as soon as we have kind of the infrastructure of these I'm sorry the infrastructure of HDFS up and running In other words journal nodes and name notes are in place that they've been formatted and then we've bootstrapped the second name notes So we have fault tolerance Then we can have any number of data nodes and we don't care how they land We could land 20 a minute of time and nobody cares right from a from an infrastructure standpoint So that's that's a little bit more detail on specifying plans and that becomes an important concept for how things are managed within the SDK Thank you, and I actually think we're gonna have a slide Further through this Actually failure recovery like this when we saw here It's it's like a great way of setting up the service Well actually once the service is running or even while we're deploying this we have to deal with failures because failures are just inherent to distributed systems and That's actually why the SDK also gives us like a number of options I can specify the failure recovery or how I want to react to failures So in general, they're like three kind of stages or pools There's like running and once it's running all this good But there's also stop and there's permanently failed Stop could for example be I simply cannot reach it at the moment and then there's a failure monitor Which I can actually also specify basically saying after a certain time out I want to this pass to move over to the permanently failed one and then I actually The recovery manager is going to be responsible for it keep starting another task Which I can also basically deal with how I want to do that because it's very different So for example, if I have a Cassandra node failing, I might have different considerations How do I want to be replicates a data? Do I maybe want to wait longer for that to come back up and once I'm in the permanently failed state How do I actually be replicates a data? So I end up with three replicas again after one of them failed So those are like all points where you can customize the behavior But for all of those steps, there's also like default behavior So if you have like some simple where you can just like restart it You don't have to worry if you have something more specific first You have like all those dependencies and considerations how you want to be replicate data You have the option of doing so as well and Here we just have again an example for my for HDFS Just showing how easy it is to basically have customized failover recovery. So again, it's like it's a plan We generate and down here. I hope you can see that back there. It's actually it's just generating these steps We want to do for this failure recovery. So and it's actually it's Same steps. We would do initially when setting up the system. We would bootstrap and Then actually do the step of server as well and there's some code omitted but if you just look at You can actually see that in detail and that allows you to really specify how you want to do failover recovery How does it work internally? So we already talked a lot about a scheduler's tasks and persistent volumes. So maybe just to For those who might not be familiar with those terms a scheduler is basically this component Coordinating a service so like see distributed version of like the coordinator running in a cluster And then we have tasks which are like running on individual nodes and for persistence They might have those persistent volumes We talked about in the measles context Which will be still available like after the note savior after my task to get restarted And so these are like the basic concepts We also saw like this our hello world scheduler and once we have this scheduler was in DCS we actually use marathon to launch all of them in like a All tolerant fashion because also the scheduler could fail right and in this case in DCS Marathon is actually gonna recognize. Hey my hello world scheduler failed and I want to restart it so that's kind of like the inner system for your cluster in this sense and the main idea of This SDK is it actually gives you a declarative way of specifying what you want We saw this young file before here We actually we made it a little more complex as we split like it into two Steps and two parts. We split it into the hello and into the world part and Imagine now we're specifying here an update. So as mentioned, it's declarative So I'm not saying like how I should switch over there, but I'm basically saying I now want Highlighting was dropped. So actually what what I'm saying is I'm changing the CPU requirement for the server Down in the hello pot and I'm actually changing the instance count in the world example And so one now I specified what I want to reach and what's the SDK in this case will do for you It'll generate a deployment plan and this deployment plan is actually Will consist of two phases. It's first going to be the update for hello world when we change the number of CPUs And it's gonna be an update for the world phase where we increase the number of instances and those are like two independent phases and the interesting part is also what happens if there are failures in between so just imagine We have done with our hello phase. We actually updated the resource requirements and now the scheduler fails What's going to happen is business is going to do like a task reconciliation at the Firstly scheduled will be restarted by Marathon. We're going to do a task reconciliation and we'll actually recognize Hello, this updates phase was complete. This is all like what we wanted to reach that we are we are in our target state and we actually we just need to consider like the second phase here the world phase and roll that out and so internally from from like a structure how that's happening we actually having a plan coordinated who's like Generating them and managing them and we actually we're not just having one plan within the system So the two we saw before we like the deployment plan Which is like the initial deployment and then we also have a plan to deal with failover again They're like also given their defaults given to you But you can override them as well in YAML slash and Java when you want to specify more behavior and Down there. It's actually then two steps are generated and the plan scheduler will actually take care of executing them and Making sure that all this missile stuff down there on the right like see offers the generation of new Reservations of new persistent volumes. It's all taken care of you and you don't have to worry about that in your steps What one important aspect of what you see here is that those two plans are run concurrently? We could be in the in some phase or in between phases on the point of plans have a have a failure that occurred previously Which is required a step in order to continue a phase The recovery plan will kick in because of the failure and then it will continue on the deployment plan. Those are concurrent plans It's important to recognize it And actually it's not just if I want I can actually even specify more plans So I'm not just restricted to deployment or recovery plan. I can't even have more running in parallel other features So actually it's even giving you more Than we saw here So it also gives you like placement constraints, which is similar if you have work with Marathon before where you can spread out stuff We could say unique host for example It gives you something similar and it actually also integrates into like the DCS load balancing aspect So it's really easy to integrate into this ecosystem DCS is providing to you and The in my opinion nicest part is basically like this fail-over recovery that it's really easy to also plug in certain parts if you have more special requirements then the default given to you which often is a case for if you have Failing tasks or want to deal with failover So there it's really easy to specify like your own set of implementations And That actually now brings us to the demo. I want to see deployment has finished right now, but so One other added aspect of what we're seeing here is that When you when you're using the SDK There's the plan execution by default when you're provisioning initially provisioning It just follows the plan like when it succeeds a step it moves to the next step It just keeps going but there are times when like you do a configuration update Or maybe an upgrade you actually might want to pause you may want a human involved during a certain process Right, so you're upgrading to something you may want to upgrade a node and then have a human or or some kind of automated test That would verify that that Transformation happened correctly Assuming that it did happen correctly that you might want to just continue So all the interactions of like initiate this plan Okay, pause. Let me let me check it out. Okay, that looks good or hey roll that back That's all baked into the SDK as well. That's included That's not something we talked about on slide, but it's one of the other benefits that happens Let's switch back out and you can see now that not only do we have a Scheduler and it might even be hard to figure out with what if I click here you can see we have a schedule of this running You can see here that we have a World three of them and we have three. Hello's that are running. These are all tasks that were asked to run if we switch back To here you can see this is the yam This is like the simplest example of just using yaml to create an application, of course if you look at the Examples over here we have frameworks the one we're looking at this whole the world But the other examples would be HDFS and Kafka you may not be able to see it But Kafka is the other example those are going to be more Java intense and provide a lot more detail but if you're looking for just a quick get the world running example this hello world example the thing that might be a little bit off is like we have these Mustache variables that are going to be replaced in the universe packaging and so if we look at the installation of that application I just did a quick DCOS package install of hello world. I could have also added some some variables I could have said yeah, we want two of those instead of three of those as in the example That was shown to us and then the thing that's actually executing is we're just like executing some value going into the whole point Is using the persistent volume and then providing some sleep fairly simple idea And the world is similar in nature And then we have some configuration option for the duration of sleep So that's the application that's actually running. We have three of them. Why don't we go out here and make a change to this? Let's edit this Let's see here. It's been too long since I've done this configuration And it I will we could edit here. That's not exactly what we want to do Let's I lost my train of thought here Let's let's go through the process of what this would look like if we really wanted to change something Let's go to the universe where this package was installed If we want to stall it again I mean it comes back. I'm really taxing my computer at this point But we're old example not from the command line option, but from the UI We can see here going to advanced options. This is the sleep duration variable that will be replaced This is the whole low and the world this correlates to what we see here We have a hello and we have a world you can see here that we have a count for world We switch back here in the world. We actually have a count We look at the installation that's currently running. You'll see that there's three of them running We could have easily said I really only want one of those things right now Right, I have I've created an environment where I've defined what needs to run How it will land by the fact that we'll actually ask for a Persistent volume it'll land on that this volume if this process were to fail It will be restarted on that same node because it has a persistent volume there And we can make configuration changes as you can see here all all detailed in the whole DC us environment So actually the nice thing about this SDK is it's like we're not just giving it out But we actually heavily use it internally So we actually use it to write all those basically the smack stack we saw before With the services so that was also one of the main motivations because we really needed it to not duplicate all the code between all those frameworks to have like a common infrastructure between both of them and Yes, actually also used by a number of partners. So for example Uber is using as a Cassandra work Quite heavily being is actually using Kafka on DCOS and the rising is also like using Cassandra and Kafka So those are actually services which are in production at relatively large scale and which is also like confirmation for us That we are like moving in a good direction with this SDK here Maybe the current caveats Current challenges. So it's still under very active development. So while developing all this Cassandra Kafka services We are also trying to get it's all basically any time we implement something in the Cassandra or Kafka framework We have to decide this is now something Cassandra specific or is it something which you've moved into the SDK Because it's relevant also for other services. And so this is why there's still like quite heavy development going on in the SDK and in my opinion the most needed part is actually like the Developer documentation making it actually easy for other people to use. So if you come to the repo you might see that the documentation needs to keep up with like the state of development and Maybe like the second challenge is The Restriction that it's actually Java based right now So if you're for example a WranglerDB which wrote it in C++ the entire scheduler This might be like a downside for you But on the other hand it actually allows us to move quickly forward and basically reach a state where we can have all this Our the entire SMAC stack basically Developed by this and thereby extract all the best practices once that is done We'll actually will consider other language options as for example like go most likely as like a next step But we first want to understand what it likes the components we all need in this SDK to enable all services on top so That being mentioned like many plan features we want to have in this SDK are still not in there yet Which also goes was like the very active development So you might if you start using it as of today if you start playing this you might miss some features But you can be sure there's like a large roadmap and they'll be most likely be added Otherwise just open a github issue with the features you're missing So what's next if you're actually considering to write your own service just try it out as mentioned It's still like under some flux, but it's really nice to just get it Maybe just deploys us how the world service which is in the examples folder and just get a feeling for it What it means to write services and what it takes to also deploy services on your own DCS cluster and What we also try to achieve with this talk is actually get feedback on whether this is something you can use or whether You're missing features because we use it like for our services we're developing But we actually wanted to be for you guys Developing services and basically get feedback from you. What are you missing for your service? What could we do to make it easier for you to write like a statement service and Yeah, bonus wise if you really like it good to get a repo open issues if you don't like stuff. Otherwise, maybe leave it a star and Give us hints what you actually Neat or what you like about it And yeah, that's basically our presentation and I would say we still have some minutes for questions or Yeah, this is the part which we mentioned under the current challenges slide that it's rapidly moving So that will be updated soon that was recently added. So just wait for a while Should be there soon once the mic I was curious, but I want yeah If you see here on the getting quick started and what you've noticed in the demo that I provided there's some Expectations and dependencies that you have get virtual boxing vagrant. That is not necessary for the DCS comments Yeah, DC was comments. By the way, that may have a name change probably more associated with SDK But that is useful in getting a quick start everything that you see me running and doing a demo on now It's actually running locally on my own box. So if that's important to you, which I think it is for many It's kind of nice to not need a whole cluster out there or figure out how to deploy a DCS cluster Or whatever the challenges might be that's mitigated by by leveraging this framework here It obviously is gonna pull down a bunch of images and it might take a bit You're gonna need a some good bandwidth in order to achieve success, but other than that it's useful For the questions. Thank you very much and keep on writing stateful services


White light emitting diodes, LEDs, are expected to replace traditional light sources such as fluorescent lights and incandescent bulbs due to their increased efficiency and longer lifespans. LEDs use blue or near ultraviolet, NuV, light emitting diodes, LEDs, and phosphors to produce white light. Blue and NuV LEDs emit light at different wavelengths, which must be combined with the correct phosphors to create white light. Phosphors absorb the light from the LEDs and remit it at other wavelengths, resulting in white light. The selection of the appropriate phosphors is critical to ensure the desired color rendering index and color temperature. This article was authored by Chowanya, Ruzher Liu, Chunchie Lin, and others.


Hi everybody, how's it going? Oh come on, you can do better than that. How's it going? Great! Yeah, much better. So hi, I'm Saran, I'm founder of Code Newbie. Do I get to press a button? And something happens, that's great. So this is my first time in Colorado. I'm here with my husband, who's right there. Husband, raise your hand. Good job, you're doing great. Very, seven years, seven years. But we flew in from right outside of New York City in Jersey, and we've been looking for an excuse to come to Colorado, so thank you so much, Jeff, for the excuse. And there's some pretty big differences between Manhattan and here. I'm most shocked at just the high quality air that you all breathe. I could take in a deep breath, I'm not coughing, I'm not dying, I don't taste tar, it's amazing. In Manhattan, we're just overrun by rats, and in Boulder, you're overrun by bikes. You have a huge bike problem. I never, I just didn't know there were that many people who enjoyed physical activity of any kind, so that's pretty impressive. It's pretty good for all of them. That's a problem. But the mountains, it's a little too much. You're doing way too much. We know that you're better than us, it's fine, we get it. I don't need a mountain that every single turn that I'm here is just too much. But yesterday, we spent the day in Boulder, and I'm going to tell you a serious story. We had a near-death experience. I haven't told anyone this. I just need to get this off my chest before we really get into the talk. We decided that we wanted to go to the beach. So naturally, we went to the Colorado Reservoir, and we got there and it was just us, and the parking lot guys, there's nobody else. We walked outside, and in a few minutes, we realized at the exact same time that we heard absolutely nothing. It was dead quiet. There was no traffic, there were no humans, there was no angry yelling or cursing. There was not even wind rustling through the trees, and I've been watching a lot of Homeland recently, and right before anything bad happens in Homeland, there's like 10 seconds of complete silence. So I looked at him and was like, we're about to die. We're definitely gonna die at any moment. So when he talked to me, I said, look, I saw this last night on Hulu, we're definitely gonna die, we need to leave immediately.  Do you know how terrifying that is?  You're not supposed to hear like the stem break, and then it hits the bark along the way. Like you just don't do that. So I basically risked my life in being here today, so you're welcome. So my talk is called Lucky, and before we begin, I have to give you an official trigger warning. There's some not so family friendly content in the beginning, and then there's like a moment, a third of the way in. So now that I've warned you, it's no longer my responsibility. So last time I gave this talk, I was talking to my, oh sorry, so we're gonna do a pre-talk, which is the talk before the talk about the talk. It's like the talk trailer, kind of. So it's 12.35 a.m., it's the night before I gave this talk, and I was talking to my mom. And she called and she said, you know, good luck on your talk, I'm sure you're gonna do great. And I said, yeah, it's gonna be awesome. Don't worry about it, it's gonna be great. I gave this talk like a month ago, it had really good reviews, and actually, let's see what those reviews were. So we went on YouTube to look at how many views it had, and it had almost 2,000 views, and it had only been up for like 10 days. I was just totally crushing it, right? So I said, let's look at some more stats. 14 people liked it. And 40 people, not so much.  It's not racist, I can do that. You can't do that, okay? You can't do that, I can do that. And so she said, Saron, you have to fix your talk. And I go, oh man, you're right, I totally have to fix it, because I'm doing this again tomorrow, and I really wanna make sure it's really good, but how do you know what went wrong, right? It's a pretty rich, long talk, how do you know what to fix? I have an idea. Let's read the comments. I'm sure it'll be filled with rich dialogue, great feedback, constructive criticism, growth criticism, growth feedback, right? Let's see. So let's look at the first one. So this shit, that's not funny, this is super serious, is just whining about race and gender. F in Christ, the Chinese learn about quantum mechanics and are putting quantum satellites in space, and we learn to hate white men. F my Western society up, family lamb. So first of all, I love white people, okay? I have like three white friends.  I've never heard of that before, and I assumed it was something derogatory, so I looked it up, it means like best friend, like a family, it's something positive, which is very confusing. There's no growth feedback in here, so let's move on to the next comment. This one's short and sweet, this is some good brainwashing. Thank you, when I do things I like to do them well, so that's good. You know, my intention is never to brainwash people, it's like not my thing, but if I could brainwash you, that's pretty friggin' awesome. That's a great skill to have. So, you know, I was a little flattered, but again, no growth feedback in this, so let's go to the next and my personal favorite one. How about you talk about coding and not fake societal issues? Effing, social, justice, don't worry, I won't say that word, I won't do that to you. When I showed this slide last time, a friend of mine was in the audience and he was sitting next to two women and he was like, I was just praying that you weren't gonna say that word, I was so scared, I was so scared, don't worry, I won't do that to you. But there's two things. To be perfectly honest with you, I'm shocked that it took this long to get this type of comment. This is the first negative comment, you're just a straight online harassment comment that I've received, and I've been coding for about three years, and I'm just so shocked that it took three years. The day that I decided to learn to code, I told my husband, I said, look, we're black, I'm a woman, and I have a really big mouth. So something's gonna happen at some point, you need to be prepared. When I went to my first conference, my first tech conference ever was also the first time I spoke, was at RailsConf, I'll shout out to RailsConf and I'm already a couple people in the audience. I went there and I was so scared that I designed a t-shirt that said, this is my first conference, please be nice to me. As if a harasser would stop, read it, and then go, oh, this is your first one? I'll have a good time. I'll see you the next one though. I was so afraid of that first conference that I brought my husband, then he was my boyfriend, with me and people thought it was so cute. They said, oh, how romantic, oh, true love. No, that was a security measure. That's what that was. It was strictly a security protocol. And I had a lovely time at RailsConf and I blogged about how wonderful people were, but I was very, very afraid. And if I had seen that comment a year ago, it would have slowed me down. Two years ago, it would have quieted me. Three years ago, it would have broken me. And I'm so fortunate that I'm at a place in my career now where I've received so much love and support from a lot of you in this audience that I can read a comment like that the night before I give the same talk and I can just put it on the slide or we could talk about it the next day. You ready to do the talk? Yeah, I did. Cool. Lucky. So two years ago, I was on my very first podcast. I was the guest of Ruby Rogue, show of hands if you've heard of Ruby Rogues, hopefully. Oh, that's pretty nice. I was on episode 159 and it was called Hacking Education. And it was about my personal journey, learning to code and being a developer. And in passing, I said, I'm very privileged. And this is what I look like when I code. I just turn into a cartoon. And my journey, learning to code, involved a boot camp and some learning on my own. It was very hard, it was very lonely and I was talking about this. And one of the panelists, David Brady said, you know, I'm so shocked that we have a guest who's at four or five levels of intersectionality who just claim to be privileged. I thought that was very interesting. I have my own podcast now called The Code to Be Podcast and we've had some awesome people in the audience on the show. We do a new episode every Monday so you should totally subscribe. And we've done over a hundred episodes. And my favorite part about the show is I get to ask people, how did you get to where you are? How did you do that? What role did things like privilege have to do with your success? And when I think back to David's comment, it was very clear that when he thinks about the word privilege, he associates it with race and gender, which oftentimes means that we're talking about racism and sexism. And these are two very, very important issues in our industry. And we see these issues come up quite frequently. One recent example is by Jesse Frazzle, who used to be a docker and she's an incredible person, very vocal, very open in the community. And there was an article that came out a few months ago that said that one of docker's star engineers got so many death and rape threats that the company hired private detectives to protect her. Can you imagine that? Private detectives? She blogged about her experience about a year ago and said ever since I started speaking at conferences and contributing to open source projects, I have been endlessly harassed. I've gotten hundreds of private messages on IRC and emails about sex, rape, and death threats. People emailing me saying they jerked off to my conference talk video, you're welcome by the way, I do appreciate this ass, is mild in comparison to sending Photoshop pictures of me covered in blood. That's right. I wish I could do my job, something I very obviously love doing without any of this bullshit, however that seems impossible at this point. And when she left, she tweeted, I lost something I loved so much and a small piece of my soul standing up for myself and I don't know if it was worth it. And that's very sad, that's very, very sad. And so when I think about privilege, I think about the ability to either engage in this type of behavior or to just simply pretend it doesn't exist because it doesn't affect you. So what does this mean for the rest of us? This means that we have lots of people who are capable, who are passionate and who are hardworking and are being routinely pushed out directly or indirectly for reasons that have nothing to do with their technical abilities and that doesn't seem good for them or frankly good for us. But the good thing is that we're getting a lot better at addressing these issues. And I have a couple of examples. One is Coraline Ada Emke's show of hands if you've heard of Coraline before. She's an incredible person. She created the contributor Covenant which is a code of conduct for open source projects. And a lot of the tools that we use including RubyGems and RVM and a bunch of others have adopted this code of conduct. Second is this example, Tracy Chow. Show of hands if you've heard of Tracy Chow.  She's amazing. A few years ago she went to the Grace Hopper Conference for the first time and she'd always heard about this issue of not having enough women in the room but there were no numbers behind it. There was no statistics around it. And she felt like if we're gonna have a real conversation about how to fix the problem we have to be able to quantify that problem. So she started asking companies to volunteer their demographic information. And she started just a Google Docs that anyone could contribute to. And she ended up getting, I think it was a couple hundred companies to give their stats. And she was a huge reason why bigger companies like Google and Facebook eventually showed their numbers as well. And my third and final one is a engineer named Isis. She was kind of an accidental advocate. She was part of a marketing campaign one of four engineers at her company, OneLogin. And there was a marketing campaign trying to get people to join the company. And someone took a picture and wrote in the comments something about how she didn't look like an engineer. And she didn't like that. So she started the hashtag I look like an engineer and she asked women to take a picture of themselves and share that photo with the hashtag. And it was absolutely beautiful to watch because you get to see all these women from all over the world, different races and backgrounds and ages and all that showing that I look like an engineer because I am an engineer. So going back to David's concept of privilege it makes a lot of sense. The way that we talk about privilege is usually tied to race and gender. But I don't like that definition because I'm a woman and I'm a person of color and I'm drowning in privilege. One of the most common questions we get in the Code Newbie community is how do I get a job as a programmer? And one of the most common answers is contribute to open source. It's awesome. Everybody can do it. You can build a portfolio. You can build things that people are actually using. It's a great way to show what you can do and eventually get that first job. Show of hands if you've heard this advice. Show of hands if you've given this advice. I guess not a lot of people have asked you, that's okay. So contribute to open source. So let's take a look at this. What does it really take to contribute to open source? One, you have to know how to code. Now I know there's lots of other ways you can contribute as well. You can do documentation and you can do design work and a bunch of other stuff. But if the goal is to prove your technical abilities you have to have a certain level of competency in coding to be able to contribute. Number two, communicate. A lot of open source is just communication.  So a lot of it has to do with just communication and especially communication in English. Number three is time. And by time I really just mean money because you have to be able to justify spending hours of doing free work. And doing that and doing it enough so that you actually build a portfolio probably means that you have some degree of financial stability to justify that decision. And number four is a computer. And I know Dave talked earlier about how that's getting a lot cheaper and more affordable but you still need some type of a machine to do that work. And the fifth one is the internet. Right, you have to be able to log in and push and pull and all that stuff. So if we think about contributing to open source as a class, these are the prerequisites. These are the things that you need to have before you even walk in the room. So how do we get here? How do we get to a place where we have these prerequisites? How did I get here? Let's go back to privilege. I grew up in a upper middle class household. We were born in Ethiopia. My dad came to the United States when I was one and then my mother and I followed when I was almost three years old. We lived in a really crappy one bedroom apartment in DC and then when I went to middle school we moved to a very rich county, one of the richest counties in the United States and then in high school, we moved to one of the richest parts of one of the richest counties in the United States. My parents were pharmacists, which is awesome because I get to say they sell drugs. And I didn't earn any of that. That came straight from their work and their dedication. So if we think about how living and growing up and that type of socioeconomic stability affects us as adults, we have some research for that. There is a study called Where is the Land of Opportunity? The Geography of Intergenerational Mobility in the United States. And here we see this graph, where on the X axis we see parent household income and then on the Y axis we have mean child household income. And we can see a correlation where the more money your parents make, the more money you're likely to make when you become an adult. We see a similar relationship. We talk about parent income rank and college. Your likelihood to actually attend college. And then on the right side, we have the quality of the college you attend. And we see a similar correlation there as well. And so when I think about what that means for me, it means that I went to a really, really good public school. I was in a magnet program for middle school and high school. And being in that type of environment means that I had very high academic standards and everyone around me had very high academic standards. There was no question of whether or not you were gonna take honors in AP. It was how many are you going to take? I didn't know that college was an option. That was a requirement. Let's talk about college. So I have two degrees. One in a BA in Psychology, sorry, a BA in English and a BS in Psychology, which are two degrees that I use every single day. And if we look at college education and income, we see a correlation where the higher the degree is, the more money you're likely to make. Unless you have a PhD, I don't know what's up with the doctoral degree category, but they're not doing, they're not like fitting the pattern very nicely. But we see the opposite for unemployment, right? So the higher the degree, the less likely you are to be unemployed. And let's talk about the liberal arts degree. If you have a four-year degree, you likely had a general studies type of class, right? Where you had to do a lot of things that involve collaboration and a lot of research and writing and working in teams and all that good stuff. And what that means is you have strong communication skills. You spent years doing the kinds of things that lead to having very strong communication skills. Let's talk about computer and internet access. I had my first computer with internet when I was nine.  And I don't know how my mom knew, but she just knew how important touch typing was gonna be. So she made me do Mavis Beacon all the time. I hated her, but she ended up being a very important woman in my life. And when I was in middle school and high school, we didn't have a computer lab. We had many computer labs. We had all Apple products. We had the Adobe Creative Suite. I learned Final Cut Pro when I was 13.  Show of hands if you've heard of an internet desert. Couple people, couple people, okay. So an internet desert is when you don't have basic internet speeds. You don't have enough to do basic web functionality like download a photo or do a video chat. I don't know about you, but I do a ton of video chats for a lot of meetings. I don't know where I would be without that capability. 11 million people in the US don't have access to wired broadband. That's a lot of people. If we think about what categories these people fall in, on average, the proportion of the population without internet access is highest in counties with the lowest median household income, the lowest population density, the highest rural population rate, and the highest poverty rate. So we see a connection between internet access and income. If you look at this on a worldwide level, less than half of the world's population has internet access. That's a lot of people that we're leaving out. Let's talk about health. Did you get your photo? You good? Let's talk about health. Health is one of those things that honestly I didn't really think much about. As you can see, I got all my limbs.  And I have all my senses and I never really had to think too much about it. And that's one of those things that again, I definitely didn't earn because I don't exercise at all. I will take the elevator to the second floor, don't play with me. When we think a little bit about health, we have one million people in the United States who are functionally deaf. 360 million in the world. 1.3 million in the US who are legally blind. 39 million in the world. One in 12 men who are colorblind, one in 200 women. And what that means is there's the accessibility component, which I think is kind of the obvious one, right? You can't do the things that you might want to do. You can't navigate the way that other people might. But there's also a financial impact that I didn't appreciate until I had friends who were going through some very serious health concerns. And there's a financial impact of just health bills, but there's the fact that you have to pay the opportunity, there's an opportunity cost to not being able to actually work and generate income. And then there's the third one, which is emotional stress, which is just being kind of trapped in this body that won't let you do what you want to do and won't let you be who you wanna be. And that's a huge, huge part of it as well. Let's talk about money. My parents paid for my college. Try telling immigrant parents that they're gonna pay for your English degree. That was fun. But they paid for my college, which meant that I didn't have to worry about certain things. We think about student debt in the United States. 40 million people have $1.2 trillion in student debt, which comes out to about 30,000 per person. That's a lot of money. That's huge. And that can really impact a lot of the decisions that you make later on as an adult. We can see that college student loans are the highest besides mortgage in terms of the money that we owe. And that happened recently, that happened about six years ago. So there's a survey where 52% of people strongly agreed or somewhat agreed with the statement, my need to pay student loan debt is hampering my ability to further my career. And I've seen this happen with my own group of friends and people that I grew up with as well, where they had to take the first job they could get out of college, they just had to. There was no room to take a gap year and find yourself. You couldn't take an unpaid internship. You had to do what you need to do to make sure that you could take care of yourself. For me, it meant that I didn't have to get a job. I could focus on building a career. And years later, that meant that I could learn to code. I could take the time and have a bit of a safety net to take months off and learn to code and years later be here and talk to you all. So going back to that question, how did I get here? I'm really, really lucky. And I bet a lot of you are really, really lucky too.  People hate hearing that. People wanna believe that hard work is all it takes, right? I worked really, really hard to get here and I was one of those people. And my husband would tell me all the time, he'd say, okay, sure, fine, you work hard. But luck has played a role in your success. And I'd say, no, no, I didn't. And we had this conversation enough times that eventually I decided to do some mulling over and some research. I read tons of articles, also known as tweets. And you know, you do it too. And I kept coming across this tension between this idea of luck and this idea of hard work. And there were all these celebrities telling me I got here because I worked really, really hard. I think that's actually Kevin Hart's bio says I got here because I worked really, really hard. But here's the thing. I recently left my job at Microsoft three months ago to work on a code newbie full time. And when I was there, I was a program manager for something called Tech Jobs Academy. And it was a four month free technical training program for people who were unemployed or underemployed. And we found people, 25 people who were very passionate and excited about technology. And just for one reason or another, never got a chance to really break it. And guess what I learned about people who were unemployed and underemployed? They worked really hard too. They worked super hard. I had one of my favorite graduates is this woman who had four kids and for years, she found time, one hour here and there to read a chapter of a tech book to get services that were free from the government, to go to the library, to very, very slowly and gradually build her tech career. So by the time I was strolling into my cushy Microsoft job at 11 a.m., she'd already fed four people. She worked really hard too. I'm really, really lucky that I never had to worry about where my next meal was coming from. I was really lucky that I grew up with a level of security and exposure and support so that as an adult, I could take my unburdened shoulders and I could lean in to my work. I was lucky first so I could work hard later. So what happens when technology is dictated by the lucky? What happens when those of us who are statistically better positioned to be successful are the ones who decide how everyone else interacts with technology? When we decide what they do and how they access their memories. You get this. Show of hands if you watch us, Silicon Valley. Show of hands, awesome. Do you remember the scene? I love the scene so much. I love this scene so much.  So the story is the main guy, he's interviewing for a position and they sit him down and they go, oh, this is mind-blowing technology.  It's so incredible. We're just changing the world.  That's the whole thing, just mustaches. And he goes, I don't get it. You said you were changing the world and it's just really cool stuff. And they go, oh, don't worry. There's different kinds of mustaches. And the thing is, mustache filters are super fun. I think I'd look really good in a mustache filter, I'm just saying. They're really, really awesome. But this reminds me of the problems that we're solving. What problems are we solving by having a mustache filter? I think that we tend to solve problems that we understand the best. And usually those are the ones that we experience ourselves. And if we have those problems and chances are we know people who have those problems. I love talking about my problems. It's one of my favorite things.   Because he does this weird thing where he tries to solve them. And I'm like, that's obviously not the point of talking about your problems. And so we tend to solve problems that we personally experience. So what do we do with our luck? We have all this luck and we have this issue where we're just looking at our own issues. What can we do? We can expand our problem pool. And this can mean a lot of different things to a lot of people. But at the end of the day it boils down to expanding your problem pool. Because the more exposure we have to different problems that are outside of our immediate vantage point, then we are more likely to share and spread that luck. So there's a few ways that we can do that. One is to follow people who are not like you. I think Twitter is awesome for this. There are tons of Twitter lists that kind of collect people by different metrics and different themes. Half the people I follow on Twitter, frankly, I don't even like them. I just follow them because I know that their perspectives and opinions are different from mine and I want to have exposure to that. So I highly recommend it. One of my favorite, you can pick people who just look different, come from different industries. My favorite is I love following people who are bilingual and who sometimes tweet in a language that is not English. And it's just a humbling reminder to know that not everyone speaks literally the language that you do and what it feels like to not always understand people. So I highly encourage that. Number two is to volunteer. I get most of my news from Twitter moments and I have no way too much work in Kardashian. But volunteering is one of those things where you're not just reading about someone's problems, it's not, you know, there's no distance there. When you volunteer, whether it's at the local library or at a Rails bridge or an organization like that, you get to meet people who might come from a different background and get to know them as human beings and not just as statistics. And number three is to amplify voices. There are lots of really great people doing a lot of the heavy lifting. A couple of them we talked about early on in this talk, but just a simple retweet goes a long way. Recommending them for a job or an opportunity or a grant or a speaking gig can really help those people out. Okay, so your problem pool is expanded, success. So now what do you do? One thing you can do is you can actually try and solve those problems yourself. But there's also ways that we can take that information and incorporate it into your product. So one obvious way is to think about accessibility. So are the tools that we're using easy to use if I'm using a screen reader? Am I using alt text correctly? Things like that. Then it's considering internet speeds. Are my files small? Does my page load very quickly? And then the third one, I think you'll appreciate this because this is the Ruby community is conventions, right? Creativity is awesome sometimes, but a lot of times just use things that people expect and use it in the way that they expect to use them. And this might be just simple user flows. If you're trying to have a window and kind of trying to close the window, put an X there, don't put like a smiley face, that's just weird and not helpful to anyone. But simple things like that, using conventions and especially symbols and icons that you don't have to know English to use your product.  One is Code for America, show of hands if you have heard of Code for America. Awesome, a lot of people, yay. Code for America is great. And what I love about what they do is they've been around I think for over six years. I believe they've worked with tons of local agencies, local government agencies, and they have a great website where you can see the different community problems that they've solved with technology. It's a great way to learn more to figure out how technology is applicable and it's just, it's an incredible website to check out. The next is the 18F blog show of hands if you've heard of 18F? No, look at, y'all are so informed, I love it. So 18F is great because their whole thing is trying to be a lot more transparent and trying to use technology to solve civic problems. And their blog is great because they tell you how they do that. They tell you the problems they encounter, what's worked, what hasn't worked, they try to keep a lot of things open. It's a great way to figure out how to merge a privilege with technology and coding skills. And the third is the big apps competition in New York City. Show of hands if you've heard of this one? Okay, that's very good, a couple people. So I love this competition a lot. It happens every single year in New York City and it's a year-long competition where they pick a handful of big city problems. So it might be housing, it might be internet accessibility, it might be voting, kind of big problems and they have people create products and you can win prizes. The best part about this is they record a lot of the competition and they have a lot of open public events. So if you're looking for inspiration and things that just everyday developers are doing to help out, definitely check out. They have a website and a page for that as well. So expand your pool and share the luck. So in this talk, you might think that I'm speaking about diversity. Show of hands if you got that impression? Couple people, okay. So let me be very, very clear. This is not a diversity conversation. I don't like the word diversity because it emphasizes differences and it draws lines between us. It assumes that there's an other, a normal and an other and that's just not accurate. That's not the world that we live in. I much prefer the term inclusion because inclusion demands that we think about everyone. It demands that we continually ask the question, who are we leaving out? Who's not at the table? Who should we be inviting? Inclusion is a worthy and a very elusive goal and I believe that if we can think about ways to include everyone at the table and invite everyone to that table, we are much, much more likely to create products that are helpful to everyone. And in that way, we can all be a little more lucky. Thank you. I have a question while they're thinking about it, which is you briefly mentioned like doing Code Newby full-time. What does that mean? Just tweeting? Basically, yes. No, so Code Newby, I started about three, almost three years ago now and it started as a Twitter chat and it was a way for people to connect who are also learning to code but don't have a supportive structure like if they're going to a bootcamp or things like that. And so every Wednesday night for one hour, we would tweet with the hashtag Code Newby and so we've done 133 Twitter chats, I believe. About two years ago, we launched the podcast where you've had yourself and a few other people on but we're actually doing our first conference in April, so April 21, 22nd in New York City and so I'm working on that or working on a new podcast show and we're doing a couple of chapters in different cities. So stuff. Sponsorships, people like you. I had a question. Is this talk available online? We'll be, yeah. Probably like a couple weeks. It's very inspirational and I won't say anything terrible about you. Thank you, I appreciate that, thank you. Other questions? Down low. Don't worry about it. You can chat. Yeah, I feel it's on the way. I just wanted to start off by saying thank you because I wouldn't be here today if it wasn't for you. Oh, thank you. Yeah, but I actually, two questions. One, do you think the internet should be free for everyone to use? Oh boy. Okay. And those YouTube comments are really terrible but do you find that when you read something like that that you think you're doing something right and I don't know, does it sort of empower you in a way? That's a good question. Okay, so I'm going to answer the second one first because that's way easier than the first one. The second one, I remember when I read that and I looked at my husband and I was like, it happened. That was my first reaction, it happened, it finally happened and we were figuring out what to do about it and he said you should put it in your talk. So I think the empowerment part happens when I can openly talk about it. You know what I mean? Because there are a couple of different reasons why I decided to put it in my slide. One, because this is not my problem, this is our problem. So if I need to read that comment, you need to read that comment too. Two, because I have a big mouth, I have a podcast, I talk a lot and I want other people who might have experienced that to know that I'm there too and I'm with you. I think it's a lot better for all of us if this becomes something that we openly talk about and we openly share. So I think the empowerment part comes when we're comfortable talking about it and maybe even poking fun at it a little bit not to take away from the seriousness of the issue but to show that we're not going to let that quiet us. I think that's where the power comes in. I really don't want to answer the first question. I think Internet's really awesome and everyone should have it. I think there's probably lots of consequences to it being free that I haven't fully thought out yet. But I like the idea of it being very accessible. One more question? I can ask you questions all day, but we'll wrap up. Cool, yeah. Thank you. Can we have a microclap? Three, two, one. Thank you. Oh, can I say one more thing? Yeah. Okay. One more thing. If I know you from Twitter, please say hi to me because I get really sad when I leave and I don't get to see people that I will never see again. So please come say hi to me and I would love to meet you. So that's all.


Ready to learn how to lockdown power and smash the finish we're gonna talk about part two of how to throw the discus in this video Check it out Everybody it's Eric Johnson from air today throws nation in today's video We are going to continue from our last video which was kind of a setup We went through some terminology and today we are gonna be talking about pillar five and pillar six So what what does that mean to you? How do we create a ton of power and how do we nail that finish in our discus? And that's what we're gonna be talking about here and you didn't catch the last video definitely check that out We covered some terminology and things that we'll be using in today And if it is your first time here, be sure to hit that like button and subscribe So again one of the things we talk about in the throwing chain reaction is we want to look at how we set up the throw And how that influences throw it happens super fast one and a half to two seconds Most of these athletes are closer to that two second range and we have one advanced high school thrower in this clip But now we're gonna look at things in terms of the six pillars We just looked at one pillar two pillar three right now You can see the positions pillar four pillar five and what we're gonna do is then finish up big and six So the whole point of the six pillars is as you could see it's visual now You see how I have this locked right here. This is pillar five You're gonna notice that each of these athletes are in different mechanical positions And what we're gonna do is again, you can learn a ton by looking at the best throwers in the world So if we're looking at like Sandra Perkovich or Yami Perez the current world champion from Cuba Daniel Stahl Frederick Dakers, you know a number of these guys the thing that you're gonna notice They're doing so many things right They're throwing at a very high level big strong very athletic years and years of work to get to the point Where they're at and now when you look at the developing thrower You see the challenges that you're gonna face as a thrower or as a coach if you are a thrower You're gonna be able to relate to one of these images. You may see your future self You may see your current self and if you're a coach you might be in a situation where you have all of these most of these athletes I've worked with all of these athletes and the ones that I'm not working with they're using the throwing chain reaction system It really helps to keep things organized keep everybody on the same language and looking at the throw for the similar things And that's what's one of the main things so again what we showed you was the six pillars again Looking at each thrower here. You're gonna notice that's different So this is the beginning of pillar 5 and so what we're gonna do is we're gonna take our throwers as they come out of pillar 3 Into pillar 4 and now I'm gonna move you from that transition So right here we start moving and now we're gonna start our pillar 5 and you're gonna see big differences So we talked about radius we talked about high point in the last video and we talked about axis of rotation How do we pivot in on the delivery leg into the throw? And so here's a perfect example this athlete too far too active with the upper body This athlete again younger get too out too active with the upper body If I run it back a click and you look here You're gonna see how they shorten the arm the hips are a little back the discus is a little low This athlete up here You're gonna notice again when we get to that pillar 5 brand new This was the first week this athlete had only been throwing week So this is pretty good position nice level shoulders We would work on kind of maybe making that arm a little longer, but some a lot of good stuff going on here Here's a 10 year old athlete that's super talented hits fantastic positions And we go in the next video when we talk about pillar 3 4 and we go from the whole thing from one All the way through the whole pillar 6 you're gonna see that this athlete has Arguably maybe has some of the best technique here and she's only 10 here's another athlete You're gonna see shoulders a little high discus is dropping down. She comes out of a good high point But her body kind of tilts like this She's new to the system We're addressing strength issues and these are all things that are gonna play into your technical development And then we have this athlete here very talented Has thrown quite far as a 16 year old You're gonna notice the difference that this is on par with what you're seeing with more elite throwers You're gonna notice that the hip position The knee ahead we've got the lower body moving ahead this really nice stretch hips underneath You're gonna create fast rotation and so as we come into our pillar six The thing that we're gonna be looking at right? This is our pillar five So again, what do we want hip under the shoulder mechanical positions? We want to see that knee pushing in front of the toe good good movement here Not as good as a little more up here because the upper body being so active early is pulling the athlete out of position You can see how this athlete's shoulders are behind and again This is where we're gonna use this athlete and this athlete are the best Technically and you're gonna notice when we take it back just to click again And you see right here how the shoulders are level Level you see that and you see how these are open and tilted these are tilted and these are level So the key things that we're really looking for and we get that we call pillar five and you start that power position We want those hips underneath the shoulders and we want those shoulders level that's gonna create a whole bunch of good things You're gonna be able to rotate faster into your finish This is where we're getting down and we're also talking about once we get to that pillar five position Everybody locks it in we want to see that block foot on the ground this one you can see is a little up We got both feet kind of in this direction and we want to see that block foot down a little bit more You can see here. This is good This foot's floating in the air and this foot's getting popped on the ground really nice So they're gonna gauge the block so Mechanically again, this is how we're trying to set up maximum power and lock it down. We always talk about that We want to see those double loaded legs. So we're gonna rotate faster and move into the direction of throw So when you want to create more power into your finish, you got to be down on the ground You want that hip under the shoulders shoulders level and again You're gonna notice that the chest is slightly You got this very very mild angle here Okay, so as you come around you have to move this way if your shoulders are back You'll see this athlete and again that's because the athlete's too active with the upper body And so the athlete's pulling back and this athlete's here now What's going to be interesting as we go into pillar six What we're going to be looking now is blocking this side blocking the leg keeping the foot on the ground Okay, we want to see the long path of the shoulder as it comes out of five Into six you can see this athlete. You can't really see the arm this athlete You can see they're already pulling open this athlete the elbow is coming up this athlete the elbow is up way too high So that's keeping this so she's going like this and that's going to create a shift What are we looking at when we go through mechanically for pillar six? Why was I explaining that because if the shoulders stay level and long and around You're going to be able to engage that block. This is what I think the new athlete does very well This athlete has been a glide shot putter and it's pretty new to the discus as well But you see how she's pulling over and she had come to this practice and hadn't thrown in a long time Again, this athlete blocks, but it was so early that when she stopped here It becomes a slap this athlete again You can see the young athletes pulling down a little bit but stops that block site and what what i'm trying to point out here From a mechanical standpoint, there's a lot of information pull the arm in I've seen coaches who teach that I don't disagree with it But there's a real fine line between pulling in and pulling back behind you see that difference And you're going to notice that the more advanced throwers are going to notice this on the world level That when they hit they stop the block and everything comes around So you're going to see how this athlete is just crushing the hips through great block leg This athlete is working on that but the shoulder and now the elbow are behind the back Elbows behind the back elbows slightly behind the back And now look at this is your more more advanced athlete This is a multi-time national champion and again an athlete that i've worked with since the age of 11 She's 17 now and you can see the the positions Now when you see i'm going to show you this as as we finish these are the positions So look at the lines you can see again You want to see how this athlete the spine lines a little off this one's relatively straight but pulling backwards, right And you can see again this one pulling backwards pretty decent spine line a little bit of a tilt here But everything stopped and still a nice stretch on the discus But you can see our more advanced athlete is really extending the radius and the spine line is a little bit this way Which is what you're going to see with more elite throwers And so as you come through watch what happens as once the discus leaves the hand We're going to see the byproduct of the good mechanical position So as the discus goes and we take everything away, you can see how this athlete is pulling around This athlete's pulled around As we continue to go up on the top athlete arm is still stopped Arm is still stopped arm is pulling around look at the advanced athlete hits Comes through look at the follow through see how the arm stayed with the side of the body So that's going to be really important to understand that block it It comes and everything moves out and around So when we take it back one more step when we look at our more advanced athlete, we're going to see that Watch how the arm stays long When she comes out again Look at that level that shoulder comes up a little if she maintained it all the way around it'd be Even that much better But now you can see as she comes through and hits And again always after the release as we come through the reverse She's coming all the way through and you can see how again recovery On balance block arm still staying with the side of the body Now that's looking at it. And this is what I said briefly at the beginning There's many things you can look at and today we were going to focus on your core positions And those mechanics and understanding those kind of core things. Remember strength rhythm all these things play a factor Into what you're trying to do when you're working on your throw And that's the whole point of our six pillar throwing system We want to be able to show you and look what's more optimal in the position again We want to throw optimally right where everybody's going to have their best way to throw So not everybody's going to throw the same way, but we show you how the six pillars What are we trying to do is isolate and show you what are the core mechanics that we're trying to achieve And then as you get better and better your own style will evolve So remember pillar five is we're locking down power and pillar six is we're really finishing big And that's that monster finish that everybody wants last thing on we look at the mechanics when we look on pillar six Again, look at that knee going in front. Look at that knee going in front watch everything coming around See this athlete is struggling to get that knee And so she's not really able to get those hips around and so she's pulling the upper body And that's why she pulls down and almost pulls off balance This athlete is doing something similar This athlete is new and this was a personal best and again had only been throwing a week So that was a really good thing had been trained on the most recent version of the throwing chain reaction system And had been doing a really great job and this athlete's coach uses the throwing chain reaction system from day one That's what this athlete's learned. She's only 10 and she has phenomenal technique as we go through the next videos coming up Right i'm going to cover the transition from i'm going to talk about how we get speed into the middle and how we create that Big rewrap and high point so that we're creating all this tension that's going to lead into our pillar five six So that's what's coming up on the next video if you guys have questions I'd like to hear what stood out most in this video comment below If there's anything else or any questions you have about this video be sure to comment below Remember if you are interested in diving in more we have nine different drills for pillar five We have nine different drills for pillar six part of our pillar five Drills is what we have is pillar connection is that connection of what that movement of five to six So we have five drills in there for that if you'd like to learn more about the throwing chain reaction system Visit our website click the link in the description and if you missed anything check out the last video And we'll see you on the next video


to the 30 paintings in 30 days project. So every day of this month, at least 30 days of this month, we are going to create a little painting a day and we're going to see what happens. I'm an experiment mostly with watercolor and gouache and let's get to painting and I will see you at the end. Hey guys, we are here for painting number 10 on our 30 paintings in 30 days project and if you're finding this talking part of the video and I'm listed on youtube and it is on listed on youtube and if you're finding it and you're not in patreon not sure how you did that but welcome. Leave some questions comments or concerns you might have in the description in the comments below and if you would like to join patreon it is in the video description. Alright so these are just little studying paintings we're doing trying to do 30 paintings in 30 days and I don't know how far we'll get but we'll see. I am I've got my homemade sort of inspiration palette book here one of a few of them that I have open to a page I currently find interesting I'm using it for inspiration for color and composition not necessarily looking to paint anything one realistic or two exactly like one of the photos shown although I have taken most of the photos myself in this book. Okay we're going to start with a one inch blah blah blah a half inch flat this is a Princeton Neptune uh half inch flat Princeton Neptune is my favorite brush I'm going to grab some sepia I'm not going to clean my palette this time I'm going to just mix the sepia with I've got some green here on the palette I'm just going to mix it around see what comes up add some water a nice swatch wait my brush off so it's just damp and that will allow me to lift up some of the color put some texture in there but it won't remove it completely and do that again these are little study paintings so they could be studies in composition where you're just trying to figure out composition of a bigger piece or maybe a commission painting I do sometimes I whole notebook of little studies drawing and painting studies for clients when I'm doing client work sometimes they're just practice for getting back into the habit of working with a particular medium or you know I want to try a new technique and this is great for all of those so I am just using I got paint where I didn't want it oops that happens sometimes and this color is probably going to stain so let's see I don't think it's going to come up usually watercolor stains I got to find a dry spot my rag is really wet yeah that's okay again these are little studies so it's all right I'm going to go back in again I'm just using what's on my palette sort of inspired by the colors I see in the inspiration photos which were for the most part I believe taken at the Aaron Space Museum here in Oregon where I live and or at the beach back when we could still do those things so they're pictures of rusty metal and unusual bits so we're just going to use them as inspiration to create something abstract but interesting I actually kind of like where this is going I'm surprised but it's good okay I'm going to give that a dry and we're going to take a round brush before we we get the painting any darker we're going to take our ultramarine turquoise here and I'm going to just mix it with what's on the palette I'm not even sure can you see that let's see there we go and I'm going to clean the brush off in my disgustingly filthy water and I'm going to add just a little bit of buff titanium to that and it'll lighten it up it'll also make it a bit more opaque there's all these bits of like rusty tarnished metal in these pictures in fact one of the pictures is actually the bottom of a rocket it might be the Russian one that they had at the museum that had all these sort of turquoise colored metal bits on it which I found interesting okay well those are still wet we're going to go in with the turquoise and just the tip of the brush here just straight out of the pan again as before as stated before in other of these little study tutorials I'm barely touching the paintbrush to the paper I one of the things I love about watercolor is the fact that it really has a mind of its own and you're really working with the unexpected for the most part that lots of the colors especially the way I use them are fairly transparent so you can always see the marks and things underneath I love that I love all of that about watercolor I also love how portable it is okay so we are going to dry that we're going to stick with our round brush and I'm going to pull out some neutral tint I'm going to again I'm just mixing it mixing it with whatever's on here which will lighten it up a bit and make it a little bit more on the reddish and turquoise side which is fine I'm going to add some dark bits between my dots in the white space I'm not going to worry too much about covering up all the white space again we're being suggested right I am again as said before barely touching my brush to the paper so some in my opinion about being successful with paint is learning how to control your brush you will notice I hold it fairly far down too I am not one that can generally hold it way back at the end like this I really sort of hold it more like a pencil in my opinion there's no wrong way there's just you know whatever way works for you I like that all right let's give it another dry okay does it look like anything in particular no but there's just something about it I like and I would do these colors again I do think I'm going to go in with my whiteout pen and just add a little highlight just something like that and yeah there we go you could if you wanted if those weren't too dry although they are whiteout pen they probably derive pretty quickly so you could go back in with your damp little scrubby brush but there you go so let's take the tape off I did get a little brown there but that's good but that's cute little painting so 30 paintings in 30 days there's number 10 I'll be Barry if you'd like to support the free content here on facebook or in the here on facebook holy cow if you'd like to support the free content here on youtube or over in the facebook art groups I certainly would appreciate that you can of course join patreon we do have youtube membership here for a small fee and um also I have an Etsy shop and I have um PayPal tip jar and all that stuff so check out the video description relevant links will also be down there and uh yeah don't forget the most important things stay healthy stay safe stay creative and go out and do something nice for yourself because you deserve it do share your work with me I would love to see what you're doing that's it for now see you later bye guys


Before you say something as a fact, stop and consider how you say it. Often we say something as a fact without any disclaimers, doubts, or leaving a way out for ourselves. For example, today, while boiling eggs, I was about to say to my girlfriend, did you know that eggs boil for a different amount of time in different altitudes? Then I stopped and asked myself, how do I know this? I realized that once when I was living in Switzerland, a woman told me this while we were boiling eggs at a mountain house. That's the only reason I presumed it's true. Is it though? Maybe. Am I sure that the woman had the right facts herself? Nope. Now, before saying this quote unquote fact to my girlfriend, I could go online and do some fact checking, but I also have another choice. Instead of saying it as a fact, I decided to say, have you ever heard that eggs boil for a different amount of time in different altitudes? It's a small change, but a big difference. Now, I present this unchecked idea in a way which makes a hint that I'm not certain of it myself. This will likely prevent my girlfriend from going to others and continuing to pass it on as an unchecked fact too. When I say it in this way, I also give myself space to be corrected. Maybe my GF heard something else. I encourage her to debate and to be curious together. And most importantly, I don't make myself believe something without checking it, by telling it as a fact. Instead, I open up the way to question my own knowledge. I could even say, a woman once told me that eggs boil for a different amount of time in different altitudes. It sounds cool, right? I wonder if it's true. For more critical thinking tips, click here on this playlist that the red arrow points to. This is Rokas of Critical Thinkers, and let's keep creating a culture of critical thinking together.