All right, so I'm Daniel. I'm Daniel Dreyer. I work at Puppet. I'm a senior SysOps engineer there. I'm the primary service owner for our Drupal web infrastructure. Can't quite hear? All right Doesn't quite fit. My laptop is kind of up on the mic here. So I'll try and lean in. How's that? Cool. Thank you All right, so I'm a senior SysOps engineer at Puppet I work on our web infrastructure, which pretty much means the Drupal websites, so puppet.com The puppet conf sites including the older ones and I also run infrastructure for Puppet Forge Which is a Ruby thing but is a pretty similar architecture in terms of the infrastructure backing it I moved all of that stuff from Mostly from Linode over to AWS and I'm currently in the process of going through that again for Forge so That's pretty much the basis for this talk before I was at Puppet I was doing two things. I ran a small web hosting business that was focused on Drupal and I did Consulting mostly for small medium-sized Drupal web dev outfits that had done some kind of their own hosting and had outgrown it or it became too painful and so I'm What I'm hoping to share here is About a the dozen ish key decisions that when you're building this kind of a web infrastructure in AWS That kind of dictate the rest of the architecture that you end up with because What my experience has been seeing other people go through this is that people make some really important architectural decisions early on without realizing that they're important and So they'll make decisions about their DNS their load balancing their web servers Based on what they've worked with before what their colleagues or friends have worked with what they read about in a blog post and The symptom Down the road is that two months in They're spending all day working on varnish or they're spending a ton of money on giant easy-to instances and They don't necessarily realize that that is actually subsidizing architectural decisions that aren't necessarily objectively wrong, but are the wrong set of trade-offs for their organization and so Coming into the whole AWS thing my experience was it was this sort of amorphous blob of technologies and questions and phrases and It wasn't clear to me how to put that all together and how to make those decisions And so what I'm hoping you all come away with is a More linear way of thinking about what the key decisions are at least in my view so that you can go through that process in a more deliberate way and put the The downsides in places that are acceptable for your situation and More consciously pick the the upsides that you can get out of AWS, but you don't automatically get So before I get too far into that just to get a sense of what Experience levels there are how many of you actually run or are involved in running some kind of Server infrastructure web infrastructure at all Okay, cool just about everybody How many of those run Drupal? That's what I expected pretty much everyone And how many of you are doing that in AWS oh Cool lots of you like half How about for configuration management is that a thing that we're all doing or But much much less so okay cool So that that hopefully means that this isn't something that you just all already know so The first question that I always get talking with people is why aren't you just hosting your site it doesn't get that much traffic And the fact is that most of the time it's better to use some hosted service so sort of The the factor the key fat one of the key factors for us at puppet that probably won't apply to any of you except for people from maybe chef is That in operations at puppet We have a bias toward running as much of our infrastructure as we can in-house in order to have a larger infrastructure so that we can dog food puppet better because if we went and Outsourced everything we possibly could we'd have like 20 or 30 servers and that would not be at all a representative user of puppet enterprise Where the the really big pe clients are large corporations that try to run everything in-house and They'll also tend to run their web infrastructure in-house or at least some of it And so that's that's one factor for us the other things that are probably more in common with your concerns are More that we want to integrate with our other infrastructure And we want to use our own workflows rather than using the Vendored workflows that you get from a lot of even the really great hosting providers So specifically we want to be sending graphite metrics in web server logs into our log stash and We want to be provisioning access either using puppet or by integrating with LDAP and It's been surprisingly difficult. I've made quite an effort to find that And it's it's harder than you would think because once you start talking LDAP you end up in somebody's 5k a month Enterprise tier and that You know, I can't justify that for like the 2015 puppet conf site that no one visits anymore That's it doesn't doesn't make sense and the last thing and I hope that there's some people from these hosting companies here is The question of SLAs so you look around you see SLAs that are, you know, three nines four nines a hundred percent But the commitments backing that are typically relatively weak and They're typically aren't published actual uptime numbers and So if somebody from marketing is asking me if I can stand behind a thing and I have no real hard evidence that They're actually up that much even though these companies have a great reputation and I have had personally really great Experiences with them if I can't quantitatively support it like I can my own servers that I can monitor the heck out of It's harder for me to tell other people that they should trust it So architecture wise I'm going to be running through basically each of the pieces of Infrastructure that you would see when you make an HTTP request So it's going to be almost like a series of lightning talks about DNS load balancer, etc And I'm going to have to move through it relatively quickly Because we only have about 50 minutes left before questions and there's there's just more Infrastructure there than you can reasonably talk about in an hour So there's detail in some of these slides that I'm just going to skip if you're interested in it Jump back to it later. Pull me aside afterward the idea is to present a relatively high-level overview You all are competent enough to do the googling of the specific things and there's no shortage of tutorials about You know how to puppet eyes or chef eyes or whatever you call that NGNX and HAProxy and so on so the the first point of contact that you're Use your has with you the way they actually find your server at all is DNS and a lot of people Go into DNS when they register their domain they just use Something and they don't realize that that is limiting them in certain ways. So specifically with AWS The key decision here is am I going to use route 53, which is Amazon's hosted DNS? It's really great or are I'm am I going to use some third-party DNS? We're using a third party. We're using dine because we were standardized on them before we started using AWS And they've been totally solid If that wasn't the case Route 53 would be a really compelling option The complication around route 53 is IPv6 and is elastic load balancers and Naked domains, so if you want your domain to be Example comm instead of dub dub dub dot example comm the DNS spec says that that has to be an a record But an elastic load balancer only gives you a C name So if you're not using route 53 Amazon's route 53 because they just cheat and let you have a C name anyway They just have an integration you have to figure that out and you it probably means if you're using Not route 53 that you can't use an elastic load balancer for a bare domain that catches a lot of people off guard The other question is IPv6 So I hope someone from Amazon maybe listens to this sometime and improves the IPv6 situation So it's it's you can't win basically because route 53 will serve IPv6 quad a records, but Route 53's DNS servers are not available over IPv6 So you have to make the request over IPv4 so That's kind of a non-starter if you're trying to help people who have an IPv6 Only stack which I didn't think there really were any but then we had an IPv6 Only outage of yum.puppetlabs.com and app.puppetlabs.com and we heard from people on the same day So it turns out those people do exist I know right and so unfortunately Elastic load balancers are also the only way to get a public IPv6 address in Amazon so if you want to be using IPv6 you have to be on route 53 Which means that you're not available on IPv6 only So we're using Dyn They are a little bit more expensive than Route 53 they're really really well established in the almost two years I've been at puppet. We have not had any problems whatsoever with them. So we've just stayed with them obviously We can't use elastic load balancers But there's other reasons we couldn't use those anyway that I'll get to momentarily so that hasn't been an issue The next hop there that your packet will make is to whatever load balancer you're running So I've highlighted four options here. The sneak preview is we're on HA proxy And I'll go over each one fairly quickly So if you can use an elastic load balancer because it's by far the lowest management overhead And if you're thinking it it really wouldn't be that much work to just stand up in HA proxy it isn't but it's keeping it running and being on call for it and Figuring out the edge cases of keeping it highly available across multiple availability zones that turns out to be a lot more work than I had expected The disadvantage there beyond the IPv6 stuff I described is It's not quite as full-featured as some of the other load balancers if you want to do more advanced stuff at the load balancer That's not a huge disadvantage because you can typically do that once you get to the web server anyway The big killer for us was the lack of a static IP address So we have enterprise customers whose firewall, you know, IT security policies require them to whitelist every IP for every website their people can visit and we want those people to be able their users to be able to visit our websites an Elastic load balancer you just get a C name the IP changes. So given that hard requirement of a static IP We just ruled that option out entirely Nginx is another option when I started at Puppet. That's what we were using It's already familiar to a lot of you It's really nice to be able to have the same thing for your load balancer as your web server because you don't have to learn as many things the the thing that is a real killer for me and the reason that we switched away from it is that Doing health checks of your back-end web servers in Nginx requires the commercial Nginx plus which the sticker price on that is like 1900 a year per node and So given that HAProxy will do that for free It it's difficult for me to justify even though Nginx is a really cool company if if you had a need for commercial support and You're already running Nginx as a web server and you need commercial support for it. This would be a really good option Just for us. We don't need that. So it wasn't a good option The last thing I want to plug here is if you're coming from a big enterprise shop You may already be running F5. They're sort of the go-to big enterprise load balancer They have virtual appliances available on AWS So you can have the same load balancer workflow that you would with your hardware stuff They're really expensive. So if you don't have that specific need You it's probably not a great fit. So we ended up with HAProxy. It's open source. It's free It's super lightweight. We can run it on an Amazon on a T2 medium instance I really love how they do SSL termination. So with Every time I've set up SSL anywhere I end up googling because you've got your how do you point it to the what's the cert and the intermediate cert and the key I always seem to flub something With HAProxy you point it to a folder and you dump all your certs in that folder and Then it loads all of them when it starts and it just checks to see what domains They can handle and when a request comes into that domain it just maps them and it just handles it and there's no configuration So I really like that because there's a whole class of things that you can't screw up anymore And I don't have to Google when I add a new SSL cert So the big downside and this would apply to or the big operational overhead to running your own load balancers This would apply to HAProxy and Nginx is That if you're in Amazon any services you're running Really need to be in three availability zones or at least two or else You don't so in Amazon Their SLAs are on a per availability zone basis. There isn't an SLA for just one EC2 instance What they're committing to is that the whole Availability zone will basically be up so much of the time So you need to have your stuff especially key things like load balancers high availability across them an Elastic load balancer just does that for you with HAProxy or Nginx You're doing that yourself and the way we do that ourselves is using KEPA live D Which uses VRRP, which is a protocol like TC TCP or UDP and You get three Servers HAProxy servers that all have a KEPA live D process on them They form a cluster. They do a master election and the master is only Qualified to become a master if the HAProxy process is running you can write other custom health checks But we haven't really found it necessary and When it I'll show you the scripts I use for this shortly When it when one of those nodes wins that election it runs a really trivial shell script that uses the Amazon command line tool to take over the elastic IP and When one of these nodes disappears Then the it fails the health checks with the other KEPA live D nodes They do another master election and one of them wins and then it takes over The elastic IP and that process takes like a few seconds. So you don't really notice an outage So I'm not gonna go through the details of this Can I mouse over that? No, it doesn't look like I can so The nutshell of this at the very top there. It's just the health check script is just checking that HAProxy is running It's listing some unicast peers by default KEPA live D wants to broadcast But you can't multicast in EC2. So a lot of people think you can't use KEPA live D there But you can use KEPA live D In unicast mode, you just have to tell it what its peers are We just use puppet to template this out because puppet DB already knows who those peers are So that's easy enough to set up The other thing to keep in mind there I forgot to put this in the slide is that you will need to enable the VRRP protocol in your security groups or else it will silently drop them and You'll waste a day like I did Here's the the shell script that it runs when it takes over so the line 10 is the one you care about and Literally, it's just running the same Like shell command that you would if you were taking this over by hand. It's it's really dumb We template this out as well using puppets so that we won't have to like create one of these for every elastic IP that we use There's another cool thing that we do with HAProxy that I wanted to share because I haven't seen other people doing this And I think it's a pattern that would be useful to copy So if you look at the very if you squint a little bit and the very oh, geez Oh, man, I'm sorry so If you imagine The that the very last line of this set had an X This is a this is an HTTP request and this we have the headers here that we're getting back And the very last line is a header called X unique ID and it has a long nonsense you you ID We have HAProxy every time an HTTP request comes in it in it generates a you you ID It injects the you you ID into that custom header and Then when the response to that comes back from the back end it injects the same You you ID header into the response and so if you do a curl that shows headers You'll see this you you ID So we have HAProxy and engine X and Drupal all configured with custom logging options so that they'll log that header and What's cool about that is your troubleshooting workflow then if you have a centralized Logging tool that you can search all those logs at once Your web devs without talking to ops if they have access to the logging tools They can say they're having trouble with some page They're not sure if it's happening at the load balancer the web server PHP FPM in Drupal and they want to see all those logs Instead of asking ops for help and grepping through logs and stuff they can search all of those all the logs for all those things for that you you ID and In one place they get all the relevant logs for that specific request and They can the the other cool thing you can do with that is if you want to be able to make your users able to File better error tickets if you have your front end discreetly display that you you ID somewhere You can tell them you could add that say to your custom like 500 page Tell them to copy paste that or take a screenshot when they file an error and then you can go and look up the logs For that exact request and you don't have to go back and forth with them to figure out which request that was The last thing that we do in HA proxy that I'm proud of is it and it's a dumb hack How many of you have had that problem where a botnet shows up and registers like 10,000? users with your site right and The rat I bet half of the rest of you who didn't raise your hand The reason you're not is because you have some kind of anti spam service that you're signed up for right? So we do too we get these and it blocks a hundred percent of spam registrations consistently It's really great, but you can't cash the register or the login endpoint And so if you get a real high-volume Registration effort by a large botnet it functions as like as a D-DOS and I've seen at Puppet and at a couple of consulting clients I've worked with that Their site will go down for like 20 minutes every few months and they don't know why and the web servers get really really busy for a while and They they don't get it The and typically the reason is that there's some spam bot trying to register all these accounts And it's just burning so much CPU on all their web servers that it blocks the whole site so what we do in HA proxy is on the the front end we have this ACL up here that tags all The requests that start with user login or user register with this Drupal sec ACL And then it sends everything with Drupal sec to a back end called dub dub dub throttle and What dub dub dub throttle does is it's basically a separate queue it hits the same web servers as you normally would But it has a real Limited number of connections, so each back-end web server is only allowed to handle one of those at a time so if you get a Billion of these spam registration attempts those queue at the load balancer in a separate queue from the rest of your website traffic and So if if that gets slow as heck The only people who are impacted are legitimate users trying to register or log in and since 99% of our Traffic is anonymous and the people who are logged in are typically marketing people or really dedicated users Who are logged in all the time? They don't notice because they're not hitting those endpoints So that has completely solved the problem for us And it's it's kind of a dumb hack But because it doesn't actually get rid of the traffic, but it sidestepped the question of Figuring out which traffic was malicious because that's surprisingly hard to do So we've gotten through the load balancer somehow the request has gotten to something running engine X and PHP or Apache or whatever and This is typically the part in Drupal or other web infrastructure where you need the most compute and You have to run that in something when you're going into AWS pretty much the two obvious options are You're either spinning up EC2 instances Which if you haven't used AWS are virtual machines very much like what you would get out of a line out or a digital ocean or You're using ECS elastic container service Which is their Docker hosting as a service that they more manage for you And then the other key question when you're coming in is what kind of instance type you're looking for I'll get to that momentarily The the good thing about this is that the decision is really easy How many of you are using Docker? Okay The people who raised their hand should probably look into ECS The rest of you should probably use EC2 because ECS is a perfectly good service But in my view, it's not compelling enough to warrant a switch to Docker just to have it Especially if you're using decent configuration management and you have good automation there if you have a an in-house capability to use EC2 or to use to run virtual machines the normal way Just spin up EC2 instances and you can Run those as ephemerally as you would Docker containers if that's important to you The next question so we're gonna assume that you know since we're me and we decided to use EC2 The next questions at hand are How do you provision it and how big of instances? What type of instances do you use and the general contours of those decisions are more smaller instances? Fewer bigger instances if you're running things more ad hoc by hand Fewer bigger instances is obviously less work if you have good automation It doesn't really matter how many especially if you have good centralized logging and monitoring and so on Because hopefully then you're not SSHing into we have like 12 tiny back-end web servers I don't want to have to SSH into all of those to grep for a grep logs or whatever. That's terrible So we use T2 medium instances and What's cool about the T2 how many of you know about the T2 stuff? Okay, so this is worth explaining so T2 instances basically have a pool of CPU credits and when the machine is not very busy that pool is growing to a ceiling and When you use when you need to burst capacity it can go to about two and a half times. It's sort of baseline load But it draws down those CPU credits What's cool about that compared to using autoscale groups to grow dynamically is that it's instant So with an autoscale group, even if you have baked AMI's you're waiting at least one two three minutes for a new machine to come up A T2 instance can go from totally idle to burst it all the way out It as soon as fast as you can send requests to it the So I really like that because you get the burst ability Without worrying about Autoscale policy or trying to predict what your load is going to be the only downside there is that you can run out of T2 CPU credits and then the machine slow to a crawl so the really dumb way that we work around that is Knowing that these T2 instances a T2 medium has about 20% of one CPU available when it's out of credits and so we just did some benchmarking and figured out I just drew all those CPU credits down a benchmarked it at about the rate that we normally get and we provisioned enough T2 instances that we can Basically run the site. It's a little pokey, but we can basically run the site When they're out of credits and we can also burst to the kinds of increased traffic that we get around puppet conf We also monitor we use isinga 2 for monitoring and we monitor Those credits so we also have that but even if we drop the ball and don't respond to a page The site will basically stay up and we can burst Let's see. All right moving along here So the next interesting question So we'll we'll get back to the the details of how these how we're provisioning these things a little bit later right now I'm just working through that packet flow The next interesting question in my view Is the question of shared storage because you can Find results in Google all day about how to run a decent EC2 Nginx Apache whatever you don't need my help for that shared storage is is painful so When I say shared storage how many of you like Does this a concept that needs explaining or? No, okay so there's pretty much There's pretty much four options here and they consist of whether you're going to use some variant of s3 or you're somehow going to use NFS and Please come and talk to me if there's another good option because these are all kind of painful I know you can use Gluster or whatever, but that's even worse So the best option if you can cut it is s3 with a Drupal module That does native integration. I have been part of a couple of projects that tried to do this And we all got about 95 percent of the way in where it basically worked But there was some module that we couldn't get rid of that Expected POSIX semantics because it bypassed the Drupal file system abstraction It's really frustrating, but I've been in this has been my experience every time I've tried to do this both with puppet in Drupal 7 and Drupal 8 with consulting clients before that It it should just work and my experience has been it doesn't quite especially for a brownfield project where somebody has already locked in the module decisions The the next way to use s3 is a fuse file system mount fuse is a user space file system You can mount s3 so it looks like a local file system. There's two problems here It It's a leaky abstraction s3 is not a POSIX file system. It's it's a lot different and Fuse presents a POSIX abstraction to it. So you have kind of a messy interface there. It's also slow so I know that I wanted to list this because I Know a lot of people use it successfully and it's a lot lower operational intensity operational overhead than running NFS and it's a lot easier on developers than Having to redo everything so that you can use s3 with a bunch of poorly behaved modules So it is an option, but before you go into production with this benchmark the heck out of it The most traditional option you all know is to just stand up an NFS server The failure mode of NFS is really gross It will hold a lock on Whatever it's trying to read it'll it'll hold it'll try to read forever Your NFS server can disappear and it will just keep trying to read and the failure mode I've seen there if you're running PHP FPM is it's basically poisoning each Worker process as it tries to make requests and they start blocking and so you get this weird failure mode Where when it makes a request for a shared file that worker? Disappears until it times out and dies If you Google a lot of people will tell you that it's easy to tell NFS to break these requests, etc If if that's true, please pull me aside Afterward and demo it to me because I spent weeks trying because all these blog entries told me how easy it was and I just felt dumb I Just couldn't do it. I just end up the only way I figured out to reliably get it to break an NFS mount is to to reboot the box So we've got a real dumb hack so Of course, this is the one we do But we've got a real dumb hack that's kept it from being a problem for us Tell you in just a sec the last option came out like three weeks after we committed to using NFS And went into production, which is Amazon's elastic file system EFS is is a hosted NFS service It it looks really cool. I haven't run it in production. So I don't want to tell you that it's the bees knees but It looks like sort of the ultimate answer to this question if it does as promised the only real caveat is it's in beta and You also have to use their DNS for internal DNS resolution So if you're the if you have a VPN link to your VPC and you have to use your corporate DNS for policy reasons This may not be an option So I don't have a slide for this but what we do to make NFS less of a problem is This is almost an embarrassing hack to admit But it's worked so well that I want to share it because I know a lot of people run NFS We have a cron job that every two hours are syncs The the NFS mount to a local sort of cache directory And we have an engine X try files directive that tries that path First and if it can't find the file there, it hits the NFS mount We don't have people uploading stuff very often so well upwards of 99.9% of read requests get served out of the file system But if it's not there it immediately gets it out of NFS it's faster and It effectively solves that worker poisoning problem Because so few workers are hitting if you're if your NFS server goes down. There's so few workers most of the time hitting NFS for things that The handful of workers that might get sort of poisoned will time out die and respawn Before it becomes a problem your respawn rate can keep up with your loss rate. And so the site stays up So even though we have an architecture there that I wouldn't recommend which is one NFS server For three availability zones. That's a clear single point of failure We've been running like that for more than a year and have not had any problems as a result And we've had a performance boost as well Next part Yes Yeah Yeah Yeah, so there are some really cool Distributed file systems out there. I think Gluster and Seth are the obvious ones if you're willing to go commercial There's there's there are other ones They're super compelling. I have When I have experimented with Gluster the operational overhead and the amount of knowledge that it required to run was just Beyond what I was willing to impose on my colleagues so all of us are on call for everyone else's stuff and So You know, I might get woken up for network gear that I've never used The network guys might get woken up for web server stuff So it all has to be kind of you know every man a rifleman kind of Stuff and Gluster is is really really cool It's not the kind of thing that everybody should have to learn how to run So if if you're starting your own Drupal hosting service, you should probably look at Gluster If you're doing your own hosting, you probably should use one of these. Does that kind of answer your cool? No, I don't know that term Oh Cool, no that sounds like a good good thing to look into I know I See one in the back too Yeah Right. I don't think that the Drupal 7 Drupal 8 and please correct me if I'm wrong here I don't think that that will make any difference as far as your shared file back end your your decision-making Tree is pretty much going to be the same there Cool, so I'm gonna I'm gonna skip forward because I'm running slower than I should be I'm real strongly opposed to running your own database stuff in AWS with Postgres there are There are a handful of reasons if you need custom Postgres extensions In the Drupal MySQL world, there's I just have never met a good excuse. So The options here when you're making in that part of the decision tree of how do I run Drupal on AWS? You have three options. You run your own MySQL You use MySQL on RDS or you use Amazon's Aurora, which is a MySQL compatible Multimaster database that they run as part of RDS Don't run your own RDS is what we use because we got set up before Aurora existed the trade-off there is real simple Aurora that The only real downside that I'm aware of to Aurora is that the smallest instant size you can buy is really big So it's a little bit expensive It is that consistent with your it does Right, right. I totally agree Aurora is should be the default choice If you're super price sensitive, which I know some people will be because they're running like custom hosting for some Tiny outfit that counts every dollar you might care about like if you're tempted to run your own MySQL Because it'll save you a couple bucks a month Run then you might be interested in the cost savings of RDS If you're running development instances that need like a t2 micro size database You might want to run that on RDS If you're running production and you don't have a compelling reason to stick with RDS use Aurora because it's Multimaster and So the failure mode there when one goes down is going to be you won't notice whereas with RDS you have a traditional primary slave failover model and My experience has been it fails over basically instantaneously, but it's not guaranteed It can take a few minutes and you'll be throwing database errors on your site while that's happening Yeah, unless it's I mean if it's production I don't think so you would want the comment was that single AZ RDS doesn't make sense What we do is in puppet we have in Hyra we have Based on this stage we set the the replication options So for the dev version of the site of the the infrastructure It's single availability zone the staging version is multi-availability zone and the production is multi-availability zone So we just save a couple bucks because in the dev version, that's just the putzing around environment I don't need HA for that one quick thing here One thing that surprises people is we got rid of varnish and we got rid of memcash This is probably not the right answer for everybody, but it it's simplified our Architecture because we could just do some mysql tuning It turned out when I came on board the reason that we needed varnish to make the site perform acceptably was mysql was was not tuned basically at all it was at its default settings and So and that's a scenario. I've seen with a lot of consulting clients It's the first thing I look for when I go into an engagement Because the default mysql settings if nothing else the default mysql settings give you 10 megs of memory use and it does amazingly well with that but You can do a lot better, right? So once we tuned mysql correctly we didn't actually need we could get to a like a one second page load without using or page generation without varnish and That just took a piece out of the stack and removed the question of how to clear those caches because the Drupal caching works fine I see a question in the back Yep, so the question is whether to run memcash locally on the PC2 instance versus using the hosted elastic cache Excuse me hosted elastic cache service. I think it depends on your use case so if you're just running simply what what we used to do when we had memcash was We configured all of them we had every web server running a memcash and Because we wanted those caches to be consistent We used puppet to configure the same order of failover so that every web server Would hit every other web servers memcash in the same order so that if one of them went offline all of them would hit the next Memcash so that those caches would be consistent I was really happy when we could just get rid of that and not think about that so if you don't really care about Consistency and you don't need to burn a ton of memory You kind of might as well run that locally if you want a shared instance and you you do care about cache Consistency my impulse would be to Use elastic cache and let there let them handle the high availability question And just point everything there and make it their problem and not yours. Oh Do they not in memcash? Oh? I say I Say haha That doesn't sound like any fun at all All right, we'll scratch that recommendation then You're on your own And the last thing that I want to say here This isn't really varnish memcash, but the reason The ultimate reason that we were able to get rid of that is because we were benchmarking in a reasonable way Most of the people that I've worked with who run Drupal infrastructure Benchmark in a very ad hoc way The process that I use that has worked fairly well for me is all For a brownfield type Environment is I'll take existing web server or load balancer logs parse the URLs out of that Generate a list that I can feed into Siege and Then just generate traffic with Siege. I Don't look at the numbers Siege gives me at all. I just want it to generate load It's just a way to have users in my benchmarking environment Then I use New Relic or some other tool like that And I adjust how aggressive Siege is Until the load numbers look about the same in my dev environment and my prod environment After that I have a reasonable degree of confidence that I have a similar Load profile going into it and then I start doing performance tuning But the only numbers I'm looking at are what I'm getting out of my metrics tool Not what Siege is telling me Siege is a great tool For really ad hoc stuff, I might start off using their numbers But you get so much more in-depth data if you're using a more powerful tool Your whole benchmarking process will be better and you'll end up with better infrastructure for a ton less work for it so Obviously, I'm going to be talking about config management We use puppet obviously We use it for just about everything and But I'm not going to talk about a whole lot of puppet specific stuff here For two reasons. I don't want to just be a product pushing person. I also Don't think that I have anything to offer that's particularly unique except for a couple of slides that I'll share because you can Google about how do I puppetize or whatever and you'll get an answer what I'm going to focus on here is is Basically the provisioning side because that's the one thing that I have had a real hard time That question of how do I get a node from not existing to being a puppetized part of my infrastructure? That's the part that there's like a shortage of tutorials on Side note Sometimes I'll hear people say that they they don't want to use config management That they they have people who you know won't learn it who aren't sort of technically sophisticated enough That's a clue that you should be using a hosted service. I don't mean that in a derogatory way But one way or another you're gonna pay the cost either It's going to be by the initial investment in config management where you're going to pay a higher cost long-term through the pain of Operating without good tooling You're gonna pay that cost so either pay somebody else to do the config management and use their service or You know bite the bullet and and just go into that At a high level the hard parts I see of config management are managing secrets There aren't great stories for that in most tooling The question of bootstrapping, which is what I'm going to focus on The question of code complexity is an important one most of us who run infrastructure don't come from a software development background and so writing code to manage a lot of complex moving things ends up with complex code with a lot of code paths and If you don't use some kind of reasonable Methodologies in terms of refactoring testing structuring your code in a reasonable way You will end up with a real messy code and so That turns into a you have to be aware of managing code complexity when you go into this because Otherwise you'll you'll end up frustrated you'll switch configuration management tools and then three years later You'll be in the same spot because it wasn't the tool. It was the code complexity I'm gonna skip drift because I'm short on time The way we provision is we use the puppet labs AWS module We have the puppet master it has just enough I am permissions to create a tiny little like a t2 small provisioner instance which has I am permissions to do to provision more services and The main reason we do that is just because you it's a way to contain complexity Like it's easier to reason about a puppet master that isn't also provisioning all my other stuff It the provisioner then we have one for each of the dev stage and production stages And so the dev one will provision all the dev versions of services the stage one the staging versions of services That allows us to test changes to how we provision without blowing up production The actual sort of high-level path for how we Get a node from not existing to being part of our infrastructure Took a lot of work to for me to I tried a bunch of different permutations and what we ended up with was The Bit of background here is the way puppet works is when you connect a node to a puppet an agent to a puppet master The first time puppet runs it requests an SSL certificate to be signed by the master If you don't have any automation that means you either have to go into the PE console and click a thing Or use the command line to sign it yourself There's a tool called policy-based auto signing that allows you to automate this, but it's more of an API than a End-user tool, so I wrote a tool called puppet auto sign it's public I'll include a link at the end that generates a cryptographically signed token. It's Hmax signed The provisioner when the puppet compile happens generates one of these tokens it puts it in a cloud in its script That it gives to the EC2 instance when it provisions it using the puppet labs AWS module The cloud in its script runs the first time that the node when it boots And it sends that token back to the master along with the request to sign the cert and then the master Can cryptographically validate that that is authentic and it also has a local registry that verifies that those tokens can only be used once There's also a timestamp signed into them, so they're not valid after more than an hour Maybe it's two Anyway, so the the cloud in its script then installs puppet gets the cert Runs puppet again a couple of times and that way by the end of that the node is part of your puppet infrastructure And you can do things the normal way And we're not managing AMIs Particularly We've sort of bypassed that problem. We haven't had a need to bring up nodes that quickly It also provisions the RDS security groups elastic it assigns the elastic IP unfortunately can't provision them I'm running a little short on time, so I'm gonna Skip this. It's kind of cool Come back to it. I want to make a point about using configuration management end to end I know a lot of us use configuration management a lot of people don't have a process Where it's used where like a server can go through its whole life cycle without a person changing anything manually There's a huge psychological difference, especially when it comes to Operations and developers working together because you get a culture change when you you take the high stakes Traditional sys admin got to get it right the first time thing out of the equation when you can just delete a busted node and Rerun puppet and it comes back up Because then a developer who doesn't really know much puppet or anything they can experiment in a dev environment They can make a pull request by past the whole process of filing a Jira ticket for operations They document the change they want just by making it and making a PR it's great It saved me so much time because they do most of the ongoing maintenance now and they don't have to block on ops Another thing that I wanted to point out that I haven't seen other people talking about it's a real simple thing I see a lot of people templating out config dot PHP with puppet or chef or Ansible or whatever It's really gross to template out executable code It's hard to to reliably generate syntactically valid PHP from templates. That's like a Conceptually hard problem Generating valid JSON from a data structure is a conceptually easy problem So we generate a JSON and then have a trivial little bit of PHP in the config dot PHP that just loads that JSON and Sets value values from that so stop templating out PHP because there's there's a better way to do it That's actually less work And the last thing I want to get to is sort of the the operational experience of putting this all together And the bottom line is we ended up with pretty good uptime We had some periods in there when we were getting this figured out where we were hovering around like 99.4 percent uptime and I wouldn't have included this slide if I had been doing the demo back then Because it it feels pretty bad. It made me wonder. Why am I hosting this not having someone else do it? I'm hoping that this presentation will convey some of the the lessons we learned that and you can sort of skip To the the better part of this curve And we are at the I think at just about that time to take questions Are we done? All right, we don't have questions talk to me


Welcome to The God Project. This reading is from censored 125, The God Project, and the title is The Poor by William J. Isman, D.D. If we believe conservative Republican Christians and prosperity preachers, we might believe God has it in for the poor. But it is the rich and counterfeit Christians who have set their sights on the poor. Psalm 10 verses 2 and 9. The wicked in his pride does persecute the poor. He lies in wait to catch the poor. The God of the Bible says we are to strengthen the hand of the poor and the needy. Ezekiel 16 verses 49 through 50 we are to give bread to the hungry. Ezekiel 18 verse 17 7 excuse me 7 12 16 through 17 real Christians are warned not to vex the poor and the needy. Ezekiel 21 verse 29. Is it not vexing the poor when we cut food stops? Anyone contemplating such an act at this time cannot call himself a Christian. He would be a devil appearing as an angel of life. God says that the kings should show mercy to the poor. Daniel 4 verse 27. A king is the head of a government. So it would not be showing mercy by cutting food stamps as some representatives in our government want to do. Amos 5 verse 12 states that the poor have a right. God warns the rich that they have their consolation. Luke 6 verse 24. The Bible is very clear how a true Christian is to respond to the poor. He is to give his two coats to those who have none. Luke 3 verse 11. And he is also admonished to give meat if he has it. According to the Bible it will always be hard for the rich to enter the kingdom of God because they fail to understand that those that much is given to those who much is given much is required. Luke 10 verse 48. Where does the hostility toward the poor that we see in so many conservative Republican Christians come from? In Acts 19 verse 35 Christians are told to support the weak. I and Rand devotees like Representative Paul Ryan and Rand Paul do not believe in altruism. In James 2 verse 6 Christians are commanded not to despise the poor. In 1 John chapter 3 verse 17 it is plainly stated that the love of God does not lie in him who sees his brother in need and shuts up his bowels of compassion from him. Is it not time to see clearly the hypocrisy of the phony Christians in Washington? After what we have learned how can it be seen as Christian? To cut food stamps, change welfare as we know it and deny the poor health coverage. It's time to end the farce and call his spade a spade. A Christian follows Jesus. One is not allowed to make up his own religion and traditions. Mark 7 verses 7 through 9.  Everyone in our government who wants to cut food stamps, who is not for free education and will not help those being foreclosed on by big banks and who is for taxing those on unemployment insurance benefits is not, is not, is not a Christian. He is a vain, arrogant, troublemaker. He is a social pest. He is wicked and races to do evil. There are many more positive references to the poor in the Bible. Check them out and stop listening to prosperity preachers and counterfeit Christians. These people are wrong about the poor, about the Bible, and about the God of the Bible. They are deceitful, they are evil, and they are deceived. Revelation 12 verse 9. The end.


Good morning and happy autumn. Today. I am here talking about my favorites I have one makeup item and the rest of the things are just things that have been really making me happy Also, what's been making me happy is I'm going to announce the three winners for my last giveaway And I think I'm just gonna get started I have always that I can remember that feel of fabric has always been important to me and It especially became important to me when I had children I remember shopping for sleepers and they were hanging up in on racks and I wouldn't even look at it I would just go by and feel and when something felt good I would look at it and I just appreciate Something that feels good on these pajamas kind of started this whole thing that I'm gonna talk about I got these last year as a birthday present and they were 70 percent modal and I think 25% rayon and 5% spandex. Well, I've always been a fan of the So milk cool nights Until I felt these and I think these are from barefoot dreams, but that's not what's important What's important is how it feels and it feels wonderful and when I looked at modal Said it was derived from Beechwood trees Well, then I started hearing all about bamboo and I bought some bamboo sheets I'm gonna get back to this and I love them. In fact, I wash them and put them right back on I have not purchased another pair, but I hope to and if any of you have the 100% bamboo sheets, let me know and let me know if you love them as much as I do I will get another pair I just haven't felt the need yet because it's just a slack or a wage So when you do your laundry just put them right back on then you don't have to worry about folding them Well that put bamboo on my radar I love pajamas I like to take a bath put on my pajamas when I go to bed. I take the bottoms off I could I don't can't stand to sleep in the bottoms, but I love pajamas, but I didn't have any summer that I was really loving I wasn't loving my summer pajamas. So in April I searched for Bamboo night shirts and I found some that were super expensive And then I found one that I really liked from Amazon and I ordered it and I'm not a good modeler I miss up my I miss up my tripod every time So what I'm gonna do is I'll put a picture here of what it looks like and then I'll show you the fabric I treat my pajamas my night shirts as good as I do my clothing. They always go on a hanger I can't tell you how many times I've washed these They're short sleeved The fabric I love so I wore these a couple of months before I ordered another gown There was only one thing I didn't like about this It didn't have pockets and for some reason I want pockets if I see something somewhere I can just stick it in my pocket and put it away But I just kind of like pockets and the fabric was 95% viscose and 5% spandex and Viscose is derived from bamboo So when I wanted another one, I just went to Amazon and I put in Nightgown or short nightgown because I wouldn't want anything long and I put 95% viscose 5% spandex and this one came up and As you can see it has pockets in the front and I really like it all the seams are Excellent and with it when this came in there were all these claims what it would do and all I really care about Is how it feels and how it washes and I wash them in the washer and Put them into tumble-drive for about five or ten minutes and then hang them up But it says it's moisture wicking non-irritating temperature regulating Environmental advantages because it's made from bamboo. It's sustainable Ubisoft and super fine yarn. I really do like these a lot In fact, they look so good if you needed to go run an errand could because they just look like a dress So I wanted one more and I ordered a boysenberry and it's v-neck and it has side Pockets and I kind of like the color. This is an extra large But anytime I order anything from Amazon, I always get it a size larger This is an extra extra large all three of them are because if they shrink It's not a problem and plus was anything that I sleep in I don't want it to fit tight, but this one is made just as well and every time I wear him Jim gives me a compliment He likes them so super comfortable Pretty affordable different prices. I think the first time I bought one It was like $23 and I think the last time I bought one and these are all from different companies But I just searched for the fabric content and I love them and I like all the pajamas I own So I don't know I may buy long one long sleeve, but I may not the one makeup product I am going to talk about that. I really do like is the it CC nude glow I've tried it twice. I haven't put like something on one side and something on the other side But I just used one pump and I just do kind of the middle of my face and go out And I like it really well. I haven't like looked at it I've had it on for probably about an hour and a half and I forgot to look at myself before I came here But I like it. I would repurchase it. It has a 40 SPF. It's called a brightening glow serum. I Got mine in light beige. I got it with the today's special value I'll look and see if they have any more today's special values left and I'll link it below Anything that I link below I will have an opportunity to make a commission I want you to know that if but if I type something on the screen That is just for your benefit and it is not anything that that is eligible for commission I like that it is so much shared than the CC plus cream, but I think what I'm going to do is I'm going to put Try to do it side by side of me last time and I didn't have any makeup on and see if it makes any difference Because I'm really not sure but I do like it I had told you they were changing around my thyroid medicine and some of my heart medicine And it was important for me to quit taking biotin Because it there's a couple of lab tests that it can kind of mess up and thyroid is one of them so I've taken armor thyroid for ever forever and I've tried to change to just the levo the generic and I did not do well on it at all. So I'm back on the armor thyroid My hair I could not tell any difference I mean it's been since February and I couldn't tell any difference, but I think the biotin might have helped my nails I've never had really good nails The only time I've had good nails is when I use this product from Sally Hansen and either I forgot what product I use or They don't make it anymore But my nails were so brittle and so short that I did not have I needed some nails Just to be able to open something they would just break off and splinter and and they weren't very good at all So I used up what I had left of this and I ordered another one So now I have to have on this one's empty And it didn't do anything and it used to work for me and I thought well, I guess Nothing's gonna work so I was just looking up and trying to find something and I found something from OPI and it's called nail envy and it is the original nail strengthener and It did help a lot. I have actually I have some nails and I can I don't I don't like long nails I don't really even like putting anything on my nails. I don't like even the clear stuff I like I put oil and you know, I have really good cuticles, but my nails were really messed up I know one of these days I will probably start drinking collagen, but for some reason I have been really reluctant to start I've got really good bones. I don't know if it's a slacker in me or what But I in fact I bought a container of it and I just never did try it and Jim wouldn't try it But one one of these days, I'll let you know if I ever do but I don't know if you have anything that you use on your nails I want a quick fix. Let me know. This is 1995 Which isn't terrible because I've been using it a couple of months You put if you're supposed to put a coat on every day then take it off after seven days I usually put two coats on and then maybe the next day do a coat and I take it off And that's something else. I want to talk about what I used to take it off When I ordered that from Ulta I also ordered some Ulta fingernail polish remover and the first time I used it. I thought oh my gosh This scent is overwhelming. It can't be good for me at all But I went ahead and used it and then I was watching Cheryl from free range diva And if you don't watch Cheryl, you need to add her. I'll make sure I link her channel below She's just a joy and she is knowledgeable and and she mentioned a clean nail polish remover from mineral fusion and it Works great. I thought you know, if it's Not bad for you that it probably wasn't gonna work, but it did So I want to thank Cheryl for this and I ordered this from amazon as soon as she mentioned it I clicked on her link and I got it like the next day or the next day and I will continue using this but what I'm showing you next I bought two and a half years ago And I've been almost embarrassed to show it to you because but I decided I'm not going to because I use it a lot And it's from Hamilton Beach and it's an egg cooker And it'll poach eggs. I've never done that before But I use this one and I do six deviled eggs. It'll do seven deviled eggs I'll tell you what I don't like about it What I didn't like about it is there wasn't any way I could read any of you're supposed to put as so much water for how many eggs So what I do I always do six hard boiled eggs at a time I have not done well using an air fryer I know a lot of my friends use air fryers, but I just haven't But I just put the water I figured it out one time and and just use one of these cups and I put Through six hard boiled eggs and I just fill this up to here Put my eggs in put my water on in it Turn the timer on and the minute it's done it will go make a sound and You don't have to boil water which is not hard, but that heats up your kitchen Place you kind of have to watch it, you know and turn it down and But as soon as it's done I put it in like ice water and then when I want to eat the egg I hit it three times on one end three times on the other and roll it three times And the peel just comes off completely under running water So I've had it for two and a half years. I think it was 20 some dollars And I use it often and I like it In fact when I used to last time Jim said have you ever told your friends on youtube about that? And I said no, but I think I will now I love the built puffs The built bars are are good. They take longer to eat They don't taste they taste kind of like candy But they're not like a candy bar and these are like a candy bar But in the built puffs they just keep getting better and better This is a built double peanut butter. It's covered in a peanut butter cream and I like the texture I like the flavor this one. I did not think I'd like I ordered two boxes of those and I ordered Later I ordered two boxes of these these are the cotton candy They have the white chocolate on the outside and it really did taste like cotton candy and later I ordered two boxes And the reason I order two boxes that is at a time is I don't have to pay shipping and handling that Do you know that one bar even by ordering two and not paying shipping and handling? It's two dollars and fifty one cents a piece And that just I'm worth it that I think it's kind of expensive, but again, like I said, I'm worth it. I enjoy it. It's like a candy bar It doesn't bother my stomach like a lot of the sweeteners that sugar-free candy. It will Make my stomach hurt. It doesn't do that But it seems like every new flavor that they've come out with in the puffs Has been better than the ones before they've really got that Consistency down. I mean they are processed food. I mean I I try to eat really good whole foods most of the time And then when I want something sweet I get I have one of these I this one has 17 grams of protein 150 calories and seven grams of Carbohydrate So I like them and they don't make me crave another one and even using my 10 discount code on what I ordered It's still two dollars and 51 cents. Sometimes they have sales and if you've ever ordered from them before They'll send you an email. So just I'll let you know that now. I'm going to talk about tv Haven't talked about tv in a while. I'm somebody who does not The only thing I remember I remember good concerts But I'm not good about remembering books that are fiction Anything on television that is fiction. But if it is true or history or science, I'm really good about remembering it I just think a long time ago my brain thought Well, you can't remember everything. So let's just let you forget about all the fiction I'm leading up to something Jim and I watched together, which is unusual We don't usually watch too much of the same things. I like a good series I like to have something to look forward to the next day Watch an episode and then enjoy it the next day Well, when it was on tv, I watched the series Justified and I was really impressed with it. There were a few things that I remembered. I remembered how it ended I remembered this woman named mags benet I remember a man named only void and I remembered mr. Limehouse and really that's about all that I remembered So it was like all new to me When I watched it, I loved it so much because of all the fabulous characters they have And how everything looks so realistic. I know I've talked about this before My dear friend pat god rest her soul. She I got her to watch it And she loved it so much when she bought a place Out in the country for she named her ranch justified Well, Jim and I watched all five seasons of justified So we really and Jim enjoyed it It took him about four episodes to kind of get into it and look forward to it But you know as the characters evolve, that's what makes it so interesting So I was going to keep the hulu app long enough to watch those five seasons And when I come in the bedroom at night, I always want to watch something And I want to have something I'm watching and in this order I watched the white queen the white princess And then Spanish princess and the first two were all about the war of the roses the white rose versus the red rose and you know the tutors House of tutor versus the house of Lancaster It uh, it was so interesting to me. I'm glad I didn't live in those times I'm so glad I didn't live in those times That it was very interesting. It took me a few months to get through all of them And then now I have cancelled hulu some time ago probably a year ago I had mentioned that I had HBO now they call that max and I watched the gilded age Well, I know in October they're going to start reupload They're going to start the second series and as soon as all those are already on and available I'm going to sign up for max so I can watch season two of the gilded age I enjoyed that a lot. So if you all have anything that you like on HBO or max, let me know because I will be getting that But what I do is I sign up for it and the same day that I sign up for For it to be started I will go in and I will cancel it So that means I will have it exactly one month And if I'm still like with the hulu we were watching still watching this series I went ahead and before it was supposed to go off. I went ahead and renewed it for another month That's my tip for the day Okay, now I'm going to announce the winners of my giveaway And I will put my video up here So if you win and you can't remember what was in your giveaway, you can just go back and look but they're all good ones They are all good ones and I did subscribe to random comment picker Because I wanted to be able to you know the words I tell you to use the words were card bk beauty and sydney grace So I really thought well, I'll subscribe and then I could change the color of my little thing But it still won't give me the whole note. I don't know what's going on about this But I put the word card in and the first name that popped up was who talksy Congratulations who talksy I hope I said your name right The second I put sydney grace and wanted to go had it go through all the comments That anyone that mentioned sydney grace and the name that popped up is raspberry beret, and I bet she is a prince fan Congratulations, and the last one was bk beauty and the name that popped up for bk beauty is shila m So if these are your comments and you are the people that I that I mentioned Just make sure you leave a comment below and I'll let you know how to get in touch with me And I will be back either october 8th or october 22nd It is all good. It really is and I appreciate you more than you'll know and I'll see you in my next video Take care You could I mean if you had your underwear You so the first time I well, no, I didn't Oh Okay, I let well I sure like that dress on you and I'll say well and I love it and I'm gonna put pictures That's the 20 discount code. Oh, yeah


A few months ago there was a lady message to us on Facebook and showed us an example of her pay it forward board that another restaurant was doing in a different state. So we kind of kept that in the back of our mind and we talked about it with my wife and I on several different occasions. And then probably a month ago a gentleman came in, he forgot his wallet at home, couldn't pay for his meal. So we went ahead at that point and just comped his check and that was the end of it or so we thought. Then the gentleman came back, prayed three or four days after the fact and paid for the meal that he had ate and then he left $50 instead to use that towards anybody else that came in and had forgot their wallet or couldn't afford food. So then we've talked about it some more and God has put it on our heart that we go ahead and do a pay it forward board like the idea the lady had sent us. That way people can pre-purchase food, we can put it on the board and then anyone who either forgets their wallet, can't afford to eat, going through a difficult time never has to really worry if they can get a hot meal. They're more than welcome to come in at any time, sit down, pick whatever they want and just give it to the staff member and we'll make sure they get fed. Because we've had people who just came in, even this morning already and purchased meals and or just left like $20 or whatever they want to leave. And then we just use that towards making sure the board stays full. Yeah, this will definitely be a great help especially through the holidays because even people who don't normally struggle are going to struggle through the holidays just because there's so much that they've got to spend on. This is not something that we just want to do for November and December. We want it to be a year round thing. That way it's always available. Like we've had a great response from the community on Facebook and even people coming in and so we are a very giving community and hopefully this will help just kind of bring more people together.


So real quick before we started moving again, the support squad and I wanted to give you guys one last little bonus gift that could really help you control the poses when creating new character concept art. Now this mannequin doll works for just about any AI engine that uses stable diffusion as a base, but it's exceptionally great when used with anime engines like novel AI. Now there are two main reasons that I really wanted you guys to have access to this stable diffusion doll. The first reason is because it will simply speed up your workflow a lot and it'll give you a lot more control over the kind of results that you get from the AI. But the second reason is to give you legal protection against nonsense accusations. Some people really hate AI art and some of these people will not hesitate to reverse Google image search everything you generate in order to find similar images and claim that you stole or used said image to generate your work. Now this is ridiculous because every artist takes inspiration from every other artist and there's no possible pose that you can think of that another artist before you has not done already. But all that aside, what this doll does is give your AI art two layers of protection against these kind of accusations. If you use this doll to pose and generate your art, even if someone reverse image searches and finds something similar to what you made, if someone accuses you of stealing ideas from another artist, you can immediately respond by saying actually no I bought ideas from Royal Skies. So buzz off. The second layer of protection is making your work much harder to replicate. Remember in the near future, the most important art information is going to be your prompts and your seed. If someone has your prompts and your seed, they will be able to generate an unlimited number of images just like yours. But if you use a custom poseable doll with image to image, even if someone has your prompts and your seed, they will not be able to replicate your work unless they use the exact same starting image as you did. So this mannequin is an excellent way to not only speed up your workflow, but make it more unique and more resilient to legal bullshit. Now there are two variations of the doll. The first is the personal license, which includes the most useful default clothing variant that I usually use to generate my own characters. It's basically a sports bra and sports shorts. With this basic model, novel AI is really good at recognizing where the clothing lines are and tracing them to generate new characters in the exact same pose. Something novel AI is also really great at doing is manga style. So I've also included a black and white version of the doll that you can use to generate more traditional manga style black and white frames of your character. Both the colored and the black and white characters are just blender files, which is a free 3D software, so anyone with a computer can open, pose, and screenshot the doll for any of their art needs absolutely free. If you're wondering what makes this model any different from any other rigged 3D character, the answer is this one is specifically designed for anime shading. The facial shadow normals were all done by Ruki Kuri herself, who is an expert at anime shading, and the body shadows were all manually designed with the proxy method taught to me by Yuli. So all the shadows have been manually adjusted to try and closely resemble anime. The rig itself has 16 animation drivers that will automatically adjust themselves when you move or pose the character. Normal rigs often don't have drivers, so when you do things like move the legs forwards or backwards or try to do the splits, the bends will often get really ugly and fall apart. But I've programmed the drivers to fix all of that for you automatically. So you can really just pose the character virtually any way you want, and the joints will bend extremely smooth and naturally. I've also added a few props like swords, shields, lances, a bow, and a pistol. Stable diffusion isn't really that great at adding props yet, but it does help a little to have a prop built into the image, so if your character does have weapons, you can toggle them on the doll to help the AI. Now if you're trying to make money off of your art, then you probably want the commercial variant of the doll, which includes everything mentioned before, but also includes three extra outfits that you would typically find in fantasy female character design. You have the classic one piece swimsuit, which is useful whenever you're wanting to design something like a bunny girl. There are two variants of the bikini, which is great when you want to do something like an anime beach scene, and you have the succubus variant, which is a really good base for really anything vaguely resembling a bodysuit related design. So if you know anyone that likes to use stable diffusion or anyone that likes to use AI to make anime art, share this video with them, share the link to the doll, I think it'll really help them out. Also if you're new to blender or you've never used any 3D software before, don't worry if you join me next video, I'll give you the crash course on how to pose the doll and use it to generate your own characters. Hope that helps and as always, I hope you have a fantastic day and I'll see you around.


Ecological remote sensing using unmanned aerial vehicles, UAVs, and computer vision structure from motion, SFM. Algorithms has been rapidly adopted, but its accuracy remains uncertain. This study examined the impact of varying lighting, altitude, and image overlap on the accuracy of canopy height estimates derived from UAV-SFM remote sensing. Under optimal conditions of clear lighting and high image overlap, greater than 80%, the study found that the accuracy of canopy height estimates was comparable to those obtained with field measurements and lidar. The study also showed that the variation in point cloud quality was related to the behavior of SFM image features, which may be the fundamental unit of SFM remote sensing. This article was authored by Jonathan P. Dandois, Marco Lano, and Earl C. Ellis.


Hi everybody. My name is Leslie Tenorio. I am the author of the novel, The Son of Good Fortune, which came out in 2020 just as the pandemic hit. So I appreciate this opportunity to share the book with all of you. The Son of Good Fortune tells the story of a 19-year-old Filipino guy named Excel and his mother, Maxima, who live in Colma, which is this tiny town right outside San Francisco. Excel has returned after nine months living off the grid and he's come back in order to earn money to repay a debt for a terrible accident that he caused while he was away. Maxima, who is a former B-Action movie star from Manila, she is currently running online scams, catfishing men, and duping them into sending her money. Realizing that he has no other recourse, Excel seeks out Maxima's help and joins her in one of her scams in order to make the money he needs to repay his debt. Further complicating matters is the fact that both Excel and Maxima are undocumented and they're doing all they can to get by and somehow make a life for themselves in America. The book is about what it means to be a son, what it means to be a mother, and the various ways that Excel and Maxima both fail and champion one another. And also, fun fact, the Son of Good Fortune is currently in development as a sitcom for Amazon produced by Riz Ahmed. So if indeed that happens, I hope you'll read the book as well. Thank you so much and stay safe out there.