One of the things that's really important for me this evening is to get people talking. I've got lots of opinions, I've got lots of viewpoints, I've thought about many of these topics for many years. I have an audience full of young scientists who are bound to have their own ideas from having watched things on TV, from their experience growing up in different countries, different cultures. What can I learn from them this evening in their discussion? That's going to be very important for me because very often I will say this is the way it is when you hear somebody else talking about it, well maybe not, maybe I have to come at that from a different angle. So that's the great hope for me this evening. Ask some tricky questions and then I can walk out of the room and let everybody else discuss it.


Rwy'n cael ei ddwych ar y cyfnodd mewn adeiladol. Mae'r adeiladau llwyddiadol iawn. Mae'r adeiladau llwyddiadol yma yn y gweithi eich iddyn nhw'n gweithio'r adeiladau. Rwy'n cael ei gwaithio'r adeiladau eich iddyn nhw'n gweithio'r adeiladau... ..y hoffi yna'r cyfrannu hynny fel y ffordd. Mae'n mynd i gweithio gweithio'r cyfansion, mae gwaith i gweithio a ynddo dynol a'r ddefnyddio dynol. Mae'n oed yn ystod o'r gweithio'r cyfansion sydd mi'n cwrdd o'r gael. Mae'n gweithio'r cwestiynau gwneud o'r ddiweddar o'r cyfansiynau. Felly, mae'n dod o'r ddweud o'r ddyfodol, fe wnaeth bod wedi gweld ei fod yn rhaid oedd yn ei ddim yn iawn, a'u ddweud o'r gweithio'r ddweud o'r ddweud o'r gweithio'r ddweud. Ac hynny'n cael ei wneud y gwir i'r wneud amdano'r cyd-wyrd. Yn y bydd yw'n gweithio? Yn y bydd yw'n gweithio? Yn y bydd yw yw'n gweithio? Yn y bydd yw'n gweithio? Wrth ymwneud, mae'n ei ddweud yw'r ysgrifennu'r ysgrifennu, mae'n rhai ddweud yw'r ysgrifennu? Mae'r ysgrifennu'n rhai ddweud. Mae'n ddweud ond yw'r ysgrifennu, a mae'n debyg yw'r syniadau that every single second matters and we all have that frustration where you're waiting for the time that's going round waiting for a website to load. Not only does it equate to a really bad user experience if a website runs slowly but it also can impact on your SEO as well and I'm pretty sure you're aware that Google uses page loading speed as one of their ranking factors. So Google say for them we must deliver and render above the fold content to what people can see on their screen within one second. I mean that's pretty impressive but Google's got obviously a lot of clever people there that can be able to do that kind of stuff. But they say after one second the person starts thinking I'm waiting here, I'm waiting, I'm waiting and you know after two or three seconds people think this page is actually going to load at all. You know if you're on a train going home tonight and you've got a 3G connection you know you're thinking should I just cancel this page loading is it going to turn up at all. So there's a real risk that people will abandon the visit. There is a threshold where people will start leaving but for Google they say they want things being loaded within one second. So the HTTP archive, they've got some really useful reports on this kind of subject. This graph is, you can't really see the detail of this, it's over the past five years up until March 2016 and basically the average weight of a web page in the past year has increased by 12%. That's file size 12% in one year and that's looking at thousands and thousands of websites that they monitor and the actual weight of that is the average per page is 2MB per page. Home pages generally tend to be a bit more above that as well. Also you might be able to work out on this graph but the bottom line that's the number of HTTP requests or quite simply number of individual files being downloaded into the visitor's browser per page. Quite a lot of those files tend to be JavaScript files particularly in the last few years, jQuery responsive websites. We're relying a lot more on JavaScript and that you can quite often have lots of files with that. Images especially images with larger monitors people want to use bigger images and retina displays so that's also increasing that file size per page. Why does that matter? Over the past few years we've been trying to make websites load faster or load better on mobile devices. We all have responsive websites, we're trying to help people who use websites on their mobile phone but quite often we're testing websites in our own office whether the iPhone might be connected to the office Wi-Fi but how often do we get in the train and try to use our websites when you haven't got that optimum connection. On a 3G connection the initial request generally takes about half a second so that's before anything happens. You've always got a little bit of time lag anyway from mobile users who are not using the Wi-Fi network and also mobile phones as well generally can't download as many files in one go simultaneously on a desktop computer can. So what can we do about it? Well the first thing is test your website loading the speed and not just your home page but actually test. Look at different pages, look at your gallery page, look at your about page, the product pages so that's really important to give your website a proper thorough test. I will tweet this out and put these slides online next week so I will, you'll get a copy of these links if you want to use them. Just going quickly through, these are three services that I tend to use myself. The first one, Pingdom is a very basic quick tool if you're a bit of a beginner in this area that's a really good one to use. It just gives you a very quick summary of your website and you can see a bit about what's happening there. The Google one is actually really good for mobile testing. You can actually see on there how your website performs on mobile websites and it will give you some useful advice you can actually put into practice. And webpagetest.org, the third one in that list, that's the ultimate tool, the Swiss Army knife of website of speed testing. That's got so much useful stuff in there. There are others as well. There's GT metrics which I use occasionally sometimes and Katie did a good talk yesterday about Chrome browser and some of the hidden functions in that and you can actually do quite a lot of speed testing in Chrome as well. That's worth a look and check out her slides as well. This is Pingdom. I'm sure a few of you have used this already. Just giving you a number of requests that website, that page is loading, the load time of that page, page size and it gives you this waterfall down there as well so you can see when the files are loading within that sequence. I wouldn't worry too much about the performance score. This website has got a performance grade of 86 out of 100 but the different websites vary about how they actually calculate that score. Use it as a rough guide but don't worry too much about the detail of that. This next one is webpagetest.org. You can choose different browsers, you can emulate different speeds, you can choose different locations and you can choose London as well as a base for that. It's got some really advanced features in this and the one thing I really like about this is the recording of the loading sequence. You can really slow it down and see when different objects in your page are loading and that can be really useful for optimising your website, particularly if you're a developer and seeing the order of how things are loading there. I'm just going to talk about a few core techniques here that I tend to use. I'm literally just touching the basics of these kind of areas. The first one, looking at caching. I'm just going to show you an example website. This is a really, really content-heavy website. It's an internet site. When WordPress generates that page, when a visitor goes to that page, that page is going to be generated and it's going to generate a navigation menu at the top. There's a weather system widget up the top there as well. It's got the latest news articles, it's got the featured images, the thumbnails there. It's got comments on the right-hand side. There's the week's most popular news articles, the recently updated pages, it's got the events there, it's got the vacancies, tweets at the bottom. There's a lot going on there. Every single time that page is loaded, WordPress is having to generate all those bits together and that does take a bit of time to do. That's where caching comes in. If your web host and quite a few, particularly the WordPress specific web hosting companies now, they actually have caching options they can do on their end for you. I'm not going to cover this in any more depth. If you have that available to you, use that, be using that. It's a really, really good tool to be using. If you have a shared host and it's not WordPress specific, you may need to install your own caching plugin. I'll just quickly show you an example of one that I've used in the past and hypercache. It's a really simple plugin. You can just pretty much activate it and it works out the box without having to go through loads of options. There's others as well, WP Supercache and it's a paid one WP rocket. There's actually lots of other tools out there now. Have a look, see which one works for you and just have a little explore around. Right, I'm going to go into a real example now just to show you what the impact of that actually does. This is a theme. It's not the shelf premium theme. I've imported all the demo data into this website. It's really poorly optimised. It's not good at all. We're going to run it through a few different stages with some of these techniques. Put it through Pingdom and you can see it's coming up there. It's loading about 79 different files. It's taking just over five seconds to load. It's about six megabytes and that's just loading the demo content of how that's awful. That theme has set this up. Now, if you want to suggest before you run a test, if you're going to use say, on this example, I'm going to now activate hypercache, what I would say is when you're logged into the WordPress website, your CND, the real pages, not through the cache generally, with that plugin certainly. What I'd suggest is then open a private window where you're logged out and then go to a few pages so the cache pages actually get generated first. Then run it through a tool like Pingdom. Also, I'd suggest running a web test, a speed test several times as well. You'll quite often get just little tiny differences in the speed time of these when you run these tools. Just looking at this one, literally all I've done is activate hypercache in this one. You can see straight away just saving about three quarters of a second. With that Internet site example I showed you, you would certainly see a much, much bigger difference than that. Some of this does depend on your web host as well, which I'll come on to. Just taking that example, so we've saved straight away about 13% of the loading time, and that's just by activating a plugin. Just as a quicker site, you also have what's called local caching, and that's where files are stored on a user's computer.  CSS files and maybe images, especially things like your logo and your website, those don't change very often, so if you've got a website where people are coming time and time again, you can just instruct that browser to save a copy of those files so that next time a visitor comes to your website, those files are already stored on the user's computer. Various ways to do this, and different plugins will do this kind of thing, but this is my preferred way, which is using your .htaccess file on your web server, but have a look around and see what method works for you. There's various different ways you can do this. The next method I'm going to look at is combining files. I said this theme that I've just, the basis of the one I've installed here, was not very well optimised. This is showing some of the resources it's actually loading. You won't be able to see the detail of this, but there's loads and loads of CSS files, there's lots of JavaScript files here, and that's going to take time to load all those different files. It's particularly an issue with a lot of these premium themes that you find on them that you can buy when quite often they try to do everything and they load different sliders and different features, so just be wary of that. Obviously, the developers amongst you who develop your own themes, this won't be so much of an issue, but this is more really for people who use third party themes. To try to speed up the loading time, the idea is to combine these into as few files as possible, and that reduces the number of HTTP requests between the browser and the web server, effectively how many files the user has to download to view your website. Just tallying up what we got at the moment, 23 different CSS files and 35 JavaScript files, that's a pretty bloated website. You don't generally see things quite as bad as that. All I've done here is activate it as a plug-in, and what that's done is actually combined, let's say a lot of the files, and here it's got different CSS files, into one, it's basically one file, so it's combining them into one file, it's one download rather than a dozen different downloads. With that, we've taken it down from 23 to six style files and taken it down from 35 to 12 JavaScript files just by using a plug-in, which I'll come on to. The other thing, you can do it at the same time, it's called minification, and that's stripping out all the unnecessary characters in your files, such as line breaks and comments, and it's all those little things that doesn't actually make any difference to how the web page doesn't make a difference to how it looks or it renders. Things like comments in files are just there for your benefit, really. You can just strip those out in all those empty spaces. At the top one, that's just a nice formatted file at the bottom, it's taken out all the nice formatting stuff in the codes. It probably won't normally save more than a few kilobytes of doing that, but still every little help square with this. This is an example of a plug-in, a better WordPress Minify, and if you do a search on webpress.org, you will find lots of different plug-ins now that do this. This is one of the early ones that started doing this, and you can then combine, it will automatically combine your files, you can exclude certain files if you don't want them to be combined. The thing I would say if your activation isn't a premium theme, one that you've got from a third party, always do a test to make sure this is run properly, and particularly test it in Internet Explorer because you can sometimes have a few issues with this. Let's put it back through the speed test, so that's where we were after the cache wasn't added. It's about four and a half seconds before we do this, before we activate this plug-in better WordPress Minify, and just by running that plug-in, activating that, we've now got another half a second saving. Usually in this case, it's actually saved a lot of, in terms of the overhead, the actual data, large data saving as well. That's not normally the case you'd see with this, with this particular theme, there's obviously stuff going on there, but there's been a good, a good speed saving, and that's just by activating that plug-in. Adding this together, adding the caching, and to combining the files, we've saved about a quarter of that time now, of that page loading, just very, very simply, and very, very little effort that's been needed so far. Next thing, I'm going to look at our images, and we look at this demo theme, and it's a big large image on the homepage there, and just having a look at that theme, and it's pretty poor, the picture itself, and this is a demo content loaded with that theme. It's over one megabyte for that image, which is pretty, pretty big. So we'll resize that, we'll compress it down, so I'm resizing, about reducing the size of the picture, doesn't have to be 2,000 pixels wide. Compressing is about using, say, a JPEG or a PNG compression technique. The programme I've demoed here is called Riot's Editor, a free picture editor, but any, you know, most desktop programmes you'll probably all have your own favourites to use for this. There's also tinypng.com, it does some incredible magic, it really reduces files, images down so much, so that's definitely worth a look at that. So that one image, compressing that down and resizing it, that's, you know, been a big, big file size saving as a data transfer that is reduced right down. Keith Devon did a talk yesterday about using responsive images, and I know he's put his slides on today, so it's definitely worth having a look at his slides too, because that covers another area about responsive images. So I've gone through, I've optimised a few of the other images on that demo content, on that theme as well, and we can then see it's taken another about half a second off that loading time, but most importantly as well, it's also taken from four megabytes down to a megabyte of that size, so on, especially on mobile devices on 3G connections or 2G connections, that will certainly be a much, much bigger saving than just a half second. So adding that all together, and that was all pretty quick stuff, you could do that, you know, in half hour, those three or less than that probably, those three different techniques. We've basically saved about a third of the time, so from about five seconds to about three and a half seconds. This is starting from a theme that isn't really that well optimised anyway, so you can get that time down a lot more on other themes, and it's quite a bloated theme there, but it just shows you how easy it is to do this kind of stuff. Some more considerations with images. What I see some of the customers are doing, they would use as a wordpress, within the editor, they'll just drag the picture from that size to a smaller size, thinking it's resizing the picture of what they can see, but it's still loading that full-size image. The other thing that sometimes people do is they put full-size digital camera pictures into their websites, and you could be talking maybe five megabytes per picture, so it's really important to educate your customers, or if you're doing websites yourself, to make sure your pictures are being edited before you put them onto your website. There are also plugins out there that will basically resize and compress your pictures automatically on upload, and there's various different plugins and techniques you can do with that. Sliders, these are not good for web speed, and I think that's probably pretty obvious. They generally load some quite large images on your page. The module itself normally loads quite a few JavaScript files and style files. Research also shows that people generally only see the first slides. They don't wait for it to go ticking round every 10 seconds to a new picture. They rarely work well on mobile. Quite a few people ignore them completely because they look like an advert, and also they push your main content further down the page when you want to get your key information up the top of the page. If you're thinking about website speeds as well as usability, just think really, do you need that website slider on your homepage? Something else as well, parallax effects and images, they can also really increase the amount of data used in the loading sequence of your website. I'm not saying don't use parallax background images completely, but don't go over the top with them because they will add quite a lot of weight into your page. Another just a quick technique as well, image sprites, and this is where you combine images, generally quite small images, into one single image file, and this again reduces the number of HTTP requests. You can have maybe a series of dozen or so pictures or small icons within one image file. So it can be quite an effective technique. So here we've got on this example six different icons there. When you put the mouse over they actually roll over to another version of the icon as well. So in effect on this screen here you've got 12 different images being loaded. So you can combine them arguably actually in this case you could probably use an SVG file or technique for this, but that's another topic completely ready. But these are pretty good normally for things like logos and that kind of thing. So all it basically is, the icons get combined into one single image file and then use a bit of code which will actually then display portions of that larger image file. So it's a good technique to use, and yeah it says it's basically called image, image sprites. There is a tool that I can recommend, sprite pad. Developers you'll probably have different tools that you use yourself in your own workflow, but this has a free account for this one and it's a really nice tool. You can add your pictures in and then just drag them and it generates the code for you. So it's a really nice little technique. The other thing you're probably quite familiar with is icon fonts. And these are quite good if you just want generic icons. They're a good option for those kinds of little icons you just need and things like on here you've got shopping cart icons that kind of thing. They do scale pretty well. They render very quickly. They're pretty well supported. But Sarah did a talk yesterday about using SVG, so the Scalable Vector Graphics. The more advanced of you we'll probably want to explore that. So that's covered images, just quickly going through a few other little bits. It's pretty obvious your web host plays a big, big part in the load time of your website. If you're talking to a UK audience and your web server is in America and you're paying $4 a month for that, the chances are that website probably won't load as fast as a hosting solution. That's a bit better. You want to read a low contention ratio, not cheap hosting, where those servers have been crammed full of websites. So performance also goes hand in hand with reliability too. Social share buttons. You might have widgets and buttons and stuff on your website and it shows you how many Facebook likes you've got for that particular page. Just bear mind those kind of things can hog performance too, because it's having to then send a request to the Facebook server and back again.  This is quite a good one. It's a really, really small plug-in, really small script. Or you could even use something like the font or some web font. I showed you in another slide. They have social media icons in there as well. Bit more technical for those more advanced views in WordPress. Developers, think about the ordering of your code. So load essential things first. That's pretty obvious. Really good example. It's not WordPress sites, but the BBC and The Guardian, they put so much time into this and they're very much leading the way. So they really want to text a load as quickly as possible. All the other things like fancy clickable things and images can come a second later, but it's all about getting the headline, getting the text and displaying. Something else you might want to have a look at, data URIs. The best way to describe that is an image saved as HTML codes within your HTML file. Just Google it and have a little look. That might be right if you've got maybe small icons and stuff. It's perhaps worth a look. That can help performance because it's loading. It's not loading any external images in your page. CDNs, content delivery networks. If you are targeting a UK audience, then, and not a global audience, CDN might not actually be the best solution for you. In fact, it can actually degrade harm performance.  And also cron jobs and maintenance. Sometimes you'll wait for a visitor to go to the website for WordPress to do its maintenance tasks, and that might be things like cleaning the cache, checking for plug-in updates. It's best to run scheduled tasks from the server itself so that you can actually see not impacting on the performance time when a visitor goes to that web page. So it's a huge, huge area, this. Just touched on a few techniques. Hopefully this gives you a better inspiration to think about your own websites, loading speeds, give it a test, have a look at what you can do, how you can squeeze out that bit of extra time. I showed you earlier how easy it is to take your websites speed down by a third, saying that example, but just have a little play round, use a search engine, have a look at what other people are doing, have a look at some of the techniques, and just see what works good for your website. And I'll share these slides online later in the week so if you look at the website or Twitter, Facebook. Adam, thank you very much. Okay, thanks Mike, that was great. Do we have any questions? Come on, we've got a hand up here. How do you see something like Cloudflare fitting into that process? I have benchmarked Cloudflare before. I actually found it didn't help with the performance, but again, every snow is going to be different I think with that, and I was Cloudflare doing also things like security, filtering and firewall stuff, but the examples I was looking at, it didn't really help too much in the benchmarking that I looked at. Particularly, say for instance, the web servers that I sometimes use, they're based say in the Midlands in the UK, where you can get things to people quickly, they're on the main trunk routes of the UK. And say Cloudflare might be going for the DNS and going to a server location, maybe somewhere else. So I would say always these things test them, just do your testing really on these kind of examples, see what works well. If you've got a global website, then yeah, those kind of things are really, really good. You don't want your audience in Japan or America loading it from someone like Derby, that's probably not going to help them. But yeah, every snow is different really with that kind of stuff. So you didn't see it slowing down the website but it didn't help, but you could argue that the security benefits are important as well? You could definitely argue that, yeah, definitely. I did see one since it slowed it down a bit, but I'm sure this example is where it could actually make it faster. It just depends on the website, the audience and that, but yeah, security benefits are definitely also a consideration with that. I'll let you guys sort it all out. Thanks for that, great. Two questions. One is if you're focused on a UK audience and you've got your DNS hosting say Canada, which is where I happen to use my DNS hosting, do you think that has a negative impact? It could do. I mean the thing with DNS is that your ISP will then cache the DNS records anyway. But I think yeah, I can't see it helping. I'm not sure if it would be too much of a negative thing, but use a tool to say like Pingdom, you'll see on the very first line a time to connect and if that's their second just to get the connection to that website before any files start downloading, that could be an issue then. Yeah, I can't say it being a positive thing, but it might not be too bad with the... Do you host your website files within the UK with your DNS? Yep, they're hosted in the UK, but the DNS is in Canada at Hover. If you, because I've looked at Pingdom's timings, any ideas for troubleshooting DNS specifically or drilling into DNS timing specifically? Use something like the web page test so we can actually look at seeing what that's doing, but unless you manage your own, unless you're really into that server, admin yourself really cool, the things you can do really then is actually just looking at your hosting company, seeing what they can do. Yeah, that's, if you've got issues with that, that could be on their site looking at stuff, but yeah, I couldn't give you too much info on the second DNS stuff on my feed. This is an embarrassing confession, but I was troubleshooting a site that was running unusually slowly recently and it wasn't until we realised we'd left debug on. That we realised why we were two seconds slower than we should have been. So we saved two seconds just by turning debug off. Fantastic, I should have put on a slide with that. Sorry, it's not a follow on question really. What requirements or checklist or something would you give to your server people and say, look, this is what I want? Obviously there's WP engine, there's a few providers here at the moment, but do you, I'm not saying you should recommend one over the other. What I'm saying is what requirements would you give them? What's your top 10 things you should say? I want this, I want this, I want that. Okay, so it depends on the website itself, but let's say that recently we launched a website for a global company, but a typical shed host was not going to be good for them. They needed dedicated RAM. Things like that was actually going to really, that makes a huge, huge difference to running that website. Again, I'm not going to be very non-committal with this, but it will depend on the situation a bit. But yeah, if you're talking about big name, big brand, high traffic websites, you've got to pick a solution that is good for them. Things like PHP 7 and stuff, that's not my kind of area more as a front-end developer, but those kind of things, I know for a fact, those things help speed websites up. Looking at the database engine as well, that's a crucial part, particularly some of the old traditional web hosting companies, they're much more geared up for static HTML-style websites. You can run benchmarks on stuff, even in WordPress, there's a plugin I was using recently that will benchmark the PHP query times and the MySQL connections, and it'll basically create loads of entries, delete the entries, run different benchmarks stuff through. So you can use that kind of stuff as well to see how the hosting provider is dealing with that, really. Anybody else? Hi, Eds. More of just a side note, because you mentioned browser caching, so just as a tip that I picked up, if you put a query in the variable when you include your style sheets in JavaScript and that you can put that to the current view next time, then the browser always thinks it's a different file, I'm going to always get it, and it's really handy if you're dealing with clients, because they might not know how to refresh, or clear their cache, whatever, so that's handy. Yeah, that's really good. Yeah, really good. And you don't have to go into the HT access then, and any other questions or tips or stuff people want to share? Anyone? Yep. One over there. Hi. I use some of these tools. Thanks for reminding me of some of the others. But when I was trying to get things below the fold, in Qscripts and CSS, certain plug-ins don't like that. Gravity forms is an example. Is there a way of pushing as much below the fold, but then going back to certain plug-ins and saying, actually, you could go in the header if you have to? Yeah, the plug-in I showed you there, better web-press minify, was it that I think? What that would do is scan what resources are being loaded, and then you can selectively put some, say, up the top in the head area, some in the bottom, but you can selectively take out individual files, take them out of the combining completely if you have to, or you can re-order them. You can actually, as long as the theme is designed well, and three more, for example, putting the resources without putting it through the proper loop process. But yeah, that plug-in, if you run that, that will probably help with that situation. Thank you. Yeah, one here. What about HTTP versus HTTPS? Will that have any positive or negative impact on this? It's a really good question, that, actually. I looked at some benchmarking stuff with this. Generally, people would say HTTPS is going to slow things down, but actually it's evidence to say that's not the case, and it would depend a bit on the hosting as well, how they cope with that. There's probably not much in it with the speed stuff, actually, now. I wouldn't worry too much about the speed stuff with that, and I think, like the earlier points, security, while speed is good, security is also good. I wouldn't worry too much about the overheads of HTTPS rather than box standards and HTTP and anybody else. You've got away with it, mate. That was brilliant. Thank you very much. Thank you. Put your hands together for my key.


Hey, everyone, what's going on? I am Greg Sussman. Join once again by Jim Sattis of Fandall Jam. What's happening? It is all good, Greg. Some more PGA coming up this week, the third event since the end of the COVID-19 layoff. So a little bit of data to work with, which is always good. Should buy that data when we should sell it. So some fun decisions to make on this slate, for sure. How are you doing? I'm doing really well. I'm excited to talk once again to everybody who's talking about the PGA tour right now. So we should be among the many and get right into it. And I really really good staff before we started recording that Bryson DeChambeau style-wise has done everything he can do, except win. He's not gonna change this week here, Jim. Yeah, there is a tier of three golfers at the top this week. It's Justin Thomas, Rory McElroy, and Bryson DeChambeau. And I don't think you can go wrong with any of them. But personally, I think that DeChambeau is in a really good spot here. I'd rank Rory right behind him, but it's hard to put JT third. So I like all these guys. But the reason I have DeChambeau first is that I think if we're looking at court term form, he grades that really well. Over the long term, he ranks third in this field in good drive rate over the past 50 rounds based on the stats over at fantasynational.com. That's obviously good for a course that rewards golfers who can either hit a fairway or at least put in a decent spot to make up ground if it's not specifically on the fairway DeChambeau length over the past couple of months. That's certainly good as well at a course where length does matter, even though it is a bit of a shorter course as well. From an approach perspective, recently DeChambeau has been nuts, putting that muscle of the good use. He has gained 10.7 strokes on approach the past two weeks. He's 11,700 dollars. I think that Rory is definitely interesting as a bounce back candidate after a couple of just kind of okay outings. He's still been good tee to green, hasn't got the finishes to show for it. So Rory's in a good bounce back spot. And I think among those top three studs, I'm gonna go Bryson DeChambeau, the length is great. He has stats to back up, the good finishes he's had and the stats show. Like you said, he could be... The stats are backing up as you said, Jim. Everything is there for Bryson DeChambeau to come away with a victory or at least provide what we need over our fan bill.   But the other guy that's been in your lineup seemingly every week is the X-Fan, Xander Shafley. This week is no different. Xander's in there here. Why do you think that Xander makes sense putting your fan to a lineup once again? Yeah, I think that looking at this specific core, Xander Shafley seems to be one of the most well-rounded statistical golfers in this entire field. And he's not priced like a top end stud at 11 too. So I think it's a really good number to get for a guy who has win-outs as good as third or better in all the key stats I'm looking at for this weekend. The putting on Poa and Bentgrass, pretty solid for sure, but everywhere else, he's a legitimate stud. He's 10th in good drive rate at the past 50 rounds. He has 17th in approach. He has 20th in scrimmage. So checking all the boxes from a stats perspective. Xander doesn't have a super long course knowledge here, but he has at least been here. And there are a lot of golfers who have not been to this course for a long time because the field is a lot better than it has been in the years past. It's good to know that Xander at least has course knowledge. Finished 14th here in 2017. I'm not kind of that as a huge mark in his favor, but it is at least something. And looking back to last week, Xander definitely faltered over the weekend. He lost 2.3 strokes in approach last week, but that's after he gained 3.3 on approach the week before that, and he contended for a win 8.1 strokes gained Tita Green in the first match backs. So it seems like once again, a good bounce back spot for him. He's $11,200. I think that if you start with D-Shambo and Xander, it allows you to avoid some really, really bad tears from a salary perspective for this week. So I'm trying to avoid the super cheap value plays if I can and starting off with a little bit less of a studly approach with Bryson followed by Xander, at least gives me some help in getting to that goal. I like it. You put Xander and Bryson D-Shambo in there so you could avoid the really, really, really bad players a little bit later on. It's really building a full lineup. I like what you're doing here, Jim. Obviously Xander didn't have the week that we hoped for this past week, but strokes gained the week before. Pretty good. You see Xander can get it going here this weekend as well. Next for us, Jim, we get to another one of our favorites. It's Kevin Kisner. He's priced at $9,400 here this week over on Fandle. And the kid has an opportunity, I should say, to win it this week. No different. Yeah, absolutely. And the reason that we're going to go with a little bit of a cheaper mid-range play here is because, again, I'd like to avoid the $8,000 golfers because it's not great, Bob. So we're trying to stay in the low 9,000s. I love the upper 9,000s, too. Guys like Victor Hovland is up there. Tony Finau is there. Joaquin Neiman, they're all really good. But I also like this low 9,000 range. And if I can live in this range and avoid the 8,000 range, that's kind of the goal for me. So let's talk about Kevin Kisner here. I think that, like Xander Schoffele, checks a lot of boxes statistically. He is 33rd in good drive rate, 41st in approach, 12th in scrambling, and 13th in putting on either Poa or Bentgrass over the past 100 rounds. And he used that good stance profile, finished 15th on this course last year. The approach played for Kisner since Rezumian play has been in the first two events. So it's not great. But he's $9,400. Seems like a pretty high floor golfer with at least a path to his thing. It's not the most likely outcome for Kevin Kisner. But I think it's definitely there. And I think the big appeal, again, for me of Kevin Kisner is, he helps me avoid dipping into the 8,000s, which I desperately want to do. So I think that this low 9,000 range, pretty good. And Kevin Kisner is a big reason I like this range. It's all about the price this week for Jim Sannas on Fando because you don't want to have to go too low here in the Fando prices. You get Kevin Kisner at $9,400. We're avoiding the low 8,000, like you said, pricing to Shambo. Xander Schoffele, Kevin Kisner. They are our top three here this week on Fando. Which leads us to our fourth golfer, and this Brian Harman, who I believe is in the lineup for back-to-back weeks here as well, Jim. 9,200 dollars.  And if it ain't broke, don't fix it because Brian Harman's been fine for a pretty decent sample now. And he's still in 9,200 dollars. And the thing I like about Brian Harman is that he checks all the boxes. Good stats, good form, and good course history. He has been, he ranked 61st or better in all the key stats. And 61st is not like great or anything, but it's definitely, it means that there are no major weak spots in his game. He's a good putter on Poa and Ben Crass. I like that. He can scramble as well. So the short game, not a concern for Brian Harman, whereas it is for a lot of guys in this tier. And he's also at least okay from a ball striking perspective. He has finished well here in the past, knows his course wealth in his third in 2015. He was sixth in 2018, eighth last year, aided by good putting in those finishes. So they're not necessarily sustainable, but again, he is generally an above average putter on these greens. He has gained 1.7 and 3.8 strokes and approached the past two events.  You could get a solid top 25 finish and it may cut out of Brian Harman. 9,200 dollars I think is a really good number for him. If you are looking for some more upside, I do like Joel Damon at 9,400 dollars. I think that he is in this tier as well, definitely on board with that. And Jason Day is super cheap on Fandall, 9,400 dollars. The risk is high, but the risk is high for everyone else in this tier too. So I am okay taking some stabs at Jason Day at 9,400 dollars, but among those three guys, I'm gonna rank Brian Harman number one at 9,200 dollars. I never thought I'd see the day that you'd find Joel Damon in this tier and you didn't say he was the best golfer in that tier. I saw the people tweeting about Joel Damon this weekend and I was, I kind of felt robbed. Like this is our thing. And I didn't like that other people were in on it as well, but it seems that we've moved on. Brian Harman, who's good at a little bit of everything.  Jason Day, we know what the reward is. We also know what the risk is to base Brian Harman seemingly the safest golfer in this tier. Let's move on. We'll come a little longer shots here, 8,900 dollars. It's just really in there. Another guy that we're used to putting in in this tier, we don't have to drop all the way down into the low 8,000s. So he has Chez Reeve at 8,900 dollars. So we're paying up here in this middle tier. Reeve, a guy, obviously that you like, Jeff. Yeah, like is potentially a generous word, but I dislike him less than the others. Maybe we'll phrase it that way, which is weird because Chez won here last year and we should be like, oh man, Chez Reeve is $8,900. That's awesome. And there are other things that he does well, but even with Chez Reeve, the defending champion, there are enough concerns where I do want to avoid this tier. So I think what I'm doing, Greg, this weekend is kind of rotating through the super, the value plays, making my core plays be the more expensive golfer and then rotating through value plays. One of those rotational pieces will be Chez Reeve, because again, he won here last year. That's definitely good. The ball striking stats are solid. He ranked seventh in good drive rate, 27th in approach over the past 50 rounds. He's a decent putter on these surfaces. I think that that all makes a lot of sense. And last year, it was not a win that was fueled by putting for Chez. He was awesome. He gained 11.4 screen, which was the most in the field. So the reason I'm down on Reeve a bit is because I don't feel great about what he has done the past two events, but his profile on the whole is still better than the profile of most other guys in this range. So rotating through everyone in this tier, but I think within those rotational pieces will be Chez Reeve at $8,900. Well, the form isn't great. Of course, history is. He won last year. We should be hiring. We should be happy to have Chez Reeve in our lineup. We should, in fact, like him. It's not a strong word here that we like him. It's the right word. Chez Reeve at $8,900, despite the immediate form, it's worth it. One last offer to get to Jim, and that brings us to Lucas Glover. He's the cheapest golfer here that is in our lineup this week, and he's priced at $8,600. Not bare minimum by any means. Lucas Glover, $8,600. Why do you think he's worth taking a shot on? Yeah, I think there are a couple of things that are working in Lucas Glover's favor this weekend. The first thing is that he's played well since the end of the layoff. He's gained at least three strokes in approach in both the events since they returned to play, and he's gained at least 4.3 strokes T to green. He used those good numbers in the ball striking category five in both events. So the finishes have been there. The ball striking has been there. That's kind of all you can ask for a golfer in this range. And the second thing is that Glover's best surface is Poa, and he's better on bentgrass, and he is unpermuted. This is a Poa-bentgrass kind of mix here of the greens for this weekend. So should be better putting for Lucas Glover. I can't say good, less terrible than usual. Again, we'll phrase it that way intentionally. He's only $8,600. And we know that Glover can golf well and spur it specifically with his ball striking stats. So I can limit that, at least in this range. So I think that Lucas Glover makes sense. I mentioned that again, I'm gonna rotate through. So we're rotating through Ches Reevee, Lucas Glover, I think Max Homa, Harold Varner III. Those are guys I'll be focusing on. If you want to go super low, Doc Redmond is in play at $8,100. But the number of golfers I am intrigued by below $9,000 is not that great. So I'm trying to stay above that when I can. But once I do get down here, Lucas Glover is one guy I feel very okay using at times in my liners. I love it. There are certain times we feel very okay with Lucas Glover. This is a time where I think we're just okay. We're not very okay. We're okay with Lucas Glover, and the putting will be not so terrible. And maybe you'll make the cut, and maybe you'll do some damage for us on a fan duel. There you have it. Jim, we appreciate the time. Lucas Glover in our lineups, as is Bryson DeChambeau, the X-Man Kevin Kisner, and more. We appreciate you watching. Jim, good luck this weekend. Thank you, Greg. The same to you. Looking forward to talking to you again next weekend. Hopefully, things go well for us this weekend. We can only hope so. Have a great night, everybody. Get those lineups in there. Enjoy the week, and stay safe, everybody.


You want the next best silver pick? Join the rich TV live community by clicking the link down below today


Okay, let's try this problem on a random or systematic error. So remember error, of course, is the difference between the value measured or the value gotten and the true value. So if we're thinking about it like a dartboard here, that's what this is supposed to be. So if you think about the x's being the player's throws, so number one and number two, both had five throws and you can see they're both pretty terrible, dart players, right? Both had a lot of error associated with their dart throwing, but one of them actually had random error and the other one had a systematic error. So recall what we talked about with systematic error is where all of the, there's something wrong with the equipment that you're measuring it with, right? So all of your measurements are going to be off either above or below the true value. So in the case of darts, they'll be off kind of collected in one area. So probably with that, you can figure out which one is which. So which one of these has a random error and which one has a systematic error? Well, these ones are pretty evenly distributed throughout the dartboard on player one. So this guy's kind of got a random error and throwing. This guy, or gal over here, has the systematic error. You know, something consistently wrong in the same way with value. So maybe this player is like standing on a hill or something that's forcing them systematic error. So hopefully that gives you some idea about the difference between random and systematic error. So the thing you can talk about is precision and accuracy. So precision is, remember, the ability to hit the same point. Even though they have a systematic error, they're very precise, hitting the same point every time. This person is not precise. Their placement of the darts isn't close because the average of these is going to be somewhere in the middle here. And that's pretty far away dual value. So this is not somewhere very close to the bull's eye, so it's more accurate than this one.


And when it goes beyond a certain point that you get totally possessed by your own thought, almost ninety percent of the human suffering is in just this. It's my wish and my blessing that you must get out of the prison of your own mind and know the beauty of creation. Lethargy comes from overconsumption of either food or thought. One may think how overconsumption of thought would bring lethargy, though everyone can understand overconsumption of food definitely brings lethargy. Well, if you become consumed by thought you will see you would not like to moor out of your bed. I did not talk about thinking, I'm talking about overconsumption of thought that means thought is continuously flowing without your effort, without your focus, without your intent. Once it becomes like this you will see naturally you feel like avoiding physical activity and when it goes beyond a certain point that you get totally possessed by your own thought. Well, there are ugly names to describe that in medical terms. It's important there is a certain amount of moderation in consumption of food and endless amount of thought that could happen. Thinking consciously and just consuming or living upon thought or being consumed by thought are very different things. That is an unfortunate reality that for a whole lot of people this distinction is not apparent. The price that humanity is paying for that is not a fair price. The conclusions that you make in your mind will seriously impede your ability to experience life. The stronger your conclusions are the more you get identified with it the more the psychological reality that you have seems like existential. Almost ninety percent of the human suffering is in just this. You misunderstand your psychological drama to be real. It's your drama you can play it whichever way you want. If you're a good director of drama you would make it the way you want it. Otherwise it's happening haphazardly. Well this is the reality of existence how beautiful it is but most people choose to live in their mind because they have made strong conclusions and it's no more a choice as to where they live. It's time you live on this planet experience the beauty of creation and also the presence of the creator in this creation. Just pay enough attention to every aspect of creation and you will see the presence of the source of creation in it. This is what you need to experience the psychological drama is your making it is too puny compared to the existential drama that's happening here. It's time you enjoy this it's my wish and my blessing that you must get out of the prison of your own mind and know the beauty of creation. The fundamental the most fundamental aspect that you need to take care of is that you don't make conclusions if you do not make conclusions the doors of your mind will not close. If you apply only your intellect ignoring other aspects of your intelligence you will get confused about every little thing in life because intellect is a cutting instrument it's like a knife if you want to dissect it's a good instrument but if you try to sue with a knife you will be left in tatters well that is what most human beings are experiencing right now that they are using a cutting instrument to stitch to put things together well the more effort that you make the more into bits and pieces human beings will become within themselves there was a time they divided the world then they divided more and more you have seen this there was a time people could live together there were families in India where there were 400 600 people in one family living in one house then slowly it became just parents and children and grandchildren now grandparents became little bit of a problem so we send them elsewhere now children become a problem we send them elsewhere and slowly husband and wife are living in separate houses meeting on weekends not just that within yourself is split yourself into many people by cutting yourself into pieces because this is the process of dissection if you use only your intellect for every dimension of life this is where you will get one day you will get schizophrenic yes so it's important the other dimensions of intelligence come alive within you without those dimensions of intelligence being alive your heart wouldn't beat your liver wouldn't function your kidney wouldn't function all this wouldn't happen this is not done by your intellect so there are dimensions of intelligence within you which must be explored and brought alive into your conscious nature


On the U.S., or in general, are we all too complacent here? We are far too complacent, I think. But not so much on the macroeconomic front as on what we might call political economy front. We'll come back to talk about finance. I have some thoughts about that. But reacting to some of what you said, John, I agree with everything that you said on the macro level. But for my money, much of the discussion yesterday and today on the trade panel, with the exception of Mark Nolan's remarks, did not really take fully on board the situation we face in the U.S. with respect to the economy. On the macroeconomic front, things are going reasonably well. There is concern about real wage growth, about productivity growth, and also that for the middle 50 percent, net asset positions have actually deteriorated in the last 10 years, not improved, despite the improvement in the economy, which has important political implications as well. I guess what I want to try to get people who may not be focusing so much on it to understand is that a very large segment of the American administration, including in his heart of hearts, Donald Trump, does not believe in multilateralism, does not believe in global governance, does not believe in trade agreements, is of the view that the way to achieve American goals is by using American bargaining power bilaterally or unilaterally, rather than through international institutions. That may be of little importance in trade because most trade is bilateral, and many trade negotiations are bilateral, but it worries me when we start talking about the international monetary and financial system because by its very nature, international monetary and financial relations are multilateral or global in some sense. I think my concern is a political economy concern, which is that we don't know how the battles being fought out in the administration, between the administration and some members of Congress, what the business community are going to turn out, but it is not implausible that those who are inherently quite hostile to the current structure of international trade and investment and finance will win out. Your concern is that that could be disruptive at a macro level in terms of economic performance. I think it could be disruptive should we hit difficulties, and perhaps we'll come back to this. I think that one of the perhaps unheralded and perhaps unexpected successes of the last ten years was the extent of multilateral cooperation in the aftermath of the September, October 2008 crisis. Although there are people in the administration and in Washington who would like to carry that forward, there are also those who think that that was a bridge too far. I think that's what we've certainly seen that. That's another topic that we could take up later, but I think it's the overarching topic of the entire event, global governance, but my two cents on this is, of course, that the creation of the G20 at the leader's level was the principal institutional response to the economic crisis. In its initial meeting in November 2008, the G20 first of all anointed itself the primary venue for discussion and negotiation of economic and financial issues set four goals. One, the restoration of global growth, two, the repair and reform of the financial system, third, the prevention of new trade protection and the promotion of new trade liberalization, and fourth, the reform of the IFIs. In each case, there was an organizational assignment for carrying those out, the assignment for macroeconomic restoring macro growth, they created the so-called framework for strong sustainable and balanced growth, which is now the framework for strong sustainable balanced and inclusive, sorry, inclusive, there we are, I knew there was a buzzword in there, inclusive growth. That's an effort at which there is an organization at the deputy minister, deputy governor level that has done an enormous amount of work, and my guess is you've never heard of it or paid any attention, even though with every G20 summit there's a long thick document saying what every country is going to do, but the lack of political support means no one, even specialists, pays any attention. For reform of the financial system, they created or mandated, they created of the FSB, which has done a lot of real work, but I think you would say is incomplete, on trade it goes without saying, the principal goal was the endorsement of the completion of the Doha development round, which has now been abandoned, and IFI reform I think you generally would say is incomplete, so I would say the leaders, there was an institutional response for global governance, and I would say you would probably not view it as a rousing success, even though the G20 leaders process does continue.


Hello, and welcome to another Dev Nation Live. It is 2018. We're going to kick off things with an incredible session by John Clingham and Edson Yanaga. Today, we're going to talk about MicroProfile, and I know you guys are super excited about microservices. Everyone's excited about microservices. And MicroProfile, of course, is going to give us a standardization around that technology, and these guys are going to deep dive into the topic right now. We're going to spend about 30 minutes together today. We do normally keep these sessions for other short, and that way we can kind of get into the topic pretty quickly, keep the fluff to a minimum, and try to dive right in. But I do appreciate you folks showing up on chat. We had a nice conversation right before we went live about where people were from and what the weather was like, because we got a lot of snow here in North Carolina, and that's uncommon right now. But let's go ahead and get this party started. If you do have questions, throw them into the chat box on the Dev Nation Live screen, and then I'll pick those up and verbally ask them of John and Edson at the appropriate time. So do put your questions out there. At this point, let's turn it over to John Klingham. All right, oops. Can everyone see my screen? Let me go full screen. Looks great. All right, so my name is John Klingham. I'm a product manager at Red Hat, and I'm responsible for a wild-fly swarm as a runtime, and I'm also a co-founder and current co-project lead of Microfile. And if you think about, I assume most of us are Java EE developers, and we've been doing it for a long time. The issue with Java EE is that it's kind of been, well, it's very mature for what it does, right? But the iterations have been slowing down, and we kind of recognize that as an industry.  And the idea with that isn't necessarily to follow kind of the standards process. We actually wanted to move much more quickly. So we treat Microfile much more like an open-source project. And we all collaborate around specifications, and then the various folks that are interested in creating implementations go off and create implementations of these specifications. So at the end of the day, it's a community of individuals, organizations, like user groups, for example, vendors, all collaborating around microservices specifications.  So Red Hat is one of the co-founders, along with many of the other vendors, and we have a Microfile implementation that I'll be talking about. OK, so Microfile, as I mentioned, is a collection of specifications. So the first iteration of Microfile, what we did is we kind of set the foundation of the programming model. And that's where it's basically based on some of the Java EE specifications, so CDI, Jaxrs, JSON processing. And a little bit more recently, we pulled in the common annotation specification. So that sets the foundation of the programming model upon which the other specifications layer. And over the last year, we've actually delivered, sorry, I'm counting on the screen, eight new specifications. And if you take a look, these are definitely geared toward microservices. And the microservice is kind of patterns, programming patterns. So fault tolerance is all about circuit breaking, bulkheads, retries and timeouts, config. It's about externalizing your configuration. So you don't have to tie a configuration specifically to your application in one particular context. Health check is a particularly interesting one because the idea is you expose a health endpoint. And if you're running on a cloud environment, like Kubernetes and OpenShift, those environments kind of take a look at health check endpoints and know if they should continue to direct traffic to that service. So as you can see here, we've actually got a pretty good swath of applications, a representation of microservices programming patterns. And that's just what we've done basically over the last year. We actually launched in 2016 in the summer. And we've moved it into the Eclipse Foundation at the end of 2016. And that took a little bit of time. But it is a full Eclipse Foundation project. And throughout 2017, we actually created these eight specifications that you see here. Now, one thing I thought I would point out is that these specifications that are highlighted in this red box were released literally within the last month. So you will not really see these in implementations yet. So there's still mainly specifications. But all the vendors and open source projects that implement MicroPropile are kind of in the process of implementing these specifications. But the other ones are available from multiple vendors, including Red Hat. So where are we at today? So you've seen the specifications. And we've decided for MicroPropile 1.4, which is the current release that we're working on. 1.3 is what we just finished. We're going to take a pause on features and maybe just do some opportunistic clarifications or maybe a dot release of a specification. But we really want to focus on developer enablement. That means examples, better documentation, YouTube videos, that kind of approach. Because a lot of functionality, we realize, well, you know what? Let's help developers actually go off and implement their applications using these technologies. So in the first quarter of this calendar year, look for MicroPropile 1.4. And you may even, throughout the quarter, this quarter, be able to kind of take a look at the progress and actually start using some of our examples and how to and give us feedback. Actually, in fact, if you're interested in doing that, go to microprofile.io, click on the Discuss button, and you can join the MicroPropile discussion group, which is just a Google group. And tomorrow, we're actually having our first planning meeting around MicroPropile 1.4. And if you'd kind of like to see what's going on or actually participate in creating demos and documentation around MicroPropile, you definitely have an opportunity to do that. All right, MicroPropile 2.0, we're scheduling for basically sometime in the first half of this calendar year in the second quarter. And this is more around Java EE8 alignment. So those specifications, that base programming model I mentioned around CDI and JaxRS, will up level the support of those specifications to their Java EE8 equivalents. So stay tuned for that. And we'll see what else is interesting in MicroPropile 2.0 that we might be able to put in. But again, join the discussion group and give us some of that feedback. All right, so the implementation that Red Hat delivers of MicroPropile is through Wildfly Swarm. And Wildfly Swarm is a rethinking of Wildfly, the application server. So Wildfly, which is productized as JBoss EAP, Wildfly is a highly modular application server. And so what we've done with Wildfly Swarm is we've taken that modularization and rethought of it as kind of maven dependencies so that you can only, if you're only developing with a subset of the Java EE technologies, you can actually package those Java EE technologies, just those technologies, along with your application, into a single JAR file and just run it as an Uber JAR, right?  Or if you want, you can kind of create a customized app server. And again, it comes back to choosing just the technologies that you want, maybe just some Java EE technology, a subset, and some of the MicroPropile technologies. Package them into a JAR file, put that into a Docker layer in the Wildfly Swarm world. We kind of call this a hollow jar. It's just the pieces of the app server without the app. And you bundle them together, or sorry, you put that in a Docker layer and then you just apply your war file and it's in a Docker layer on top of it. So really cool. Again, microservices is the focus of Wildfly Swarm. So it's rethinking Java EE as a microservices platform by adding in MicroPropile. We also optimize it for Kubernetes. So we map the features that are available in Java EE and MicroPropile to the features that are available in Kubernetes. I think Edson's gonna show some of that. So it's super lightweight with UberJAR support and a war file support as well. All right, just thought I threw one last point here. That is that Wildfly Swarm is actually a supported product at Red Hat under a product called the OpenShift Application Runtimes, which is a product that includes Wildfly Swarm, Eclipse Vertex includes Spring Boot and Tech Preview of Node.js today. All right, so these are kind of all supported within OpenShift Application Runtimes. And to learn more, if you wanna learn more about MicroPropile and the specifications, go to MicroPropile.io. If you wanna learn more about Wildfly Swarm and actually begin coding with MicroPropile APIs along with the Java EE APIs, go to wildfly-swarm.io. And actually one last point I think I'll make is that's kind of what you'll find is that MicroPropile specifications are kind of being added to the Java EE application servers. So a lot of vendors are actually augmenting their Java EE implementations with MicroPropile. So if you're wondering, do I have to use one or use the other, really at the end of the day, you'll probably be using both together. And I think with that enough talking, I'll let Edson maybe show you some code. All right, let's see some codes because we're developers, we want to know how can we use all of these awesome features. So I'm screen sharing, can you see it? Looks great. Okay, so here I am at the wildfly-swarm.io website. This is my favorite MicroPropile implementation. And I just want to show how easy to start using the MicroPropile specifications in APIs. So I'll get to the Snake Generator and I want to create a new project. I'll just name it the EarthFactors DevNation. We're doing something live. And the only dependency that I need to show you all of these features is the MicroPropile one. So I'm gonna choose the MicroPropile dependency, generate the project, unzip it, and I'll open the project. So while my project is being configured, here I want to open my endpoint. Here I have a hello world. I don't want to show you just this, the simple JAXRS hello world because we're going to show, I use something different from MicroPropile and we're going to start with the health checks. So health checks are a fundamental requirement these days for if you want to create a cloud-native application because since we're not dealing with a single instance anymore, we have multiple instances running into production. You want to perform things like blue-green deployments and rolling upgrades and you need the platform like Kubernetes and OpenShift for that. So you need something that we call a health check and MicroPropile gives you that for free.  Okay, I'm going to execute that, it's running. So if I go to my browser here, you can see that I have, still I have my hello endpoint, but I also have my health endpoint, which gives me some statistics. It shows me that my application is up and running and a platform like Kubernetes and OpenShift would use the return code of this response, which is like 200, okay? To say that, well, this application is up and running, but you can bet that just plain endpoint doesn't give me much. So I might want to check if I can make the database connections, if I can successfully complete a query against my database. So I can implement my own health checks inside my MicroPropile application. How can we do that? So I'm going to create a very simple health check here for the purpose of this demo, some gradient class, simple health checker. And yes, I know it's too small, so I'm going to increase the size of my fonts here. So what do I need to do? I just need to add the notation health from MicroPropile. I need to say that this is an application scope, it's being, and this class needs to implement the health check interface. So after I implement this methods, which means it's going to return that, you probably want to add your own custom business logic to check if everything is working properly. Like for example, you could check if you have like enough disk space in your container to see if your application is going to run successful. So I just have to return a health check response, name it's a simple check, and I'm going to say that my application is up and view this response. That's everything I need to run a custom health check. So let's run our application again, I'm going to stop it, generate my Fedjar up and running. So let's see my health check and point again. So now you can see that I've just added my custom health check here, name simple check, this status is up. If for just in case my health check wasn't going well, it went down, some outcome of the overall health check would be down, and my application would report as being unavailable to my platform like Kubernetes OpenShift. So you could use this status in your rolling upgrades or other upgrade strategies that you might have such as canary deployments. So this is the basic health check thing that I wanted to show you. And also you can't have a truly proper cloud native application if you don't have some kind of metrics that you can expose through a monitoring platform. So your application needs to provide this kind of statistics so you can later check if your applications behaving properly into production. And again, micro profile gives you that for free. If I just access another endpoint called metrics, I can see that by default I get a lot of different metrics available for here like CPU, garbage collector, thread count, and heap, and all of the other things. And if you want to, you can also provide your own custom metrics but it takes a bit or more of effort. So we're not going to show it today because I have other interesting stuff to show you, OK? So that's basically health checking and metrics. So let's start to dig into another feature profile which is the config API. So you want to externalize your application. If I get to my hello world endpoint, sometimes I need to get some internal information from property files, from environment variables, from Java properties that are passed from my command line. How do I get this information, right? Instead of trying to implement something by yourself or using some property source like a library, you can use something that's provided for you, integrated or every with CDI. So let me get here my code. Suppose I need a property called greeting. So I'm going to get string greeting. And I want that property to be detected automatically here through CDI. I'm going to say it's indexed. And I'm going to use my config property annotation from my profile and say that, well, this property is greeting and I can't use that sign application. So instead of saying hello from wildlife swarm, I just want to use the string that I just provided. So that's how it works. I can go here. My wild fly swarm application is running.  So it aligns your application development if you're in development. Oops, we got some error, which means that, well, the texture is too big. But I got a deployment exception which states that for this code, it can't run into production because you said that you need a config property called greeting and this property is not available anywhere. So I need to provide this configuration if I didn't want this config property to be mandatory, I could say that, well, you could have a default value of hello. That's one option. But I can also one of the interesting options that we have for this kind of thing is that it can be an optional string. So if you want to solve this thing by code instead of in a narrative fashion here in the annotation or you want your optional string to be dynamic, I could say that, well, we think that the value provided the property be like something like aloha, just because it works for how I am going to say aloha. So it can be an optional property too. Now if I run the application, providing an option of t, it should run properly. OK, now it's ready. If you just get to my endpoint of your value, not what I was expecting, right? Let's see something different. I'll try to provide the value. Let's create folder. First option is for you to provide a property file, resources, math.int. So if I create a file, microprofile.config.properties, I'm going to say that now greeting should be aloha, which is a Portuguese version. Now let's see the output of if I provide a property file. Provide it's ready. It's provided aloha because I provide a file. But just in case, I don't want to use the information provided in my property file here, which is microprofile. Properties, I want to provide this information in my lines. I can say that greeting should be salute. And I'll say jar, target, demo, sworn, dot jar. So the command line property takes precedence over the property file. So we should be this version of my application running, salute. And we can also get, I can export like an environment by a verb called greeting and say that we should have something, sorry. And run this again. Sorry, it's not really a hello, but I'm out of options of my mind right now. So that's how you use the config API inside your application, your microprofile application. And last thing I want to show you right now is the circuit breaker configuration. It's very simple. If you ever use it or heard about history, for example, well, Netflix or SS provided us a great implementation of a circuit breaker. But now that we are in 2017, maybe we can use like a standard way of providing this kind of capabilities to our application. So we're going to use a circuit breaker. And I want to show that it's very, very simple for you to provide either configuration or fallback implementations for your failing methods. So for us to demo this, I just created another REST endpoint, which is already running here at my localhost 881. It's providing a JSON response with a list of persons. So what I need to show, I'm going to create a remote request for that. So first, I want to create a new class here called person, which is going to be my implementation. It's going to have an ID. It's going to have a name. So let's generate the getters and setters. And I'll hit a constructor with all of these options too and also a default constructor. And you guys that follow me know that I'm not a fan of constructors, but Refactor. I'm going to create a factor method. So back here to my endpoint, now I'm going to create another endpoint saying that, well, maybe I can have a response or maybe I can reply just directly. I want the list of person, which is a list, get people. I'm going to say that I want a path to be slash person, get. And I want to make a remote call for that. And I also want to return uses, application slash JSON. So what do I need to do? I'm going to use the Juts or S clients, new clients. So for the client, I'm going to target localhost 881 person, 81, F person. I'm going to get this target, target.request.get. And I want to get a new generic type. That should be a list of person. Yes, should return my people. And maybe I don't want to return the full JSON list. I want, well, let's return this for now. I want to perform something. OK, this should be OK. Now let's run this application with the Maven plugin. It's ready, so if I just access here, my endpoint is slash person to respond local person. OK, I get the full response. Maybe if I want to, now it's working properly. It's just a mirror in here, but I want to show that I'm performing some transformation. So I'm going to return just a list of string. And I want to return people, string, map, person, get name, text, collectors to list. So let's run again just to show that I'm performing some kind of transformation. You see now I have a JSON area consisting of only strings. And here I have my remote endpoint, which returns me a person, full person, I'm performing some transformation. What happens is my remote endpoint gets down. So my remote endpoint is not responding anymore. And my application, now, it fails because I don't have any circuit breaking. If I want to provide the circuit breaking implementation with a micro-profile, it's pretty easy. I just need to create another method, string, which can say like cache names, which you probably are going to implement like a cache approach for that. And I'm going to say that, well, I want to return a new, well, this. And I want to add some, it's going to meet John, sorry John, just to see that the fallback is different. And I'm going to say that, well, just in case this thing fails, I want a fallback method to be cache names because if I get an exception, I want to use and call this other method that I have locally, just I don't want the exception to blow in my user's face. So with that in mind, we're going to run again a wildflagsform implementation. And so my remote endpoint is still down. But if I access right now, you can see that I have a fallback. And this is just a default behavior. If you want, the micro-profile circuit breaker has sensible defaults. But if you want to customize that, you can use a circuit breaker annotation. You have a lot of different parameters that you can choose and how do you want to configure a circuit breaker implementation. But if you want to stick to the default, just add the fallback annotation and you already have your fallback here. You can use your cache values or fix the string, which is what I used. And that's what I wanted to show you today. You know there's much more into micro-profile, but that's everything that we could show you in just 15 minutes. Yeah, we are definitely running out of time. But there are some great questions I want to make sure we hit you guys with. One is, Ilya specifically saw that you're using the health metrics endpoint and you're returning JSON payloads in that specific case. Why not have something like JMX and being able to hook up J-console? Like for instance, is there a fraction involved by Swarm to turn on JMX? And can I use J-console to interact with that? Or do I have to go through this health check, which is basically a rest endpoint with JSON payload? Okay, you have a JMX endpoint available by default, so you don't even have to add that while the fly swarm already exposes. So, and I just said JSON, but it's not only JSON, the metrics API provides you plain text, provides you JSON, and also provides you like a Prometheus format. Okay, no, that's fantastic. Hopefully that answers the basic question. There was also a point that on our generator page, there are apparently some duplicate artifacts in that list. I've not seen them, but that came up during the chat while people were watching the demonstration. They felt there were some duplicates there. But by the way, if you guys see anything like that, please do open an issue for us and we'll definitely chase that down. And John, there's actually a great question for you. For a person who's already bought into JBoss EUAP, Enterprise Application Platform, and they're not buying into the container universe just yet, how can they start taking advantage of things like micro profile and fly swarm capabilities if they want to do microservices, but all they are is an EAP user today? Yeah, good question. So you don't have to use a wild fly swarm inside of containers obviously and what Edson showed was just running on the desktop. So you can continue to use swarm in that manner. So right now, from a Red Hat perspective, if you would like to use the micro profile APIs, then wild fly swarm is the way to do that. And upstream, wild fly swarm has pretty much all of the Java EE technologies plus micro profile in terms of product, wild fly swarm includes the wild fly, sorry, the web profile technologies, not necessarily the full Java EE app server stuff yet. So provide feedback on maybe how you might wanna use micro profile and EAP or how you might wanna use wild fly swarm outside of a containerized environment where we'd love to hear feedback. Okay, and one more great question I'm looking at here and I did ask a clarifying question myself, it's from Carlos and it's related to the fact that if I'm using wild fly swarm in a OpenShift or Kubernetes world, is there any special configuration to deploy multiple instances of wild fly swarm in a cluster? And I assume in that case, they mean an application server level clustering. So John, what information do you have on that form of clustering in the context of a Kubernetes cluster OpenShift cluster? Yeah, the interesting piece there is in a containerized environment like Kubernetes where you have a bunch of administrative capabilities already available to you, it makes less sense to actually use the built-in application server kind of clustering. So what you get with Kubernetes is the ability to automatically scale up and scale down your instances and in that sense, they're already being managed as a cluster. What you don't get in that scenario is session replication. But in kind of the microservices world, what you would tend to use is a Redis or an Infinispan or something like that. Some place to externalize your state. I believe that EAP might actually support clustering on top of Kubernetes. I'd have to... Actually, I think one of you guys might know that a little bit better, but generally speaking, clustering is kind of managed by Kubernetes through scaling, auto scaling, and replica sets, and externalize your state. Right, right. And that was really the clarifying question I asked of Carlos. If all you're after is failover and load balancing, you get that for free now in a Kubernetes world, an OpenShift world, right? It does that automatically across the pods that you have out there, multiple instances of the same pod, same application. And then if you're dealing with shared application state, externalize it to something else is what we often talk about. We have an interesting demo out there that specifically does that with the JVolkStateGrid and Infinispan, where we actually take a Spring Boot application and externalize all the application state to it. So you actually can see rolling updates happening in Kubernetes with no impact to the actual end user experience. So one other question, and we're running out of time, is microservices with Java EE is important, is it important for the Android developer coder? So does the Android community see anything here in this world? So John, what do you think about that? I haven't even thought of that. That wasn't really the target audience of MicroProfile, for instance. But it gets back to join the discussion group, right? Again, MicroProfile.io, go to the discussion group, join the Google group from there, and ask these questions and provide us use cases, right? Because this isn't really something that we had really kind of considered. Actually, one quick thing I thought I would bring up as you were watching Edson kind of writing some code is you could actually hook up, JBoss or upstream wildfly has a deployment scanner, right? So it can redeploy applications when the war file changes. You can actually do that with wildfly swarm as well, right? There's a built-in deployment scanner. So you can actually create what we call a hollow jar. Again, it's all the pieces that you want in your app, mine it, sorry, in the app server, and you pass in your war file kind of as an option. But the nice thing is anytime that war file changes, it'll get automatically reloaded so you don't have to restart wildfly swarm every time. So it's kind of neat. Okay, one last question I think, because I think it's a pertinent one from Doug. You wanted to know if the wildfly swarm generator war file could also be deployed on EAP, and that's something I never thought of before. Have you looked at that? Yeah, what wildfly swarm will do hidden inside of the target directory that Edson had, there's both an Uber jar that you can Java and Sjar, and there's a dash war file. Sorry, a dot war file as well that can be deployed to Jbos EAP. So if all you're doing is Java EE technologies, then the scope is basically provided and your war file will be pretty vanilla, just bytecode for your app. If anything that's not provided will be included in the war file. So you could, although I haven't quite tried this yet, you could basically take the war file that Edson has with the micro profile stuff, it'll be actually included, the libraries will be included in the lib directory, and you could deploy that into EAP. Something worth trying out. Yeah, that's an interesting use case. I hadn't considered it. So Doug, thank you for bringing that up. And we are out of time for today, but I'll thank you guys for your time, your questions, your attention. As always, watch the URL for Dead Nation Live. We will continue putting on new content all the time. There'll be lots of great sessions coming down the road for 2018. John, Edson, thank you guys so much today for giving us a nice little intro to micro profile. It's always fun to watch Edson type on the file. Thank you. All right, well, thank you guys so much and we'll see you out there in the Twitterverse or always feel free to email me. You guys should all have my email address based on the announcement emails that have gone out about this session, but do check us out at Dead Nation Live, right? So developers.red.com slash Dead Nation Live. Thank you so much.


I think the vast majority of African states have civil fighting and insurgencies that they're dealing with. So should they all be orange? No, I don't think they should all be orange. Like Bukohama, Haram, and Nigeria, sure. Let's call that civil war. These are all resource wars, right? Nigeria, Bukohama, right? Now here's the thing. Sierra Leone was peaceful in up to the mid-1990s. What happened in Sierra Leone in the mid-1990s? They found diamonds. They found diamonds. So I know this because I looked into it back then. I was geophysicist. At the time, there was a documentary that was created in Canada. That was a fantastic documentary. Here's the story of Sierra Leone, why it became a war zone. Civil war where people, like the dictatorship there, the puppet regime that was put in, they were cutting kids' arms off so they wouldn't fight. A mining company in Vancouver, Canada, discovered diamonds in Sierra Leone in collaboration with a mining company in London, in the UK. Together, they funded a mercenary organization that was owned by the mining company in the UK. They sent the mercenaries to Sierra Leone and they overthrew the government there. It was peaceful before this. They overthrew the government there, put a puppet in power. The first thing the puppet did was sign away 100% of the mineral rights to the mining company in the UK and Vancouver, Canada. I know this because I lived in Vancouver, Canada. I knew mining companies. Civil war in Sierra Leone.  Why? Because of diamonds. Why? Because of Western governments, Western powers, these people wanting the resources out of Sierra Leone. That's our history, by the way.


You know, I've thought a great deal about that. Of course, I'm grateful to the North Texas Conference. I'm grateful to all the colleagues and friends that have worked with me and challenged me and nurtured me and mentored me along the way. But I think I'm most grateful for the people that I met beyond the local church, those people that have a different perspective that challenged me in a new way. In many instances, there are voices and stories that don't get told that aren't heard. And it was a blessing that they allowed me to walk that journey with them and changed my normal. I don't think I would have fully understood God and God's nature and really understood Christ's walk on earth had I not met the people out in the world that I had the opportunity to work with. Well, I am most grateful not for a what, but for whom, for people. Certainly, I'm most grateful to my wife, Naomi. She and I were married in 1969 the same year that I was ordained deacon under the old discipline of the United Methodist Church and the Methodist Church that preceded it. So we've been married for 49 years and I've been an ordained minister for 49 years. But I'm also grateful for a host of people who made my ministry possible, opened doors for me. I've often said to friends and potential candidates for ministry, I never walked through a door in my life unless somebody else opened it from the other side or kicked it in on my behalf. I've had tremendous mentors, teachers, colleagues in ministry, and I've had privileges that are extraordinary, unlike anything in any other career. One of my mentors, the late Bishop James K. Matthews, used to say, ministry is not what you have to do, it's what you get to do, and I've gotten to do an awful lot of really interesting things. But my wife and I have moved 11 times in 49 years of marriage in a variety of places, met an amazing number of people and all of those people collectively have influenced me. So when I come to the stage of retirement for more ordained ministry, I'm really reflecting a great deal on the people who made it possible. I think to the new ordinance I would say, don't get too comfortable behind your desk. Don't get too comfortable in the pulpit. Go into places that are messy and challenging and that will push you to think in new ways. My advice to people who are beginning ministry or being ordained as the next stage in their continuing ministry is listen to the church. However, I wanna qualify that because a lot of times I hear people say, we just have to listen to the church and what they mean is the current congregation they're serving, the cabinet on which they are members, the annual conference to which they belong, maybe a subgroup of friends who are important and my view is listening to the church means not simply some circle within which one functions but rather the whole longitudinal history of the church. So listening to the church means not only listening to the people with whom one interacts from time to time but listening to the church also means listening to Augustine and Aquinas and Wesley and Luther and Teresa of Avila and everyone in the history of the church who has unfolded what it is that we experience but listen also to the church that is not yet present with us. Listen to the church that is about to become. Listen to the church that is yet to be born. Who are the people who are gonna hear the gospel 50 and 100 years from now? What should we be doing in our time to prepare the world and the church and the ministries of Christ for those people? Well that's pretty easy. My husband and I are going to realize a lifelong dream literally since we were teenagers dating we are building a home and going to move to Colorado. So you're all invited, just call ahead and we're looking forward to being a part of that. I also have a new grand baby and wanna spend time with family in a way that often in ministry or in work in general you just don't have that time to immerse yourself with the kids and family. So I'm looking forward to that as well. Well I've had the privilege of doing a number of things in ministry and some of them required that I set aside some of the things I hoped to be able to do until an opportunity came along. For example in the 14 years that I was the dean at Perkins School of Theology I had a tremendously satisfying experience in serving what I consider the most fulfilling appointment I've ever had. However it meant that the work of the office of the dean required that I set aside some research interest and writing interest that I had. So when I left the dean's office I left with an expectation or hope that I'd be able to do some writing and I finished one of the four books that I hope to write before I'm no longer able to put words on a page and on a personal level my wife and I hope to do a little bit of traveling but we also hope to spend a great deal of time watching our grandchildren grow up.