All right, cool. It's about quarter till now. Thanks for coming. This is a front-end ops session. So we're going to be talking about a lot of cool stuff that you can do to automate your front-end workflow and also automate other pieces of front-end development. And really, this is what I like to call how to automate the process of breaking things, because that's mostly what I did in order to get to this point to be able to share all this with you. So, my name is Chris Ruppel, one consonant short of our favorite content management framework. I'm a front-end developer at Four Kitchens in Austin, Texas. You can hit me on all these things. R-U-P-L is my username everywhere that I can make at that. And then, like I said, we're at Four Kitchens. We're a development shop in Austin. Maybe you've heard of us. If not, we have done a lot of stuff around server performance in the past, namely with a press flow making triple six viable for like integrating with the larger web stack, like MySQL replication, varnish, and that kind of stuff. I have nothing to do with that, so don't ask me any questions about any of that, because I don't know. Also, we're hiring, so if you feel like working at a pretty awesome company with a lot of cool people, hit the link in the slides here. These slides are already posted on my session page, so you can go there and check it out via the schedule if you want, and follow along. If not, that's cool too. There's lots of code examples, and I'll get to that in a second. I've done a couple of contributions to Drupal here. I don't have many of them listed just because I had to pick a few. The big one that I really focus on is the Modernizer Drupal module that, in turn, led me to be able to make some small contributions to Modernizer itself. I've got a pretty cool Jekyll schedule thing that's out there, like, oh, sorry, Jekyll. I shouldn't have mentioned that. And then I've done some work on Drupal 8 way back in the day when it was more like Drupal 7 than anything else, also making it a little mobile-friendly, and although I've taken a hiatus, I am interested in all the Drupal 8 JavaScript stuff if you were just in here for Nod's presentation before. There's some cool things that are happening, so that's me. So this is in the DevOps track, and it's fairly simple compared to a lot of stuff that's going on in front-end, although we're starting to gain these tools in the front-end world. No, this is new, so if you are already familiar with a lot of DevOps and the person that handles all of that in your organization, then I'm probably not going to be blowing your mind with the fact that you can automate some of these things, but hopefully I'll be able to show you a few tools that you can leverage using a system that you've already got set up. Having said that, I'm not going to cover the specifics of setting up Jenkins or anything like that because that's out of the scope of this, and there's other material where you can go and learn that type of thing. So we're going to talk about other things that we can integrate with continuous integration and those types of systems. But like I said, front-end is maturing as a trade, and it really has matured a lot in the last few years, and so we're starting to feel a lot of pain points that people already felt in other communities long ago. So when you break a PHP script, it just gives you nothing, or it gives you an xDbug stack or something like that, and so you either get your HTML to the page or you don't. And then yes, there are other nuances involved in errors in PHP, and you can have lots of weird things, but if you really break something, you're either breaking it or it's not broken. And then on the front-end, because of the way that browsers evolved and because of the way that they have to support all these different scenarios, there's lots of weird subtle things that can happen to your browser and to a mobile phone and to other devices like that that are very, very subtle and unnoticeable until they become this bigger problem. And so a lot of this stuff are things that we just rely on someone to fix and then not break, but we never had any way of making sure that someone isn't doing that and error checking all of these things like CSS, minor padding changes or margin changes, changes to JS files that break things like just adding or removing a semicolon, can delete an entire aggregate's worth of usefulness, aggregates changing when not necessary and that kind of thing, like introducing performance regressions when you don't really need to be doing that. And then also, like I said, there's tools that are evolving too and we need to use these tools because although it's not all about the tools, tools can really help you to provide a better experience to users in a way because if they take out a lot of, if they provide automation and take a lot of tedium away from your work, then you're able to use proper testing protocols and that kind of stuff a little more thoroughly because you've got a tool doing this for you instead of having to like run this automatically. So like I said, there's workflow tools in PHP, there's more than I could possibly name. And so we need the same community of tools built around the front end trade because that's how it can be taken to the next level and be more effective. So there's lots of things now that you can do in front end that are just a few commands away on your command line that were just not even existing two or three years ago. Things like dependency management, automated testing and review tools, and like even holding people accountable for the changes that they make to the code base. So this is not my term and this is a term that's been around, it's kind of been on the tip of everyone's tongue and it's still like a spot that hasn't been explicitly filled in most organizations or really, yeah, almost all. There's a guy, Alex Sexton, that wrote an article for Smashing Magazine describing the ideal front-end ops engineer and so he goes through the whole spiel of what he considers to be front-end operations and there's a lot there. If you go read this article, it is linked in these slides. It's kind of buried in the green there, but you can go read it and he talks about everything from deployment and asset management to making sure that rendering times are staying the same and your browser stack and all that kind of stuff. So there's a lot, lot, lot there. However, we are at a Drupal conference and most people for the most part are just building websites instead of building a product or a huge complex application and so all the examples I'm going to show you today are kind of like starter examples that should get you thinking about this kind of stuff and you can apply it and just build on this and keep it going because these are useful for basically all websites that are being built and it can be taken to so many degrees past what I'm going to show you that it blows my mind when I see what's going on in the front-end world. So the main takeaway today is that we want to change how we work. We don't want to change and be married to a particular tool. The stuff changes really fast, but what we do want to do is change how we're working. Was there a question back there? Okay, sorry. Yeah, I'm a fan of just like stopping. If anyone wants to stop me and ask a question at the end of a section I'll try and put some space in there so we don't have to wait until the end. So feel free if you want to just come up to one of those mics. So in order to deliver the best, fastest site possible we do have to think about our development process and update it a little. My huge perf crush right now is Ilya Grigorik of Google. He's on the Make the Web Fast team, part of the Chrome team basically.  This is something that has to be continuous as you develop. You cannot put it at the end and expect to be successful. And then Fiert, which I'm not even going to try and pronounce his real name, has a great quote here that says, if you're trying to fix a website or make it better, don't take measures without measuring them. That's a bit of an English wordplay, but still don't do something without testing what you're doing. Don't radically change a strategy that you're approaching to. We've got a lot of things figured out in Drupal, like aggregation for example, but if you're going to change something or change the way you're loading your assets, make sure you've got good data that says that this is useful for your target audience. So a lot of these things are going to help you do that. Yes, right? We all agree. Because this question always comes up very often. Yes. All this stuff is on GitHub already. The links are on the session page. Check it out. You can take the code from the slides. It's all freely available. Use it for commercial purposes or whatever. I don't care. And also, actually this is a slight lie because I was like, I don't want to get caught by the Wi-Fi gremlins. But I basically, about 15 minutes ago, took a fresh clone of these slides and basically installed all the NPM modules that I'm going to show you, so I'm not going to run the NPM installs. But the slides should work out of the box. And also, one of the Ruby examples, you might need an RVM version or something like that, but still they should be pretty close to working out of the box so that you can inspect them. So cool. Automating workflow. This is the first thing that we'll talk about here. I'm just going to go over a couple of tools that help us stop doing manual labor. And like I said, when you stop doing manual labor, you can more frequently focus on delivering your work and letting the testing tools just kind of do that for themselves. So automation helps us stay consistent and it helps us deliver a quality product. Grunt, has everyone heard of Grunt? Let's get a show of hands. Okay, yeah, that's decent, cool. So Grunt builds itself as a JavaScript task runner. And what that means is that it does a bunch of grunt work for you. It does all these tedious things that you don't want to do. And it does this in an automated fashion. So you can read more about Grunt.js, but basically it's a set of tools that you run on your computer, on your dev environment, and it basically does things for you that you wouldn't want to do on your own. And then everyone's happy because both the things are getting done and we're not doing them. Hooray! The basics of Grunt is basically it's got a core and then it's got contrib modules, just like Drupal. So what you're going to do is it's all based on NPM, which is Node's package manager, NPM. And so if you're not familiar with Node.js, you don't really have to be to run all this stuff. You're going to see the code examples and see how little we're actually interacting with Node once you install it. And basically we're just going to run a couple commands and then you're done. They do have excellent intro instructions if you want to be familiar with Grunt and the slides contain the examples. Another tool. I'm just going to go through a summary of all the tools and then we're going to move on and look at them. Phantom.js. Phantom is a headless instance of WebKit and what that means is that it's exactly like the Web browser that you're using. I guess Safari, not Chrome anymore. But they're close enough that it's still useful. And so it does anything a WebKit browser can do except there's no monitor. It's all just happening inside the computer. It can, however, produce visual screenshots and that kind of stuff, which I'm going to specifically demo in a little bit. So this thing is really cool and it gives you a console and you can run jQuery and evaluate DOM nodes and do all sorts of stuff. And Phantom is its own tool, which I'm going to show you extremely specific applications of. But you can do tons of stuff in Phantom. Tons, tons more than I'm going to show today. It's a super awesome tool. So, yep, like I said, it's indispensable and if you have a task like taking a screenshot at several different breakpoints or something like that, you find yourself needing to do that to get, like, sign off on a bunch of work, then like Phantom is the tool for you. So check that one out. Docs, API, blah, blah, blah. Slimer, I don't really know. I guess Slimer, like Ghostbusters or something, is the not yet headless instance of Gecko, which is the engine that runs Firefox. And I hope, I'm not positive, but that it's going to apply to Firefox OS as well, which would be huge. SlimerJS is newer than Phantom, so it doesn't have all the bells and whistles, but they aim to be, like, API compatible, so that you can take, like, one script and say, Phantom, do this. Slimer, do this. And you can do them both at the same time, which would be rad. So there's Docs here. And like I said, it actually requires, like, Firefox to, like, do stuff. It's not headless yet. So on to some actual automation here, right? Who here authors CSS and JS? Right? Yeah. Oh, only three of you. Okay, interesting. That's surprising, so do we have, like, an entire group of IT here? Or what's going on? Are you guys just lazy, maybe? I don't know. So the meat and potatoes of Frontend is CSS and JS. I hope a few Frontend people are here to take it, to kind of start imagining this stuff. If you were in the last session about Drupal 8 JavaScript, you may have heard Theodore mention JS Hint. And so what they did was they went through the code base and they made sure that all the JavaScript in Drupal 8 could adhere to strict JS Hint linting, is what it's called. And so basically if you look at JS Hint, let's see if I can... Yeah. Yeah, there we go. So JS Hint is a code quality tool.  We're not going to do that now. But it can basically help you debug and JS and help you catch little mistakes that you might make. So, you know, sometimes you can, like, forget a semicolon and then it affects something that's, like, 30 lines down the document when the parser finally catches up with it, right? And so that's really hard to find, but JS Hint makes this easy. And it does other things like tell you, hey, you're not using this variable to check the triple equals, which is, like, it avoids coercing variables and it's more of a strict conditional to check. So it does all this cool stuff. Actually, you know what? I can show you here some checkboxes at the bottom, so this is a good example. So it does all these things, just for the video later too, including, like, strict or even loose checking of ECMAScript so you can go... defaults to five, and you can go up to six or down to three. And going down to three is useful if you've got IE678 implementations that you want to work with. And then there's all this other stuff too. So, whoa, no. So, like I said, this is a useful tool, but sometimes it's tedious to go and, like, put the JavaScript in there every time. So let's automate this thing. So I'm gonna jump over to the console here and skip the install, like I said. But basically, we're going to run GruntWatch on this particular example. So now I'm in the js-hint directory and I'm just gonna type grunt. And now grunt says it's running a watch task. Now, what does that mean? It says that for this particular task I used a module in grunt called gruntwatch, which what it does is it watches the directory that you're developing in or, like, a theme folder that you're developing in. And it basically does stuff when you change the code. So I've got the code over here and you can see at the top, this file does have syntax errors that will trigger feedback from js-hint. So I'm going to save this file and you can see on the left that it instantly gives me a bunch of errors here. So it spit out a bunch of js-hint output to me that I can now read and grok. And it's saying, for starters, I'm missing a semicolon at the end of this line and it also says on line seven that I didn't do triple equals and we'll just do this again and see how grunt likes it. All right, I'd scroll down but normally you can see it when you... So now you can see it says example js changed again and it's running this stuff again and this time it says that I've got an extra comma here at the end of value two on line 13 and what that means is that I actually run... I ran this with es3 true right here and so that option that I just showed you on js-hint I have enabled for the grunt file and this is just the configuration for the grunt task and what this means is that it's actually checking this and producing errors that IE six, seven and eight would produce also. So I can do two things here. I can either change this to false or I can take the comma away from value two here and I will just change this to false real fast just to show you that there's only one error now and it's actually watching the grunt file itself so when I change the grunt file configuration it automatically fixes some of the other stuff here. So we're missing a semicolon is the last thing and I don't even know where that is but it's okay because it tells me there we go and see it even highlights the little red thing for me so oh great file example js changed we're running it, two files are lint free and it's done without errors so you know that you've produced quality code now you can move on and be assured that the code doesn't have any errors that you didn't catch because js hint has told you hey you're good to go which is pretty awesome I mean people have had problems with JavaScript and like this alone would be like something awesome that would help your day thank you, yeah me too so this is great stuff if you write a lot of JavaScript so cool, that's js hint any questions about js hint? the performance with large files that's a good question, there's not really a problem this is all local development too and I've had installs that have like dozens and dozens of files that I either wrote or vendor files and you can also in the configuration here if you do have lots of files I accidentally set this up incorrectly before and it was actually checking node modules the folder node modules which is bad because node modules, when you npm install stuff it'll go grab 20, 30 packages or something like that and then they all had these strict validation errors this configuration file is just checking top level js files and if I switch this to something like star star slash star dot js now it'll check all those node modules that here I can show you oh now I turn the es stuff off here oh my task is dead oh that's funny well anyway the point is that you can specify different directories and that kind of thing so if you only want to hit one directory that's totally possible so everything is in that grunt file too and you can see that the watch task that I wrote very very simple the watch just checks a bunch of files and then says run it on js hint in fact that's probably where this needs to go but I'm not going to hack on this in the middle of the presentation so that's the kind of thing to watch out for that's a really good question so thank you for bringing out you shouldn't have any problems with this and if you do you just kind of skip the pieces that you don't have any control over upstream packages and the like oh and then also this force flag can allow you to by default it'll just like stop when it finds errors and it's like fix this before I'll even can think about going on generate everything for you so that you can do them in really big passes and then as we just saw you can save your files like normal and you're hinting there are tons and tons of examples of grunt watch and earlier this year we went full in on it for our Drupalcamp Austin site and so we've got a great grunt file with a bunch of docs and also in the back there is Ian who is the mastermind behind all this so I may just like punt it to him if anybody's got like really advanced questions about grunt watch but the grunt file has all these built into it so jshint ugify which minifies your javascript then you can concatenate things into different builds you can minify your images you can run compass you can run live reload you can run jekyll and you can even have flags that do dev and prod build modes for this kind of stuff which is pretty awesome so if you want to build your javascript differently when you're developing or not minify it when you're developing and then minify it in your production you can have all of this stuff running through grunt no problemo any more questions about grunt watch grunt in general cool so performance testing this is a hot topic because like I said if you want to build a fast site you've got to start out by building a fast site instead of just trying to tack it on at the end that will not work as well as we all want it to even though it would be great if it did so everyone's familiar with yslow right everyone's used yslow we've all used yslow that's awesome so yslow is that service the grades front end performance for you and then there are many best practices that are checked here and you get a grade so it delivers a through f I don't know if that's a common grading system but it is common to us pupils historically you had to go to each web page that you wanted to test in yslow but that is boring and tedious so you can capture the data that you need to perform analysis via yslow very easily using phantom so phantom comes with a net sniff .js or net sniff .coffee if that's your thing to allow you to generate har files har I don't even remember what it stands for but it's basically when you look at a network waterfall that is not going to show up here but this network tab basically is what you're looking at when the har is a JSON file that this is visualizing and so you can install the yslow node module and basically get a readout of this thing so I'm going to take this example here this is what you get for there we go I think that's the end of it perfect oh man that's some wacky reveal stuff happening so I'm going to run this command and it's a little big but I'll talk about each piece here before we do it oh actually here it's at the top now at the beginning cut off here is phantom .js that's all it says and then we're going to this isn't going to work in this directory so hold on okay cool so now I'm going to run phantom.js in the examples folder of phantom and it's going to use the net sniff and it's going to look up forkitchens.com which is my employer's website and then the pipe means that it's going to pipe it to yslow and then I've told it to grade me and give it in a plain format so it's going to look pretty in the console right so I'm going to hit enter there's a delay because what it's doing is it's requesting the website and it's pulling down this JSON and then it's grading everything and it's running this node module on the thing here so actually this is like too much information for the screen but here's the basic stuff here and broken out you can see oh we're not using a CDN so we got an F but and this is a terrible conference Wi-Fi and well actually it's not that terrible I take that back conference since this is being recorded so it's actually being pretty good but it's not the it's not the number I want to see when I'm like checking this stuff which is a footnote that I'll get to in a second you can see here that it says that our website is 512k hooray and the overall score is a B which is really not that bad B is for not that bad and then the RL the number of requests that we incurred when we were doing this the RL set and then like the number of milliseconds that it took for the page to load now off the top of my head I don't know if this is the content DOM loaded event or the uh or DOM content loaded and or the page on load which comes much later in the stack especially if you're doing things right but basically you can get this basic information and um if you hook this up to Jenkins and you like push a branch to GitHub and then the WISO comes back and emails you and says like hey by the way I added 1200 milliseconds to your page load time you know that you're not done working because you need to unbreak whatever you broke while you were working unless of course your goal was to add a carousel to your home page and then you've done what you meant to do so that's uh WISO in a nutshell um and then also there are other versions of this um you can do WISO for Phantom um and this is the exact same command in a different syntax actually it's not as it says example.com but you do need to watch out for uh these tools because due to the way they're built you can find significant differences between the tools and so like one test is never good enough um like to get a good margin of error sometimes I'll run like 10 of them just to see what the average is for all of them and I don't have a way of like scripting all that together but you can at least look and see like is there a problem with our Wi-Fi right now or something like that um a lot of these tools aren't going to be handy for local development you want to do this on some sort of staging QA server right so that you're using the real internet with latency involved and all that kind of stuff so does anybody have any questions about WISO cool total experts I like this all right what's up the question was I put the URL the the particular URL is it going to scan the whole website or just one page and the answer is one page it'll just scan the URL that you provide so if you wanted to do this multiple times you'd have to set up the command multiple times and do it for slash about slash team you know slash subscriptions or whatever um but if you put this into a script it's really not that bad and this in particular is very low power like it's not going to pound your server to do this and if you had like 10 URLs you wanted to check no problem it does it in just a second another question is there an equivalent for google page speed automating page speed yeah yeah thank you that was totally unplanned by the way so not to be outdone by yahoo google has a competing service called page speed insights um depending on how you feel about google and yahoo and all that um you might find this one to be more interesting right so it can also be automated by getting an API key um uh and then you can also sign up for their service which right now is free but you have to sign up for a waiting list and they say that this is going to become a paid service so um using the API may suit you better if you don't want to incur a subscription cost later on at some unplanned date but they are being forthcoming about saying that yes this is going to turn into a paid service once we've hammered out all the kinks and we feel really good about offering it um so yes uh google can do the exact same thing um they don't use the letter grading system um they just use a bunch of numbers and they score it uh out of a hundred I think each way or each facet so uh the page speed API is documented quite thoroughly but there's also a grunt plugin for this um so if you were developing on a remote server um you can have this set up to run when you uh like for example like I use sublime so I have to have the files locally and then like when I want to show something on a remote server I have to ftp it up automatically right well you could like put a delay in there and then have your computer do the page speed lookup or the weisel lookup on your remote server as you're developing so everything stays in sync um but grunt's page speed is basically the same thing here um we're going to back out of that one go to page speed so we're in examples grunt page speed in the repo uh that's on the triple con site and so I've already done npm install but I'm just going to run grunt and this is set up to grade4kitchens.com once again and so it's running the task and unlike watch this is a discrete command that you have to run at a moments notice now you could set it up with grunt watch that's totally doable but as I have it here it's just a command that I run you can see that my shell is returned at the bottom of the screen and we're back at the prompt you can see this is a shell because I actually have a shell I'm so proud of my emoji um so here's the uh the results of the page speed desktop task now you're probably thinking in your head Chris don't you aren't you a proponent of not using those types of words well in this case I have to because page speed has two modes desktop mobile so that's their decision not mine and so the grunt plugin basically can do both of them and it's just a matter of configuring it and I can show the grunt file in a second if anyone's interested or afterwards if not too many people are interested um so basically it said here's your url your score is 84 greatness a little harder you can see the green on the side because I set a threshold of 80 so for kitchens.com it says us strategy is desktop and the threshold the score that we're looking for is 80 um you can see here that mobile is set up exactly the same with the same threshold but the strategy is mobile hooray so excuse me um it shows the number of resources the number of hosts that are pulling this stuff um see it complained about CDNs earlier but we are kind of using a CDN um the total request in bytes and all this sort of response time stuff and you can look at these and make sure that your numbers aren't changing or going up too far and all that kind of stuff uh the number of files that you're loading and so forth and so this is great then it tells you a bunch of other more advanced stuff that is when I start tugging on the shoulder of someone at my job and say like how do we do gzip compression um so you want to avoid redirecting and it'll tell you how many times you've redirected because if you're using m dots or anything like that um and um you know leveraging browser caching and all these advanced features right so um these are numbers that you can get out of the page speed plugin and then what I'm going to do here is I'm going to run page speed colon mobile which is uh if you saw up here running page speed colon desktop that's the um what's called the default task in grunt and so it does page speed here and then since desktop is the first thing inside page speed it just picks desktop if I were to move these it would load mobile um instead of desktop when I just ran grunt so now um whoops there we go grunt page speed mobile it's doing the exact same thing although it's simulating a mobile phone this time and look at that it's red so because the threshold is still 80 and I got an overall score of 89 you can see that um it's saying that hey you've kind of fallen below your absolute threshold so you could have this thing basically alert you whenever you fall below a particular threshold rather than having to check it manually every time and same numbers are here it's just done in a different way and it has like a little stricter requirements for this type of stuff because it knows that mobile phones have smaller cache files and that kind of thing so uh that's all good and um and and uh that's basically page speed uh in a nutshell any questions about page speed nap cool um this one is also really awesome CSS regression testing so like I said in the beginning you can uh nudge CSS around really easily because CSS has no scope and so you know sometimes you're just like whoa someone messed up the CSS that's impossible um so CSS can be knocked out of place really easily and we need to prevent this so enter Wraith Wraith is a tool from BBC News and it's open source and what it allows you to do is leverage Phantom or Slimer your choice to take screenshots of two different environments producing a visual diff of those two screenshots holy cow alright so we've got an example here of BBC News and you can see all this blue on the page is stuff that changed just a little and so someone like nudged it out of place or maybe increased the font size a little and it starts to just go haywire basically and this is a super cool thing and then also there's that little blue circle at the top I think someone like added an icon or something like does this work oh yeah there we go um so that's Wraith let's uh do a really quick Wraith uh check here so I'm gonna install it and then we're going to run the default Wraith um so and yeah it's all there so we're gonna run Wraith which is this is a Ruby tool and so this is the command that runs the tool that we're using so what it's doing is it's looking up I believe like BBC Russian and BBC UK and it's checking the slash path so it's checking home and I guess I'll talk a little slower because sometimes this takes a while and you can see it says it's doing width 320 and now it's gonna do 600, 720, 1024, a couple different options here and it's literally loading up the web page resizing the window taking a full screenshot of it saving it to disk and then doing the other domain as well and it's setting all those together and it's putting them aside so what it's gonna do is it's gonna run a diff just like a code diff but it's a diff on the images themselves and it's gonna show us those changes that were introduced between the two domains this one can actually run behind HTTP auth so if you have a really informal user pass on your dev environments and it prompts you to enter the user pass before you hit your dev environment you can actually include that by just saying like HTTP colon slash slash user colon name at my dev domain dot whatever oh now it's doing another one hooray I should have made the config file shorter but basically it's running through all these configs that are sitting there and then at the end it's gonna give us a web page basically formatted web page like we're getting a little too much for our money here which is none so whenever someone comes into a queue and it's kind of cranky at me I learned from I believe I heard this from Gregels originally but just tell them hey you're getting what you paid for but in this case we really are so we're almost done here we got two more 1280s to go and we're gonna see the results which are awesome does anybody have any questions about this while it's finishing up is it just a visual output or do you get some sort of mathematical 99% difference right now as the tool works it just gives you visual output and it crops them and puts thumbnails on this gallery page but I haven't dug into the code deeply but I feel like you could probably produce those numbers if you altered the tool or something like that so saving here it's almost done any other questions alright here we go shots gallery alright so here's the difference this is actually huge it's a lot bigger than it was last time but you get the point so we just did this dynamically and you can see that because I've got this huge cookie prompt at the top it makes it kind of useless but you can run this I think it would be possible to run it with no JS no JavaScript is what I mean but you can see that it labels them all with resolutions and then it moves on to the UK index page here and so you can set up many different config files and these are actually pretty simple so if I show the Wraith configs and actually as I was messing with this I found that it had a config bug which they've actually fixed now so you can run multiple configs they say rake, config, whatever and just run one of them so basically it will put it in the shots here you put your domains right here you tell your screen widths what you want and then paths also so very simple syntax and it does the rest for you very very simple for the people in the back is this something you tend to use for say comparing a local environment to a stage? yeah so the first time I used this it was incredibly useful because we were on crunch for two or three weeks I was just like oh IE8 I'm not going to test it it was a responsive site and I did a bunch of bad things right and so then came time to actually fixing that and so I was like okay let's fix the IE8 problems I made sure that I was fixing them but what I did at the same time was that I ran Wraith after I was done and I produced a zero byte diff on all of my webkit screenshots to confirm that I had not created any regressions while I was doing the IE fixes so the IE fixes had to be done manually in browser scope and VMs and stuff like that but yes you can basically confirm a lot of times what you're confirming is that you're not changing anything so Alan to answer your question a second ago it does tell you the numbers here in bytes but there's no percentage but you can actually like grep through this page that it generates and find that you if it says anything other than zero bytes you know you got a little work to do so you can automate that even further I suppose although I don't have it set up right now but that is something you could also do with phantom because you could look this web page up locally on your hard drive load it with phantom look for these zero byte strings the actual string of zero bytes and that kind of thing does that answer your question mostly cool awesome yeah that's an interesting question was could you use this for design qa getting screenshots from a psd I assume or something like that and then comparing your web output to a static like image that was generated before I don't know if that would be easy to do immediately but you could run through the diff code and I'll bet that that could be a possibility so yes it's technically possible but it's not a feature of this tool right at the moment out of the box but that's a very interesting point well okay so yeah that's also a good point you could put a jpeg of your site up on the website somewhere and then do that type of a diff so yeah that'd be an easy kind of like work around for not changing the tool but just getting a url out of the thing yeah and then also they're working on doing slimer versus phantom comparisons so you load up the same url the same path you're not changing any of those so you're not changing dev environments but what you're changing is the engine which is rendering the web page so you can see differences between slimer and gecko or sorry phantom and slimer which are webkit and gecko you can kind of see the differences between those two I personally am not too worried about that type of thing because it is the web and you've got to like embrace the squishiness and the diversity of everything but still it's something that you want to know sometimes so you might want to compare the two engines any other questions IE IE can't do this you just need a more modern stack that like so the part of the reason is because it's not open source so both phantom and slimer are only possible because the engines themselves are open source and you can fork them and do with them what you want and so that's a that's just how it is but basically Wraith can do all this stuff and if there were ever an IE engine that were produced that like a tool that were to produce this way I'm sure someone would immediately add it to the stack because it would be certainly useful we already talked about this but this is the syntax for multiple configs so yeah I said at the beginning I wouldn't talk about Jenkins at all really and I'm not going to show you how to do this but we do have a blog post up here that illustrates the general concepts needed to automate all this stuff so basically what you're doing is you're combining git hooks and some sort of CI server of your choice so I'm not at all opinionated about what you should or shouldn't use but you basically need those two ingredients a way to trigger things be a version control or disk IE and then a way to do something with that trigger so we use Jenkins and GitHub web hooks they're really easy and we have a blog post here that outlines specifically how you build a Jenkins job so that when you push to master it updates your trunk and while this is a fairly mundane process in terms of CI it does have all the ingredients necessary to get you up and running with your first Jenkins job so I included this just so you'd have somewhere to start if you weren't as familiar with Jenkins and then you can go from there and basically read on your own but by no means even an expert at that so whenever I do Jenkins stuff I have a lot of help from my colleagues and all that kind of stuff but basically you push to a repo it sends a message to your CI server and says hey I've got some new stuff and the CI server says cool I'm going to do something with the new stuff and you're done so in general we have any general questions am I good on time yeah ok cool oh gotcha because this is the DevOps track I'm going to read you some information Drupal.org infrastructure team responsible for all infrastructure for the Drupal project including Drupal.org and all the subsites is looking for help they have too many tasks to deal with and are looking to bring new people on to the team they have a community conversation this Thursday 1pm 13 in room 225 if you're interested come and see how you can help and the URL that I am going to show you is Lee, whoops oh man now I've done it infra team I think I did that right yeah so if anyone's interested in helping out Drupal.org sorry I don't understand are you talking about the large URL underneath it yeah ok cool man so does anybody have any other questions or suggestions no oh really that means I did terrible if no one has questions that makes me feel bad are you integrating any sort of commercial services as both of these open source tools so Slavs or any other speed would be the one thing that's potentially commercial that you might rely on but like I said the grunt plugin just reuses the API and you sign up for a free key it took me two minutes to log into Google and like turn the key on generate it I kind of skipped this part but the grunt file actually has a key thing here which I just basically said read the file out of my file system and so I don't have to stack in my key into the open source repo that I'm hosting and basically then you have 25,000 requests a day but if there were other commercial services that were worth it I would and one that comes to mind is browser stack they have automated Selenium testing or something like that so if you do want to do some of this stuff with IE browser stack might be the option now oftentimes like I haven't had the real need to do like serious like you know weeks worth of in order to like get something right but if I did have to do that I might take a couple days and like go and figure out Selenium on browser stack it's browserstack.com and it's a cool service if you've never used it for QA and stuff we had a question oh he's going to the mic awesome can you mix all these things between scripts in the stuff and phantom test with gaspar or something like that you can mix all these yeah you can totally mix all these so another one that was mentioned just now is Casper and Casper is like an API on top of phantom cause Casper is another phantom and all these tools are built on each other there's another one called phantom CSS which I was initially interested in but Wraith gets you what you want with slightly less trouble in my experience although I have had someone tell me that I was crazy because they found it dead simple to set up phantom CSS so I'm not actually making a claim here but I'm just saying in my experience I found one easy and one hard I picked one based on that basically but yeah by all means mix these together phantom uses require natively now require js and so what that means is that you can load other modules other javascript modules which I'm talking about AMD modules in that case so I think in front of now but basically you can add in other libraries and integrate them and mash them up and do all that kind of stuff totally possible did I see one more hand back there on the other side nope ah web page test what do I think about web page test in like the last talk I gave in Munich last year I advertised it it's good I think it's a great service web page test is good in that you can get our files you can get waterfalls out of the data and also it lets you truly test geographic locations which is fantastic so you can say I want an iPhone 3G from Syria or something like that you know you can just like pick a location or I want to test some sort of like Nexus device from actual Korea you know and so you can do all these tests and with and web page test is a really great tool I'm not up on the level automation that's possible with those but it is a great tool to look into and then actually you can just scan my github which was a link at the beginning of this presentation and there's some slides called front end per for high performance theming or something like that that have a bunch of information about both web page tests and blaze.io which was the mobile version that I acquired so whoops so any other questions cool one last thing here I think this is the right URL no it's not there that's the right URL so here we can do the big thing again so if you could please help me and the Drupal Association out by rating this session it helps me make better presentations and I want to hear like when I was too boring when I was inaccurate about something when I offended you all that kind of thing actually definitely when I offended you so if you could just go to this URL it's j.mp-dcp-fops it's really easy to rate the sessions on Drupal.org and that will take you straight to the page if you're logged in and other than that thank you for coming and I hope you enjoyed it


What range I mean you said you're not using alga bars, so are using three range four and five rain What are you crashing on range bar two and three? Who's I'd go home. Okay, so I'll try threes first because I don't think twos are good twos You understand no two a two range is bad, right? You know what you know what a two rate is the two is not really a bar because that's only two ticks That's a bid and ask it's not a real bar, but you cannot go to range bar twos I'm just telling everybody in case you didn't know cannot do a two range Yeah, we free range free range as low as you can go. All right, cool Press the like button share subscribe and comment below with your thoughts and what you'd learn watch this next video


My name is Lisa Stodzianowski and I'm currently traveling the USA. I thought that I'd share my experiences of seeing America's space attractions for those who might not get the chance to see them for themselves. So today, in today's space pod, we're heading to the California Science Center to see space shell endeavor. Come on, let's go! The first part of the exhibit aims to create atmosphere and excitement as you learn about the role of California in both building and retiring the space shuttle endeavor. A video was presented that shows how Endeavour navigated through narrow city streets in order to reach the Science Center. Behind me, you can see a fuel cell used on Endeavour. This fuel cell can power 115 60 watt light bulbs at one time. We have the wheels from Endeavour that landed on STS 134. And you're able to touch them as well. Members of the public can come up and touch those wheels right there. And behind me, probably one of the most important parts on space shuttle Endeavour is the waste collection system or toilet. On the table behind me, you can see a collection of personal items from the astronaut Garrett Reisman. Garrett Reisman flew on Endeavour on shuttle mission STS 123 where he returned on discovery for STS 124. Garrett Reisman lives in California and now works for the company SpaceX. So behind me, you can also see what would probably be referred to as the crew galley or crew kitchen equipment. And it contains a warmer to reheat food in microgravity and also a water system that can pump either cold or hot water into certain packages of food to rehydrate them. Because of course, most food that goes into space has to be dehydrated. One to save weight because putting stuff into space is inherently costly and you want to take as little weight as possible because it costs a lot per pound. And secondly, the water is removed in space food to allow it to last longer because the less water you have in your food, the less chance that microbes are going to grow it, live in it and spoil it. So behind me, we can see the Rocket Time Mission Operations Support Centre which monitored every shuttle launch from the countdown to the first eight minutes of flight when Endeavour would reach all of it. This is the actual mission hardware used in the control centre to monitor the readouts from the space shuttle's telemetry systems and make sure everything was functioning correctly. Now that meant that the people who built the shuttle and the people who operated the shuttle were actually in different places. So it's a short walk after you leave that part of the exhibit to go and see Space Shuttle Endeavour. You can feel the excitement as I'm rushing towards the door right here. I am so excited to see her. Wow! Hello and welcome to Space Shuttle Endeavour, also known as Orbital Vehicle 105. Endeavour first launched on May 7, 1992 and her final flight launched on May 16, 2011. She flew 25 flights and orbited the Earth 4,671 times. Behind me here we have a Spacehab module and this was the last Spacehab module to fly. This flew on STS-118 with Space Shuttle Endeavour. Spacehab modules are loaded into the payload bay of a Space Shuttle and they provide the crew with extra room to perform experiments and other activities. Behind me here we can see one of the Space Shuttle main engines, otherwise known as an RS-25 engine. This engine was actually flown in space, however not on Endeavour but on Atlantis and you can actually see some damage to the inside of this engine's nozzle too. Space Shuttle Endeavour was named after the ship of famous explorer Captain James Cook who also discovered Australia. So Endeavour discovered Australia and now an Australian has discovered Endeavour too. Thank you for watching this video and I hope you enjoyed this experience as much as I did. Thank you to all the Patreons who have contributed to the making of these space pods and if you'd like to contribute to our space pods too, head over to patreon.com. And don't forget to subscribe to our YouTube channel at youtube.com. Stay tuned and until next time, keep on discovering.


If you've read my book The Plant Paradox, you probably know I've got an issue with the way food companies market food. Specifically, I've got a problem with all the ways they label food to make it sound healthy, even if it's terrible for you. Now there's a whole section on this in my book, but today I want to talk about a few of the most used labels on packaged food. The labels that are meant to mislead you. First, all natural. As far as the USDA and the FDA are concerned, all natural means nothing. They haven't defined it, and since it's not regulated, anyone can use it on their packaging. And even though natural sounds healthy, it doesn't need to be. Sugar can be natural. So can wheat. So can arsenic, for that matter. Now, that doesn't mean you shouldn't buy foods with the natural label, but you should read the packaging first to make sure you're buying food that's not loaded in sugars, lectins, or unhealthy fats. Organic. I like organic food. In fact, I love organic food, but that doesn't mean all organic food is good for you. Organic cows and chickens can be fed organic corn and wheat, which are designed to fatten them and you up. And complete junk food can be organic too. Just take a look at the organic section of your local store. You'll see organic cookies, organic ice cream, even organic potato chips. It may have a fancy label and cost twice as much, but junk food is still junk, organic or not. Another one of my favorites, heart healthy. As a cardiac surgeon, this is my biggest pet peeve. You see the FDA certifies food as heart healthy.  Let me put it this way. Fruit loops, the super sweet sugary cereal, certified heart healthy. Avocado, salmon, and nuts are not certified heart healthy. The heart healthy label has very little to do with what's actually healthy. But it's got a lot to do with what the food industry wants you to spend your money on. Things like sugar, wheat and corn. So don't look for the heart healthy label when shopping. Instead look for real foods that are proven to boost heart health. Foods rich in omega-3s and polyphenols for instance. Gluten free. Okay, let me be clear. There are some people who need to look for the gluten free label for health reasons. But gluten free doesn't mean healthy. In a lot of instances, gluten free foods actually have more lectins than foods with gluten because they're made with rice, corn and lots of sugar. So when you're shopping, don't automatically assume that gluten free is good for you. Or for that matter, it means lectin free. Instead read those ingredient labels carefully. Finally, free range. You've probably seen the free range label on eggs, poultry, even me. But here's the low down about free range. It basically means nothing. It's got zero to do with how animals live or what they eat. In fact, it's completely legal to cram animals full of corn, soy and wheat and to keep them in overcrowded, dangerously cramped quarters and still call them free range as long as they have access to a small patch of grass for five minutes a day. So instead of free range, look for pasture raised or wild meat and seafood. Those animals were raised the way nature intended and had the opportunity to eat the way nature intended. That means they had a better quality of life and are better for your health too. So what's the takeaway here? Labels are meant to mislead you and make you think foods are healthy. That way, you buy more. So don't get sucked in by flashy marketing. Instead, read ingredient lists thoroughly and do your research. It's the best way to protect your health. I'm Dr. Gundry and I'm always looking out for you. Do some squats while you're doing that. Come on. See, whatever you're doing, you can get some squats in. If you watch it, this is going to be an outtake. I can see it right now.


By homeostasis, we understand that there are certain variables which need to be maintained in a nearly constant range. For this to be possible, mechanisms should exist which can actually monitor the value of the variable. This is done by a sensor. It is also known as a receptor. Body has various receptors which detect different types of variable. For example, chemoreceptors for detecting the levels of oxygen and carbon dioxide, baroreceptors for detecting blood pressure levels. The information from sensors is conveyed to control center via afferents. The function of control center is to calculate the difference between the value of the variable with that of the required value of variable. This required value is known as set point and the difference between them, the measured value and the set point is known as error signal. After that, control center sends information via afferents to certain cells, tissues and organs to bring about a change in their function. These physical entities whose output is altered based on signal from control center are known as effectors. And their output is known as response. To give an example, a change in blood pressure is detected by baroreceptors and information is conveyed to control centers in medulla which bring about changes in other variables that is heart rate and contractility and the effector will be heart. So the monitored variable is blood pressure, sensor is baroreceptors, control center is medulla. The effector is the heart and output is heart rate and contractility. Now due to the change in the response, there is change in blood pressure towards the set point. Now if you see, change in effector output brings about the change in the monitored variable. This is the effector output, this is the monitored variable. This monitored variable is also known as regulated variable and the variables which are manipulated to keep regulated variable in a near normal range are known as controlled variable. So here heart rate and contractility are controlled variables. So in case of BP example, heart rate and contractility are controlled variables while BP is regulated variable. This is a classic example of negative feedback control system. So you see, control system has many components. One is the regulated variable, other is a sensor, then there are afferents, control center, efferent effectors and their response due to which there is change in the regulated variable. But this is a very simplistic form of negative feedback system. In body, depending on various circumstances, each of the components of control systems can be changed. So there can be change in sensitivity of the receptor so that the measured value is less change in afferent response from the receptor and also change in the set point. So all these changes will lead to change in the error signal which is generated. Also there can be change in the efferent output from the control center. This is known as change in the gain of the system which will be dealing somewhere else. One example of change in the set point of the system is change in the set point of blood pressure during exercise because in exercise we want blood pressure to be high. If this control system works normally, then it will not allow blood pressure to remain high. It will tend to bring it back towards the previous normal range, previous normal set point. So in exercise this set point is changed and this feedback control system works at a different level. So these are the basics about negative feedback control system. However, in body there are other types of control systems also. Not all are used classically to maintain homeostasis but to continue the proper functions of the body they are important so they are dealt somewhere else.


with a lot of open space, and the cherry is going to have a 4-2 here. If they work this well, Kings of Wilson, Brooks at the back post, Gosling through the middle, equaliser, scintillating, brilliant!


For today's activity you'll need a pair of pliers, needle nose works best, scissors, a paper clip, a straw, it could be a bendy straw or a straight straw, some clay or dough, a rubber band, tape, and a 3 by 5 note card. Hi everybody, I'm Ginny Payne and I'm with Russell County 4-H. And I'm Deborah Stewart from Lee County 4-H. I'm Trent Carboni with Talpus County 4-H, and today we're going to show you all how to build a miniature bow and arrow. Okay, after we have our supplies, we want to grab a large paper clip and bend it as straight as possible. Once we have it good and straight, we will give it an arch, sort of like a recurve bow, or give it the shape of the bow.  This hook is going to provide support for your rubber band. Make sure you bend it in pretty tight, but leave a small opening for your rubber band. Now we're going to take our rubber band, fasten it to the first hook, use our needle nose pliers to close that really tight so the rubber band will not slip out. Then you're going to take your rubber band and twist it to give it some extra resistance before you put it on your hook. You can make this as tight as you would like for it to be, just a couple of twists can do. Attach it to the bottom hook, then take your needle nose pliers again and make sure your rubber band is down in the bottom of the hook and pinch it tight. You're going to grab a piece of scotch tape, make it as small as possible. You can tear it in half if needed. You're going to attach it to the middle of your rubber band. This works as the knot to hold your arrow in place on the string. Wrap it as tightly as possible. To make your arrow, grab any straw. One I have is a bendy straw. Your arrow can be multiple lengths. Definitely cut off the bendy part of the straw and I think I want to make mine a little shorter. It's a little long for the arrow that I have. I'm going to cut mine. Then take a little piece of dough or clay and put it in the top end of your arrow. Now you want to take your scissors. Make a small slit at the very bottom of your arrow. Make sure to not make your slit too large, just a very small slit which is going to sit comfortably on your rubber band on the arrow. After you make your arrow, you may choose to add fletching. You can do this with using an index part and scissors and a small piece of scotch tape. Alright guys, so you know you can't shoot this at each other. So what you got to do is now you got to make a target. So you can go and if you've got a printer at home, you can print you off some targets and shoot at those. Or you can make one with a simple paper plate. Just flip that paper plate over, draw you a few circles on it and you're good to go. Our miniature bow and arrow is a great introduction to shooting sports. In Alabama 4-H we have nine different categories of shooting sports that you can get involved in. Contact your local county 4-H agent to see what programs are offered in your area.


textbooks and college have a really difficult relationship. Buying textbooks for the under division physics and math classes can cost hundreds of dollars every quarter and honestly they're not very good references so I kept most of my textbooks through college but I got rid of a bunch of those intro ones. Some of them like in calculus I had to buy multiple versions of the same book and none of them were useful down the road. I have a couple textbooks that are particularly memorable though. This is the textbook for my very first class in college. It was an 8 a.m. elective class. Bioscientific etymology, the meaning of words. I knew I wanted to be some kind of engineer or science major so I thought being able to learn more Latin and Greek roots of science words would be a useful skill. It turns out that is actually a really cool thing and I wish I knew more of this book but it was a bit dry for 8 a.m. for an 18 year old. Of course I've got a lot of astronomy textbooks. I've shown some of them on this channel. The best textbook for a basic understanding of astronomy is called Bob. It is big, orange, and a book. Bob. This is Carol and Osley's modern astrophysics. I find Bob to be a critical reference even in my day to day work. With a PhD in astrophysics I have never once found a need to open up Griffith's quantum mechanics. Except to prove to people that the last word in the book is actually gullible. It's true. My favorite textbook and actually my favorite class in all of college was Shakespeare.  There's nothing particularly special about this copy of Shakespeare other than it's got a whole bunch of it in there. That was absolutely my favorite class in college. I needed to take an English or a literature class for general education credits. All the creative writing ones that maybe I wanted to take I couldn't get into were full. I think the class course number was English 235. Introduction to Shakespeare. Over the 10 week quarter we read 8 or 10 plays but what made it and what makes almost every class is the instructor was phenomenal. I think he was like a postdoc, probably a little younger than I am now. I took the class in spring quarter and the instructor had just landed a tenure track faculty job. It was the perfect combination. The instructor was young enough to be energetic and relevant. He didn't just have us reading and discussing the plays. He brought in movies and film clips and it was before YouTube so there weren't YouTube clips yet. There was like words on the internet you could read that were interesting and I have to believe that it was probably the most relaxed an instructor ever could possibly be knowing that their job is secure and all they have to do is teach this class and they're out. So we kind of throughout the syllabus they normally taught out of and just seem to have a lot more fun doing it. I think the combination of energy and relaxed joy really made the class. I got like a B plus or an A minus but it was by far the most impactful and fun class that I took. That class was almost 15 years ago and even though I'm not a great thespan I don't get to the theater that often it honestly made me some kind of a lifelong fan of Shakespeare. To me that seems to capture the point of general education. I learned about how to digest and analyze literature. I walked away with an appreciation for an art form that I knew very little about and here 15 years later I'm still thinking about it.


Steve Jobs says, he sees himself as the intersection, at the intersection, of art and science. And I would just shift that slightly and say I think we're at the intersection of people, art, and technology. And in a way, in every circumstance, it's different. It's one of the great pleasures. The need to get people to want to go down was crucial here. And you know, people tend not to want to go down. And of course, what had been down here before over the years had always failed. Well, you understood what was available below grade. And you had this terrific need to go down effectively and with a sort of, in my view, particularly with Apple, but in any case, a sort of spare vision. And you also, so we looked at a number of alternatives, and then it just saw, you know, a number of seeing and sketching. A cube is a really good solution. You know, Steve, it's a great solution, actually. You're on the center line of this building, which isn't a great building. I mean, it went behind us. But still, it has a strong attitude. You're crossed from the Plaza Hotel on access. You are seen in a glance as you come by on Fifth Avenue, you know. So it's got to stand forward on the corner of Central Park. So how do you simply bring people down? I mean, it's not just bringing people down. You're making a window for the underground upwards into the sky and the city. And how do you do that? How do you get it just right? That's how we did it. And then we looked very hard, began with very hard at its scale, varied it even by two or three feet. And that was really interesting. And of course, by we, I mean, we did it with Steve, of course, and with Ron Johnson, Bob Bridger, and of course ourselves. How do you get that just right? It's highly intuitive. You can go through all the arguments and all the words. By the end, it's good intuition. Speaking of what attributes are useful, it depends. But my first partner, Dick Powell, who retired, I don't know, he was older than I was, maybe retired almost 20 years ago now, 18 years. He said, before he retired, he said, Peter, he meant this in a pejorative way. He said, Peter, you treat this corporation, which is our practice, like a hobby. He meant that as a sort of negative observation. It wasn't, because you really need, you know, you may, you have to look at things in a rather serious way. But if you lose the sort of childlike quality of looking around and imagining and touching people, you've lost it. At least, I think you've lost much of the possibility of doing extraordinarily good work at least on occasion. There are so many different attributes that can affect what you do. I believe in making humane buildings, but I think it is humane. And I think of that as a sort of soft modernism. I don't mean soft headed. Just mean somewhat touchable. And I, you know, I see examples of that in the past. People that I find touchable. Beyond that, I think you must visualize well. Although I've worked for one or two architects before we started up practice, who were very good architects, we couldn't draw very well. And I think it's handy to be able to draw, because that means you can visualize. And, you know, you can make the connection between your body and what you're thinking about, and so on. But I think desire is the most important thing. I think we enable people at our best. For instance, you know, that early house that I did for my mom and dad in Connecticut in the early 70s. I don't think you change people, but you do. You can enable them. I think I enable my mother. And you figure, I figured her out, like in her kitchen too, within six inches, of really how she operated and how she liked to operate. And I knew a bit about how she understood the world and what interested her. And also, and so gave her those opportunities. And I think whether you're dealing with a university or dealing with an individual or whatever, whether it's how they grasp a rail or how they see how the light is, or how the materials, you know, people see a history of a material like stone for instance, how there's magic all around them. And I don't mean that in a superficial way, because, you know, we may think we're rational, but we're also emotional beings and how to affect people. So I think we can have extraordinary effect. And we have to keep looking for ways to do that. Looking ahead is always hard, and we do tend to misjudge often. I would say, one, it would be interesting to see what our present economy would affect it has on all of us, and on young architects. I'm not sure it's all going to be negative. Some people can say, oh, it's going to be terrible. Put us out of business. Everyone's going to lose their job. May be true. But that, too, would somehow be an opportunity. I don't mean a crash opportunity. I mean, it will open other doors. As long as there are people, there will be a need or a desire and a need therefore for help from people like us, whether to sort out the world and help shift it, and the most mundane challenges in one hand, which are often fascinating and on the other for to make places that are emotionally compelling and again are enabling. I don't think people are going to lose that. Now, maybe those people won't be called architects someday, and maybe they will. And I'm doubting they may be a bit different, but I believe those requirements on money on the technical and sort of somewhat sensible quotes, needs, and on the other, the issues of people's emotional qualities are going to be with us as far as we can see into the future. And therefore, there's a world for all of us.


how do we train this stuff? Well, there's a lot of ways. So before I get into that, we could say, all right, I can ask you the question, what is each one of these cars, right? So it's not yellow, orange, yellow, right? You know, that's just the color. We could talk about what actually those cars are. And I think the first one's kind of a, it looks like a Corvette. It looks like some weird model of a Corvette. It might be a, you know, some type of concept car. My second one kind of looks like a Lamborghini, not 100% sure. And the other one, L, I don't know, type R, some type of Toyota, whatever that is. Anyway, so the idea is, can you discriminate between those things? And maybe you can, maybe you can't. But we could train you to, right? So to develop stimulus control, the first thing we're going to do is make that discriminative stimulus distinct. We're going to make it clear. We're not going to be, you know, we don't put a, you know, for a stoplight, you don't put a red light up and a slightly less red light up, you know, one means go, one means stop. You have, you know, dramatic differences between those lights, right? You know, same thing with these cars. There's dramatic differences between the cars, at least between the two yellow ones, there's dramatic differences. There's fewer differences between the yellow one and the orange one, other than color, right? But the shape is going to be somewhat, they're both more sporty, they're both lower, you know, that type of thing.  The other thing that you want to do is minimize error, right? You can add verbal cues, right? To help you make incorrect responses impossible. This gets back to something called airless discrimination training, which we'll talk a little bit about in another context. But the idea is that you want to get people reinforced for proper behavior. You want to spend more time trying to get them to get it right, and reduce the amount of errors they're going to make. So if I show you that first car, and I say something to the effect, I could add a verbal cue. So here's the, okay, the first car is going to be a Chevrolet. A Chevrolet makes one really fancy sports car, and that really fancy sports car is a, you can answer it, say Corvette, say you're right, it's a Corvette. So let me show you the picture. Here's a picture. What is this? This is a Corvette, right? The idea there is that I've added so many verbal cues that you basically can't get it wrong. Excuse me. And then we can start to do that again with the next one. A Lamborghini looks like this, or whatever, and we can go through and do the verbal cues until I show you the picture. So this is a Lamborghini. Now I can show you the two pictures, say, okay, choose the Corvette, and you choose the Corvette. And then I would change the stimulus a little bit, get a different picture of a Corvette, different color, picture from a different angle, you know, that type of thing. And so I'm really teaching you that what that Corvette looks like as a whole versus the Lamborghini. Lots of opportunities. So give people lots of chances to learn this stuff. You're never going to learn the differences, the fine details between a Corvette and a Lamborghini the very first moment you're looking at. You're not going to learn all of them. You'll learn some really obvious ones. But the more you keep trying each one of those learning about those discriminations and learning to tell the difference between those things, the more information you're going to be able to pick out. You might even ultimately be able to see a small little piece of the car and identify what it is. I've been involved in the car show world and the car club world for a lot of years now. And one of the things that we do is judge cars. And so in car shows, we've got to do the judging and evaluation of cars in order to give out the trophies and all that fun stuff. And part of that judging is about discriminating what is a quality paint job and it seems easy on the surface, right? What's a quality paint job and what's not. Well, when you've got two $10,000 paint jobs sitting next to each other, how do you tell the difference between them? It's not easy.  And the idea is that you learn to discriminate what makes a perfect paint job and what doesn't. Same thing goes for cleaning a car. Who spent, how did they clean it perfectly? Did they clean everything, including behind the brakes? Stuff like that. So we actually get down to that level of detail when we're doing car show judging and stuff. But the idea is I've had a lot of trials and I've been doing that since what, I don't know, 92, right? So I've had a lot of opportunity to learn how to discriminate between a 100-point car or 90-point car and 80-point car and so on and so forth. And you can also use rules. That really helps. Again, there's a verbal requirement here. But using rules is a very useful feature. And it allows that learner to know what's going on. In fact, when we teach people about how to do judging for car shows and we actually have a video and we walk people through and we have the rules listed. And so we list rules 1, 2, 3, 4, 5 and then examples of those rules and then do another set of rules 1, 2, 3, 4, 5 and so on and so forth. And it just makes it clear for people to be able to discriminate between the types of things you would see if you're judging a car show in order to be a quality judge. That's all about stimulus control. All right, I'll talk to you again soon. Enjoy.


Hey, Psych2Goers. A taboo topic in our society is speaking ill of our parents. When we bring up our own traumatic events regarding our parents, we're shushed and shunned with phrases like they did the best they could, they did everything for you, or the usual you're ungrateful. While our parents might have met well, it's undeniable that some are highly toxic. The consequence of this lifetime of toxic parenting is an adult who continues to suffer from an unhealthy perspective of love and relationships and a lack of understanding of their own emotional and mental needs. So, with that said, here are 10 characteristics of highly toxic parents and how they affect you. 1. They're hypercritical. Criticism from parents is normal. Well-adjusted criticism can help you see the flaws in a plan and make better choices for yourself. However, if your parents are overly critical of you on a regular basis, this is a toxic trait. This constant criticism and sometimes comparison can make a child feel like they aren't good enough or at fault for their parents' constant attacks on them. This result is an adult who has a harsh inner critic as a constant companion. This inner critic can actually sound like your parents' voice, telling you detrimental things all the time. 2. They don't allow you to express your true feelings. Healthy parents are aware that their children have emotions and opinions too. They welcome the expression and discussion from their children. Highly toxic parents don't have this awareness. Highly toxic parents take a child expressing their confusing and difficult emotions as attacks on their character. There are no individual feelings, just a few collective emotions. This being dismissive of their children's emotions can result in depression, according to the American Psychological Association, because their true self is being suppressed. This results in a child who can't express or identify their own needs as an adult who suffers the same and aims to please everyone because that's what they know. Are you having trouble staying productive? Is stress and anxiety stopping you from getting a good night's sleep? We'd like to thank Endel, our sponsor for this video. Making you sleep, relax, and focus is what Endel does best. With their personalized soundscapes, they can create feelings of comfort and safety, boost your productivity, and even soothe you into a deep sleep with their gentle sounds. With their AI-powered core technology, Endel adapts in real-time to personal inputs such as location, weather, and time of day in order to create the most effective music possible. With their extensive backing in neuroscience and innovative technology, un-productivity and sleepless nights are a thing of the past. Right now they have a great deal. The first 100 people to download Endel will get a free week of audio experience. Check out the description below for this limited and exclusive offer. Number three, they compete with you. Being competitive is a good thing that can help you become more resilient and confident about making your dreams a reality. Having parents that inspire you to exceed in what you want to do is a blessing. Toxic parents seem to view their children as competitors. They might derail your success or goals by using sabotage and belittling your dreams and accomplishments. You end up not feeling confident in reaching your own goals. Some highly toxic parents are quite jealous of their children and the opportunities that they have. So they might overtake you in your goals or force you to live their own long gone dreams. Number four, they don't see their children as individuals. Highly toxic parents or HTPs see their children as extensions of themselves only. They want their kids to follow in their footsteps or live out the dreams they never got to accomplish. Because they see their kids as small versions of themselves, they fear the kids being autonomous and leaving them so they prevent them from being themselves and functioning as an individual. Any undesirable behavior that can make them look bad is ridiculed, both publicly and privately. The child becomes an adult who doesn't have a separate identity, nor do they know who they are. Number five, they control their children using guilt and money. Healthy parents can give gifts, affirmation and physical affection without expecting anything in return because they know it's not a business deal that requires reciprocity to make it work. They do it because they want to and love to.  If the child doesn't, they're reminded of the sacrifices that the parent made and everything they've done. Children become afraid to ask for help and for things that they do need because they'll be asked to give something back that they don't want. They may turn into suspicious, distrustful adults who question kindness and doubt people's intentions. Number six, they always put their feelings first. Putting your feelings first isn't bad, but if you do it often and at the expense of others, that is a toxic trait.  By not considering the family's feelings and opinions about family matters, these parents force their kids to hide their true feelings, to please and soothe the parent. This can result in an adult who lies and hides who they are and downplays their own needs and feelings. Number seven, they demand your attention and praise. Toxic parents can't live without attention and praise. It has to be positive, of course, and you must give it often. Well-adjusted parents know that their kid needs to be their own person, away from them to grow. HTPs constantly demand your attention and interaction. This forced bonding is tiring and time-consuming for children. They may turn into adults that struggle to say no and suffer through things they really don't want to do because of leftover guilt. Number eight, they withhold love as a form of punishment. Being punished by your parents is necessary to learn that consequences exist for actions. However, healthy punishment options exist. HTPs will often use the silent treatment on their child to discipline them instead of expressing their displeasure in a productive way. This passive aggressiveness makes the child feel pressured into solving a problem that they didn't even cause. They may tell their kids that they don't love or like them, give them short, rude answers and dirty looks and refuse physical touch. This manifests in children who hide the truth from their parents or engage in worse behavior if they believe that their parents don't care about them. Number nine, they give no apologies and take no blame. Well-rounded parents aren't perfect people and they're aware of this. They know that their actions can and do have unpleasant consequences and they communicate this with their children when they hurt them unintentionally or intentionally. HTPs are not in that group. They are not self-aware or focused on self-improvement. They always see themselves as the victim. They're too preoccupied with judging people and blaming everyone else, even their own kids. They refuse to give an apology because they believe that children aren't worthy of them. This makes the child feel like the wrongs done to them don't matter or need correction. So they become adults who don't voice any grievances and suffer in silence. And number 10, they ignore healthy boundaries. Well-rounded parents know that having boundaries is good for themselves and their children because it teaches them self-respect. They will knock on the door first, allow you privacy and encourage general communication within the family. HTPs don't know what boundaries are. At least not in regard to their kids. They give little to no privacy. They trample all over boundaries and force an enmeshed dynamic in the family where you can't tell where you start and the rest of the family ends. Parents who display this toxic trait make it difficult for children to recognize, set, understand, and maintain boundaries. This child becomes an adult with little understanding of healthy boundaries and respect for others. So do you relate to any of the things we've mentioned here? If you come from a home where you didn't receive unconditional love, affirmation, security, practicing independence and individuality can help you break this cycle and be a better, more adjusted, secure person. It takes a long time and a lot of work, but it's rewarding in the long run. While it may not be simple or possible for some people to leave their toxic parents and guardians, action does need to be taken to start healing. If you are a victim of toxic parenting, therapy is extremely important and helpful long term. If you're a parent who sees these characteristics in yourself, help from a mental health professional can help you break these negative patterns. Did you find this video valuable? Tell us in the comments below. Please like and share it with friends that might find use in this video too. Make sure to subscribe to Psych2Go and hit the notification bell for more content. All the references used are added in the description box below. As always, thanks for watching and we'll see you next time.


Peter has a quick tip for us. John Peter says, did you know that when you are on the desktop of your Mac so you know highlight an icon on your desktop or or otherwise don't have a window highlighted in the finder command plus and command minus will resize your desktop icons had no I didn't even know that you could do this let alone knowing that you could do it with command plus and minus evidently you can do it if you go to finders you know view options in the menu there if you're on the desktop and you can there's a little slider and of course hitting command plus and minus moves that slider but had no idea it's not in the shortcut you know it's not in the menu there's no yeah yep it's just one of those hidden things beautiful little quick tip I love it and we got this from somebody else I think listener Mark sent this in this morning to perhaps yeah it's a it's a good one so yeah thanks for that Peter good stuff


There's a lot of people in our studio who grew up with Mortal Kombat. People remember seeing this crazy arcade game. There's a nostalgia factor that people connect with. We created this thing that became way bigger than we are. This whole game is a part of my life and has been for 20 years. It's incredible to actually, you know, work on one. It's cool seeing the evolution of the team and the evolution of the tech. This is the Mortal Kombat that we've always wanted to do. Scum! Mortal Kombat X has a lot of different competitive modes, a ton of content for the player to be able to play. We have Story 1v1 ranked. We have King of the Hills, Survivor Mode, Tester Luck. The dynamic towers are amazing. They're going to be switching some of them on the hour. We want players to feel like they are in this universe. They are seeing the story evolve. With Mortal Kombat X, the span of the story is actually 25 years. Now we have a whole new generation of the characters, and so that's going to be really exciting to see how the fans take that. The story mode in Mortal Kombat X is just amazing. It is a blockbuster movie within a game itself. I think if we weren't trying to innovate something that we wouldn't be motivated, adding something to the game that's never been done before, we're going to have a much more aggressive and elaborate online experience. We really wanted to build on the whole community feeling. We're finally able to globally connect everyone that plays Mortal Kombat. First thing you do when you're playing Mortal Kombat is pick a faction. We have five different factions. We have Black Dragon, The Brotherhood of Shadow, the Lin Kuei, Special Forces, and the White Lotus. But with the faction mode, we want to really tie that together and give context to it and give it bigger stakes. So everything you do informs this war. The faction war is a persistent metagame that kind of builds off of the core game. Every week we start a new war, and everyone's adding in every day, all the way through the week. And at the end of the week, a winner will be determined based on how many points have been accumulated. You're also able to rank up inside your faction and unlock custom awards that are specific to the factions you've joined. Everything you do in the game is contributing to your faction points. So when you play story mode, you're adding to faction points. When you play these towers, you're adding to faction points. Defeating people from other factions gives you even more points. So it really kind of encourages the whole competitive aspect of, you know, we are a team here and we are out to defeat other factions. And then for a special 24-hour period that happens randomly each week, the whole faction system can be invaded by one of the more powerful realms, such as the Netherrealm or Outworld or Chaos Realm. People I think are going to be really excited to work collaboratively with other players as a team to defeat a common enemy. One of the great things about factions is to let people at very different skill levels or people who like different modes all contribute to the war. There's something new every single day that they haven't seen before. So this is the first time we've ever done any sort of system that kind of connects everyone together. We keep the heart of the game the same. The combat, the field, we give the player a lot of new options. Every Mortal Kombat game, we try to make sure that the fans, when they play it, it will be something that they've never experienced before. My anxiety would be if we weren't adding something. We really took the next theme very seriously. With the next-gen technology, we could pretty much do anything we imagined. It's the next generation of the Mortal Kombat universe.


Amazing winter and Christmas ESL activity your students will love, write an article for a local newspaper. Wow look. It's all white outside and everything is covered in snow. What is happening? Write a news article or announcement for the local newspaper to break the news of this event. Are you ready for winter? Did you purchase all your Christmas gifts? Do you have a warm coat? Imagine how this is going to affect your neighborhood. This is a fun activity to report a real life emergency. It's especially fun to play in a Tefl destination where winter normally doesn't happen, and the students have never experienced snow. It's also helpful to show some more visuals to get the students thinking.


All over the internet are these little scammy ads about Candida and yeast. Discover the one little symptom that's causing your Candida overgrowth. Now Candida and yeast symptoms are very very common in people and I don't think they're that special. I don't think they're that new and I do find that they are mostly very treatable with Chinese herbs and formulas. Now in this video I thought I would talk about this topic a bit more because it is one of the most common issues my patients come in with and one of the things that I find is very treatable with Chinese herbs but people come in with I think a very flawed philosophy of why it happens and how to make it go away for good because these symptoms so often keep coming back so I thought I would share this my experience in today's video. Hey guys Dr. Alex Hine author of the health book master the day Chinese medicine doctor now before we jump into this video there are two very important links right below it the first is if you'd like to become a patient of mine locally in Los Angeles or virtually via telemedicine you can reach out and contact my private practice right below this video here and the second is for a free guide which is for daily rituals that could potentially help you add years to your life with Chinese medicine. So let's begin with the idea that Candida and yeast are not new. It was Candida back then now it's SIBO and these kind of yeast issues are issues that people chronically have they're not new they're not any different they're not any more difficult or less difficult to treat than they were historically and I say this as someone who's always been one of these SIBO prone people I've always had some degree of gut problems my entire life which is what led me on this quest around the world and which is what led me to Chinese medicine especially internal medicine with Chinese formulas that's the thing I found the most helpful. Certain people are just predisposed to this which is why for example I was raised in a healthy family where we always ate healthy and we never ate out and my parents always cooked and had properly sourced foods and even when I went away at college I was still cooking healthy food from day one and here 15 years later I'm still cooking my food most days of the week but despite all that I just never had good digestion and I was always complaining about it and any parents that have young kids will see this if you have two kids side by side you give them the same thing could be healthy food and one kid is always complaining about their stomach and the other kid isn't so there is definitely a genetic constitutional predisposition that people have the symptoms that I had these days they would just call SIBO right small intestine bacterial overgrowth and they would be treating it the exact same way right conventionally they often use a narrow spectrum antibiotic like rifaxamin even GI doctors will do that sometimes sometimes using medications or even antidepressants for gut problems but the symptoms were no different than they are today so this is not a new problem there has always been this kind of issue for people I'm sure it is only skyrocketed the increased in frequency for a lot of reasons but these aren't new okay Tendida yeast SIBO all basically the same thing not new now the second important point here is that for most people these are constitutional constitutional means there's always going to be a genetic tendency towards this problem throughout your life if you are suffering from this extensively you have a predisposition towards it Chinese medicine we call it your constitution it is your genetic makeup you've inherited from your parents and almost always these kinds of things run in families and you may not know because your mom or your dad or whoever grandma maybe is always popping Pepto abysmal but she doesn't complain about it very much but almost always these kind of issues run in families because they are constitutions what happens is a certain percentage of the population is predisposed towards these kind of yeast and gut issues where they're very sensitive to starches and sugars and carbs and they're very prone to getting severe bloating more abnormal bloating than the average person the population is and so the average person may be able to eat a burger or something very starchy and maybe they get a little bit of bloating but after a bowel movement they're fine but people who are predisposed and sensitive to this may get such severe bloating they lose all appetite for the rest of the day or they get such severe bloating they're almost nauseous or such severe bloating that they can't even take a full breath they're so bloated so this is obviously the next level of bloating versus just being a little bit of bloated so the most important factor number one is constitution which means if you've been suffering with this for a long time you're always gonna have a tendency to this you can easily rebuild your gut to a point where it's effectively not there anymore but your gut's always gonna be a weak point for ever but you can get it to a point where it's very functional and it doesn't bother you on a daily basis there will be fluctuations but because it is constitution it's always going to be your Achilles heel so let's talk about dietary principles that help like I said the most important factor that I found was really taking Chinese formulas long term so that's what I specialize in but in terms of digestive diets you know elimination diets there are some that I found to be very helpful I haven't found them to be permanently able to resolve the condition most often people are like myself I was on and off a digestive elemental kind of like a Spartan diet for about 10 years but after 10 years I was still suffering from it and I never had really normal digestion until using Chinese formulas in combination so there are two that I would recommend the first is a very low carbohydrate diet even in just in the short run so very often when people get this acute gas production and they're severely bloated the fastest way that you can help that decrease is by removing all starches just for a week so go very low carb and it will reduce that abdominal fullness and that abdominal bloating so that may mean swapping your morning oatmeal just for eggs and you know avocado or even eggs and bacon if you just want to do that for a couple days something tasty it may mean that you know most of your kind of breakfast you're gonna have to eliminate and just do something that's just traditionally meat and plants something like that so this is definitely harder if you're vegetarian or vegan because I do see that vegetarians and vegans are more prone to this than meat eaters for sure I see that all the time so very low carbohydrate diet for most people ends up leaving meat and plants cooked plants now that's just one piece right because that's not a permanent fix and most people will not feel that well being low carb for a long period of time it's just very difficult to maintain the second one I would recommend is the specific carbohydrate diet there's a great book called Breaking the Vicious Cycle by Elaine Gochal and this was really the book that helped me the most over 10 years where I would go on and off this diet all the time if my symptoms were bad then they were good again and then bad I would really undulate back and forth but this effectively is the same thing you're gonna be removing certain food groups that are mostly the starchy foods that result in gas production is the gut bacteria like like munchin on them and it produces all this gas so for a lot of people following the specific carbohydrate diet or a very low carbohydrate diet is really the fastest way to remove those SIBO symptoms again in my experience it's not a cure unless you could do that for years and most people can't myself included but having a middle of the line acceptably good diet with Chinese herbs was for me the most effective thing I did and that's what I practice and that's what I do for myself I don't have a very low carb diet anymore unless those symptoms get so severe that I'm so bloated and uncomfortable and I will do that for a couple days but it's not sustainable to me like it is for most people those are my suggestions remember it's constitutional which means it's gonna keep coming and going unless you had damaged by repeated rounds of antibiotics or something like that where most people it is a constitutional genetic thing where it's gonna be a weak point so you need to be careful and watch it long term and it's not something it's just gonna go away and be gone forever but these very low carb diets can help and in my experience layered on with Chinese formulas you can have a very very normal diet that's not neurotic and you can live a normal life those are my two cents on Candida yeast and SIBO very common conditions that are very troublesome for a lot of people and again for you guys go check out those two very important links right below this video and check out these related videos right here on this