Okay, I think we're going to get started again. Our next presentation is from Rahman. He's going to talk about creating a mature system with Puppet, as opposed to an immature Puppet system. Is everybody, okay, that sounds pretty decent. Hello, everybody. Welcome to my talk. I finished writing it about an hour ago, so it might be a little difficult. There is no Puppet for PowerPoint. So we're going to talk a little bit today about building a mature Puppet system, which I really think is more of an enjoyable Puppet system than anything else. Something that's not frustrating, something that lets you release code and not really have to worry about it. So I wanted to say thank you to Scale and Puppet Labs. Actually went to one of the early scales a long time ago, and then actually had lunch with Dan Bode at Scale 8, and that's actually how I got introduced to Puppet. So hopefully somebody is getting introduced to Puppet today. And I like Puppet because it lets me do my job and not get woken up in the middle of the night. I'm Ramain. I've been a system man for a long time. I worked at a couple of big companies, a couple of small companies, and I've been a Puppet user for just a little bit over three years now. And how we got involved, and I worked for Snap UTV. We're hiring like everybody else. Go check out the website, see if you want to work there. We like video engineers or people who do video codecs. And so Mature is really what I think is operable. Your team can use it. They can help you write Puppet code. You can help them write Puppet code. Other teams can use that Puppet code. It does generally what it's supposed to. You don't get surprised by it.  A code just went out and servers are starting to check in and take the whole thing out. Does anybody here actually managed to call us a site-wide outage, other than me? How many people have done it more than twice? So a couple of people copped to it. Either that or you're not using Puppet. Or you did it better than I did the first time. Flexible is a big thing. Probably a lot of you early on, like, oh, I've got this code. It only does one thing. Oh, you want a second thing? Hang on while I rewrite that. And four hours later, you're like, OK, now we can release. So that's also another big problem. Learning how to structure modules and how to write code makes it a lot easier once you get involved with it. And in full or really less frustrating of, you're not scared of the system. You're not like, OK, we're going to turn Puppet on again. I hope nothing goes down. That's kind of what we want to avoid. And how we're going to get there is a little bit of a process of we always do this. We always run tests. We always test it in stage. We promote it to production. Basically all the things where you don't have to think about it. Technique, we will do these things. We've figured these things out. We use data code separation. We're not constantly rolling code to make minor changes. Documentation, which nobody likes, boring, boring, boring. But it does help the other people on your team. If somebody gets paged in the middle of the night, they can go in and take a look at what you've been doing. Like, oh, OK, I get it. I can make a minor change and fix this problem. And finally, experimentation or the ability to have failure without taking your entire system down. And it really comes about testing or having a good dev environment that you feel confident in. It reflects your production environment, that sort of thing. So are you ready to write code? This tends to bite a lot of people. If you've been writing shell scripts, you make minor ad hoc changes. And what you don't realize is, with the puppet system, you are now writing code. You should really treat it like you're developing software, because you are. You really have all the same problems as the guys who write site code on your team. And you need to approach it that way instead of like, oh, I'm going to log into the server and make a couple of changes and get out. It's the set up your environment correctly so you're ready to write code. And all these things, this is part of the process to let you write code, have it check for you as you go without constantly having to reinvent the wheel or like, oh, I don't know what I'm doing anymore. So first, we're going to start with your editor. How many people will use Vim most often? All right. I don't know. It's almost everybody. Emacs? Anybody? All right. You're terrible people. Sublime, TextMate, anything like that? Which one? TextMate now, OK. I couldn't actually find any examples, so maybe you know some. But I just find some for Sublime. That generally seemed to be Vim was the most mature out of all the editors I looked at in the plugins that go with them. There was some Emacs. That seemed to be fairly close. Anybody using Eclipse? One. Gepetto, yeah. So if you use Eclipse, Gepetto is very nice. It's kind of an integrated environment. There's a lot of checking for you. But that's pretty much it. So syntax highlighting, there's a number of good ones for almost every editor out there. It will stop these problems from happening. Oh, I forgot that comma, missing curly brace. We've all got it, you know you have.  It's actually very slick. You don't have to remember, like, oh, how do we normally do it? What order do we put stuff in? Makes your code very consistent. And you can go in like, OK, I remember source syntax. I remember content syntax. You don't have to constantly refer back to code you've already written. How many people are actually using puppet lint? That's it. Three, four, it looks like a four and a half. All right, puppet lint pretty much eliminates most of the previous problems. Because it will check for commas. It will tell you how to quote your variables. It just keeps you from making weird mistakes. It'll check your spacing. You don't have any hard tabs that you've put an insurer in that you've put a default in. Really, I would get to the point where you're just running it by default. Because it does help you enforce code style. Does anybody actually have a code style for your puppet system? Has anybody even talked about this internally? No. So what happens is this side of the room starts writing puppet code. And they decide they're going to do it one way. This half of the room writes it another way. Three months later, you guys get together. And nobody can reuse each other's code. Or you're confused. Or he starts checking in the way he likes it. You start checking in the way you like it. Try and settle on something early on. We always do it this way. We put an insurer at the top. We put stuff up, send the other. Puppet lint helps you enforce this. If you have anything that puppet lint doesn't support, it's pretty easy to write a plugin. Generally, it just makes your code more consistent and therefore more readable by more people on your team. How many people are actually the only person who writes puppet at your company? OK. So that was less than 10, which is actually kind of surprising. I was expecting more people to be kind of single system administrators. So this becomes actually very important for the rest of you because you will have to share code with the rest of your team. And how many people validate their puppet code before it goes to they check it in, push it to stage? Again, less than 10.  This is, again, I was going to check a lot of your syntax errors this time. This is not just a style like, are you quoting the way we like to quote the stuff and the other. This will actually catch compilation errors before they make it out into a server.  It won't go figure that out and find it. It doesn't work on templates. But again, it is a defense in depth of, are we checking our syntax? Are we checking style? Are we making sure that at least this PPE can compile? And this gets you 90% of the way there. I was going to put it in, but I was running out of time. So there is, I'll check it into the GitHub as an example, but there is like a little Ruby, something, something or other, compile my template. It's more of, does it actually run it through the ERB? I forget what it is. And it's not quite as cool as any of the other tools. Like it's sort of like a, so. I haven't been using it. Yeah. You're covered faster. So for the 90% of you that use VIM, really it's pretty easy to put all of this together. VIM, you install pathogen, which basically autoloads other plugins for you. And then install those plugins if you're done. So what this does is it gives you all the syntax highlighting. When you save a file, it'll automatically run puppet lint and then puppet parser validate on it. So all it does at the end picks out like which lines have errors. You have to go figure out what those errors are. But you're done.  It just happens for you every time you save a file. So do that. So you've got pretty much most of those same options for other editors. Eclipse is probably the most mature next to VIM, if not better. Yeah. Yeah. Yeah. Right. Yeah. Thank you. What do you call it? Emacs is pretty good, but I didn't see all of that stuff. Sublime had some textmate type stuff, but I couldn't actually find a textmate one. So what are you going to do? Oh, OK. There we go again. All right. How many people test their puppet code before it goes to either stage or production on a VM? OK. Like 20. How many people are actually using Vagrant for this? OK, about half the same people. So they look pretty good. Does everybody know what Vagrant is? Very simply, Vagrant is a way to spin up virtual machines using a virtual box. And I believe they've recently added support for EC2, and they're going after VMware support. So basically, from your laptop, you're like, hey, spin me up a Debian host, type it in from the command line. It goes and hits the local virtual box installation or another box that you might have. Spins up the virtual machine that you want, and then you can pretty much run your puppet code from there. You can even kind of work the whole provisioning train into it of, OK, spin up a machine, run this code, let me know if there's any errors. OK, everything's cool. Get rid of it, which is pretty much kind of lost. All right, there we go. How many of you have run into the problem when you write a lot of puppet code? You test it, everything works. You write a little bit more, you test it, everything works. You write a little bit more, you test it, everything works. Then you push the whole thing to production, and you realize you've got errors because you didn't actually test the whole run. It's a very easy thing to do, like, OK, I install Apache. Great, OK, I know Apache is now on the machine. So OK, now I'll install WordPress. WordPress, you didn't add a dependency to Apache because it was already on the machine, so you didn't check. So now when you go to push to the new box, it doesn't have Apache or WordPress. It tries to install WordPress without Apache. Everything breaks. So basically, by testing from a fresh VM, you get the whole run, and then this way you don't have to worry that you have missing dependencies or you didn't order your modules correctly because you're really testing what the whole run will be. We do this fairly frequently at our company. I've just spin up a fresh machine, install a single host group on it, make sure everything was good, especially after we've made major changes in any of our core modules and stuff like that. Puppet environments, who uses puppet environments? Really, very, very little. I'm actually, I'm glad, it's a good talk then for everybody. Puppet environments basically allow you to use the same puppet master with different code for different clients. So in our case, we do it very, very simple. We have production and stage. So we push code to the stage directory, and then all the servers connect to it. Grab the stage code, run it. We see, OK, everything looks good. Then we promote that code to the master directory. Now it runs under the master environment. So any puppet server that uses the environment master now checks that code out, and everything's good. So it's a way of promoting code through your system. Just like how many people use a staging environment for your production code of whatever your company does? See, that's a lot more. You should be doing the same for your puppet code. Standard development practice, development. I usually do development right on my laptop. By the time I feel like it's ready, then it goes to stage, and then it goes to production. There are a couple of caveats. I don't think these have changed yet in puppet three. But puppets and facts tend to leak between the environments, so if you're doing a lot of type and provider testing, I really recommend having separate instances, either separate VMs, or just spin up an actual, separate, completely different puppet master process. Generally, I usually do it this way, I have my backup puppet master and my real puppet master, and then I just put stage on the backup one in that way, and then I kind of push to it if I know I'm going to be doing a lot of testing with providers and stuff that I don't want leaking onto the production code. And it's very easy to switch clients, it's really just a single line, environment stage, environment production. By default, puppet runs on the master under environment production, and by default, the agents connect to environment production. So really, you have to change something to get something different. I usually make it part of the template, so if you have stage in your name, then you always get the stage puppet environment. You can do something similar, you can hard set it, you can kind of set this on the fly, which we'll talk about a little bit later. There are a lot of options here, it's really just kind of what works better for your environment. The other thing to watch out is when you implement environments for the first time, you might need to rearrange things. Probably everybody here is, I bet, pushing directly into Etsy, puppet, modules manifest. You're not. Anybody else have things? All right, all the people already using environments have probably done this, maybe. So by default, you would end up just in puppet, so you're going to have to break your modules into stage and production, and then your regular files are going to be like puppet auth, puppet hera, whatever else you've got in there, so you'll probably need to rearrange your repo a little bit or change how you push. Generally, I don't push these files very often, so I have a separate repo just for modules manifest, and then I push those, and then when I want to push the puppet server, I'll push, actually, out of a different repo. How many of us, everybody, are syncing to their puppet master? What kind of push processes do we have? Subversion? But how do you actually get it on your puppet master? Are sync? OK, on the puppet master itself. OK, so you're doing like an export or? No, not an export. Generally, what I always tell people, if you don't have a push process, go find out what your developers are doing. Assuming they've got more of a clue than you do, steal their process, use the same one. You probably already have the tooling on all the machines. People know how to use it. If you've got questions, you can go ask a bunch of developers how they do it and all that fun stuff. Yeah. We just get, generally, I branch and push branches, but I kind of wanted to keep this a little agnostic for everybody. But basically, figure out a process that works. Make sure it's repeatable. Make sure you can revert to a version if you need to. That's really kind of the most important thing. Oh, I was just, examples, like that's an alias to some nonsense I wrote. Or whatever you might have, or sync fabric have strong examples. How many people are still on puppet two something? OK, so that's about half. How many have plugins think turned on that you know of? That's about a quarter of you. So if you're going to use a lot of the modules, like a puppet standard lib, puppet concat, anything with a provider type or fact in it, you're going to need plugins think turned on. I would just do it by default. It is actually now the default in puppet 3.0. Just go turn it on and you'll be fine most of the time. Test it first. Puppet Master, is it ready for production code? How many people are running their puppet behind Apache or some web server? OK, that's about what I expected, maybe 10, 15 people. So the problem with running up your Puppet Master by itself where you're just etsy and etsy puppet master do you start is it's single threaded and it only uses one core. And your concurrency is one. So if you get more than one server checking in at one time, the other server doesn't get a catalog. One server does, but one doesn't. You start running into weird problems. So what you do is you set up a Apache passenger in front of it. Apache gets a request that says, OK, you're for puppet. It says, do I have a rack process for you? No, I don't. OK, I'll spin one up. Or it says, oh, that one's already in use. I'll spin another one up and give it to you or I'll give you the one that's already there and so on. And it's basically a way to have concurrency on your Puppet Master. Please use passenger 3.0. I just put a thing on Ask Puppet Labs about it, that you should use it. There are official RPMs and devs available. Go install them. They're actually in one of the appendixes in the talk. You can go find them. It's much better at starting a rack processes. It's a little bit faster. But generally, it just doesn't leave. It's better it's spinning up and keeping track of processes. It's less likely to hang, especially if you have a lot of traffic, just go straight to 3.0. Now we need to tune it a little bit. Generally, I recommend if it's a dedicated puppet machine, set your max pull size for two times the number of cores. Set your minimum instances to the number of CPU cores. If all this machine does is puppet, you should just have a process per core there waiting for traffic. The amount of RAM you may have will limit this. Puppet master processes 10 o'clock in at 150 to sometimes as high as 300 meg, depending on what you're doing. So if you have a 16 core box, if you don't have at least eight gigs, you're going to probably run into some problems if you're running that many processes. So basically, I just recommend a lot of the Puppet Labs examples recommend putting your passenger settings in the V-hosts. Generally, if it's a dedicated puppet master, I don't recommend doing it. Just put in your passenger cough, tune it once, and then you can do some settings in the V-hosts. If you're sharing the machine with a puppet dashboard, you may want to kind of work on these a little bit. But overall, just stick it in the passenger cough and keep most of it out of your V-hosts. The big thing is with passenger 3.0, you get the passenger pre-start URL.  Because what happens is when you restart Apache, it starts no rack processes by default. So you do not have a puppet master running at this point. So it waits for the first request to come in, and then it starts the rack process. The problem is the rack process takes somewhere between 30 and 60 seconds to start on most machines because it's got to go through, build the upcode cache, blah, blah, blah, connect to databases, whatever else. So it's almost a full minute until your server is ready to serve its first request. So by putting passenger pre-start in, which is again only available in passenger 3.0, you avoid this problem. And also, it'll spin up that many. So even if you set minimum instance, it waits for the first request to come in. So by adding this, you really end up with a lot better puppet master than you would without it. And then in passenger 4.0, there's going to be multiple Ruby instances. So if you want to test, OK, what's my master do on Ruby 187 versus my master on Ruby 193, you can actually do that within passenger without having to mess around with RBM and a lot of other craziness. So Apache tuning, you really don't need to do much. I run my puppet master under pre-fork, I mean under Worker. It really just works. I've done it on Ascentos and Ubuntu. Pre-fork, I would just avoid for this because Apache is really just a reverse proxy to passenger rack processes. So there's no need for pre-fork. It's just going to use more memory that you don't need. You might need to tune in a little bit if you're running a monster puppet server. I have a friend of mine who has 4,000 nodes on his single puppet master with 16 cores. So he has had to do a little bit of work on just how many connections he's coming in. But overall, it's unlikely you actually need to touch that much on your puppet master when it comes to Apache. So there are a couple of other ways to run your puppet master. InginX and passenger, InginX and Unicorn, Apache and Unicorn, Apache and Mongrel, just Mongrel by itself, passenger by itself. I have very little experience with any of these. Generally, it seems that most people on IRC that are running Unicorn have had more problems with it than passenger. Most of the docs from Puppet Labs are about Apache passenger. It seems to be well understood. And generally, people seem to get their problems fixed faster. The other thing is Puppet is a huge transaction. It's a one request, and then Puppet sits there compiling a catalog. There's really not that much chatter on the line, like, oh, give me this page, give me that page, give me an icon. It's really like switching out the app server. I don't think it's going to buy you that much, but I really haven't run any tests. I'd be kind of interested if anyone has. And worst case, if your entire company runs on Unicorn, InginX, and that's what you're comfortable with, then go ahead and run your Puppet master on it, just because you already have domain expertise there. So one thing I like to do is actually isolate the master. So what I do is I don't install on the Etsy Puppet for the master. I install just the agent by itself. Everything goes into Etsy Puppet. I leave that alone. Then I actually create some extra directories. I put it under an unprivileged user, and that way I know it's completely separate. Like, I can actually just copy that file up in R-sync it somewhere. I can back the whole thing up. And it just makes life better. So part of it is how many have run into the cert problems when you first set up your master? Like, you install it as an agent first, then you convert it over to a master. It was using the cert of the host name and the machine instead of whatever cert you wanted. Does this actually happen to anybody? OK, a couple of you. Yeah, don't do that. Don't set it to your host name. Hard set the cert name. And actually, we'll talk a little bit more about that in a minute. The other thing is, what do you call it? I've seen people on the email list in IRC. They've deleted all the certs on their master and then had to research everything. Has anybody here actually done that? Willing to admit to it. One guy. I'm not going to put him out though. He's over there. Because a lot of times, somebody's like, oh, I'm having cert problems. And the usual answer is, oh, delete this directory on the client. People kind of like, oh, OK, you're like, oh, nothing works now. Yes, yes, yes. So the other thing is, your Puppet Master actually always runs as an Unpredict user. Usually as the Puppet user, sometimes as the Puppet Master user, depending on the OS. And it can conflict with the agent, which is obviously running as root. Otherwise, it can't make any changes. So just by moving the whole thing over, having it separated makes everything a little bit easier to manage. Also, I like breaking out the modules. Like I have my installPuppet module. That's installs the agent. I have my installPuppetMaster, which includes Apache, Passenger, all this kind of stuff. They have nothing to do with each other. I do not share the PuppetConf. I don't have to do any complicated concat. Everything's done. So I don't have to worry about my database passwords making it into the PuppetConf on all the clients, which I've seen people do. And then I have to go remove them, change things. It's kind of ugly. And the nice thing is, when your Puppet Master actually uses a file called config.ru to get it to config. So you just tell it, OK, use that file. Otherwise, by default, it uses your EtsyPuppetConf. And you're done. So it's really the only thing you need to do. And then my PuppetMaster conflict looks like this. I just tell it, OK, you live in home. Some user. All these things have changed. That's where your Puppet code is. And you're pretty much done. So it's nice and isolated. How many people have not backed up their certs yet? We've got one.  Ignore any of the reports in there. There's probably a lot of those. And it makes it pretty easy. The other nice thing is, once you get that figured out, if you want to build a local Puppet Master on your machine with RBM and a Ruby and just get it going, it's very easy to do. You can use all the same configs. And you have instant mini local Puppet Master on your machine. All right. How many people are monitoring their master? Come on. It's like six people. Terrible. So generally, HTTPS, port 8140, make sure you've got at least one rack process. You've got Puppet, so you can say, how many processes are on this machine? OK, make sure they don't have any rack process and make that part of your code. So log watch, make sure machines are actually able to check in or that you're not spinning out a bunch of errors. And you can request a catalog every so often, too. And just make sure that you're not getting a 400 or something on that. What do you call it? What's it? Oh, you mean how to request a catalog? I think it's curl, blah, blah, blah, blah, blah, blah. Yeah. That was actually surprisingly helpful. So how many people are actually monitoring clients? OK. Yeah. So basically, we do it by just checking the last run summary YAML. How many people knew this file existed? OK, about the same people monitoring their client. So it's easy to parse. It's in YAML. It tells you how many things changed, how many things didn't change, and if there were errors or if it couldn't do anything.  I put a simple check in my GitHub, so it'll make it into the GitHub repo of this talk, so if you want to grab it. It's based on Ari's original work. I just kind of simplified it because I didn't care that much about certain things. All right. Your Puppet Master is storing a lot of data you don't need after the first day. Every time a server checks in, it generates a report. Your server keeps that report. It can send it to the dashboard. Generally, I delete them after three hours if you want to keep them around for a couple of days in case your dashboard server goes away. You can if you use them and consume them at some point. Great. Otherwise, after six months with about 100 nodes, you'll be like, why is my server using 10 gigs in the bar directory? So just set up a cron to clean them out. How many people are actually using the dashboard? A couple people. The dashboard is really bad at clearing out nodes and reports. You must set up the prune crons to get rid of them. Otherwise, your MySQL database grows and grows and grows until it picks up all the room on your server. So I'm not sure what problems PuppetDB has yet, but I'm sure that a lot of them are similar. So look and see what they recommend for that. MySQL tuning. If you use the dashboard, this is actually kind of important because you're going to get a lot of stuff in there.  Just toss it away. Do at least these settings. And it'll generally work if you've got like 100 nodes. If you have less than that, you can probably get by with default settings as long as you're pruning fairly often. But if you have a system that's actually in use, go with at least this. All right, let's talk about certs. How many people manually generated their master cert? OK. Nice. So you can actually have a master cert.  And then I actually call it application cert, but really it's just kind of another client cert for the most part. But you generate one if you use the dashboard. Or you can generate one for your application to actually talk to your Puppet Master. I like multiple names in mine, especially if I know I'm going to need to move my Puppet Master at some point. I'm running 2.7 right now. I know I'm going to have a 3.1 master someday.  So that way, I'm like, OK, I can point it to Puppet New. I don't have to play DNS games. I can just change things around. And it's not like, oh, I don't recognize this cert. It's the, OK, it's a different name for the same cert I've always been using. It makes things much simpler to move. Application cert. So this is actually when our system spins machines up, spins them down. And then we go expire the cert out of the master. And it's a simple core request to the REST API on the master. So you don't need to go in and dig certs out. And you go, OK, that server's gone. By the way, when you clean it up, get rid of the cert. Notice the client. So if you need to list, if you've got machines that don't have their cert yet, you can list those. You can clean up old ones. If you just want to start fresh on a client, you can just whack the whole SSL directory. That's actually usually the easiest way to deal with it. All right. So when you're testing, you don't want to kind of sit there and be restarting the daemon all the time, or maybe you do. But it's not really that useful.  It doesn't know its hostname or anything. So I need to put all that on the command line. I kind of invoke puppet these ways. If I just want to kick the agent off, if I want to tell it a particular server, also I'd plug in sync. If I want to override, like I have a roll fact that tells the server what it is, so I can just do that from the command line. If it's never been run, I'm like, OK, your database, connect to this server. Your cert name is this. Go make all those things happen and kind of keep that going.  Now your roll is back end. Now your roll is. And you don't have to reconfigure a machine each time. You can just pass these from the command line. Same kind of thing with a puppet apply, but it's more of a, you know, if you're testing code, you can just, OK, I wrote a new module. I don't want to, like, push it into Git and then release at this age. I just want to run it locally on my VM and see what it does. Go ahead, puppet apply. Sometimes it's called masterless puppets. Some people actually run their whole system this way. They push the entire puppet repo to a server, and they just tell it to apply it locally. It never actually checks into a central location. All right, now we're getting into modules. All right, how many people are actually using a puppet standard lib for anything? How many people have actually installed it for another reason other than some other module told you to install it? All right, so a little bit of half and half on that. Really, a puppet standard lib is a talk in its own right, and I believe there have been three or four of them. Go find them on the puppet camp website, and it does so much stuff. I'm just going to do one simple example. It provides this function is an integer, so you don't have to write it. And this is great if you are actually sharing code with lots of other teams where you need to validate some input because they didn't write it, so they don't know how it works. Standard lib provides a ton of this. This is like one of, I think, 40 different validation functions, so just go find it, read it, use it in your modules, and don't write the code yourself. All right, towards a better module. How many people have what I would call some God modules? How many, what do you think a God module is? So my favorite example is a WordPress module where it's like, okay, WordPress, okay, now we're going to install Apache, now we're going to install MySQL, now we're going to install PHP, and it's this monstrosity of installing like 40 different things on the system. Those things should be broken up into individual functionality. Puppet is like Legos, and a couple people have written that talk too, like little bits of functionality build the thing you want. Don't think of your servers as, this must be a web server. Think of it of, okay, this is a server with MyCount. This is a server with HTTP on it. This is a server with our site code. Build it up gradually, layers. Don't write giant modules just because they aren't flexible. You'll have, oh, okay, this isn't a WordPress server anymore, it's a MediaWiki server anymore. Now you have to write the whole thing when instead you could have just included Apache, included PHP, and you're done. So actually, I think a couple people are sparked on this today. Code versus data. The example I like is, okay, you've installed WordPress. It comes with data. The spam is already there. The blog posts are already there. You've got to get rid of all of it and put your own stuff in. WordPress doesn't ship that way. It ships with code, and then an empty database for the most part. And that's really what it buys us here is, if you write code that can take input, then when I give it to somebody, they can put their own code into it, like they care about these things. I don't care, like they want their own versions in there. I want my versions. If I hard code everything, then they got to go in and change it. They got to figure out all the places I referred to it. And then it makes it much simpler to do this, and if it's this role server, do that. So if you start seeing places where you're doing that, or if the name of the server contains a two, then do this. It's probably time to start splitting data out where you can query it. All right, and how do we get there? We get there with Hera. How much time do I have? Oh, I got like 30 more seconds. All right, I think we're gonna end with Hera, and then I'll take questions. So, Hera is basically a hierarchical data structure that you can query to get the data for your code. Most of us probably already think of our systems this way. You're like, okay, I've got databases, and I've got masters and slave databases, and I've got masters and slaves and some different colos, and you've got this hierarchy of how things work. And Hera actually really goes along well with that. And so actually, here's our hierarchy at work. So, fully qualified domain name is atop a hierarchy. If I wanna override something, that's where I'll do it. Like, you're this server, and I need to test this on you. I put it there.  Or you're a database server, you get these values by default, and maybe I'll override those in stage and override those in prod. Role is actually a custom fact, in my case. So, Hera lets you build a hierarchy off custom facts, or any fact, really. So, if you want a deeper hierarchy, you gotta kind of write the facts, or adapt the existing facts to your system. I see a lot of people will add a location on here, like, okay, I've got stuff on the east coast, they get these settings. So, generally, location, role, environment, or what you see a lot of. So, here's actually, this is my dev machine where I build custom VMs for other things. So, I just set how I want things to run on it. Like, in production, Apache binds to everything, and my laptop, it just binds to localhost. I've got a local app build server, I use less MySQL RAM, because I don't have that much of my laptop. I'm with the latest factor version. I don't want to update Puppet, because that'll screw us up during my run, so I leave that alone. And then I'm doing a lot of Ruby testing, and that's the Ruby test, you know. And then in the case of Factor, I just asked for Hera factor version. By default, it's present, that's what the last one is, and then I just grab it here. So, in my case, because I said it's the latest, that's actually gonna override present. But if somebody else ran it, they would get present, unless they'd actually set something in their Hera file. And I think that's, oh, and these are the usual mistakes. People see Hera Array, and they say, oh, that must be for arrays. Let's put it in there. And they say Hera Hash. So what those do is Hera Array actually collects everything that matches across your entire hierarchy. So if you say, so everything that server matches for you, like, okay, it matches this role, this environment, it's gonna collect all of those. So it's actually great if you have monitoring servers in different zones, and you can collect all those monitoring servers, and then you can allow access to your patchy. However, most of the time, you just want first match, which is Hera. So that's really kind of the major mistake I see people make on IRC. So I think we're gonna stop there. When I get some bandwidth, I'll upload the talk, and you can see the last 30 slides. Yeah.


Welcome to BCH Technologies. This is Kevin. Today, we're going to work on Epson Artition 1430. We're going to refilled original cartridges, and then we're going to replace them with a refillable non-OEM cartridges. We're going to talk about why would we keep using the original OEM cartridges and why we want to switch to non-OEM cartridges. This model 1430 is very versatile and can be used with a dye ink, pigment ink, and sublimation ink. It's very popular among professional studios and printing companies. If you use this printer a lot, you'll know it clocks a lot, so today we're going to cover some basic unclogging techniques too. At BCH, we unclog and fix the printer for free, so if you live in an area that's close to us, you're welcome to stop by and drop your printer here. This printer uses original Epson ink. It starts printing blank pages, so it sounds like it needs a ink and maybe some unclogging. Although the ink monitor shows some ink left, the cartridges feel very light and don't seem to have any ink. Epson's ink monitor actually doesn't know how much ink in the cartridge. It is simply a counter which counts how many pages printed. For example, if the counter is zero, then it thinks you'll never use the cartridge and shows a full tank of ink. We're going to use a standard six-color ink, available at bchtechnologies.com, and go to Refill Ink and Refill Ink for Epson, and just click six colors. The package comes with a small pen drill, but I recommend to have an electric drill or something similar. I also recommend some plugs and some priming tips, but it's not really critical. We're going to cover it later. The reason that we want to use OEM cartridges is this part. It is a one-way damper which regulates ink to flow one way from the cartridge to the printhead. This part reduces the chance of ink backflow and clogging. We're going to use a drill to drill through the two layers of plastics and put the ink into the ink tank. Of course, we should avoid drilling through the circular one-way damper. This shows how deep we drilled and where we drilled. Now we will add a fair amount of ink into the cartridge. If the ink is overflowing, we should stop right away. We can seal the hole with a piece of clear tape. Here's an optional step. If the cartridge's one-way damper is full of air, which means we used the last bit of ink, we can use a priming tip to remove air from the one-way damper. It'll give the printer some help to start printing. Because we're not supposed to run the cartridge to completely dry, so this step might not be necessary. Next, we need to reset the page number to zero. You can go to bch technologies and go to accessories and the resetter for cartridge. Don't select for waste tank. Select the cartridge and make sure the model number is right. And this one we use a ep0. For the resetter, it doesn't work if you have really low ink, which means less than 15%. You might have found that the resetter has a different number of pins than the cartridge. That's not a problem. As long as you line up the top pins, the bottom pin doesn't need that many number of pins. And this one, say, we push many times and it's still going red. If we check out what we found earlier is the two colors. One is a sun, one is a light magenta. Those two have a triangle on it. That means really low ink. It's less than 15%. One is less than 15%. You have a good chance that the chip will not reset. So the only thing you can do is throw it in the trash can. Okay, let's try one without the yellow triangle. So this is magenta and you can say we line up. And it's red as our first try. Then we try to line up again and push. Now it's green. And we gave a sign, another chance. So the best time is before you get the low ink warning to refill it. So science is in the trash can and we reset magenta. Now it's the light magenta. So we'll give a trash can treatment again. The right three colors should be straightforward. So we still have two cartridges in the trash can. So we're going to replace it with BCH refillable cartridges. We can get it from cartridges and for Epson refillable. Then we'll select T79. It has two holes. In the back is the air hole, which I put a color plug in there. I put a color plug just because you have to remove it. When the printer is working, this hole must be open. The next hole is in the middle is the refill hole. That's where we're going to add ink in. The two holes are connected. So if you're adding the ink from the wrong hole, it won't damage the printer or won't damage the cartridge. The only thing is you'll just do it in a harder way. So we use the color plug to seal the refill hole this time. We put the color plug in the air hole for the first time. It just forces you to remove it before you use it. Here's the optional step that we prime the cartridge by sucking the air out of the bottom of the cartridge. You can see we can add a lot more inks in the refillable cartridge. It's like 2.3 to 2.5 times of the original cartridge. How about that? We're going to do two cleanings then with two hours and then do another two cleanings. You can see the black is a little bit clogged. We'll do some basic unclogging. We're going to use a tool from accessories and priming cliff syringe. There's nothing special about it. It's just a syringe and a tube. However, the tube was tested to make a really, really tight fit with your printhead, which is really important. And then the cleaning solution we use accessories and anti-clogging agent and we use this triple action cleaning solutions, which is green color. We filled about five mils of our cleaning solution. We need to be able to move the cartridge freely. So we press the ink button as soon as the cartridge moves to the underside.  Then we fold the paper towel and put it on the bottom and then move the cartridge to the middle.  Now you can squeeze the syringe and do not press too hard. I mean, if you have presses really, really hard, that's another problem. You don't want to burst the printhead. So gradually, smoothly, press the ink in and do not forget to remove the paper. Don't get scared by the first printhead and do two cleanings with two hours, then do two more. The black is fixed. Here's the Colorado quandary peak. I got three stitches on my arm for this and you can see the view is totally worth it. Okay, let's talk about when to refill the cartridges. If you have an app's OEM cartridge and a user's data and you already see it, you should fill whenever you get this error message or not error message. This warning comes up, so it's almost time to refill. You take it out, reset it and refill it because you cannot see how much ink in the cartridge. Do not let your printer tell you when to refill. However, if you have a refillable cartridge and the first thing to do is do not enable auto update and do not install any update. Secondly, the refillable cartridge is equipped with an ARC chip. ARC means auto reset. It only resets when it reaches a page number, a particular page number. So if absent display is almost time to replace the ink or the ink is low, those kind of warnings you will have to ignore it. Keep printing until you see this. Ink cartridge cannot be read. If you don't get this, just keep using the printer. So we have a black and we have a light magenta that is reset.  But the printer cannot figure out why you have a full tank but you haven't taken the cartridge out yet. So what we're going to do is we take the blackout and fill it with the ink and put it back and the printer will be heavy. Make sure we'll do this. Use the printer's replaced cartridge function. Some people just cut the power off and replace the cartridge. That's not right way to do it. If you cut the power out and replace the cartridge, the printer doesn't know that you replaced the cartridge. So here you can see I fill up all the cartridges and what happened. So we restart printer and you can see the black is full and the other is still low although we already add ink to it and it will still be low. So for the refillable cartridges, just keep using it until the printer stops you and then fill it up and then put it back and that's it. I hope you enjoyed this video. Visit us at bchtechnologies.com or locally at Greensboro, North Carolina. Thank you. Bye. Cheers.


central banks are promising the best of all worlds for the equity markets and traders on the equity markets yesterday started to really go all in at least when you look at euro stocks and at least at the DAX which had a big jump upward after the Bank of England actually promised to even to do even more in the coming weeks and months should the economy the UK economy we can even further so the specter of low rates for a long for a longer time has actually motivated buyers to get into euro stocks that was something that was was expected at least because funds were have a strong overweight in US stocks they were going out of euro stocks so sooner or later if the signal was there and it seems that there was some kind of signal yesterday because of the Bank of England should the signal be there they would diversify from euro from US stocks to euro stocks and it might be a first sign that this is actually happening in the end we got no real alternatives right now to stocks because central banks are engaging in pushing rates even lower yesterday was the Bank of England trying to really execute on the QE bond buying program actually it fell short by 52 million pounds yesterday of its target to buy more than a billion pounds of long-dated government debt it was just that investors were not ready to sell those papers so those bonds which still have a positive yield on them so they hold on to them and the Bank of England actually fell short of its target and so its efforts to stimulate Britain's economy are just a little weaker than they should be in the current environment so worldwide we've got 180 billion dollars of bond buys buying by the central banks so yes there is some effect if you look at the arguments from George Soros Carl Icahn and the hedge fund managers and the big boys out there in the equity markets they're very bearish because they somehow rely on the traditional valuation metrics and methodologies to say okay the fair value of stocks is way below it was Mark Fabi yesterday saying okay he expects a crash in the S&P 500 index by 50% given from current price levels and he says that okay in the end valuation metrics are not fair but that is a traditional valuation metric in a world where central banks are not buying 180 billion of government bonds on a monthly basis but it also could be if you believe that this time everything is different it might be very dangerous opinion because if there is one very very expensive saying or quote about the markets it is that this time everything is different yesterday on Wall Street there were somehow weaker oil prices they somewhat hovered along the close of the day before because there were doubts on the OPEC rumors OPEC and it was Venezuela the day before saying okay we need a meeting between the OPEC and non OPEC producers so somehow Russia and perhaps even the United States meet on one negotiation table to somehow cap the worldwide oil production yeah nice try from Venezuela but nobody really believes in that and so that somehow dampened oil price yesterday there was some profit taken in oil stocks yesterday as well so well we had some some strength in health care and technologies stocks yesterday on Wall Street but the big thing is the DAX which actually went up strongly after the Bank of England policymaker Ian McCafferty said more quantitative easing was likely to be required if the UK's economy if the decline should worsen and that was some signal for the euro stocks in the DAX yesterday broke above the resistance at 10 487 10 500 what we've got there is the high of April and what we've got there is the downtrend line coming from the all-time high in the DAX starting at 12 400 if you draw a line on the tops since then in the downtrend we have that downtrend line and we've got the horizontal resistance lines over there's a cluster resistance at 10 500 and if you look at the DAX it strongly broke out of that so that might be the start of at least it is the end of the downtrend but it might be the start of a new uptrend or at least a new sideways trend and no downtrend anymore in the DAX so that is some sort of step in the right direction we have to look at it in detail in the coming days and weeks what comes out of that but it's a positive signal could be the start of some diversification by investment funds from their overweight of US stocks and somehow they could diversify back to euro stocks which have significantly lagged behind


Okay, so today I'm going to be talking about one of the ways that we have at my AUX consultancy learned to create empathy between the user and the decision maker that builds their products and services. So to get started, I just want to tell you a little bit about myself and my team. I am co-founder and co-owner of a AUX consultancy in Chicago called Traceable Change. This is my team here. My partner Gino there all the way to the end and then my partner Martin. We started the company five years ago. We had worked at a variety of different types of AUX companies and ended up at a really large one where we felt like we weren't quite able to push innovation and holistic AUX thinking as much as we wanted. So we decided we were going to branch off and start our own thing so that we could be really creative, not only in the designs that we make, but the way that we approach research and the way that we approach strategizing for our clients. So I want to give you a little bit of a background about the composition of our leadership team. It was very intentional. So Gino's background is an industrial design and brand strategy. My partner Martin, his background is an interaction design and he also in a past life was a clinical psychologist and my background is in a smattering of things, but primarily behavioral sciences, so social and cognitive psychology and anthropology. So my focus is really around the behavioral and social aspects of AUX and how we can bring that knowledge to the designs that we create. So I want to stop here and ask how many people in here have done user research? A couple of you. Okay. Have you guys ever presented your findings to a room of stakeholders or colleagues or anything like that? Have you ever run into a situation where you're presenting some findings and maybe one person gets really hung up on one detail that totally doesn't matter to them? Yeah. So for those of you who haven't done it, that's pretty much how it always plays out. You have to be very careful about how you tell the story because stakeholders will find something they wanted to hear or didn't want to hear and that's the end of the story. I can't hear anything else you're saying. So that's kind of the point of why I wanted to put together today's talk because it actually really, really matters what stakeholders and decision makers come away with when we do user research and we present user insights to them that are going to influence the designs and the services that they put together. If they get the wrong impression or if they hang up on the wrong detail, everything can get derailed. So it's sort of incumbent upon us as UXers to make sure that we are doing that intentional storytelling so that we can actually help them build real empathy with the users. So one of the ways that we have done this and it's, it was kind of accidental that we came across this because we had a couple of studies where we realized that it was actually really crucial that we told the story of the core experience of the user so that the stakeholders, in this case our clients, could really help them out so that they weren't going to get distracted by the details. I'm sure the term experience statement exists in many iterations and forms, but we use this term to describe basically boiling down all of the insights into one meaningful theme, one meaningful core belief, one meaningful emotion that underlies all of the comments that we might hear from users and user feedback because we want to present something as focused and precise as we can so that when decision makers are deciding where to put their money or deciding which projects to entertain that they're doing it from the most important piece of user experience and it's everything that underlies maybe what we hear coming out of their mouths. So the idea behind this is based in psychology and emotional studies. I'm not going to read all of that. I know this is really wordy. I'll talk about it. You don't have to read this slide. But this is sort of a simple model that we put together for one of our clients that we called an emotional experience model to help them understand that they may be hearing a lot of things from their users, but the experience and the emotions that are driving making those things important to them are underlying that and they may not be able to express that themselves. So they have an experience for the first time you have an emotional response. This is typical. This is how we work. You sort of form a new belief about that experience and you go forward with that. Time passes. Another event happens that happens to trigger that feeling that you developed about that event. The belief grows. This is kind of how trauma works, right? Something you have triggers that keep hitting at something it gets firmer and firmer firmer the belief. So this kind of helped us to illustrate to them why are my users so upset about something that seems so stupid? It's because what they're describing to you is what they know, but this is actually what's driving their decision making to use your product or not use your product or to be happy or unhappy. Any questions about that before I go forward? Okay. I know we don't have time so I'm going to give you a couple of examples. So one of our clients is they're a major manufacturing company in Cleveland, Ohio in the United States and they came to us because they're factory floor workers of which they have tens of thousands. It's a huge company. They seemed unhappy about a lot of things. When I come to my shift one of my tools is missing or I feel like my supervisor doesn't listen to me or I feel like I'm not evaluated correctly. And with all of this array of issues that they were encountering, they weren't sure how to actually address it. There are a lot of different things they could pick to address. So they wanted to figure out what can we do and so they brought in a UX company, us, to try to help them understand that. So what we did and I won't get into the details too much as we put together a research program for them that included ethnography which just meant that we were on the floor, the factory floor with the workers, day shift and night shift we observed them. We executed some contextual inquiry which just basically means interviewing them in their natural space while they're experiencing what they're experiencing because it's fresh in their minds. We put together some focus groups, a whole mixed method basically to understand what's actually going on here so we can put some cohesive themes together. So some examples of what they might say. My boss doesn't understand that my performance depends on my equipment. My machine breaks all the time. I get these bad performance reviews. I try to tell them they don't listen to me. I'm frustrated. I have to cut corners to be noticed. I have to fudge my numbers in order to get positive reviews but that's dishonest and I'd really rather not work that way. Just a couple of thousands of things that we heard. But within this category we wanted to derive what is the impact on the user to experience these things over and over, these things triggering over and over, growing this belief inside of them that makes them dissatisfied. We found out that they feel no matter how hard I work I'm not going to be seen as successful. All these different things mean one thing to me and they mean this. This is a really painful thing for me to experience. I'll give you one more example. We also worked with a major non-profit in the US that does a lot of humanitarian work and what they were having an issue with is they have some programming for family health in the communities where they reside and they noticed that underprivileged and low-income families weren't attending these programs as much. They didn't know why they wanted to figure out and then they also wanted to figure out how to redesign the program so that they could engage these people. Some of the things we heard from these folks my neighborhood is too dangerous to get out. In Chicago if you live in a low-income neighborhood that also means it's generally very violent neighborhood so families are really afraid to go out and do too many things after dark. I can't afford a gym membership. I don't have time to travel. I have three kids. I have two jobs and no car. How am I going to take a bus out to this thing twice a week? It just doesn't work for me. But what is the thing beneath these statements that hurts?  There's just no way for me to lead an active lifestyle where I live because I live where I live because I make the money I make. This is not something that is available to me and I'm not allowed to have it. This is the thing that hurt for them underneath. So what we did with these experience statements was we brought them to the client and we said this is what you need to solve for. You get all these comments. It's overwhelming. There's a lot of different things that you could pinpoint. But if you solve for this those things will eventually work themselves out. And this is especially important to get stakeholders, decision makers, people with money in the room. A lot of times that's difficult to do and you might only get one shot at it. But if you do, you need to make sure that you're giving them a very focused story so that they can empathize directly with the core experience of the user and not get hung up on the details of the comments that they make. So a couple ways that this could play out. One of the activities that we like to do with our experience statement is immersive ideation. We like to hold as many workshops with our clients as possible just to sort of bring the insight directly to them and make some the action right next to the experience statement. Bring these things close together. Don't let the research insights get lost when action is being taken and products are being built. This is just a shot of one of the ideation stations that we did with the nonprofit. So you'll see what we do with the ideation station is we put one experience statement on there. They have to solve for that experience statement.  I think we had eight experience statements that we brought to this client and for each one they'd have to focus only on that experience statement and then they have to solve for that issue. So a little more detailed look at what an ideation space might look like for something like this. So we have our experience statement up in the top. This is the anchor. This is what they need to solve for. Why do I feel this way? These are just some examples of maybe some of the insights that came out. Some of the detailed findings that came out that drove the experience statement to give them some something to work from to ideate solutions. Channels that could be used. Ideation tips. These things to trigger conversation and creativity. There could be a lot of different things. The point of this concept is that we are asking people to act on this immediately. There is no distance between the core user experience and the action that they're planning to take. I'm just going to give a few examples of these tools that we use as well. So I think the next step in this is you've brought the experience statement to the stakeholder and the decision maker. They're able to keep that rooted in the solutions that they're trying to come up with. The next step is once you're gone, once the UX team is gone, once the consultant is gone, are they going to forget all of this stuff and just start making haphazard decisions? Well, you want to try to avoid that by leaving them some artifacts that they can use that are linked to these core experiences. So I'm just going to show a few examples of some things that we've done. One thing that's very common that we use in user experience is experience mapping. Journey mapping is really common. There's lots of different ways that you can map user insights, though. This one here at the top, you can't see the details, which is fine. It's not a big deal. We call that an empathy map. Basically, what that is is a snapshot of a persona that we researched. It shows what they're thinking, what they're feeling and doing, where they are, what's happening around them during that time. So if you're feeling disconnected from the actual insights from the core user experience when you need to build a new product or service, you can pull this thing out and basically just be in their shoes and immerse yourself. This is a core experience map. We made this up to link insights to the experience statements themselves. So the way we tell people to use these is that these are the things you need to solve for. These are your experience statements. But you heard a lot of feedback. So here's the user comments that you have. But here's how complex it is, how these core experiences are linked to the actual things that you heard from users. So don't solve from here. This is complicated. And you could hit one of these targets and miss everything else. Solve from here and eventually you're going to impact one of these things. So it just helps focus them and level them up to what really matters. Sorry? Yeah, let me read it from my computer. Thinking, feeling, doing and seeing what's around you, what's your environment when you're going through that experience. I'll get into the details of this in a second, okay? So just a couple other things, scenario cards. This is useful because it's just kind of like a handy card deck that you can leave with them. These would be problem areas, pain points that came out of the insights. Again, reiterating what's happening, thinking, feeling and doing around this pain point. And then down here you'll have that experience statement linked to it as well. So if they have this issue popping up again, they can bring this out. Okay, this is what's happening with my employee or with my user when they're experiencing this issue. And then finally, concept cards. This is ideally you want to get here in your workshops when you are dealing with experience statements because this links you directly from the experience statement to an action plan. So the concept cards are basic. You go through ideation for ideas for designs, ideas for programs, ideas for processes. You have the experience statement at the top. You have the design idea and then you have an action plan. So you've completely linked that core user experience to the next steps for what they're actually going to develop. Okay, it looks like we're just about out of time. Are there any questions at all?


When you think about the studies that we're reading about jobs, right, 75% of the jobs that are going to be in existence in 30 years or 15 years don't exist today. And if you think back to even 15 years ago, there are a whole list of jobs that didn't exist and those jobs are a result of problems that we've caused. Things like drone operator, a self-driving car tester, I think that's my dream job actually. Get to see the world, but I don't actually have to do the work. Information security specialist, Lyft driver. And I don't think any young person 15 years ago said I want to grow up and be a 21st century taxi driver. But these are all jobs that are existing because we had, we created problems that weren't in existence before. And so this is a paradigm shift. It's not that we're solving problems, but that we're creating students that have the digitally fluent skills in order to be able to think about what's next, right? How do I create the next problem so that we can have a whole set of solutions around that, that drives these jobs that don't exist yet, that drive if you want to be an activist, right? What does that look like? And so for me, it's really thinking about how do we help empower our faculty and our learners to think about the work that we do from a different perspective and then how do we provide that whole set of faculty development, instructional design, IT, and research support to inform their practice and to ensure that we're providing an opportunity for us to transform higher education.


We're here at the ITU's studio in Geneva and I'm very pleased to welcome Dr. James Ngaro and Jeru, a rapporteur of a study group two, question one slash two, creating the smart society, social and economic development through ICT applications. What do you think will be the major outcome for the study question you're involved in? The major outcomes of our question one slash two is that we're going fast to provide an explanation or a concept of what smart society is. One of the major things which we expect will be providing is a clear guidance on what we should be focusing in terms of the scope and the services which will be provided within a smart society. Currently the one smartness has been used in most nations and most regions to envisage how the countries and the nations would be able to achieve their vision of being smart and it has mainly been used in terms of tools, in terms of buildings, in terms of cars, funds and all these look at how technology is being utilized to ensure that it is increased productivity, increased efficiency and competitiveness within the entire sector. So one of our outputs is then to try and make sure that people understand when we talk of smart society what is it that should be encompassed in the definition of smart society. How relevant is the study question in relation to the attainment of the sustainable development goals? This question is very relevant when it comes to the attainment of the SDGs. Out of the 17 SDGs about 15 of them do require the involvement of the ICT and the use of ICT is being seen as an enabler in utilizing the equipment, the technology and the software so that we can be able to have the developing countries achieve most of the SDGs. We require a society that is smart enough so that they can be able to utilize the information technologies and also improve on health, on education, on agriculture, on energy and transport. Therefore we see our output for the question will enable the developing countries to be able to achieve the SDGs. What would you say has been the contribution of ITUD study groups to the overall development of the ICT sector? The ICT sector is a very dynamic sector and the law of ITUD is that it provides us with an opportunity to be able to share information on what different nations especially the developing countries, what they have been able to innovate, what they have been able to implement and how those experiences can be shared with the developing countries. Therefore that they can be able to benchmark and be able to learn from the experiences of the developed countries. When we meet within the development sector group meetings, one of the most important things which we do is to share the experiences. The questions which are normally presented and discussed are about experiences which developing countries and developed countries all together share among each other. So it is important in the sense that it gives us an enabling environment that we can be able to benchmark within each other and also learn from the challenges and the benefits, the opportunities which other member states have also been able to. And also it assists the sector groups who are involved in the innovation to be able to show their case studies on the areas which they have been able to innovate and how these can be applied within the new states in the developing countries. Thank you very much, Dr. James Jero.


Yes, folks, in this video, I RGB a Nintendo Switch Pro controller. That's right. We're joining the PC master race with all the RGB stuff. But before we get into it, I need to remind you guys that we have two huge giveaways happening right now. We are giving away a Switch Lite and two games of choice for Switch. The Switch Lite is the grand prize. Two other winners will get the game of choice as a second place prize. To enter all you have to do is go down into the description and there will be a list of different ways for you to enter and maximize your entries. Don't forget, by the way, if you join our Patreon at patreon.com slash Nintendo Prime for as little as one dollar a month, there are other tiers. But if you just join our Patreon, you get 15 additional entries into that giveaway. Now, we have a second giveaway as well for three copies of Super Mario 3D All Stars. That's right, folks. There is a gleam.io link down in the description for that. And yes, the joining our Patreon also gets you additional entries. I will be manually entering those entries into gleam.io. So thank you guys so much for all of the support and all of the amazing subs. And you guys watching my videos like crazy. Let's get into RG Bean, a Nintendo Switch Pro Controller.  Well, I had this company called Extreme Rate. Send me an RGB kit for a Pro Controller. I had to go out and buy a Pro Controller because I didn't even have one. And this is how far I am. You got to see some of the clear plastic buttons here, all that jazz. RGB for Switch. Do you need it? No. Is it overkill? Yes. Is it going to be really cool at the end? I don't know. Let's find out. In fact, you know what? They actually sent me this Mario themed. Well, it's not really Mario, but like this red faceplate and back plate. They sent me like this thing here. They also sent me this GameCube colored thing. See? Atomic purple. But I think I think we're going to set these faceplates aside. Maybe we'll do a separate video on these faceplates, which kind of sucks because that means I'm going to have to I'm going to have to literally take apart the Pro Controller again. But that's for a different video, a different problem. Set that aside. We're going to keep putting the base Pro Controller back together to see what the RGB kit looks like with it. Faceplates. Totally different video. All right, let's just keep going here and, you know, we'll speed through this as we can. Oh, by the way, it comes with some really awesome instructions and and we have a kit. This is the I Fix It kit. One of the I Fix It kits is the specifically it is the Manta precision bit set. I use this for pretty much taking apart all electronics. There are a few things that it doesn't have, like a set of tweezers, although credit to extreme, it does come with tweezers and a screwdriver. The screwdriver is not magnetic tip, though. That's why I'm using the I Fix It kit, which is about 50 bucks for this kit. I'll put a link down Amazon link down in the description affiliate link. And if this stuff turns out really cool, I'll put an affiliate link for that as well. So let's just let's just keep going.  That's right, folks, we are bringing RGB to the Nintendo Switch Pro Controller. All right, so here's a this is a close up at the controller. Now, the purple for some reason on the camera is flashing, but it's not flashing in real life. But I want to show you guys how you set up the RGB. So when you first set it up, all the buttons will be red like these buttons under here on the shoulder buttons. So you want to hold down L and Y for about five or 10 seconds until the left stick here begins to flash. So we'll see here. It's flashing there. And then you throw right on the D pad to change the color. So you can change the colors to blue to green. The purple one that looks like it's flashing to teal and then to red. So we're going to actually go ahead and set this on red here. And now to move to the next button, you just hold you hit the left button and the Y button again just quickly. And now the D pad is flashing. So I'll change that one to green. All right, we're going to get rid of these flashing sticks here and make the sticks both red. Oh, yeah, and you can turn them off. Now, what's interesting as I'm going through and changing these colors is that you cannot these lights stay on at all time. Now, there is a low power mode that happens when the battery is low on the controller, where all the buttons will go blank and then you'll still be able to play for a little bit. And you get about six to seven hours of gameplay time with the RGB on. And then you get basically 15, 16 hours if you just want to leave the controller idle with your RGB on. But you can turn it off. Unfortunately, you have to go one by one button.  Now, I still have this here. So we're going to we're going to move on to the next set of buttons here. We'll also make these green. So kind of go with a Christmasy kind of theme here. And then we're going to change that flashing purple for you guys. Change that. Let's see here. Oh, it looks like I set these up for a little little flashing mode. We're going to change that as well. So now we're on the bottom ones. We're going to leave those red after the stick, deep ad. Back over to the buttons. Another off the red, another green. And then to be done with it, you just hold the L button and the Y button again for five seconds. It wasn't quite five seconds. So we'll hold it again. And then there you go. So now you see you kind of got a red and green theme going on here on the Nintendo Switch program. So again, these are by extreme rate. There'll be a link down in the description for those that are interested. I'm going to go back and sit down. We're going to briefly talk about the experience installing this bad boy. All right. So I would say installing this is definitely for a little bit more advanced users. People that are comfortable taking apart electronics. It's not too difficult. Taking off this little ribbon that works for the shoulder buttons is probably the most difficult because Nintendo had this like glued down when it didn't really need to be glued down because the little the actual buttons that push in would suffice to hold it in. But for some reason, like when you install this, there is, you know, no glue on the replacement cable for this that has the RGBs for the shoulder buttons. And then the RGBs that go under here are actually attached to the top board. So you end up replacing the top board. This is the top board right here. You end up replacing this board with a new board. And honestly, replacing the board isn't that hard. It was just like a couple of ribbon cables. It even gives you an extra ribbon cable here if you mess up the ribbon cable so you can end up replacing it if you need to. I ended up not needing the extra ribbon cable. Everything works just fine. It's pretty straightforward. The I got to give extreme rate a lot of credit because their instructions here are very detailed in color photos zoomed in on all of the little finer details to give you all the tools you need. Now, personally, I still prefer the whole magnetized stuff here from from I fix it. But you don't have to go and buy this kid. It does come with everything you need to actually build it and put it together. You know, I did use their tweezers that came with quite a bit. In fact, I'm going to put all of the original switch stuff back in this box so I don't lose any of the OG stuff. In case I feel like putting it back or when I install like these faceplates that sent me later, you know, when I do a video on that, you know, if I decide I want to go back. It is what it is a little more difficult to put the top cover back on because you got to plug a ribbon cable on while you have two additional cables attached to the top because these RGBs on these sticks come from the top board. And I just noticed now that my one button, my capture button is actually off to the side. I'm sure you guys saw that earlier. I'm going to see if I could fix that without having to. Yeah, there we go. So I didn't end up having to take it apart to fix it. I just kind of wedged it with a screwdriver. See, I would say these extreme rate modifications are really, really cool. I'm probably the only person I've seen in the whole world with an RGB officially licensed switch roll controller. Now, one thing you guys might be wondering is how do the buttons feel? To be honest, they feel identical, identical to what Nintendo gave. Now, one thing I am interested in is these. I always had a problem with stick grind. So what happens is this plastic on the official ones is hard, not as hard as the outer shell plastic. And so I would get a lot of grinding and then that dust would get in there and that dust would end up giving me drift and all that. The plastic on these sticks is a little bit different. It's a little smoother. See, this has like a matte finish, whereas this is more of a smooth finish. And I wonder if that smooth finish is going to have less grinding. I'm it's going to take me many, many months before I'll know if that's the case. But I'm going to be using these RGB like crazy. You see me using it in a stream or whatever. I'll advertise it down down in the description as well for that. These are going to run you now. This entire RGB kit is going to run you between 30 to $35 on Amazon. Again, affiliate link down below. It is super, super cool. The only thing I don't I dislike about it is that that, you know, if you want to turn off the LEDs, you have to go into each individual button. It would have been cool if they after you turn off your switch and have all this stuff disconnected, if you if they would have been like, oh, if you hold in like, say, both shoulder buttons and why it would have been cool if they were to do something like that.  So, you know, RL and then why at the same time hold it down and have that all shut it off for five, 10 seconds. I think that would be ideal because I went through their instructions. I wanted to make sure that there's not something I'm missing in here.  You know, we talked about that already. They stay on for six to eight hours in game, which is pretty close to the normal battery life of a pro controller. Anyways, and stand by time, you know, basically just sitting here with the lights on like this, it'll do that for 15 days. Literally, if it's fully charged, 15 days of just the light showing, which I think is kind of cool. Why the DTFS lights of joystick areas are flashing in game? The answer would be the power wires of the joystick is touched with the metal part of the 3D joystick, which causes a short circuit. You need to take apart the controller and restore it out the store. Yeah, so there's like these little power lines in there. They do suggest you put a piece of tape to hold them down. Electrical tape, I didn't do that. I might have any issues. It's an optional thing. It doesn't, this is not included. But if you do end up getting a short problem, that actually fixes it. While the controller buttons work fine, the LEDs don't glow. The DTFS cable enter a power saving mode automatically when the power is low. The controller will give priority to supplying power to the buttons. So again, if you're playing and your lights go out, that's a sign you need to charge your controller soon, but you can keep playing. So that's kind of the cool thing. So, yeah, again, there's no no official way that I can tell to shut it off other than going in there, holding down the L and the Y button five seconds and going about my button button is shutting off each individual life. But again, it gets 15 days. So I mean, it's a lot of battery life on a pro controller. So you guys, let me know what you think about this down in the comments. Well, do you think this is really, really cool? You saw it up close where it looks way better than it does back here. I want to thank you guys for tuning in. I would say that this is probably one of the most successful, coolest products ever. And folks, can you frickin believe it? I RG bead a Nintendo Switch pro controller. Welcome to 2020.


Graphene has been gaining increasing attention due to its unique properties such as high electrical, mechanical, and optical performance. It can be used to construct flexible devices with improved performance compared to traditional materials. Recent advances in the synthesis and applications of graphene-based composites have been reviewed, including graphene oxide, GO, and reduced graphene oxide, RGO. These composites have potential applications in energy harvesting, clean energy storage, and wearable-slash-portable electronics. Challenges and difficulties associated with the development of these composites are also discussed. This article was authored by Amir Rezak, Faisa Bibi, Shao Shao Zheng, and others.