From Las Vegas, it's theCUBE. Covering VMworld 2018. Brought to you by VMware and its ecosystem partners. Welcome back to theCUBE coverage at VMworld 2018. I'm Stu Miniman, my co-host is Justin Warren. First of all, happy to welcome back to the program. Chris Wall, who's the chief technologist with Rubrik. Chris, great to see you. Hey, good to be back. And first time guest, we have Neal's Groot, who's a virtualization architect and apologies for butchering your name. No problem, great to be on the show. All right, Neal, since our audience all knows Chris. So, I always said, you live in the epicenter of virtualization there. You look through the top virtualization bloggers. I think they're all like your neighbors and things like that. So tell us a little bit about your background and what you do. Yeah, so yeah, it's all about Netherlands, right? And it's a really small country. So we have a lot of VCDXs, a lot of the experts over there. So virtualization really is alive in the Netherlands, right? So I'm myself, MA freelance contractor. So I help my customers by translating business to actual technical infrastructures. So that's what I do on a daily basis. Awesome, love it. It's something magical on those troop waffles, I don't know, the Dutch mafia. I didn't mention the troop waffles. That goes without saying for those that know the Netherlands thing. I heard there was one airline that stopped serving them and people are changing airlines. Yeah, people went mad. Yeah, I know, I know. Chris, just fit a little bit since we've chatted, so give us the update, what's new in your world. Sure, I mean, from a rubric perspective, we launched our 4.2 release, which from a VMware perspective, the big items on that are trying to focus on hybrid cloud. So we actually are VSAN certified now so we can protect, recover all that jazz with virtual sand from VMware. We offer native integration with VCloud Director, which complements our already existing integration with VRealize Automation. So it doesn't matter if you're kind of an MSP looking to offer VCD or VCloud Director as a service to somebody, or if you're doing VRA in the enterprise. Yeah, so one of the questions I've had is, VSAN's an integral piece of all the multi-cloud stuff that VMware's doing. So does that mean that does rubric come along through the ride? Is there more integration work and testing every time that VMware does a different config with a cloud provider or VMC or things like that? There was a lot of work put in there. I mean, to get certified, you have to go through a pretty rigorous set of testing and your developers are talking to one another, the APIs have to be compatible. So there's a lot of work to make sure that regardless, like you said, of the topology that you execute or the environment that you choose to operate within, the solution is pretty much guaranteed rock solid to operate from a backup recovery archive, all that kind of jazz perspective. So two thumbs up, I'm super jazzed. So Nils, on the VSAN thing, we hear from VMware that the growth in VSAN has just been enormous. So what are you seeing in all the customers? What are they using?  What are they using it to do inside their organizations? That's a great question. And what I tend to see is a lot of customers still are running on, well, if you may say a more traditional storage solution. So storage arrays, but I do see a lot of traction with VSAN and that's, I think primarily because of performance, performance announcements, if you will, obviously the architectures are completely different, right? So you're closing to the CPU, closer to where the actual workload is running. So that helps a lot. On the other end, I see the economics come into place. So we had several customers who were actually looking at it from a cost perspective and they managed to cut down on cost with using VSAN. So yeah, I do see a lot of traction and movement towards HCI solutions. Right. Chris, maybe unpack for us a little bit. You said 4.2, if I remember, Polaris is what it's called. What does that really mean? These shows, customers get bombarded with lots of announcements. So what are the customers excited about? How does it change their businesses? Well, let's divide and conquer here a little bit. We kind of have three tracks now. There's the rubric cloud data management software, which just announced 4.2 recently. Then there's Polaris, which is a complementary solution that goes with that. We launched it in April with GPS, which is the global commanding, like driving your car, beep beep, global command and control where you can deploy policies and see an audit for compliance and all that jazz. Essentially it's a dashboard for everything that we can see and manage. What I'm really excited about, really, like saying the word, is radar, which is a brand new data management application. We just released it. It's generally available today. Just came out within the last month. And what that's doing is actually taking every data point that we have on the backups that we take of your applications, lining those up into a machine learning model. We're actually using no nearest neighbors to look at all those data points across data growth, what's being add, remove, change. Just think of everything that you can see when you back up a workload. We correlate that into the model and then we can detect when are things normal and when are they not normal. And then if we detect there's an encryption of some sort, like ransomware attack is probably the cornerstone use case for this. We alert the security team, the operations team, whoever, they go into an analysis mode and we tell them everything that we see in the environment. We actually can call down to the local running instance of rubric on-prem because Polaris is a SAS model. So we can say, hey, go look deeper into the file. Do we see encryption? Do we see ransomware? What's going on? We give that on a platter to the security professional to say or even the layman to say, here's everything we see wrong with the environment. What would you like to do? Do you want to restore all of it, parts of it to some other location, back to where we found it? And so the idea is that if you get hit or maybe when you get hit with some sort of ransomware or disgruntled employee or in my case, when I accidentally did a star dot star removal of all system 32 files, this was many years ago, it's push button that goes back and play. And the downtime that is the killer for most operations evaporates. That radar is that in VMware environments? Is it multi-cloud? What does that play across? It's pretty straightforward because if we can see it from a backup perspective and index it, which is pretty much anything in the VMware ecosystem, we can then trend on that and put it into radar. So it makes it less about what you're doing from a workload or a platform perspective and more about how often are you backing up? How many data points do you have? And are you feeding that information into Polaris to give you those insights? So really wicked technology, very differentiated in the market. Chris, you said that it provides all of this information to the security professionals for them to make a decision on. We heard from VMware yesterday about the idea of a self-driving data center. So how far could you push this? Could you actually get it to be fully automated so that for example, if it notices an outbreak of malware or a ransomware attack, could it actually step in before it gets too far in there and you have to restore a lot more data? Could it actually just sort of help you as an admin to take over those parts of the management of the environment? The short answer is yes. You can absolutely put full autopilot. The longer answer is we're not so certain everyone wants that at this time. And we have two kind of advantages here. Number one, as the customer data comes in, it's all siloed from a mingling perspective. Each tenant gets their own environment where we keep their metadata. There's no crosstalk or anything like that for security and obviously for warm and fuzzies. But at the same time, if we kind of pull back our lens, we do get to see all the tenants kind of globally. And we can learn across a global set of customer data, even though it's not mingling with one another, which means as we drive radar further down the line and rev up new versions of it, we can add more and more of that automation. And it's kind of a two-way street. We learn from the customers what they feel comfortable with and what they want automated. And then we put that into the product in our basically every other week release cadence. Niels, what customers are comfortable with is a big question. So you're working with a lot of customers. Where are they in this spectrum? We talk about security and multi-cloud and all of these discussions here. What are some of the common things that you're dealing with? What's going well and what's still holding us back? Wow, yeah, there's a lot of things customers are looking into. And I think that's one of the main problems. Well, not to say a problem, but there's so many areas to focus on and so many innovation going on right now. So yeah, data and data security, those are probably in the top three, right? So customers are really looking to adopt new technologies to be able to securely store the data. But at a scale, right? I have several customers and they foresee a immense growth of data. Like, well, it's the transformation we're in as an IT world, right? So I think it's challenging. What is the right path, where to go from here and which technologies to adopt and which technologies you probably should better leave behind? So yeah, it's a quest, I would say. Yeah, it's funny. We talked to lots of customers and it's like, they're like, oh my gosh, how do I keep up? And my answer more recently is like, well, none of us are going to be able to keep up on everything. So you need to have partners and peers and maybe there's educational materials we can talk about. Niels, do we have some experience in some of the educational materials? Well, well, funny that you should ask. So we have this book, This Beauty, and this is actually the heritage of Frank Denerman and Duncan Epping. They started out like 2012, 2011 maybe with a clustering deep dive book. And that's all vSphere related, right? How to actually use vSphere, vSphere HA, DRS for resource management but also for the availability of your applications. And well, yeah, I had another book written with Frank just last year, focusing more on the host resources. It was actually the host resources deep dive. And in case they couldn't see on the video, the big thing, and that's vSphere 6.7. It's big thing. So this is the update for it. You worked with rubric, it was participated in making sure that this happened. It looks like you could hold the door with that book, it's so big. Chris, maybe, you know, we know education is a big part of this community. Why is rubric looking to help with a book like this? No, I mean, this is like my show. I've been coming to this forever. I love the people that are here. I love VMware as a technology and as a company. And one of the things I wanted to do when I joined rubric, which is 2015, was keep that torch lit. So we spend a lot of time focusing on what customers are looking to do, what partners are looking to do, and really just trying to draw the spotlight on really great things like the clustering deep dive book, which is, and they were nice enough to let me write the forward for it too. So I'm not just trying to be nice. It is good content. So from the book itself, all the way through these V All-Star cards that we do to highlight bloggers that are kind of up and coming, or perhaps some of the old guard, you know, a little mixture to help the new folks, talk to the old folks. You know, I guess I'm an old folk now too, but that kind of jazz with it, all the way down to, we throw a huge party every year, really just trying to say thank you to customers and partners. And this year we had the roots and run DMC coming out to kick it old school. So just the whole gamut. I was hoping that John Chambers was going to, you know, come out on stage to introduce them. You've had a lot going on at Rubrik. I mean, we don't have time to go through all of it, but maybe you want to hit a highlight or two, Chris, some of the corporate stuff that's happening. Yeah, having John Chambers as a board advisor, that was, this is like really fresh news that just came out recently was huge. Cause I can't, I've been to so many Cisco live events where John would come out and do the keynote. And it's just, it kind of draws you in. You feel the energy and the passion from Mr. Chambers as he delivers a keynote. And he's just entitan in the networking industry. He is affectionately known as the preacher from people that have worked with him and seen him walk up and down the aisles of Cisco live and other shows. So absolutely. And then we had Avon Puri joined as well. I think he was, he recently just came over from VMware and he's the new chief information officer at Rubrik who's going to really shake up things internally as far as building a strategy around how do we make sure we have Rubrik on Rubrik from an internal perspective, making sure we're customer zero and really showing the things that we do to our customers so they could see, you know, no veneer. This is what it looks like. This is how it's going to execute and join us on that journey. So some pretty exciting announcements from the executive perspective. It's certainly been an exciting watching all of the progress that Rubrik has made over the years. I've been tracking you for a long time and just seeing the growth of the company and just kicking goal after goal. It's been really quite impressive to watch. I appreciate that. It's definitely been weird going from employee 32 to 1200 plus. So there's a lot of people I still have to meet. You have stuff now. So Niels, tell us the truth though from customers. So, you know, Chris isn't listening, you know. What do they think of Rubrik out there? Do I need to be honest? Yes. I think they find Rubrik pretty awesome. Actually, my current customer utilizes Rubrik a lot. And that's all, yeah, well, we talked about data, data integrity and data security, right? So, yeah, it fits right up in that alley. So I think customers will definitely look in technologies like Rubrik and everything that comes along with it, a lot more in the upcoming years. All right, so, Chris, I want to give you the final word. Rubrik, so much things at the show. I believe you got one of the Splash brothers signing autographs in the booth. So people watching this right now is probably a little bit late to run over, but final takeaways you want people to have from the show. I think if I were to pull it back to any particular focal point, what the customers are saying, we just had a user case study slash kind of press announcement with the Museum of London where they're talking about all of the millions of digital assets that they're protecting with Rubrik using our Oracle integration for this large data warehouse. And I think those kind of things speak for themselves. When you see customers willing to come out and extol the virtues of what they put into the environment, especially them with, I think, something like eight or 10 IT professionals running everything. The belagered admin story really hits me in the heart because I was that person for many, many years. So I love seeing that we're changing kind of the lifestyle and the applications that they can deliver because they're not dealing with data protection day to day anymore. And I would say I would highlight that kind of world and that's what we're providing to customers. Neils, first of all, congratulations to you, Frank and Duncan on the book. I remember previous generations, everybody would be getting it and make sure that they had enough room in their luggage to take it back home from VMworld. Always, we know how this community really appreciate this. Chris, thanks so much for the update.  I remember when you were the admin and speaking out here and you still seem to know a thing or two about the technology. So always good to catch up with you. Thank you, Steve. For Justin Warren, I'm Stu Miniman. Getting close to the end of our second of three days, wall-to-wall coverage year from VMworld 2018. Be sure to go to theCUBE.net to see all of the video and thank you for watching theCUBE.


it's that time of the year with free agency approaching where stuff gets pretty crazy borderline insane and nothing is different this year especially when it comes to the Baltimore Ravens they are extremely busy they have a lot of stuff to take care of they have plenty of things that are on their agenda in the coming days and then of course the coming weeks one you got with Odell Beckham Jr what's gonna happen with him you got to make a decision ASAP on what you're gonna do with obj are you gonna keep them are you gonna let them go what's gonna happen with him and then with an even bigger price tag you got Justin Mattabike and with Justin Mattabike we'll know what the Baltimore Ravens are gonna do with him officially by tomorrow because they already said it though they already let us know if we can't come to a contract agreement with Justin Mattabike then that franchise tag is certainly on the way so we'll see what happens and when it happens within the next 28 hours or so but then but then there's more because Baltimore Ravens in different kind of fashion they are in a very big time running back market and free agency and they have a lot of options but somebody spoke out about those options and then one of those options is actually showing that a I can still be an option and we're gonna talk about that very very shortly before we get into a team keeping clean make sure you subscribe to the YouTube channel turn your notifications on so you do not miss not a single video not a single update not a single thing especially because next week it's gonna be going crazy real crazy and we're gonna keep you updated with everything going on with the Baltimore Ravens and we will also talk about some other teams specifically in the AFC North but just in the NFL in general on what they do in free agency so y'all stay tuned for that but make sure you turn your notifications on and leave a like on the video and know that I love y'all and appreciate y'all and let's just get right into it so last week somebody from the Baltimore Ravens according to Jeremy Fowler they made some very interesting comments on Saquon Barkley and they said this they said could you imagine Saquon Barkley and Lamar Jackson in the same backfield for the Baltimore Ravens running game and when we think about it as Ravens fans it's like oh my goodness that would be crazy because we already know with Lamar Jackson just about anybody that's in that backfield with him he makes their job a lot easier because just the threat just for defense is thinking about Lamar Jackson possibly taking off I mean you already got to worry about him throwing the ball and him connecting with his receivers or tight ends but then just a thought of him scrambling too that makes it just that much annoying that much more annoying to defend Lamar Jackson but if you have somebody like him and then you have a Saquon Barkley lined up right next to him that would be very very scary and as Ravens fans we think about it we we think about that scenario we envision that scenario on how that will be having Saquon Barkley in the backfield for the Baltimore Ravens and one thing that I can honestly say when it comes to this running back market and it comes to the Baltimore Ravens I am very excited about the running back market a lot more than I have been in the past because of the names that are out there because of like Jeremy Fallon said before the pedigree of names that are out there and he did mention that the Baltimore Ravens they plan on adding a running back with some pedigree but I'm very excited about it just because of the Baltimore Ravens and the playoffs because as we've known the Baltimore Ravens when they have been at their best when they have been the most dominant team in the NFL come the most tough playoff games for them the most important playoff games for them what has happened to the running game they have allowed it to be non-existent remember 2019 Baltimore Ravens were 14 and 2 they were dominated everything and then they decided to hand the ball off to their running backs what nine times in that game they never tried to establish a running game with their running backs at all and then of course in this AFC championship game from this year they they went with 13 and 4 they were steam rolling the league going through everybody and then they decided to hand it off to their running backs only six times and guess what both years 2019 and then this year 2023 they had the number one running game in the league and then what made it worse this year they had the number one defense in the league too and they had so many ways that they could get the job done but the Baltimore Ravens decided you know what we're not gonna get the job done but what makes me excited about these running backs is the fact that they have so many options and they have so many equality options and they have names that you just simply can't ignore and you have to respect so if they have a name that they're paying a good amount of money to and the name that you have to respect then how can you deny them especially in the most crucial moments of your season so that makes me just have a little bit more hope and in the possibility of the Baltimore Ravens actually establishing and continuing to rely on a running game when it matters most so let's take one Barclay though and we've talked about him a lot this off season of course but with him I would just be worried about the injuries that's that's the only thing with Derek Henry big bruising back downhill runner once he gets going you know that's a wrap and I think he the Baltimore Ravens could get it done with Derek Henry but again it's just will he be a good enough fit for their offensive line and we're going to talk about free agency in a couple days different things they can do with their offensive line but the Baltimore Ravens we've talked about the Derek Henrys we've talked about the Saquon Barclays and there's some other running backs that you could throw in the mix as well we talked about Alvin Kamara too but there's another running back that he said you wait a minute don't forget about me don't forget about me and he's somebody that has made plenty of plays for the Baltimore Ravens already that being JK Dobbins JK Dobbins five and a half months out from his injury from his surgery he posted the following video and what's so crazy about that video what's really insane about that video that JK Dobbins I don't see no limp I don't see him hobbling now he's not running long distance so I get that so he probably still got a little ways to go but JK Dobbins is letting to be known to the NFL world don't forget about me I'm still here so this makes the Baltimore Ravens and they talked about they said that they perhaps want to bring the JK Dobbins and Gus Edwards back they said that they've been talking to those guys Eric Dacosta said that um but that's of course to be determined I definitely think Gus Edwards is going for sure I could see JK Dobbins being gone for sure but we won't know till we know it nothing is official until it's official I know a lot of Baltimore Ravens fans are on offense when it comes to a JK Dobbins because we see it it's there the talent is there it's clearly there JK Dobbins is a do-it-all type of running back he's a home run hitter he's shown us all of that already but the injuries are just taken away from his career taking away from his rookie year he showed us like hey I can play in this league I can get this job done but the job keeps getting cut short because JK Dobbins keeps ending up being hurt and it's been so unfortunate man it's been really unfortunate I've said it plenty of times I said it during last season and I've said it during this off season two the only way I see JK Dobbins returning to the Baltimore Ravens is if they sign him to an extremely low deal extremely low deal for a little amount of money probably not much guaranteed money if any at all that will be the only way I see him return to the Baltimore Ravens but I think in my honest opinion I think will be best for JK Dobbins to get a fresh start somewhere else just a clean slate just to run it back somewhere else and just try to get his career off to not a different start because his career is obviously started but get it on a different path because with JK Dobbins it's been tough it's been tough and you feel for JK Dobbins now one of my guys trust Nas 8 shout out to my guy by the way he had a very interesting opinion on JK Dobbins and where he could end up landing and he said that JK Dobbins should and could possibly go to the charges and I was like oh that is a really really good point right there the LA charges with Justin Herbert and Jim Harbaugh but there is somebody that he wasn't the happiest with especially with their coaching decisions and that being Greg Roman so with Greg Roman being the offensive coordinator there hey regular season you know you're gonna eat you're gonna feast like and I expect Justin Herbert to have a very good efficient year this year I expect his passing numbers to go down as far as yards touchdowns they could maybe stay the same but I expect his interceptions to go down as well because that's what Greg Roman is based off of he's based off of the running game and he's based off of you just having a very high efficiency rate so we'll see what kind of impact he has on Justin Herbert in that entire charges offense but I expect again passing wise efficiency to go through the roof and running game to be up there as well probably a top five running game whoever they're running backs end up being but and the tight ends to feast as well whoever that tight ends end up being too but as far as JK Dobbins I do like that he's letting the NFL world know right before free agency too that timing is everything because he could have posted this like two three four weeks ago well then the timing would have been different too as far as how far out he was removed from the injury and from the surgery and everything so maybe that timing was based off of a this is when I could put my best video out before free agency and really show these teams like hey I'm good and the timing of this posted is nice too because free agency is just the beginning like you still free agencies in March you still got OTAs on the way you got the team activities and then you got of course training camp and all that so him showing how healthy he is right now even though he still got a little bit of ways to go that's a good thing for him because it lets teams know like hey I'm gonna be ready for the season I'm gonna be there at the beginning of the season so you want to sign me now get me under contract let's take care of business but trust me either way I got you but I think it's also a reminder to the Baltimore Ravens too to just give them a reminder and not let them forget about J.K. Dobbins


Joint Base Andrews recently hosted a wheelchair rugby tournament. The event was part of Wounded Warrior Care Month and was also the first time many of the athletes ever played wheelchair rugby. The main purpose is to help the veterans and active duty serve members who got injured, ill-wounded injured to recover faster, help them gain more confidence because someone like in my case that lost his legs in combat, some of them might come back and their confidence might be low. So these games allows you to feel like you could do something. So for my case, I can't run anymore, but I can push really hard in a wheelchair now. Visit the Navy Wounded Warrior's safe harbor website for more information on adaptive athletics.


Our first case tells a story. It's one of our own, one of our own docs who came home from Florida to find his screening PSA, which he had obtained at a health fair, was in the 40s. He then underwent an MR examination and a visit to his position. The MR examination using the cardiac coil on a T2 water weighted and a T1 weighted MRI shows one of the typical findings of prostate cancer, namely an ill-defined area of low signal on the T2 weighted image that looks a little bit like the erasure sign that we see in osteomyelitis, the so-called charcoal, ill-defined, hypo intense sign in the right portion of the gland as opposed to the heterogeneous, lumpy bumpy, dark, some bright areas of the left portion of the gland which is normal. The right portion of the gland is where the tumor sits. I'd like to share with you some basic facts now before we plunge into cases like this and others. Prostate cancer affects about 250,000 Americans a year and it kills somewhere between 25,000 and 3,000. It kills somewhere between 25,000 and 30,000 Americans per year. There are two ways that we screen for prostate cancer. One is with the serum PSA which has become controversial and the other one is with a digital rectal examination. The United States Preventative Task Force has suggested that PSA shouldn't be used in American men at all, whereas the American Urologic Association in 2013 suggested that only symptomatic men should be screened with a PSA up to age 54 but after age 54 from 55 on then serum PSA can be used as a screening evaluator. And we're going to see how MRI fits in into the evaluation of these two groups especially the over 55-year-old group that has an elevated PSA. Let's come back to our case. Let's look at the prostate as a globe and within that globe we have several key anatomic areas which I'd like to share with you right now. So let's do that in a very simple mode. I'm going to use my drawing tool and I'm going to make the prostate into a globe. This is an axial view of the prostate and on either side of that globe we've got the neurovascular bundle which consists of nerves and vessels. I've got a couple vessels in there and I'll make the nerves pink and they're located near the base or upper portion or proximal portion of the bladder at about the 7 o'clock and on the other side the 5 o'clock position so let's put them in there and we've got our neurovascular bundle. The outer boundary of the prostate is known as the anatomic capsule. Around that anatomic capsule we've got a vascular plexus which is known as the periprostatic venous plexus and I've drawn it in here in green. Remember this is an axial projection. Within our axial view we have our urethra which I'll draw in yellow and then immediately surrounding our urethra which I'll draw in blue is the transitional zone which is part of the central region of the prostate. Around that transitional zone sits another area known as the central zone. Now this is a little bit confusing I'm going to make the central zone orange so the central zone orange and the transitional zone blue comprise the central portion of the prostate together so we have a central portion and then as you get older this gets a little bit bigger in fact it gets a lot bigger and then this outer area this black area which we haven't colored in is the peripheral area of the prostate which goes all the way around the prostate from top to bottom but gets thinner in various positions as we go from top to bottom which we'll see in a few moments. Now the peripheral zone contains about 75% of the glands of the prostate by volume. The transitional zone contains about 5% and the central zone contains about 20%. Now as you age the transitional zone will get bigger and bigger and press the central zone outward against the peripheral zone so that eventually when you're 70 years old the prostate may look something like this. You've got a big central region which is comprised of mostly transitional zone tissue that presses the central zone area out against the peripheral zone and the peripheral zone becomes thinner and thinner and thinner. Oh but we're not done yet. Let's use our eraser let's look at the prostate in the sagittal projection and I'm going to use my same color just for consistency and I'll make the bladder up at the top here's your bladder and coming out of the bladder we'll make this time in pink the urethra which comes down and around and around the urethra as you would expect you're going to have the transitional zone which I've got here this time in purple instead of blue and around our transitional zone as part of the central region we have the outer part of the central region which is known as the central zone and we said that these two zones particularly the transitional zone enlarges as you age note that there is quite a bit of peripheral zone tissue and that that peripheral zone tissue which I'll now color in in pink actually I better make it a different color maybe dark pink goes all the way down low like I need a darker color here let's find let's use light blue again and our peripheral zone goes all the way down fairly low and this low area is known as the prostate apex now the upper portion of the prostate is known as the base we have the anterior portion of the prostate to the viewer's left the posterior portion of the prostate to the viewer's right and there are several other key anatomic areas for instance in the front we've got a bunch of fat which is known as the prostatic space of ritius in the back we have a fascia layer which separates the prostate from the rectum which is known as the dinnel filier fascia we also have although not seen in this projection a periprostatic plexus which you saw in the axial projection there are also various sphincters an internal and external sphincter which we'll encounter and talk about a little bit later one more area of note is the anterior fibro vascular stroma or fibrous stroma the fibrous stroma is found in the far anterior aspect of the gland I'm going to draw it in blue and when there is an antero apical area of prostate cancer which would occur perhaps right here it'll grow right into this blue area the fibro vascular stroma or the fibrous stroma of the prostate gland this is a very common occurrence and very difficult to evaluate and analyze with conventional transurethral ultrasound assessment and or biopsy in fact biopsies will frequently miss cancers that are down low or in continuity with the anterior inferior fibro vascular stroma let's turn our attention now to the coronal projection so this time we'll make our globe coronally oriented I've drawn the globe in blue sorry about that I should use the same color and then you'll see the urethra coming down the center of the globe I'll make it green this time and sometimes the urethra will be a little bit exaggerated at the utricular level then we see the seminal vesicles coming off the prostate base I'll make those red this time there's one seminal vesicle there's the other seminal vesicle and coursing around the seminal vesicles will be the ductus deference the seminal vesicles are usually bright on the water weighted image except as you get a bit older now this upper portion of the prostate in this location is known as the base the central third of the prostate in this location is known as the mid prostate and the lower portion is known as the apical portion of the prostate with the deepest portion of the apex being down here we also divide the prostate at the mid level into what we call lateral and intermediate segments the lateral segment in the outer half the intermediate segment in the inner half that's pretty much the only place where we make that division because that's where the prostate is widest so we have base apex mid middle mid intermediate and these are going to get very unique names as we'll see a little bit later on when we go to use our nomenclature for pyrads 2.0 so that's our introduction to a patient with a prostate carcinoma in the right side of the gland and to prostate anatomy


Live from Las Vegas, it's theCUBE, covering ServiceNow Knowledge 2018. Brought to you by ServiceNow. Welcome back to theCUBE's live coverage of ServiceNow Knowledge 18. I'm your host, Rebecca Knight, along with my co-host, Dave Vellante. We have Deepak Bharadwaj joining us. He is the general manager of HR Business Unit at ServiceNow. Thanks so much for coming on the show, Deepak. My pleasure. Glad to be here. Good to see you again, likewise. So we know that ServiceNow is expanding beyond IT, and HR is a huge business opportunity. Describe for our viewers how you view your role, and sort of how you see HR in the modern organization. Yeah, that's a great question. So what we are trying to do, really, is help our customers, HR organizations, provide their employees with what I call the Google Maps for their employee journey. So if you think about Google Maps and what it has done in terms of the transformation of the travel journey, it provides you proactively with the guidance that you need as you make your way. And so if you think about the employee journey, it could be long in an organization, it could be short, but they all have these moments that matter, whether they are personal, whether they are professional. So when you think about personal moments that could be birth of a baby, I changed my address, I got married, things like that. It could be professional if I'm a manager, I want to promote someone, if I'm a new hire, I'm being onboarded. So how do we help guide these employees through each of these moments that matter in that journey? And why that's important is because that's when employees need their organization support the most, and so if you don't get that right, then it starts to have an impact on everything from productivity and engagement, and eventually that starts to impact customer satisfaction, right? So if you really think about happy employees equals happy customers, you're going to have to bring it back to things like employment, brand, productivity, engagement, and really where the rubber meets the road and where things could fall apart is during these moments that matter. So what we do is we help HR departments manage that, provide the proactive guidance to these employees, provide high-touch help when they need it because not everything can be automated, but you might order a Starbucks on your app, but sometimes you just want to go and walk up and talk to the barista. And so we want to make sure that we can provide flexibility to our customers in being able to manage how they interact, how employees interact with these HR departments and make them feel like they've got the peace of mind, get the emotion and the stress out of these moments that matter and get them back into what they're doing best, which is their day-to-day job. You said that companies are investing in, when you were talking about investing in employees, in customer success, but that's really about investing in employee success because happier employees lead to happier customers. They're happier to come to work. Do companies get it? Do companies get that? I think they do. They get it at a philosophical level, it makes sense. I think where companies struggle with is they are trying to figure out how do they make that linkage happen and the reality is there's no silver bullet. It's not, you fix this one thing over here and that's going to make an impact. And so our approach is, while there may be many other things that you need to address, right? What we focus on really is making sure that we give this employee that guidance that help when they need it the most because we believe that that's where things could fall apart very easily. But on the other hand, if you actually take care of them during those moments that matter, that represents a great opportunity to differentiate themselves and create what we call competitive differentiation, right? In fact, the topic of my keynote this morning was how employee experience creates competitive differentiation and that's what we are here to enable. You guys talk a lot about the HR onboarding experience.  When I think, and you and I talked about this at headquarters, when I think about how I interact with Netflix and Fred Lutty talks about this all the time, bringing that consumer experience to the enterprise. I don't talk to Netflix's sales department or marketing department or customer service department, I just interact with Netflix. I'd like to interact with HR the same way. I believe that's what you're trying to do. Is that a reality? Can that happen in our lifetimes? Is it happening today? Absolutely, why not, right? We've got the technology for sure. It is a very well-known pain point. Everybody knows this pain exists. I think where we are in terms of maturity of the market for these types of solutions is trying to figure out, well, who owns this problem? So this is a very distributed problem. It's across the enterprise and anything across the enterprise we have serviced now do very well. But a lot of times it also means that we have to go and make the case or help our champions make the case with many departments. So in this case you need to get IT on board and facilities on board. Obviously HR has to be on board. It is a number of departments that have to come together. And so we still have to figure out who owns this problem? Who owns the budget? How are we planning to roll this out? Can we do this in a phased manner? And that's where we are today in terms of its maturity. But at this point, we launched the product last year. We had customers that were creating bespoke solutions. Before that we productized it. We launched enterprise onboarding and transitions last year at Knowledge, in fact. And we've seen, we're starting to see the early customers starting to implement based again on the foundation of case and knowledge management, start there, get your unstructured interactions more structured and then eventually start to automate the things that are going to make that difference, especially when they start to cut across these multiple departments. I know, I ask you this all the time, but for our viewers who aren't as familiar with what you guys are doing in HR, if I just brought in Workday or Success Factors or I'm a PeopleSoft customer, why do I need service now? What do you guys do? We talked to John Donohoe about you guys are a platform of platforms, but explain that please. Sure, absolutely. Maybe I'll go back to the Google Maps metaphor. The way I think about this is, you know, in my mind, Workday, you can think about them as a highway system, but you have to drive on them. Yes, it's got signage and you need to know what exits to take, right? So to me, Workday has a good user interface, if you will. But a lot of times what employees are looking for is where do I go? Where do I begin? What's the policy? What's the process? And so that's where the Google Maps equivalent comes in. And these two go hand in hand and they are extremely complementary and you just cannot imagine going out there without a Maps application these days. And in fact, where I feel that things are truly transformed is this is not just when I don't know the way to get somewhere. You're using this for every trip now. When I go home every day after work, I'm using Google Maps. Whether I know it or not, it turns on and it tells me, oh, you're headed home. It's going to take you 35 minutes to get home. And I didn't ask it anything. But I'm using Google Maps every day for a route that is well-traveled because I know that if there's a traffic backup, it's going to let me know. Police ahead. Right? Or whatever. Yeah. And so I think that's where we are different from systems that are extremely important for either managing or core data, core business processes, talent management, workforce management. I mean, there are systems that do that. They do that very effectively. But we are really trying to provide that guidance, especially when what you're trying to get done involves multiple departments and a number of times multiple systems, even within HR. Okay. Go ahead.  And then what is your, if you have any sort of overarching advice for these HR practitioners, what is it? Oh, it's a good question. So we engage with customers typically three different ways. They're all related. But typically our engagement starts off either because we're talking to someone that runs shared services. And what they're trying to do is bring order to how employees are interacting with HR. And typically they will go through some sort of an organizational change. They'll set up a shared services organization, which basically means that becomes a single entry point for employees to go to. And in that case, really the pain point is too many unstructured interactions and they may have no technology or they may have technology that is inadequate and we bring a method to that madness. If you will, we help them structure those interactions and help them provide the right type of support to these employees. The other way we engage with customers is they're going through a full blown HR transformation.  And as they are looking to move everything to the cloud, for example, we start to talk about how the interaction aspect of employees still needs to be managed and you cannot ignore that. You cannot just move your systems to the cloud and then just hope that employees will figure this out themselves, right? Because again, it's not about the user interface. It's about the entire end-to-end experience. So that's the other pain point that we help solve for them. In the context of a cloud-based application or a set of applications, how do you make sure that they know what they need to do? And then the third piece is it's usually a CHR-type conversation where they are really starting to make this association between happy customers means happy employees. And so they have several strategic initiatives then that are at C-suite level, trying to figure out what does that really mean and they're trying to drive great employee experiences. And so they're working top-down. As part of that, they may end up with a shared services set up to manage that. They may end up with moving systems to the cloud, but it's a different angle. And they are really thinking about that the holistic end-to-end experience for that employee and what they're going to feel, how does that impact employment brand? So kind of higher-order benefits that they're trying to accomplish. But ultimately, we make the HR department much more effective and efficient and we make it very, very easy for the employee. Well, that's what we end up doing. You guys completed some research with Chief Human Resource Officers. Yeah, the CHRO point of view study. 500, I think. Yeah, absolutely. You studied, tell us about the study, the findings, what you learned. Yeah, yeah. So this was a study that was done recently, 500 CHROs and HR leaders that we studied. I think the number one thing that popped out for me was that these CHROs are thinking of their role as not someone that is managing talent management processes and people data and things like that. That's obviously very important and that's been the focus. But as those disciplines mature, the technologies that manage that mature, what's happening is they're focusing towards how to create these great experiences, how to leverage digital technologies and create what we call consumerized experiences, especially during these moments that matter. So when they're thinking about their employee population, they're looking at, where do these breakdowns happen? This is where things are likely to snap, quite literally, but employees can get angry, frustrated, overwhelmed, stressed out, this is very intrinsic, it's from the gut. And so that's where your employment brand starts to take a dip. And that ends up on Glassdoor that will end up with this employee speaking with a friend and that starts to directly impact employment brand. So they're starting to focus on these moments that matter. And then I think what they're trying to do is also develop digital proficiency. One of the things that came out of the study is how can CHROs be the change agent when it comes to digital transformation so that this just doesn't have to come from IT, doesn't have to come from a different line of business. HR can manage and guide their own destiny. Obviously, IT is going to be involved, but how can HR be more and more in the driver's seat, become more digitally proficient? And we see that in our customer base. We've got a number of customers where HR deployed service now first and really set the bar for the other departments to follow. But ultimately, we absolutely believe that every department should be on the same platform because that's where you get the economies of scope, if you will, in terms of the solutions to these problems. What can you tell us about your business? How are you guys doing? It's a couple years now since you launched this product. How's it going? Well, it couldn't be better. As John mentioned in our earnings call last quarter, it was last month, actually, we had $6 million plus ACV deals just for HR, right? And that's just in one quarter. So that starts to show you how the business is really picking up. We have hundreds of customers now using us for HR. 80% of them are of our customer base is live. In fact, we had a customer in my keynote. They did a global rollout and they took 14 weeks to complete that global rollout. So the time to value is extremely fast and that's one of the things that really makes it a solution that our buyers are attracted to. But the business is doing very well. A lot of interest from organizations that are all sizes, really. You look at 1,000-person organizations. We are selling to hundreds of 1,000-person organizations. We're selling globally in all geographies. We are selling to all verticals. And it's just great to see the business take off. Great. Well, Deepak, thanks so much for coming on theCUBE. Thank you so much and love being here and thank you for having me. Awesome seeing you. Can't wait to see you again next year. Likewise. Thank you. I'm Rebecca Knight for Dave Vellante. We will have more just after this.


Thank you, so yeah, so my name is Micah WP scholar is how you find me just Google that you'll find me So basically I work at Bluehost and so I'm lucky enough to get to contribute to core Most of the time I spend is contributing to core as well as I work on some internal stuff for Bluehost before that I was Doing a lot of enterprise WordPress Development so That was a lot of fun very interesting was able to you know Flex my architecture and and WordPress muscles I guess So yeah, so we're going to talk about the basic principle software architecture So this the point of this is not to go super deep but also Try to focus on the the key aspects of really thinking through and putting Software together in a way that will make sense and be robust and more forward thinking So if we look at the overall software development life cycle We kind of have these five basic parts right we have the requirements, you know, what is it that we're trying to build? You have the design. How should we build it the implementation where you actually do it? Qa, which of course is checking to make sure you actually did what you wanted to do and then Maintenance is trying to essentially keep it effective keep it long-term effective for the client so most of the time when you work with Agencies or people who are just kind of get stuff out the door a lot of times They just do the things that are on the top they give you the requirements You build the thing and then they maintain it right and so the the whole bottom half sometimes gets skipped over No agencies like to cover their rear so they'll Throw in some qa, you know some basic qa or something But a lot of times the design of you know, how should we build this thing before we actually get started on it? It's overlooked and so really just making space for that That stage is probably one of the biggest things you can do to go in the right direction with designing your systems, right? actually design them so But outside of that taking a look at what are the key things that clients care about? Will help us to kind of focus our efforts in the in the right direction So one of the first things that obviously all clients care about is what things cost, right? If it's too expensive or maybe too cheap They're a little leery about what they're going to do And then they care about the timeline if if they're expecting to get something done in a week They want it done in a week not in a year not in a month But at the same time there are certain things that are definitely going to take longer And then of course the effectiveness right so the effectiveness for the client now All right, is it going to work for them immediately? Is it going to work for them a month from now? You know and then after you leave is someone else going to be able to continue to maintain that effectiveness in the the business be able to Make money continually off of whatever it is that you've built so the first two things the time and the cost are heavily impacted by the points in the design phase or Implementation or delivery phases here in which things happen right so the earlier that a change to the requirements or And sometimes it's not just a change to the requirements. Sometimes it's just identifying that requirement that You know kind of went undetected right it was an unspoken the client assumed something But you know until inquiring minds come along and ask the right questions We don't know about this particular thing and it could heavily impact how we design our software So the earlier in the stage the better so if you can catch it in the design phase You'll be able to Make your change quickly and easily because it's all just on paper. It's just documentation No code has been written. No qa tests have been done But if you detect it during the implementation phase which of course if you've already skipped the design phase and not done that at all You're already behind on the curve right so So if you catch it in the implementation phase It's going to cost more money because you've already written code you have to go back and change it As well as making sure everybody's on the same page about the fact that it changed Maybe you got three developers on the project now not only do you have to have somebody change the code But you have to explain to the other developers why the code change and then at the delivery Obviously that is what it's going to cost the most time and effort to change it and so and Of course really the What we're talking about here is most of these changes Are just going to take lots of time and so that translates not just to Extending the timeline, but also to the cost of the client for all the hours and work that goes into it so So really the the time and cost we kind of understand how that works We understand that we have to catch these things early So that kind of leaves the biggest kind of open-ended thing as the effectiveness, right? What makes something effective? How do we keep it effective? How does that work? So in order for something to be effective first it actually has to solve the problem, right? The client comes they have a problem We have a solution And then once we've put the solution together We want to make sure that it's easy to maintain long-term, right? So if we can create a solution that works today, but you can't actually Make any changes to it in the future that is going to be worth Not a lot to the business because they're going to have to rewrite it and pay more money all over again later to redo it So we want to make sure that we focus not just on the now but on Making sure it's easy to maintain and and to some degree You know we see this a lot in WordPress where somebody Creates a theme or some sort of thing for a client That client is happy, but then they decide that Maybe things aren't performant or it's not exact. They want to make some design changes Problem is that the developer who did it is now busy or off doing other things So they have to find somebody new the new developer says, oh, I can't can't that's that's not why we work how we work We're going to just scrap this and start over so you see it a lot more than Once you start thinking about it where we kind of get something that solves the problem now But it's not easy to maintain other developers don't know what's going on with it You know, they've got so many layers to the system so much complexity that no one else wants to work on it So that's part of the the problem that we have to resolve. So there's an equation It's a real simple equation. You just do it in your head Actually once you get more familiar with this it is something that you can kind of process a little bit in your head But having an equation where you can actually put dollar signs on all of these variables and be able to calculate You know when evaluating two different options What you should actually do or whether one solution is better than another? It's good to have this in your back pocket. So this is a an equation if you want to know where we found it It's a there's this great little book called code simplicity at the end of the slides, which I'll share out after I have a list of books and things that I would highly recommend if you're interested in this topic But essentially what this says is that the desirability of a change is equal to the value of that change now plus the value of that change in the future Divided by the effort of implementation plus the effort of maintenance And the reality is that the effort of implementation is typically pretty low Considering it's the effort of maintaining something long term That is really the determining factor as to whether or not a particular change is a good solution or not so you want to make sure that That as you're making changes you have that focus on Maintainability in the future So practically, how do we focus on that? Maintainability aspect, right? How do we lower that portion of the equation and make all of the changes that we do more desirable? so one thing just to keep in mind this isn't really like a Well, so technical debt is one of those things that you hear about Where essentially technical debt is nothing more than you've taken shortcuts in the code and Ultimately what's happened is? Those shortcuts are costing you in maintenance, right? So those shortcuts are causing complexity in the code Difficulties where when you go to maintain that code you have a hard time reading that code Understanding that code being able to put additional Layers on top of it plug into it those kinds of things so technical debt just like a high credit card APRs will kill you so you want to make sure that for one try not to take those shortcuts try to Focus on those things that will prevent you from incurring technical debt And some of those things are just keeping certain things like this in mind So the law of change basically what this says is that? The longer that your program exists the more likely that any part of it is going to have to change and this is relatively obvious, but When you think about it You know these these are they call them laws because essentially there's really no way around it, right? The longer the program exists the more features the client's going to want the more things are going to be put into it And the more likely you know it's going to change So we also have the law of defect probability. So this is Because of the law of change, right? So we know that things are going to change So this law basically says that the chance of introducing a defect is Proportional to the size of the changes that you make right so when we have an option to Add a feature and we can make a change that's small or we can make a change that kind of affects Multiple files in the code as opposed to just one the chances of defects go up Significantly if you have to touch five files as opposed to touch just one so again as you can see these are Starting to make a little bit more sense as we look at them And then we have the law of simplicity which basically says that the ease of your maintenance is proportional to the simplicity of the individual pieces So the simpler we can make of the individual pieces the more confined we can keep the logic and prevent things from touching multiple files or spanning across Classes all over the place then the easier maintenance will be So when you're designing a system simplicity is key You want to make sure that it's easy to understand easy to modify and then easy to test So those sound simple, but there are some things that will definitely help you do that better So one of these is self-documenting code. I think Most people get the concept of naming things clearly and that kind of thing a lot of times we'll write functions and we'll put a Documentation just above that function in the code that kind of documents what that code does And then what happens is somebody will come and change the code and not update the documentation So what you end up with is documentation that just lies to you And you know, it's it's an easy mistake to make right you forget to update the documentation You make a change you just want to test it make sure it works before you actually go changing documentation So it's easy thing to forget So really the best thing that you can do is make sure that the code itself is Documenting itself as much as possible and the way that you do this is just making sure that instead of using vague or super abbreviated variable names or function Names that you make them maybe a little longer just to make them a little clearer, right? So if you're reading an if statement and it says if false equals stir pause You know dollar sign Post whatever You know, that's hard to read But if if you've created a little function that has a very clear name like if You know if post type is Or something like that and you and you have that function then when you write your if statement now You're saying if this post is of post type It's a little it's a lot easier to read so clear naming Sectioning those things off into small specific functions that you can use In ways that are just very clear and easy to read Because we all know that in six months we're going to have to come back and change this code and if you can't understand it God knows no one else will understand it either so So then this is another big one here is making sure that you limit the cognitive load so this is important because Studies have been done your brain can only hold so much in memory at any given time, right?  You're like, okay, so wait a minute Well, where did we start and so it's really hard to keep track if if you have this wide spanning Array of things right so consolidating the logic Into one place makes it a easier to follow and limits your cognitive load because you can only keep so much in your mind This is why when we do code review They say to limit your code review to 200 lines of code if you get more than 200 lines of code in a code review You're going to get really bad code reviews people are going to miss things I've seen plenty of code reviews come through where somebody just had a die in the in the code And they forgot to take it out, but nobody picked it up because they had submitted a thousand line Change and somebody was just kind of reading through it and it's easy to miss that kind of thing right so if you can limit the cognitive load It'll make it a lot easier to understand the system It'll make it a lot easier for other people to understand the system. Some people are better at having more in their mind of the system than others So we want to make sure that even if we happen to be Have that particular ability that we try to restrict that as much as possible The other thing is making sure that we have clear boundaries, right? So if we have clear boundaries in our system That means that we're not going to have Multiple things that span off into other other classes or other modules or other things like that We'll have clear boundary where this module connects to this module, but only by this one particular function call or simple API And it'll be a lot easier to Mentally track that so that is a big big thing to keep in mind We've all heard this don't repeat yourself so I Like to start with this Latin proverb repetition is the mother of learning Repeating yourself is good when you're learning, right? But every programmer ever will tell you don't repeat yourself So, you know you write code somebody says I see you have the same Conditional here as you have here Why don't you create a function for that conditional and use it in both places? And in certain cases that makes sense, right? But this is there's a myth the myth is that if I was a good coder Then all the code I would write would be dry and there wouldn't be a need for all this Repetition, right? So we all encounter repetition in our code And sometimes we allow it sometimes we don't And in certain cases, it's actually good when we take a look at where this rule essentially came from Back in 1960s, I believe it was the book the pragmatic programmer Is basically where this came from so it says that every piece of knowledge must have a single unambiguous authoritative representation within a system So when we read that we we don't instantly think oh the dry principle, right? It's a very different statement But so I thought a thought a bit about this and I think there's some clear Distinctions to be made when you're thinking about repetition in your code So the first is that the dry principle really applies mostly to the duplication of knowledge So duplication of knowledge is a violation of the dry principle However duplication of code in general meaning well Duplication of code in general is not a violation. So the difference there is that knowledge is essentially data business logic algorithms anything that is essentially related to the business domain is Important business logic that should not be replicated if you think about a shopping cart if you happen to have the Shopping cart page and the checkout page and you have the logic for let's say removing an item from the cart or the You could do that from either page, right? If the code for each Page ran a different function to remove the item you are duplicating the logic for removing an item from the shopping cart and Obviously in doing that the next piece of logic you need to add related to removing an item from the shopping cart a Developer may only do it in one place and then you have different logic happening in two different places So this is very easy to do But it is important to create the distinction that code includes variables code structures and function calls Which it is perfectly fine to duplicate So if you happen to have for example an MVC structure that you use and maybe in one case you have a display for One particular post type and a display for another particular post type a lot of times when you see two post types that are very similar, it's very tempting to merge those data structure or those code structures together Because the logic and everything appears to be the same But so there's kind of two sides to the coin here So the first one is something called premature optimization So this is where you essentially apply the dry principle before you need it And so you assume that there will be a Or assume that there's a duplication of knowledge and that you should Fix it before it happens So that's kind of applies to the Yagney principle you ain't going to need it And then we have essentially the opposite side of this which is where we Apply to our coding structures the dry principle when really They they do have different applications, right? So if you have Kind of this MVC structure or something for two different post types Eventually those post types will get different business logic and now you've automatically coupled all of the code for Both of these post types and now you have to undo that in order to add the features that you need to add so Obviously you want to make sure that you Create that distinction between duplication of knowledge of logic as opposed to coding structures in general and so we see this a lot with Wordpress where we have function calls like register post type You know so that we we will call register post type for obviously multiple post types and that code is very similar But it is very different at the same time because we're creating different post types. They have different requirements So those structures are are different. So, yeah, here's the you ain't going to need it So try not to prematurely optimize your code, but also don't Inadvertently couple things that are that appear to be similar, but are not actually the same And then we have the most misunderstood Solid principle in existence, which is the single responsibility principle Everyone assumes that the single responsibility principle based on its definition Means that You should have a function that does only one thing or a class that does only one thing and while this is true You should limit the scope of your methods or functions the scope of your classes and make sure they're very cohesive So keep cohesiveness is very important when you're coding So you're not entirely wrong if that's what you think about the single responsibility principle of the real Logic behind the single responsibility principle is that a class or module should have only one reason to change and what that means is Let's say you have let's say you have code That is going to render a report So you've got the actual content of the report that could change you've got the actual display or formatting of the report That could change and if you put all that logic together and you generate the content for the report and display it in a particular format all at Same time Then there's two reasons that code could change one could be they want it to look different One could be the content of the report needs to change the formulas the logic that kind of thing And so if you put those two things together Let's say you wanted to you know a new feature came about Oh, we actually need to generate the same report, but in two different formats. Well now you've coupled two things that shouldn't be put together So that is the real application of a single responsibility principle And it doesn't just apply in those types of concepts it also applies to the types of changes that people or departments might request right so if you've got a For example a class that handles logic for Working with the loans for example, so you've got a a bank they have loans they have logic related to the loans or You know you might have a CFO that will make certain decisions you might have CTO that'll make certain decisions And so they'll have it's important to kind of create distinctions as well As to you know who might be requesting a change And usually what departments are making changes will kind of map to things like the formatting of a form of a report or The content of a report So it's just important to kind of think through as you're looking at your code, you know who Are the stakeholders what types of changes or responsibilities do those particular people or departments have And how will that play out in future changes to the code? another key principle is The open-close principle this is something I think wordpress does very well for example with the plug-in system and the Actions and hooks and things that we use in wordpress make it easy for you to at any point in wordpress Kind of run your own code or modify variables and things inside of wordpress Is the open-close principle right so we don't modify wordpress core directly But we can extend wordpress through plug-ins To be able to do very different things with wordpress, and that's part of the beauty and the power of wordpress itself and in reality when we look at the open-close principle if we have a solid architecture where we've created clear boundaries and clear ways of Extending the code We'll be able to have better application of the open and close principle so for example Let's say you've got Let's say most most of the time when you create code you're trying to create clear boundaries between different types of things So you've got for example the UI what the user sees how how things are being displayed You've got the business logic, which is kind of another layer that's often in there. You've got the The data storage and all those different kinds of things and then a lot of times you'll kind of have more vertical Splits as well where you know, maybe you know in a shopping cart you say well, this is all related to products This is all rated to the checkout process. This is all related to You know Something else so we have all these different boundaries and things But you want to make sure that As you're creating the system that it's easy to Extend and there's many ways you can extend code, right? We have classes that can be Extended we have composition where you can take Traits or use functional composition to to add in code to existing classes things like that But then we also have a very easy way to do that in WordPress, which is the hook system So not only does WordPress have its own way of creating hooks Actions and filters, but of course you and your own plugins and things can do that as well and at the same time we can Create modules and things if we use tools like composer we can create entities software entities that we can Use as dependencies and easily extend or leverage those in our code as well so the open-close principle is Something that WordPress does well, and I think that in general as we're thinking about Creating a good system. It's important to keep in mind So we're going to take a closer look here at modularity for a second So we have Again, one of the first things that you should think about is make sure you have clear boundaries So your modules should very clearly You know pertain to a particular aspect so we're talking about cohesion, right? So we want to make sure that we have Cohesion within our modules that we're not putting things that don't go in there that we're splitting them out into the right pieces So we also want to make sure it's decoupled and obviously when we're talking about boundaries The assumption is that it's decoupled, but it's very easy to create tightly coupled modules Even though there's clear boundaries And one of the ways that that can happen Well, I'll get to that in just a second so it's easy to couple things Inadvertently so it's easy to write a module that assumes that other modules will be there And so you want to make sure that you have a very clear and clean API Again that clearly defines those boundaries continuity is just a Reinforcement of kind of the single responsibility principle. So continuity basically means that when you have a module and Someone requests a change Changes that are requested should only impact a small a single module ideally or maybe a couple of adjacent modules in minor ways so What that means is that you've properly mapped the responsibilities of your Code to The reasons why the code might change and so continuity basically says, you know If the CFO asks for this change then we've properly modularized the business logic or the display logic or whatever it is So that it only affects that one particular module that one particular class or whatever it may be and then we have protection and Protection is one of those things where if done incorrectly it actually makes it Less clear what the boundaries are for our module as well as allows you to Even though you've created a module that you seem Seems to have clear boundaries allows those boundary lines to become blurred is if you don't properly protect your your module right so let's say you have a class and It's very common for people when they create classes to Instead of marking particular property properties as protected. They'll just write public, right? And so all the things are public well now instead of having to use the very clear and clean Collection of methods and things for that particular class Which would create clear boundaries prevent a coupling of things that shouldn't be coupled Well now another module can reach directly into your module using the public access that you've left behind And they can do things that they really shouldn't be able to do But because you know as developers we like shortcuts And if it's easier to go straight into it and manipulate it how we want then that's what we'll do So if you don't properly protect your module then that's that's where your boundaries get blurred. That's where coupling kind of sneaks in and Essentially, you're sabotaging your own code. So you want to make sure that you think about, you know, what is the public API? what is the Think what are the things that need to happen behind the scenes and make sure too that we limit as much as possible the public API? Because the larger the public API the more complicated Change would be in the future so and just another oh Yeah, and then of course extensibility talking about the open-closed principle I'm not going into all of the solid principles because I think they're a little some of them are a little deeper I'll probably do a talk later on all of them at some point, but But yeah, so we have extensibility We want to think about making sure that our modules are easy to extend with custom functionality Or maybe even you know hooks filters using some sort of event-based system as well But without changing the actual code itself. And so now we have the reuse release principle Which to me is a very important principle because as software developers one of the things that we do over time that really helps us Get better at what we do get faster at what we do and Continue to I guess further our career is You know we start out building things from scratch we learn how things work We start to write cleaner code We start to realize there's patterns that we use over and over again, and then we realize that We use these certain patterns so much that we could actually abstract them and turn them into modules or turn them into You know different plugins or things and we can reuse them, right? But the reuse of those things is only as valuable as the tracking system in which you put them so For example on wordpress.org. We have a tracking system for plugins. We have plugins. They're all versioned They're all in one location. It's easy to find easy to get a particular version It's easy to update and so that code is very easy to reuse If we have for example github and we put our plugins there That is good It's a good tracking system, but again, it's one of those things where it's more difficult to pull our code in directly from github You know, we're not we're not reusing those things in mass Through github right no no clients going to say oh, I'll just clone that get repo and use your plug-in, right? So a lot of times that we know that's where we we have our testing grounds for plugins that we don't want clients to use But we want developers to use right so it's a good system for that, but it's not good for for the user But really as developers we are users, right? Like we we need to reuse our code and we need to make it easy on ourselves to do that and it's not practical to Have a project that you want to have version controlled and then to try to clone Seven or ten different get repos in that and then you can't track those things because they're sub modules And but you don't like get sub modules so that you have to remove get from those things it gets complicated So that's why we have awesome tools like composer. So if you use PHP, there's composer If you use JavaScript, there's npm node package manager, right? So you can actually From npm Grab any JavaScript module that exists out there. You can pull it into your project It's real easy to do with command line and now your JavaScript's in there and you can start to use it Just like you do that. We have composer all of the things live up on packages.org. They could be registered There's a cool little project called w packages.org where all of the wordpress.org plugins and themes have been Composerified for you and are ready to use and pull into your WordPress projects And likewise you don't it doesn't have to be plugins or themes that you package up It can be individual libraries that you use for example one that I've created is a WordPress post expiration module, right? So a lot of times you have a client and they request that You know, maybe you're creating promotions for them as a post type. They want to be able to expire it Maybe they have ads they want to expire. Maybe they have news articles. They want to expire whatever the case is All I have to do composer require my package add a single line that says Add post type support expiration for particular post type and now That thing will automatically have the user interface for post expiration And we'll automatically have the cron set up to expire those things And I don't have to do anything additional and that automatically give me packaged into a theme packaged into a plug-in So whatever custom theme I'm built thing. I am building for a client. I can easily reuse that and of course everything on Packages or used via composer is also versioned so understanding semantic versioning is very important making sure that you Understand the differences between the Breaking changes non-breaking changes feature additions patches all those kinds of things If you want to learn more about that you can go to simver.org and learn about semantic versioning So you can properly manage things that are tracked in version control So reuse release principle very important But this is kind of my favorite quote So there's this book called clean architecture Robert Martin also known as Uncle Bob has written and His quote is that a good software architect will delay decisions for as long as possible I used to think that software architecture was knowing all the things and making them all work together perfectly and really it's not it's all about Delaying decisions as long as possible and what that really means is let's say you're writing some software You start with the the business logic you start from the inside you work a way out When you're designing business logic, you do not need to know where the data will be stored You do not need to know what the user interface will look like You do not need to know nor do you need to create any of those things You just need to design the business logic and create some basic tests for the business logic And the business logic is anything that Outside of let's say the web or any kind of software Business logic is the thing that is at the core of the business, right? So if you are a bank You extend loans to people You know you create accounts You have all these different things that you do and it doesn't matter whether you have an online system or not Those things are going to happen. That is core business logic Extending beyond that we have use cases So the use cases are the things that apply specifically to an automated system that Operate on that business logic. So being able to create an account online or to request a loan Online those are use cases that interact with the core business logic of The business right so you want to make sure that you Start with the business logic Delay the other decisions about how to create a account online or do these different things within the automated system until the business logic has been sorted out and is Meets requirements, so then you have these use cases and we still don't care about where the data is stored what the User sees when they go to create an account all we care about is that the automated system can handle and manage What's going to happen there and then from there? Finally, we'll start to make decisions about where the data is stored whether or not we use WordPress All of those things are actually irrelevant until you get to the point where you really need to make the decision And that decision may change Later, but again talking about delaying decisions if you make them before You've implemented them. It's going to be a lot easier to do a lot simpler to do And if you've written your code in a way where it will allow you to delay that decision Then you're actually doing it correctly because You are also Causing so if you start with that business logic work out to the use cases work out to the to the interfaces Essentially, you're you're automatically going to properly Set up your dependencies for your software, right? We don't ever want to have the business logic depending on Where the data is stored or how the data is stored? We don't want someone to say well the process of a creating account depends on whether the MySQL database is available If that is the case, then the business logic has a problem, right? But if you start from the inside out and delay all those decisions Then the business logic will never depend on the MySQL database The business logic will never depend on what the user sees or how they interact with the system It will always just work the way that it's supposed to And so these are the resources that I would recommend Sourcemaking.com is a good website Do factory.com JavaScript design patterns There's a great book on PHP design patterns clean code and clean architecture. That's Uncle Bob or Robert Martin Really good books code simplicity. That's the one where that's Formula and a lot of these laws and principles that you saw on some of the slides came from And then refactoring so if you ever do any kind of heavy refactoring or taking legacy systems and converting it into You know more modern structures and proper architecture. That's a good book to read. So Yeah, so that's my talk. I think we got how much time we have for questions Five minutes so Any questions Yeah Makes When you start reading about the startups and how you want to get first to the market and that's the idea they say called fast put to the market and that the user's task Which kind of goes on the opposite direction of what you're saying is there a balance on when you should really cold fast Put on the market or you believe that that's the only right way to do it Um, so yeah, so the question is, you know, when is the right time to code quickly get something to market? So that you from a business perspective can leverage the Yeah Yeah, getting to market first as opposed to doing it right maybe come to market a little later And again, I think it really depends To a certain degree if we look at the competition, right if they're doing the quick and dirty version Then what they're ending up with is a system that works now But it's going to be difficult to maintain and so as a startup if you focus on doing it, right? And the logic is there and the dependencies are set up correctly Then your system is going to be easier to maintain easier to add features long term Which means you could outlast the competition now granted there is a benefit to come into market first But really I think This particular process of starting from the inside and working your way out making those decisions later Can actually give you more flexibility coming to market first Because maybe you realize that there's a new technology is coming out. You don't sure if it's going to work yet You need to give it a month You can delay that decision whereas somebody else is trying to get something out the door They just go with what they know and then it turns out that the technology decision was brilliant one You can transition Or maybe that was flipped around and you need to update to the new technology because you've built your system this way There's not that Dependency that shouldn't be there and it makes it easier to just swap out this technology with this other technology So Personally, I think it makes a lot more sense to start from the inside out build it But but really I would say the rules are It's okay to build it quick and then to build it right But if you if you know you're never going to get around to building it right then just build it right So yeah, it's kind of my my rule of thumb I guess So list those things again one more time So yeah, so the way I would kind of approach and the question is you know, how would you build it's a you said It's a membership type site where you have events you have locations and you have one more thing User profiles right So really if you think about it from a community perspective Let's say you actually physically met up in person or have events, right? Which essentially you would be doing I guess unless they're online events There's there's that that business logic of you know, we have an event You know an event is an entity within the system The event is going to have a date. It's going to have a time It's going to have these things you can create code that just manages that particular entity or Portion of the system, right? So you're going to have that event entity You'll have the location entity. You'll have the user entity and the fact that it's a profile is really more of a data rendering aspect So you'll start with those things and then of course the automatic the the use cases would be updating my password You know creating events in the system online Those are the those are the use cases. They're not core business logic They're related to the automated system. So you start with the the core entity You build out those use cases and then you say, okay I know what a user looks like and what can be done with a user I've created the automated tools that allow me to create a new user delete a user change a password manipulate that particular entity and Then work in your way out from there saying, okay. Well, what is the profile display going to look like? You know create the view or template or whatever for that And then where's that data going to be stored how I'm going to work with it, you know and so, you know wordpress obviously has its own tools and things that you can use for some of that, but again, you should look at WordPress as a technical detail So WordPress just like anything else is not core to the business is not Really specifically related to that particular use case. It may be a tool you use to implement the use case But it's on the outer fringe of the design. So Yeah, so the yeah, so the question is what is the difference between a Between business logic and a use case So business logic is again something that would happen regardless of whether or not we have a Web system or some online tool or software tool so So for a user to exist right users have names You know, you there's certain information that you as an organization care about when it comes to that person So if it's something you write down in a notebook whether or not you had an online system or not It's probably important and something that you should keep track of within the the person or member Entity and then, you know for your events, you know, what are the things that you would be marketing whether or not you had a website So those are the things that that are core business logic And then the things that allow you to work with WordPress to manage those things. Those are use cases so yes being able to log into WordPress and Create a new user that is a use case So the user is the core entity creating that user is something you do through the automated system You know that user would exist regardless in real life, but But the automated system aspect. That's where that use case comes in