Hi, okay, this is working great So I'm Miloš and this my colleague Christopher. We'll talk you about how we introduce kubeflow and Really drastically change how the data science process is done in PepsiCo. So Why kubeflow? It's a good question. We already had Kubernetes system We already had the team infrastructure team to like do all all the stuff related to that to maintain it and then the kubeflow was really a logical thing to add especially when you think about all the add-ons it has like Ways that you can easily serve the malls Which is typically a big problem like I've witnessed many times that project just failed because there's no chance to put them in Production so that's one thing very important for us. Second thing is definitely hyper parameter tuning We all know that they are for good malls We need to do a proper hyper parameter tuning and we really don't want our data scientists to just Run something on their own machine and then wait for like two days just like tall waste of time Of course like training malls and all that stuff on the infrastructure. So practically kubeflow help us with that So how we organize ourselves? We organize practically let's say in three groups One group is infrastructure people. So they as I said like Manage Azure cloud handle all the maintenance do all the stuff of permissions onboarding people on on the platform and that kind of stuff also screaming about costs to us Second group it's us First we were called ML Ops But we quickly changed name to MLE because we are practically just specializing on Helping data scientists to use kubeflow and the whole platform around it to be able to do their job properly and The idea the whole idea of this story is that we want data scientists to improve models That's what they're like their skills are and that's where they can create a biggest like benefit for the company We don't want them to I don't know create all over again some same code like Code to extract data or something. No, like we will provide all of that We just want them to focus on on the on the on the actual model improving malls and Yeah, the third group data scientists, but it's not just data scientists there's like other other teams across the company that are already using it and Whole ideas of course to like build the cool stuff But that is unfortunately like much easier to set then then done, but okay, let's let's go next and see What was like the original problem? So Approximately like 15 months ago. We started with all this effort I will just try to explain it how how the projects were done like so you have Like business owners sending some requests to say hey, we want I know some predictions of whatever Then data scientists working on his own machine was like getting some dump of data Creating something locally and after some time there was like a model Model that only works like on his own machine. There's no chance you can replicate it Working totally in isolation. Nobody knows what he was actually doing So it was really problematic and then when they want to get the new predictions example It is really funny like then they send him like literally they send him an email with new data Then he gets the data runs again the mall But think about maybe he's already on the some other projects or he has to like revert and go back Then he runs the data then like send the email back Really really not efficient even funny and as I said like really Almost impossible to put in production to automate the problems with libraries, etc. So it's a total mess Of course, yeah, I said like collaboration zero like everybody working in isolation They are like all members of the same team but working in some different projects And they don't even know don't know what who is doing what everything is it was so so isolated Of course as I said production is very painful thing. So it's also a big problem because like Okay, they get them all and now what like it's it's a huge problem like how to put something for production like so Practically data scientists were just left alone to like handle all these things by themselves And of course it was like really not efficient It was not working very well and as I said like wheel was constantly being reinvented example I was going through different repositories and over over again They were creating a code to connect to snowflake Sometimes better sometimes worse but all the time the same stuff and they spend like two three days Test and everything and then maybe they're proud. Oh, yeah, this is working But this is just wasted like three days that they should be Focusing on on the model itself So the whole procedure like of introducing q-flow We were at the same time like building a plane and flying it and learning how to fly and everything So we were learning how to use q-flow infrastructure team was learning how to organize how to maintain all the stuff and Data scientists were practically being forced to like shift from their like cozy little space where they're just using I don't know Jupiter notebook Creating some nice little models and now they have to like understand the whole concept of q-flow and how to compile and All of that and learn to learn Kubernetes right because you cannot run from it So that was really painful in the beginning so a lot of trials and errors We only had one little repository with some really poor documentation. I wrote that really bad in documentation.  I don't start case server. Wow great It's it's working and we we started with like parallel loops inside parallel loops and then in that inner parallel There was like hyper parameter tuning in parallel manner So it was totally crazy because that's the actual real-life problem they had so we started with totally crazy pipelines and of course How it is implemented like the hyper parameter tuning is was very complex And all that stuff like promised without the indication. So all these things were really big problem for our data scientists and also we have to be aware that the thing is like People don't want to change I was kind of afraid that will be some kind of Obstruction that say oh, this is not working. This is bad like we just want to keep all the things that were before So we really needed Time and we needed to invest time and effort to help them to make like as How to say as simple as possible for them to use so there are no excuses not to use it First thing this Chris idea, and I think it's great idea to like create monorepo So enough of everybody having their own like felt like little Repositories so everything goes to one big repository. It's very good for collaboration for knowledge sharing That that was really good idea then we built this from a few CLI It's called from a fuse because it brings like light to people like practically giving a power For data scientists to use Q4 more easily. That's built on kfpsdk and Practically, it's well, we'll talk about that in details a little bit later There's also some other other like Greek mythology named parts of this Whole like ecosystem or or ML platform So like component library and common pipeline repo and so generally the whole idea was to just give them all the tools necessary To be as easy as possible and just like let them focus on things that matter So let's go quickly about this mono repo. What is like there's some process cons for the organization and your Company like whatever you want to use it or not but the idea is to enhance like code visibility integration and collaboration and Dependency management tooling standard so a lot of a lot of things that I think Definitely improves like the business process and and how the things are done and also now They're not like repeating all the time the same stuff They can see like pull requests on something say this is like the project This is something different but still there's a lot of common things that just reuse it and they are also learning So that's really really good thing And also here's the joke like because I realized that at one moment of time I was just like merging pull requests like never ending and of course like something like one pull request to cripple them All so that's something you have to be aware of like people have to Like some kind of hygiene is needed. You don't want to end up with like 500 branches and that kind of stuff So some things should be Like rules should be followed, but I think it's a very very good thing The main part and most important thing I was built was the CLI practically is a command line tool which tries to hide or underlying Kubernetes things from Users so in our case data scientists We like if they want to learn like no problem. I don't have problem Actually, they're really welcome to learn about like Kubernetes and all all the things But I'm just afraid they don't have enough time to to do that Like and maybe as I'm repeating or over again, maybe they should focus on improving models So this tool is practically just hiding all those things. There are those are all things are done in the background Also authentication. So we started with the authentication where you had practically to go to user interface Where and you that's in Chrome people use interface and then get the cookie copy paste it like Exposed it as an environmental variable and then run your pipelines. It was kind of pain in the neck So now that's done just in one line. Everything is automated and we'll show you a little demo about it Also recurrent runs now just implemented with a decorator. They just use like the crone syntax to like Run it run just one comment and it will it will create all the stuff they need Hyper parameter tuning also it's improved. They just define in Python dictionaries run it We all already have like all the tools like to Create images for them to put in the right ACR place like for container registry on Azure So all these things are automated. They don't have to think about that Also deploying case served practically for them is just to have like one method like predict And there's a decorator where they can just define where they want it to run And that's it like really really convenient because I know like I was doing like all that stuff and Like it was hard for me and then especially for them would be hard to do all all the things that are currently done like in Kubeflow Also the whole thing of them being able to use like GPUs and The large memory machines is now simplified So it's very easy for them to use and again we have always like kind of a friendly discussion in the infrastructure They're always trying to lower the costs and we always want to get as much of resources as possible So this is like Yeah, it's kind of how this this CLI looks like so this is like one example Indicating and then this is like kind of all the things that are just Automatically your log to some like either staging on production and You get all all the stuff so really it's really easy for totally new users because we want to on board like a huge number of people from different teams as a big company and It must be very easy for people to use Okay, and I give my microphone to my colleague for the next part. Thanks. So First of all, we named it Prometheus because yeah, like I said, it's like we gotta bring fire to the masses and Five seconds later. We thought well, Prometheus is already like a very popular Kubernetes tool. Maybe we should name it something else And I said it's not like we're ever gonna like be on a stage at a communities conference So we can name it whatever we want We ended up naming it Prometheus because that's the Serbian version of it But so if there's any confusion, it's not actually Prometheus Prometheus, but On top of that, you know to give you more of context of what Milos was alluding to a year ago I was on the data science team And I hated Kubeflow. It was a thing that People that MLops was setting up and I was like it's so clunky and you know I've used like prefect and all kinds of other tools and like I'm just gonna do this myself and the person who was the original head of MLops was very much an infrastructure person and she did an amazing job of actually setting it up She left Last March last April and they came to me and said hey, you should take over that job And I said well, I hate Kubeflow and I don't I'm the guy that's always trying to get it's kind of sneak around it And they're like well, that's why you have to that's what you have to be the guy you have to make it An actual tool that people like you data scientists Not only tolerate but really enjoy and so we've been kind of obsessed and thinking like okay We've done a lot to get it as infrastructure as a robust tool from the ground up Running but there's a lot missing from from the kind of the bottom down right from the data science developer experience To actually getting it to run so ton of work on you know taking taking stuff That's already in Kubeflow. That's already really nice That the you know the pipeline and component decorators the SDK and sort of just wrapping extra goodies in there Right, so what are the kind of things that you know? What are the kind of things that we want to kind of add to the Kubeflow compiler and and we injected them Once we got that up and running like like Miller said we had and this was not so much a Kubeflow issue But I think you flow we saw Kubeflow as an opportunity of a place where people could run Run serious jobs and share their work in the notebooks In a way that they weren't able to do before and once we started once we started saying like Okay, what is what is the universe of things that we're building? You know all these data scientists across multiple teams are building, you know a lot of time serious forecasting, right? We always want to know like how many mountain do's are we gonna sell tomorrow, right? We do recommendations We do, you know marketing modeling and Just various visualizations on EDA So like what are the what are the kind of tools that we can we can bring up that abstraction chain? What like and a lot of which was already there? things like what one thing that we started even a lot especially in the last month I keep trying to like point out to people that We can do, you know, we can put plotly plots directly in pipelines as as metrics as outputs Save HTML and people thought like we did something really impressive, but it's really just you know Kubernetes or sorry, you know Kubeflow Can output that pretty nicely so Do we go to the next slide? So this is an example of so we're talking about before like you know, we went in all these different repos and we use Snowflake for basically all our data and Everybody had their own notebook that was like on some random branch of some random project And then they had one what a file called utils and then there was like 200 lines to connect to Snowflake and then you're like Okay, I don't know why you're doing exactly. This is fine And you would find these all over the ways every everybody's got their own like 100 or 200 lines to like Read some secrets or read a file and we're like the no no no come come to Q-flow you'll get a better machine anyway if you really need to scale out and We'll make it you know you add your SQL query everything else is basically defined for you You'll see here actually so we define like different clouds one of the big things that What because when I took over a year ago? They're like oh by the way also we're switching from AWS to Azure and I thought like okay this is gonna be how I get fired because it's not gonna work and to you know a lot of I think a lot of a Lot of tools talk about being kind of cloud agnostic and making that switch easy This actually was pretty easy switch I mean there was some permissions we had to change here and there but actually like the kind of lift from Q-flow AWS to Q-flow Azure was Pretty much pretty much pain-free Total aside, but so that gives you an idea of like the kind of stuff, right? The you know common components to find in a single line. Do we go to the next one? And then you know here's here's another problem that data scientists have been Doing kind of on their own in a ton of different ways so we said Okay, if everyone who kind of is interested in doing data drift, let's find that like what's we're okay Get all your cool. Let's go to our code together. Let's sit down. Let's figure out. What are the tools? What are the like? What is a common component that you can do? You know you can say from from the main set of components Import and then you're just kind of plugging in right you're plugging into your pipeline these comic components We want to make things We want to make the easy things easy and the hard things possible So of course, it's always you know trivial for you to say I want to I want to start from a you know the most generic Q-flow Component add add to packages and and build my own thing you can certainly always do that But we're trying to build more and more as we see it where it makes sense Build things up that extraction chain cool, so yeah Obviously a big part of this was Was the culture shift right going from going from having either You know our data scientists either you know They heard the word Q-flow and then it was like this thing that you know it was like going to make them use or something and We really needed to we really needed to make them Kind of accountable like you have to use Q-flow and we have to make it easy for you to use Do you want to go to the next slide and Yeah, so We're super fanatic we're super fanatical about about our users and Again, you just kind of alluded to this more and more we've been taking For people that are interested data like data engineers who have did engineers who sit on on in projects where There's not enough of a there's not enough of a reason to bring in like an entire data science team to that project but they need some sort of some sort of analysis right some sort of model and they're happy to You know Pull open scikit-learn or even pie torch and and build something simple to get some quick analysis out So we've been we've been and these are people that use airflow.  How do we use it? Is Terry the next one? okay, so You'll see my giant bald head in there But we we've taken kind of like it's rule like community kind of a community open-source approach to the whole project of We're making tons of you know tons of tutorials and how-tos and demos We have it like this big playlist internally We bring people on and we make that we make them write code We'll say like okay We're gonna we're gonna film you writing a pipeline for the first time even though you have no idea what Kubeflow is and Some people were amenable to that some or not. So we've got one in fact kind of a Testimonial from from from one of our data engineers science team in the past and remember being extremely intimidated by some of the tasks I Successfully completed Never been my strong suit and I still struggle to this day Now I'm far from an expert and I'm fairly new to both machine learning and Kubeflow Yet, I was able to create a pipeline with just a few lines of code using Prometheus Prometheus removes the guesswork making machine learning more accessible for developers at any level Okay, I told her not to make it sound like such an ad but Yes, so so Terry Terry's a data engineer and she's on this project for Kroger, which is a big retailer in the US and It was a project where the data was kind of it was small is not so good But they wanted some some media they wanted some some kind of small models and Terry's like, you know, I'll take a crack at it So she got up and running You know, we kind of walked her through the general UI of Kubeflow and then our tooling and yeah Probably 20 30 lines of code later. She had I think a random forest or something and and people seem to be pretty happy with the results and You know, so that's something we're trying to really do as we go obviously make it so the kind of data scientists that come to us and say hey, I need three GPUs and Tensor board and all the goodies you'll get that or hey I don't even really have a data science ML, you know sort of problem but I want to look at some visuals really quick and Airflow doesn't really do that very well for us and this and that and We want that to be a put kind of a more general place for people to experiment there. So at that point Questions, I guess Hello Yes, my first question. Well, no, I would have several but Just did you need to integrate This authenticator that you talked at the beginning like one click on the indicator to use in Kubeflow Do you need to integrate with some something else than decks? I know it is the authenticator that comes with the Kubeflow installation in the beginning Because where we have some problems like integrating this with key club or other things that we have in the company So that's that's a question. Thank you Yeah, the one kid authenticator it's it's right now It's a bit of a hack but it's growing into proper software or like which is like several try accept if else sacks Yeah, the original I think eventually we're gonna try to get on to SSO That's gonna be definitely easier said than done, but yeah for decks, you know, we are authentication is to No, so yeah, the workflow is basically Go to go onto the VPN our VPN.  You have to go through SSO through your github. You're authorized that Now you if you're lucky and you remember like what you even came there for you're in q-flow and then you know If you if you if you do that Obviously like that the sort of github authentication will stick around and the SSO for you know for us for you know For a couple days at least Sort of do it every time but it's still painful enough that like you know I think I think people will just not you know if it's like even it takes like five minutes to just get set up and You know click through the UI then you then you got to go get a cookie You gotta like we have to put that cookie and some environment variable and then you know It's a whole and then and then people want to switch between environments You got to do the whole thing again to move to a different environment So yeah, the one click is basically we took a chrome driver And just kind of did all do all that for you and kind of step through the process and if you need to log in You know it's saved in chrome and everything so you just kind of click a button if you have to and yeah, like I said It's a little bit of hack. We're working on making it a Little bit a little bit more robust though But people I mean people I've been using at the time and I've been honestly using q-flow a lot more just because it's like Oh, yeah, I'll go to the I'll go to the UI. I'll click the same way you do like with github github off login It pops open. Yes, and you're in so Hi, thanks for your talk. I think it's really interesting and I see a lot of Common patterns, so maybe can you give us a bit more details on? why you chose to build your own components library and What this tool actually does aside from the authentication like pushing pipelines or Yeah Bit more details on those so regarding that example You have something that's like repeating over or again like they need to connect to snowflake because our data are in snowflake So as I said like during the presentation no need for them to just go and write again again the same code Also this components. Let's say that they're pre-built. They're all already Handling all the secrets and all that stuff so then don't before you know you have to like say you have to authenticate So you need to attach with some secrets then sometimes in the secret files Like the names are not like the same exactly then you have to like change it and there's a lot of all of those Things that just like a waste of time for users and they're confusing especially if they don't have the background So all these things are hidden and also like if you want to say we were talking about data drift like no need to like Reinvent the wheel like just use this component. This is input This is output and include it in so practically building and this is brought in process So we are still expanding from project to project So imagine if you're doing some let's say time series forecasting for specific products for one retailer And then the other group of people are doing this. Let's say Comparable thing for another retailer like they will just waste their time if they have the components You can just reuse here and there and you don't have to think about all the underlying Kubernetes things Yes, thank you. So can you give us an example of other types of components other than like data loaders? I think a good one is We didn't really advertise it a ton here just because I didn't want to show off tons of sequel I guess What one big thing we have and you know a lot of this again is like some of its cultural problems that we're not we're not necessarily trying to solve with technology technical solutions, but we think they're like making it easier to have those conversations one is you know like sourcing data and You know when we started working with data engineers more We brought them and said like can you look at some of the way we source data and they would oftentimes be like well That's not even the right table. We switched that months ago And this is a totally totally unoptimized query etc. Etc. So we started making common You know a common library of data sources, right? Because you know we something like Amazon sales is the kind of thing We're gonna want to use in a thousand projects or right so do that kind of once and then That component is now kind of declarative because in some you know this particular query In a depth in a dev environment has certain things that need to happen You know different roles different this and that you can declare all in one in one component And then we'll know just okay We're in the environment that needs this kind of setup adding pot annotations adding like you know kind of Kubernetes level stuff for for being on the monitor and track Because we don't want people to say like okay Go add a pot annotation and change this thing and this V1 selector whatever right so that the The kind of data library is a big one and then one that me was spent a ton of time on was was the hyper parameter tuning right like making that You know making those as simple as as simple as basically one decorator to set it up for Across you know different different modeling types and that sort of things Thank you very much


It's going on everybody got Kyle and Shawn here relating sports cards from in 2023 Panini prime racing This is eight box case number three or random hit style. So how we're gonna do this guys random hit style We're gonna be going along. We'll get all the cards out Shawn will be typing in as we go and then at the end we'll combine some base and the relics The highest numbered relics from the from the box and then we will do a random at the end all 48 Hits and then we'll do all 48 names and we'll line them up and see what everybody's got. Yeah, let's see some huge That's right Doug. Come on now two one-to-ones in the last one, but both patches. Let's see we can get like a patch auto one-to-one Big name stuff has been fun though, man. I'm a Pretty sold on it at the moment. I've been liking it Let's keep it moving box one can't sell until 2026. Is that the next World Cup? Is that the next World Cup? Yeah, right? You got the redemption. I haven't seen one live yet This is gonna be a base. It's gonna be 42 out of 49 42 out of 49 is Dale Jarrett Dale Jarrett there on the base We have a triple relic eight eighty five eighty five out of ninety nine is Harrison Burton on the triple sheet metal relics. Oh Yeah, that's right. It's in the US. I should have known that Yeah, I'm excited man. They got games in Atlanta. I believe and then on Dallas is the final Might have to see if I can stay with my buddy for that eighty five and ninety nine Harrison Burton And a buddy and Dallas have to see if he's got a room open or something 55 and 99. We got the same guy Harrison Burton 55 and 99 on the triple relic Harrison Burton triple relic this one is Gonna be 74 out of 99 74 out of 99 Ross Chastain on the fire suit relic. Oh Seattle's getting some games too. Nice. I think Miami's getting some too So we got we got options if we want to go go either Miami or Atlanta When they're Chastain if it's in the Mercedes Benzo might have to go there that that stadium is awesome I saw Florida State play Bama there Got a base. I don't not number this one's gonna be Corey LaHoy Not numbered Corey LaHoy L a j o i e Corey LaHoy 75th anniversary auto this one is going to be 99 of 99. It's a prime rookie signatures RPA of Parker Chase Parker Chase 99 and 99 on the RPA I'm rookie six Parker Chase And on the back of this box. That's a nice one there 15 out of 15 is Jimmy Johnson On-card auto there 15 out of 15 nice Jimmy was either seven time The seven time 15 out of 15 Jimmy Johnson on the die cut autos.  It's a pretty cool design Go box to appreciate you guys for this one this one up again Guys are the best man. This one is gonna be 38 to 49 38 of 49 Ross Chastain Ross Chastain 38 of 49 on the base We have dual relics 30 or like 94 94 out of 99 dual relic of Kevin Harvick 16 cities moves. That's awesome. That's gonna be fun, man. That's gonna be a that's gonna be awesome U.S. World Cup I'm in on it and I have to try to get to at least one of the games at least one of the games 94 out of 99 Chastain race use Behind it. We have the same guy and it's gonna be 96 out of 99 96 out of 99 Ross Chastain That's a cool and these prime jumbo relics are sick Chastain at 96 out of 99 this time and this one's a jumbo relic. It's gonna be a prime colors of Riley Herbst three out of 24 three out of 24 Riley H-e-r-b-s-t Herbst I don't know what kind of relic that is. That's a pretty sick one though. These jumbo relics are awesome Prime colors. It looks like a race suit Yeah, that is that is dirty. That is actually dirty Riley Herbst three out of 24. It's a pretty cool one Like those jumbos. We got a base auto Britney Zamora. That's gonna be 75th anniversary not numbered Britney Zamora Zamora auto 75th anniversary not numbered. We have signature swatches. That one's gonna be Greg Biffle 20 out of 49 20 out of 49 Jersey auto of Greg Biffle Signature swatches the fire suit relic Greg Biffle EIFFLE Yeah, yeah, auto relic 20 out of 49 like the KFC little like the tie That's classy And on the back we have a Danica Patrick 61 out of 99 61 out of 99 Danica Patrick legendary signatures Oh Noss energy. Yeah, okay. I see that I see that Noss energy Very cool 61 and 99 on the Danica Patrick. It's the legendary six there Yeah, that was six Shane the the dual um the dual Bass Pro shop logos. That was pretty that was pretty sick Alrighty guys box three 37 out of 49 37 of 49 we got a Kevin Harvick base Kevin Harvick 37 out of 49 50 out of 99 50 out of 99 is a relic Ricky Stenhouse, Jr. 50 out of 99 Ricky Stenhouse on the race use tire relics This one is gonna be 15 out of 99.  I think four I guess four got a Showcase swatches 23 out of 25 23 out of 25 Justin Algier.  Those are really nice I'll guyer. Okay. All guyer all guyer Got you Shane. I like those midnight's man. Those are really clean It's one there We go box for all guyer Roger I was thinking Tyler out here the Falcon. Why is Max Holman inside the NBA redemption on the back? That's gonna be a 9 of 49 champions of Tony Stewart 9 of 49 that is a young Tony Stewart there 9 out of 49 on the base Tony Stewart That's that is a very young Tony Stewart We have 28 20 20 at a 99 20 at a 99 tie Gibbs 20 at 99 on the race used fire suit relic tie Gibbs relic We have John Hunter Nemechek 15 out of 25 15 out of 25 is John Hunter Nemechek Race you sheet metal. It's your Nemechek This one is gonna be a hat relic. It's gonna be I don't see any numbering on it. It's gonna be a hat relic of Eric Jones not numbered on it Hat relic Eric ERIK Eric Jones there Hat relic and we got another base. Oh, this is Clint Boyer. We're gonna have to Differentiate they're the same, but we'll go one and two Yeah, we'll do one and two Yeah, so we have two Clint Boyer base will distinguish them by one and two. We'll keep them Keep them separate Clint Boyer there another one And we have 48 out of 49. We got Austin Dillon 48 out of 49 on the auto Austin Dillon another prime another duel It's gonna be dual auto redemption. This one is tie Gibbs and Zane Smith Tie Gibbs and Zane Smith on the dual auto redemption Gibbs and Smith I think it's pretty crazy chris. I think it's pretty crazy, man. I know uh I know they got the new engines coming um in the new next few years So maybe he's trying to uh get with the team that's maybe gonna have the better engines when it comes to that I don't know. I think it's pretty crazy though. He's been he's been the Mercedes guy kind of crazy I don't know what to think about it just yet It's weird. It's gonna be weird not seeing Lou Ham as a uh as a Mercedes driver though with the red That's gonna be weird to see I think he should do well though, man. Like that'll get them in contention for the uh constructors He should do well There is 25 of 25 25 of 25 on the base Eric Jones Yeah, maybe he fills that Mercedes seat. I don't know. I don't know. Maybe he goes back to uh red bull Eric Jones 25 of 25 on the base We have 11 out of 99 this one's chris boucher chris boucher on the um race use tire relic 11 out of 99 chris boucher We have race use sheet metal 11 out of 99 as well 11 out of 99. Um, it's michael mcdowell michael mcdowell 11 out of 99 on the race use sheet metal What do you think chris? Where do you think science is going? I'm sure by then it's probably gonna be All kinds of stuff happening, uh between here now and next year, but I don't know. I know he'll still be in the in the league. He's he's awesome 74 and 99. We got a hailey deegan Oh, howdy. I forgot about how he moves coming in 74 and 99 hailey deegan on the uh sheet metal relic nice one there Part of the car race use sheet metal We have a base autumn not numbered this one's gonna be ward burton Ward Burton on the autumn not numbered I forgot about out he's that's sobber right sobbers gonna turn into outie Ward Burton and another midnight this one is 39 out of 50 midnight signatures just in hailey 39 out of 50 on the midnight signatures Yeah, chris. They'll be starting the same year. Um 2026 I believe when the uh when the new um engine regulations come in 39 out of 50 on the um, justin hailey And on the back we have a kyle bush nice one there eight out of 10 eight out of 10 kyle bush auto Nice low numbered kyle bush there eight out of 10 on the on-cart Nice one there and we'll go with box number six Yeah, yeah alpha male. Yeah the um I saw they had the stake team this year That was the uh the stake team astin martin moved to the stake team, right? I'm about that What's up smack Got some australian wagging now that we're talking to smack. Good day, mate. Good day, sir. How we doing the shrimp of the body? How we doing my man This one is five out of 10. It's gonna be jeff gordon. That's a cool one there on the base five out of 10 jeff gordon Hall of Fame base What a do smack Well jeff gordon to ten We have 19 out of 99 that's gonna be uh, 1999 eric amarola Or al marola al marola a l m i r ola A l m i r ola. Thank you. It's eric with an a Erick on marola on the race used 1999 It's not it's not gonna be perfectly spelled guys. We will get the we will get which card is which you'll know what it's saying There you go smack. There we go my man. Hey, there we go. Um, is this smack you go, bro This one is seven out of 99. We got an a j almond dinger a j almond dinger. I need two sheet metal relics Let me don't even tell me I want to do it Men but close. All right, so it'll work. We'll work on the two sheet metal relics really cool ones there a couple of colors there nailed it And good to hear that smack. Let's go smack. You're having a good day chilling smoke every day There's a 4 out of 99 4 out of 99 gonna be cow bush 4 out of 99 on the fire suit relic 4 out of 99 40 out of 75. This is gonna be a 75th anniversary auto daniel suarez 40 um 40 out of 75 on the auto Uh, we might xyrix. We got we've gotten at the past few years only a few cases But we do uh, we do usually get a few cases of it.  I've opened down a few times Nice one there daniel suarez on the numbered 75th anniversary auto What do you think's the name to connect? holla We got 20 of 25. That's gonna be cori le hoy 20 out of 25 cori le hoy at the celsius uh celsius uh logo sponsor Cori le hoy on the auto 20 out of 25 celsius definitely has some money And on the back we have 35 out of 49 35 out of 49 is brad keselowski brad keselowski on these signature swatches uh k e s e l o w s k i sir keselowski signature swatches jersey auto 35 out of 49 All right, and two more boxes here guys box seven Yeah, that might be part of his idea moose Beach schumacher at ferrari that might be part of what he's trying to do Get that get that eighth championship No, they are they are they're really good stuff in there, man. I like the I like the racing stuff The nt is usually pretty nice same thing all the game used um or race use relics and stuff First here we have 24 out of 25. It's gonna be kyle petty 24 out of 25 Yeah, all this stuff is smack all this stuff is race used 24 out of 25 kyle petty We have um sheet metal relic, uh 39 out of 99. There's a brad keselowski again Sheet metal. Yeah, so all race using this stuff really cool Sheet metal relic 39 out of 99 keselowski Oh my goodness C o w I just rolling dude cows lousy. Yeah Yeah That was a race use just a relic, right? Yeah All right next up we have a 18 out of 25 18 out of 25 is a hat relic of denny hamlin 18 out of 25 hat relic there denny hamlin And another jumbo patch this one is 24 out of 24. It's gonna be prime jumbos of jeff burton Jeff Burton there with another logo patch I'm thinking that's sit go. I see you're on his jersey or on his fire. So I think that's sit go.  That is sick Nice jeff Burton on the prime jumbo Behind it. We have a base auto that one's going to be greg biffle not numbered base auto Greg biffle on the 75th anniversary. Yeah, these big logo jumbo logo patches are awesome, man. I'm really in on those Greg biffle there on the basics Um six out of 25 six out of 25 is going to be daniel swarez on the auto six out of 25 daniel swarez And die cut auto to 49 is going to be carl edwards Carl edwards on the um 15 out of 49 15 out of 49 die cut auto carl edwards. He's got a nice signature. Nice big one there On cart 15 out of 49 and one more box here guys. Good luck box number eight penini prime racing. This was case three Lot of good luck. Come on now see a big one a one big name This one is 33 out of 49 33 of 49 is ryan blaney on the base Is that blaney blaney blane and e y We have a um five-way relic 36 out of 99 36 out of 99 on the relic is joey legano 36 out of 99. Yes, man. It's the last break and then we'll do a couple of personals Joey legano We have 299 59 of 99 59 of 99 is going to be um denny hamlin On the triple sheet metal relics 59 out of 99 triple relics there We have another um prime jumbo. It's going to be three out of 24 of ross chastain That one i'm not sure on on the logo ross chastain three out of 24 jumbo logo prime colors. I don't know Tough one Oh nothing nothing red on his on that one. Yeah, it could have been an old one Nice one there on the jumbo logo Echo all of a sudden come on Sometimes I might my mic has to turn on and off. I don't know Of course all of a sudden there's a signatures not numbered ryan blaney Now it's gone at it's sometimes I've turned off the mic. I don't know what it is ryan blaney on these 75th anniversary signatures Not numbered ryan blaney We have a midnight signatures 93 out of 99 going to be daniel hemrick 93 out of 99 midnight shadowbox signatures Daniel hemrick on the auto And last card of the break we have 59 of 99. It's going to be bill elliott on the on-car auto there 59 out of 99 bill elliott Prime signatures Sean did it again Alrighty there guys that will do it that will do it for puny prime racing eight box number three Give me just a second to combine some of these base and the patches and then we'll do our random You roll two dice here first.  Let me get a random ready to go You get a random ready to go So I got dale jarrett base with the harrison burton relic Ross chastain base is going to go with the kevin harvick relic to 99 Thank you. Thank you, sir Appreciate that. Yeah, that was that was a good one. That was a good one. Let's go Sean Appreciate that. Appreciate that down to danica base kevin harvick going to go with ricky stenhouse rickett stenhouse rickety crooked chris boucher and then we have chris boucher tony stewart base Old school tony with the tie gibbs relic We had the tie gibbs duel tie gibbs and zane smith Tie gibbs game smith duel we got base eric jones going to go with chris boucher relic to 99 No, is he? Yeah, haven't health all stars man. That was my fantasy team Yeah, haven't health all stars Yeah, they're everywhere now man. They they bought like every hospital in florida. I feel like So that would be eric amarola with the jeff gordon base to 10 got kyle petty base going to go with brad keselowski relic to 99 at greg um Or no, um, call edwards ryan blaney base going to go with joey legano relic to 99 One short let me second here guys. Let me let me see what's going on I am one short. I have to look at everything I'm one short. What do you mean? I have 47 I combined everything Yeah, give me a second guys. I'm gonna have to I'm gonna have to look at some of these Let me see the ones you've Top loaded so far start deleting them as I go. Sorry about this guys. Give me just a second. We're gonna have to See what happened here Delete them as I go daniel suarez edwards to 49 ryan blaney base base auto 99 me at daniel hemrick Carl edwards to 99 Bill elliot Sorry about this guys. Give me just a minute. Let's see where I base auto clint border two auto clint border one Ross chastain bestane base harvick base tony stewart base tony stewart jones jeff gordon kyle petty base ryan blaney chariot or lahoy base auto jimmy johnson to 15 Yeah, there was two of a couple. I gotta I gotta see if I missed one here though Pretty much a mora base So I'm just going through everything and then deleting and then we should be left with something here 49 awesom dillon I know another way to check it all 48 out of 49 dual auto Kyle busch 8 out of 10 suarez to 75 keselowski hoi out of 25 Sorry guys, this is going to be a little bit of a long video, but Make sure we get everything It's booster 18 out of 25 tie gibbs jones hat relic booster to 99 owl to 99 hilly deegan to 99 gamma rola and jeff gordon j almond binger to 99 keselowski 18 out of 25 denny hamlin jeff burton 99 legano denny hamlin to 99 chastain burger chase I think I found it Did you? Yeah, there's two uh two kevin harvicks guys there was a 96 out of 99 and a 94 out of 99 There was two kevin harvicks That's for sure it was Make sure everything else is There's two of these two Harrison Burton yeah, let me go through the rest of these guys. I'm pretty sure that's what it was though The um kevin harvick 96 out of 99 Sorry guys, sorry guys. Let me uh, I think that was it. That was the last Yeah, that was it's not the easiest way to solve a puzzle, but we got we got it done 96 at 9 let me just make sure everything's all good looks good to me appreciate you guys patience And make sure we got Harrison Burton 99 got Harrison Burton to 99 Chastain to 99 Herps to 24 reg biffle patch 99 danica Stenhouse to 99 Sam Meyer on hunter nimchick. Yeah, so I think that's what happened. We got ross chastain instead of the Okay, so we do got it guys. All right, so it was uh, we're missing a kevin harvick relic. That's it So now I think the uh, it is ready 48 names there All right, guys, we'll do a random uh three three times on the random three times on the random. Sorry about that guys All right, let's do it guys Let's do a guy. Sorry about that. Let's do a random three times on it three times on it. Good luck everybody Good luck. Good luck. So I got adam b down to sean p Go three times on our names one Two and three chris s down to uh christopher c And then we have our um, harrison burton relic And the base dale jarrett down to the kevin harvick 96 out of 99 three times one two And three got harrison burton and dale jarrett down to the clint boyer auto base Clint boyer. All right. Good luck guys. Let's see what we got copy these names over Alrighty guys, so I have chris s with the harrison burton relic and the dale jarrett base to 49 Robert b has michael mcdowell relic john s has the ross chastain to 99 michael d has the 96 and 99 kevin harvick relic christopher c has the 499 kyle bush And the daniel swarez 6 out of 25 auto edward e has the brad keselowski Auto relic the midnight to 49 we had john s with the chris boucher relic and base eric jones britney zamora for moose on the auto we had kenneth m with the um, austin dillon auto 48 or 49 adam b with the uh, jeff burton relic We have brad and k with the base auto clint boyer douglas b with the john hunter nema check auto relic 15 out of 25 christopher c with the koi lehoi auto Adam b has the ricky stenhouse and the base kevin harvick christopher c with the parker chase rpa john s has greg biffle auto base Sean p with the um, base auto ward burton christopher c with the hat relic of eric jones 8 out of 10 cow bush nice one there and the denny hamlin to 25 relic Robert b has the legano relic and ryan blaney base We have john s with the ryan, uh, ryle herpster relic We have john s with the harrison burton triple relic christopher c has the greg biffle auto relics at 49 Got chris d with the hayley deegan relic john s has the ryan blaney auto chris s has the 39 out of 49 um, brad keselowski Um, we have john s with the daniel hemrick auto christopher c has the um, denny hamlin relic and the carl edwards auto to 49 we have christopher j with the justin algea relic Um, cody h has jimmy johnson auto and the justin hayley auto Felix has the ross chastain relic We have christopher c with the ross chastain to 24 christopher c with the redemption ty gibbs zane smith christopher j ty gibbs relic and the um, tony stewart base christopher c with the danica patrick and you go chris Um, brad and k has the sam mire relic and the chris boucher auto john s with the eric amarola relic and the jeff gordon base Edward p with the daniel suarez auto to 75 we have christopher c with the bill elliott auto um, robert bcoy le hoy to 25 christopher c with the alma dinger um, felix n with the kevin harvick relic um 94 out of 99 and ross chastain and then christopher c with the current uh clinton boyer auto base. Alrighty guys, we'll get these copied over and


Post game after game one of the Mustang La Crosse classic along with the Bates head coach Dan and Eno and Dan You guys didn't end up on the winning side of this But you really have to be proud of your squad a young squad that I thought played all 60 minutes today Yeah, absolutely. I mean I think this was probably our most complete game I think we played about 50 really really good minutes and we kind of got away from us for about 10 And and when you play a good team like they'll make you pay for it I'm really proud. I think it was our best offensive game for sure And I think we had some really good performances on the offense venzu I want to talk a little bit about Denzel Evans the young man here from Baltimore was kind of a homecoming for him Prepped it curly. You told me in the week before the game a little water bug, you know very versatile does a lot of things He showed that today. Yeah, I mean Denzel is exceptional I mean, he's an exceptional lacrosse player But he's also a tremendous tremendous young man and leader even as a sophomore for us And you know, I think him having the performance he did here in Baltimore is was obviously pretty special and well earned on his part Overall, I thought the turnovers kind of hurt you in the first quarter a little bit They kind of set that tone. So and you told me in the week that you value possessions This is a fairly slow-paced team. So tell me what you were thinking after that first quarter. Yeah I think we were just gripping the sticks a little tight Obviously a venue like this an event like this you feel like you're on the big stage because you are And I think we were just gripping the sticks a little bit tight But as we settled in there and I think we put together a really good second quarter really good third quarter where we limited those But those certainly, you know put us behind a little bit.  Yeah I mean, this is a really special event and obviously one I'm familiar with first time in this role first time doing one of these interviews, but you know, it was definitely special playing playing that group of guys and Obviously a group of seniors a group of juniors that I have a relationship with and Was was really proud of that that effort and was really happy to be able to give those guys a hug after the game and say congrats Finally, what do you tell your team? You've got a quick turnaround everybody does this weekend. You play two and two Well, hey, that's the beautiful thing about this event is you know You get to wash the sour taste out your mouth pretty quick because we got to turn around in about exactly 24 hours and You know get ready for a really good St. Lawrence team Bates College head coach Dan and Eno. I'm Gary Stein. This is go Mustang sports TV


Today, I'm speaking with David Regan, the CEO of Sona Nanotech, which is a very interesting company in Halifax, Nova Scotia. David, your company is basically becoming a world leader in gold nanorots, so let me say something about that for our audience. The nanotechnology is something we've been talking about for years, but at the end of the day, there's been very little commercialization because creating and handling nanomaterials is so damn difficult. So I have a question for you. You could probably create enough inventory of gold nanorots if you wanted to for the rest of time in your bathtub, okay? Because you don't need very many nanorots to do something and there are a lot of nanorots in a gram of gold. Now my question is, this has happened before when I've discussed nanotechnology. How, if someone wants a sample of your gold nanorots to use in R&D in Tanzania, how do you get it to them? Well, look, that's not a problem and we've actually shipped our nanorots around the world. Different researchers looking to working to work with them. You know, it's not considered a hazardous material at all, it's not sensitive. What I mean, David, is how do you keep the nanorots becoming just a little clump of gold? How do you keep nanorots in as nanorots when you ship them around? That's the thing I never could figure out anybody could do. They are suspended in a matrix that keeps them stable. You know, our technology we believe is particularly provides for stability in those nanorots which enables them to be shipped. But typically they'll come in a small bottle. Okay, we have a bottle. Sort of a small fluid like container like that. And yes, one of those canisters would be enough to suffice you for your lifetime's use of all your needs, Jack. And the only other technical question I have is this. You've been saying that you can produce gold nanorots in a non-toxic medium. And that's very important because one of the reasons they haven't been used in medicine very much is because of the toxic nature of the reactants necessary to make them. Now, can you just give me a brief synopsis of how you've overcome that problem? Sure. So this is the manufacturing process for gold nanorots as we've discussed. Ours are not the only gold nanorots in the world, but ours are the only ones that are biocompatible that don't use toxins as a surfactant when the tiny piece of metal is in fact elongated and turned into a rod. Using a surfactant that's necessary, the surfactants that are used are toxic. Our process enables us to create the gold nanorod without the toxic materials. That's proprietary to us. That's what patents are pending on. And in many cases and in many applications for gold nanorods, folks would say, well, okay, biocompatibility isn't a consideration for our particular industrial use for it. However, when one starts looking at medical applications, in vivo medical applications, when planting these gold nanorods in the body, biocompatibility will become paramount. And would you just once again pick up one of those vials with the gold nanorods in it? Sure. Okay, I see purple color there and I just want to point out to our viewers that the ancient Romans made glass that was purple and it was because of gold nanorods. They didn't know that, but that this has been around for quite some time and I congratulate you on after 2,000 years finding a good use for that stuff besides colored glass. You've done your work, Jack, on that in your research and that's something that one of our co-founders who invented this technology coming out of one of the university laboratories here, was very proud to suggest the fact that, look, this has been around for thousands of years, but we're now able to use it, create it, manipulate it. Okay, thank you, David, for explaining those things to us and I wish you the best of luck. Thanks, Jack. Always happy to speak and happy to answer any other questions.


So that's kind of my cue here. Hey everyone, it's 2.16, so we can go ahead and get started now. Can everyone hear me okay in the back? Yep, good. All right. So this is the future-proofing your Drupal 7 site. I couldn't find like a good song for future-proofing, so I had to go with bullet-proof. So this is close. And I've given this talk before So if you actually have seen this before in like a Drupalcon Austin, I probably would recommend go to something else But if there's a lot of good information here, so if you haven't seen it, please say. And my Twitter handle is Dave Reid, if you'd like to tweet along during the presentation. My tweet notifications are turned off though, however, so I will not see them. And if you can follow along the presentation as well, there's a github link. Dave Reid.github.io slash future-proof And that's up-to-date with what I'm presenting right now So you could follow along because there's lots of links here, too. So it's a good link to have and I'll post it on the session page afterwards. Because we're gonna go through a lot of good modules and information here. So yeah, let's get started. And there we go. So a little bit about me. I'm Dave Reid. I'm a senior developer at Lullabot. Been working with Drupal for about eight years now. It feels like it's been forever. And again, my Twitter handle there. I like to use my real name everywhere. So I'm an IRC as Dave Reid as well. And I kind of had this reputation in the Drupal community as being the module guy. And I've got that reputation because I have written like 120 modules so far. So I like do it in my sleep. I do it in my spare time. I write modules when I'm at work. It's just kind of what I seem to do. I like doing that challenge. And I think we calculated it out. That's like at one point I had touched like almost 2% of all the contributed modules in Drupal. And then I actually wrote a module to count how many modules I'd written. And then I wrote another module to count how many modules on a site were like that you had enabled had been written by me. So those two don't really count. So yeah, and I have two cats, Rodney and Athena. Rodney's kind of like the unofficial Drupal mascot. Well, that's the kid. That's Rodney and Athena. He's the orange one. And my kid Oliver. I love him to death.  So yeah, I'm excited about that. So that's a little bit about me. So yeah, I know a lot about modules. So this is a great presentation because it's like things you can do in Drupal 7, modules you can pick, ways to architect APIs to make your site a little bit better for Drupal 8 when it comes out. So again, for your site builders and your architects, people are actually putting the sites together. Some informed choices they can make, modules they can pick, themes they can use. That'll help ease that transition. And I like to ease that transition because every new version of Drupal comes with this cost, cost to the people that are actually working on the site every day to retrain them on how to use Drupal because we change everything, every major version. We love that as developers, but the people that actually end up using the site, you have to spend time training them how to do it. So if there's little things you can do throughout this process to make these changes as minimal as possible, I think that's worth it. And the unofficial title of this session is to backport all the things. So one of the ways that I write modules is, oh, that sounds like a cool new Drupal 8 feature. I'll backport that to Drupal 7 because I know that I can't use Drupal 8 on client projects yet for at least a year still. Even though we got Beta 1 today, yay. I want to use this stuff now, which is kind of what I do a lot now. All right. So we're going to chunk this up into separate parts. There's going to be some more that it's like the module choices and user interface things that we see every day. There's going to be more of a developer portion, but we're not going to get too in depth about code or anything. It'll just kind of touch briefly. So that's kind of the two big chunks here. So we'll just dive right into user interface section. So this is all the front end goodness, things that you can see as a site builder, that kind of stuff. It's not just code. And I can't really touch on too much more of the user interface parts before talking about the Spark distribution. It was a team and a install profile started by Acquia year or two ago to try and improve the content creating and editing UI process in Drupal. And what they ended up doing is making all these new modules first in Drupal 7 with the intent to bring them into Drupal 8 to kind of experiment with them. And I actually love them for that because that's how I love when we experiment with things with the current version of Drupal and to get it feel like you to get it right first before we put it into the actual version of core that's coming up next rather than say a module like overlay, which was experimental in putting it into core first rather than trying it in contrib. I don't know how anyone if there's anyone a fan of overlay. I'm sorry. Okay, good. There were no hands. Okay, the jokes are going to be much better throughout the rest of the session then. Good. So one of the big first projects to touch on is NavBar. So it's, you know, the administration navigation throughout your site. Core ships with the default toolbar. And that one's okay. Most people install the admin menu module. And I actually like that one a lot too. But there's this new navigation called NavBar. And the purpose of it is to make sure that's a responsive friendly navigation. So you can see kind of see here in the screenshot, you know, with your desktop viewport, it kind of looks more like a normal navigation bar, maybe a little fancier with some fancier icons. And then when you shift down to the mobile viewport, you get actually different gives more of a vertical menu. And that works with Drupal's administration menu and lots of other integrations out of the box. So I really like this NavBar project. I think it's a really good one for like the content creators and content editors, not necessarily the administrators on the site. So if you'd like to use this like with admin menu at the same time, there's actually a separate project called admin select that I should link here and I'll write in my notes afterwards to do so that lets you assign a default module to use per role. So like your administrator role can get an admin menu, but your other roles can get NavBar. And it's just kind of nice if you don't need to expose all that crazy admin menu options with all the dropdowns, they're right invisible, they can get this one instead. So I really like using this one. Another really interesting feature that landed in Drupal 8 was inline editing. So like if you're actually viewing a node, you can actually like hit a little contextual menu for quick edit. And instead of going to the node form, you stay right there on the node view and you can like edit fields and change the body text and change the title text. And it's very handy for that use case. Some would say that workflow maybe isn't the best, especially if you have like the concept of revisions and unpublished content and that kind of stuff. Like it's good for quick fixes I think. So if you'd like to use this functionality in Drupal 7 now, there's called the quick edit module, very aptly named. It has a couple of dependencies, but it's pretty much a straight back port of what's in Drupal 8. Yeah, there was some weird naming. It used to be the edit module, now it's the quick edit module because it got renamed in core and all that fun stuff with having keep up with Drupal 8. So one of the things I am just most excited about in Drupal 8 is we have officially decided on one supported WYSIWYG and that's CK editor. So it ships out of the box with Drupal core in Drupal 8 and it kind of has like a, if you're familiar with the WYSIWYG module where it lets you select which editor to use for which text format you're using. We kind of have that light functionality in Drupal 8 as well. But I just love that we've like, yes, we're going to support CK editor out of the box for everything. Because I maintain another module called the media module that has had a hard time trying to support all the various different WYSIWYGs and like all the different formats and when you're trying to do advanced stuff like embedding images and media, they can get kind of hard to do. So I'm really, really hopeful that in Drupal 8 moving forward, those modules that have those advanced things can have a much easier time. And as a developer I like having an easier time. I hope you do too. So there is a module called CK editor that you can use right now in Drupal 7. A lot of the people that were involved in making this in Drupal 8 were responsible for back porting this and kind of keeping it up to date. You can use up to the CK editor like 4.4 or 4.5 version like whatever the latest is, which I would highly recommend. So I think if you even have an existing site and you're using a different WYSIWYG, I would see if you could switch. It may not be an easy switch, in which case I'd just say stay on the current version you're working with. But if you're choosing a new site or you can make an easy switch right now, I would definitely start using CK editor. So I'd switch to that. We have a new theme in Drupal 8. The Bartik theme was added in Drupal 7. And as a Drupal 8, that theme is now responsive by default. But the one that we added in Drupal 7 was not. So some lovely people have back ported this to a theme in Drupal 7. So if you're one of those people that use the default theme to show off Drupal or on their personal website that may be www.davery.net, I'm not naming any names for people that use the default theme, but it may be me, you can use this one instead. And if you're just needing to show Drupal off as a demo, it'd be nice to have this used. That way you can show at least Drupal can be responsive out of the box. So that's a nice one to have. One that I was fairly involved in the Drupal 8 process with contributing to Core was HTML5. So there's these new HTML5 input elements like email, URL, telephone, dates, that kind of stuff. That if you were on a mobile device and you clicked into an email field, it would know on an iPhone to provide you with an app symbol by default right there rather than having to key to it. Or if it's a URL field, it'll know to put .com in there and email fields as well. So it's just a nice handy way because you wouldn't get that with normal input fields. And it's a very handy thing for your end users and your people that are visiting your site. Say for like contact forms and that kind of stuff. So if you'd like to use HTML5 input elements in your Drupal 7 site now, there are kind of two modules to use for that. The first one is the elements module that kind of provides them to be used by other modules. It doesn't actually swap anything out in Core. That's what the second module HTML5 tools does. So that goes in and changes the email field on user signup pages with an email element and that kind of thing. It provides, say if you used a number field in Drupal 7, it lets you actually use an HTML5 number element where the user can click up and down and increment or decrement the number instead of typing in the number they need to. So it's just a handy one to have on hand just to have. Another great awesome improvement in Drupal 8 is views in Core. Hooray! Yeah. So everyone installs the module. Everyone should be using views. So if you're not using views, you can use the views module. And it's readily available in Drupal 7. So it's pretty much, I think what got into Drupal 8 is pretty much exactly the same. So yeah, you could be using this now. And kind of along with that views theme, some other things got in Drupal 8 as well. So all of our content listings, user listings, all those good screens that were listings of things are now powered by views in Drupal 8 since we have views in Core. But these were not powered by views in Drupal 7. But there is a module that you can install called admin views to override these with a view version of them. And that way you can actually edit and tweak them if you needed to add fields and customize them, which is really handy. So this is a good one, just another good one to just throw in every site by default because I always feel like I'm ending up having to add additional fields to content listings or add another filter. That's really handy too to be able to add another filter to your content listing page. Yeah. And kind of along with that, in Drupal 8 we added a kind of light version of views book operations. It lets you on a listing page, it lets you do an operation like delete or unpublish to multiple numbers of nodes if you've checked them or checked all of them on the page. So I would totally encourage people to be using this right now on your listings in Drupal 7. And I believe the admin views module like adds support for this if you have it available or either has a dependency on it. So it's a good one to have around and to start integrating with now. Another interesting views module if we want to go back to kind of the responsive stuff is views in Drupal 7 ships with a grid style for your views, a way to display them. It unfortunately uses tables to display this grid. So if you need to display them in more of a responsive fashion, where if you were to shrink down the screen instead of side by side you get just one column of four, there's actually a module right now called views responsive grid that does that for you. So I would not use the default grid built in views in Drupal 7, I'd use this one. And this is what got into Drupal Core in Drupal 8. Another interesting module with responsive end views, if we're continuing along the same theme again, is responsive tables. So we had this problem with trying to make these administration screens mobile friendly in Drupal 8. And how we kind of decided there's several different kind of options for making listings of things responsive. And what we decided to do at Drupal 8 is to kind of identify which columns are high priority, and those columns, let's see if I can explain this well. So there's either no priority, high priority, or low priority. And you designate your columns either low priority, high priority, or none. If the columns are none, it means nothing will happen to them. They will always be visible. If they're high priority, it means if you were to shrink down to maybe a tablet viewport, the things that are low priority would drop and be not visible, but things are high priority would stay. If you were to shrink down to a mobile viewport, things that are both low priority and high priority would shrink, would get removed. And only the things that you haven't set priority for would be visible. So it's just another way of providing the most important information. And you set that directly in your view. You specify which columns are which priority, and you don't have to do any CSS or JavaScript, it's just handled for you. And there's a module that I backported called responsive tables that you can use and provides the same exact functionality in Drupal 7. Along the same responsive theme, there's the breakpoints concept. So in Drupal 8, we added a breakpoint module so that we could specify where those margins are in your viewports. So where does the tablet viewport happen? Where does the mobile viewport happen? And it's kind of used as an API for other things, which I will talk about. So it's not really used for the table thing, unfortunately. It's more used for images. But the module that lets you define breakpoints is called the breakpoint module. Very aptly named. And you can use this right now in Drupal 7. And it's built into core. And the reason you'd want to use this is for responsive pictures. So there's the picture module in Drupal 7 that lets you define if this, that lets you say, okay, at this breakpoint in my tablet viewpoint, I want to display as this image style. It may be one display as the large image style. But at the mobile viewpoint, display this image using the thumbnail image style and let you change which image style is used to display the same picture, depending on the breakpoint. So these two modules work together really well. And this is pretty much updated along with core as well. So it's kept very up to date, even with all the changes in how to handle responsive pictures that are happening all the time. They're doing a very good job of keeping up with it. So you can use that right now as well. And in Drupal 8, I believe it's called responsive image. So a little bit of a nameshift. It's picture in Drupal 7, but responsive image in Drupal 8. So this is one of my favorite things as a developer. It's tours. So Drupal 8, we added this functionality using a JavaScript library to kind of add these nice little demonstrations or tours throughout an administration page. So the first time that you hit the views, maybe like you're creating a new view, there's this little help option that pops up in the nav bar. It said, hey, would you like a tour of this page? And you click that and it says here's where you type in the title of the view. Here's where you select the fields that you want to add to the view. And it kind of points you to specific parts of the page and has previous next, you can navigate back and forth just to kind of give a little bit more helpful showing of where you should be doing things. And it's really helpful for stuff like how do I enable another language in my site? We have a multi-lingual tour in Drupal 8. And that's super, super helpful. And so I think this is a great thing as a developer to provide for if I have a complex UI that I added in a module or even for end user, like your site visitors to add a tour to a specific page that you have. I think this is a great, great pattern to start using. And there are tours in Drupal 8, but in Drupal 7, it's the joyride module. There's a whole, I think it's just mostly a library in Drupal 7, so I think you'll have to kind of write a little bit more custom code. Then you do for Drupal 8, they're kind of defined in code. So yeah, this is available to use and I would highly encourage people to check that out. So module page filtering is an interesting one. There's kind of the typical module that people use is called the module filter module. Has anyone used that one before? Yeah, that's a lot of hands there. So I don't actually like use that one. So Drupal 8 added this very, very basic filtering to modules, your module listing, that just basically you type in what you're searching for. And that's really all there was. That's it. It's just really, really helpful and small. Now I recognize that the module filter module does more things like that. It shows you like, sorts them by enabled or disabled and that kind of stuff. And I'm sure that'll be ported to Drupal 8 as a separate contrib module. But if you'd like to just kind of have this functionality, and I think it's a little bit more lightweight, there's the instant filter module. And it's actually really handy too because this pattern can be used on other pages. So for instance, this is used on the permissions page. Has anyone had trouble finding and searching for things on the permissions checkbox of hell? Yeah, yeah, there's a few of us there. So this might be handy because it's not only just the one purpose of the module page. And as a developer, I could take advantage of this and use it in my own module if I had a large listing page as well. So yeah, there you go. That's a fun one to use. This is a very small, tweaky module called simplified menu administration. If you've ever gone to edit the menus on your Drupal site, it's kind of confusing. There's edit menu and list links. And if you're like, I want to go add a menu link, you go edit menu. But unfortunately, you can only change the name and description of your menu. You can't change the menu links there. And then I think it's a thing that gets caught up by a lot of editors and content creators too. So this module kind of resolves that and just merges those two, the list links and edit menu into one same page. And only offers it as one item in the menu. So if you go to edit menu, you can do that all from the same page. So this is one I just throw on every site when I'm from the start. So I mentioned overlay. And I don't actually have overlay jokes, although I should prepare them. So overlay was removed from Drupal 8 core. Yay! Because everyone disables it by default anyway. But we had this interesting problem that we still needed to give someone a visual indicator of like, when am I in the back end of my site? When do I know when I need to go back? And that kind of thing. And so we had an interesting solution in Drupal 8 that with our navigation bar, if you were to be on a front-facing page and then somehow click to an administrative page somehow, you would then all of a sudden have this very top left thing appear called back to site. And it would take you exactly back to the page you were on before. So if you were to keep going clicking around between administration pages, this would still stay the same link back to the first note, the first page you were on. So I think it's kind of a really handy way of solving that. And I wanted to backboard this to Drupal 7, and so I did. And so it's the escape admin module. And it works with the nav bar. It works with the tool bar that's built in core. And I believe there's a patch to make it work with admin menu as well. So it should work with all three at some point. Yeah. Another interesting one is caption filter. Wim Lears, I don't know if you've seen a presentation or saw him around this week, but he deserves a lot of thanks. He did a really great job in Drupal 8 core with helping improve the way that we caption things in WYSIWYG. Rather than using a special syntax or a special token, he actually made it so we can add captions right there in the HTML attributes. So this example here, I'm using a data attribute called data-caption to provide what the caption should be for this image directly there. And then this gets converted to an actual figure and figure caption HTML elements in my WYSIWYG. And so there's a project called caption filter. The version one of the module does use kind of a special weird syntax for doing captions. And I'm working with the module maintainer to make a second version that's a back port of what we have in Drupal 8 core. So if you're interested, you might want to be following this module and start using this because it'll make, you know, migrations easier. You'll have to change your content when you move to Drupal 8. And the next two modules are going to be about blocks because everyone loves blocks. But everyone hates in Drupal 7 how you can't output a block in more than one place.  So the first module here is called bean. And bean, it's trying to solve the fact that custom blocks in Drupal 7 are basically only just a text field. And sometimes we have a more advanced use case. Maybe you want to add a link field to your block rather than having it put in the WYSIWYG. I think it's better to have structured data rather than just shove everything in the WYSIWYG. So bean lets you make custom blocks with fields, which I think is really great. And it's actually very, very similar to what Drupal 8 has. You can create custom blocks in Drupal 8 and any different types of custom blocks. And you can have fields on those. And it's really, really great. So if you'd like that functionality, I'd recommend bean. And I talked about the fact that you can't reuse the same block like in a different region on the same theme, but there is a module to solve that. It's called the multi-block module. So if you have that use case and you're not using something maybe more like panels or context, you just want to keep it simple. You could definitely use this module to try that out. All right. So next quick section, that was a lot of front-end stuff, hopefully everyone's still with me here. We're going to cover some new field types that were added to Drupal Core that you can use right now in Drupal 7. So we have entity reference fields. Typically in Drupal 6, there was like the node and user reference fields. And we're really, really trying to get everyone away from using those. Those are completely deprecated. And entity reference is now like the de facto module to use. And this has actually been added to Drupal 8 Core, which is why it's in this presentation. So definitely be using this. It's really handy because it can refer to all different things. Lots of modules integrate with entity reference and do special things with entity reference fields. For example, I've written a module that, like, if you have an entity reference field on your node, you can configure it to delete all the things in your entity reference field when your node is deleted and cascade that delete down, which is kind of a cool thing. But that's only available for entity reference. If you have a need for phone numbers, like in contact forms, that kind of stuff, typically people use the phone module in Drupal 7. But actually there's a different module I recommend using that's much more similar to the Drupal 8 version. And it's called telephone. Not confusing at all between the differences of phone and telephone. And it's very, very simple. It's just basically an HTML5 telephone input. There's not a whole lot of validation that happens. If you need that validation and want that validation, I would probably recommend the phone module. But if you don't, and I don't think it's a good idea to have that validation, because phone numbers are hard, I would check out the telephone module. It's just easy and very, very simple. Yeah. We added an email field to Drupal 8 Core. And it's very, very simple. It's just an HTML5 email field. So there's just the in-browser validation that happens to make sure it's a valid email address. There's nothing much else that happens. There is a project on Drupal called email that's available for Drupal 7. I think most people are using that already. But just have an understanding that the version that's in Drupal 8 is much simpler than that. And if you have that HTML5 tools module I mentioned earlier, it makes it so your email fields in Drupal 7 can use the HTML5 input element. Dates are a fun one. So Drupal Core added some HTML5 date elements. And it's kind of interesting. This question actually came up in my last time I gave this presentation. Like, because the date module in Drupal 7 provides you three different options of date fields. It provides you an ISO format date or a UNIX timestamp date field. So it's which one do I use? And I'm always confused by this. And I now can give a more definitive answer on what type you should use. It's the date ISO format field type that you should be using. Because that's the version that's in Drupal 8 Core. And the other two are essentially deprecated at this point. So hopefully that gives a little bit of clarification for any site builders or people adding fields to content. So now we're going to touch some backend stuff. A little bit of code, a little bit of modules. Because it's a lot harder to backport Drupal 8 code than it is to do front-facing stuff. It's pretty easy to backport. We can emulate that pretty well. But there's a lot of... If it were easy to backport Symphony to Drupal 7, I would do it. But I don't have that much pain that I would like to have. So Drupal 8 added unique identifiers, UUIDs to all entity types. So to all your nodes, users, content, files, all that good stuff. But Drupal 7 does not have support for that. So if you'd like to enable support for UUIDs, if you have issues with deploying content between servers, that kind of thing, you probably have this module already enabled. I wouldn't say there's a need to have this enabled right now. But if you want UUIDs, this module would support them for you. So render caching is a really, really fun one that I've been getting into the last month on my project. We've been writing a theme in our project where we're outputting like, oh, given this node, display this field short title using this formatter. And we've been outputting all these different fields kind of individually. And I've had this kind of nagging feeling at the back of my head watching this code go in that like, these are uncached because stuff that happens in the template only really happens, gets affected in page caching. So these are uncached calls happening to render fields for any logged in users. And there's a great module out there that was started by Wim Lears and has continued by another developer called the render cache module. And it's really, really cool because it allows, when you view a node, it allows that output to be cached in your cache table or if you're using memcache or redis, that kind of thing. So the next time a logged in user views that node, it's hitting the cache rather than building that entire node and rendering it again, which severely improves performance. And then it has a dependency called entity modified. So I would highly encourage people to actually throw this one on every module, every project from the start, especially if you have lots of logged in traffic. It could really help improve things. For the developers, I wanted to talk on some libraries and APIs and plug-in stuff. So it's going to go into a little bit of code, but I'll keep it pretty light. For those of you that need to use external libraries or like PHP libraries in like your custom code, that kind of stuff, I would highly recommend get started with Composer. It's the standard way to like depend on external libraries, say that I depend on the Dave Reid cool stuff library version two. And I should download that in a standard way. And it's called, it can load that code and make it available to my code to run. And that's called the PSR0 or PSR4 standard. So how that's used, and this is an example in a project I used recently. I declared a Composer.json file in my site's all directory that I had, this is a book site, so I wanted to use this ISBN library to verify if an ISBN was correct, if it was an ISBN 10 or ISBN 14 for book identifiers. And so I put that I required this library in my Composer.json file. And then in the module that I needed to use, in my site's all directory, I'd run Composer install. It would download this library for me, and I would commit that to our project. And then in my module, I would say require the site's all vendor slash autoload, which is the file generated by Composer. And then I could use that library directly, which is really nice. And if you'd like to have a better way to load all the stuff from your Composer file, there's some modules that will do that for you rather than just calling Composer update and that kind of thing. So plugins, there's this whole new plugin system in Drupal 8 that's really, I think it's really great. Joe Schindler is actually in the room right up front here. He did a whole great documentation on how to use the plugin system. But there's not really a good standard way to do plugins in Drupal 7. So I'm going to kind of show you how I kind of emulate this in Drupal 8, and we'll go very high level. So kind of one way that we've typically done plugins is with the hook system in Drupal. So I have a hook my module, hook info, and I would say the label of what I'm doing, there's a function I would call if I wanted to do this thing. And if there's a settings form to configure it, I would point to that function, that kind of thing. It's very, very functional procedural kind of style, but it's easy to do. I can understand that. So that's one way that we've done it before, but I don't really prefer this. Another way is C-tools plugins. Has anyone worked with C-tools plugins before? A couple, okay. I find this terribly confusing actually, and I don't know, maybe it's just me, but like you have to declare like where your plugins live. You have to give it like an info file, and then there's a class or some procedural code that runs the C-tools plugin. And I find this really confusing. I'm sorry, Earl Miles, who wrote the C-tools plugins, I find it confusing. So what I do for plugins, if I'm making an API in Drupal 7, is I like to use classes, because that's what the plugins in Drupal 8 do. So I define an interface which has a method called do something, and then I have a base class that all the plugins should derive from that kind of takes care of some basic functionality that's shared. So like they get defaults for configuration to return an empty array, that kind of stuff. But it leaves an abstract method called do something. It says everything that extends this class should implement this method, but I'm not going to do it for them. So that's what my base class does. And then if I were to override an implementation of this plugin, I would have my example module, I would just have a quick hook info, because it's a standard way of discovery in Drupal 7, that just basically says a label, and I point to the class that implements this plugin. And then I have my plugin file that has this do something method. And that's really all I need to do. And then oh shoot, I did have code. I'll post it afterwards to show how I would invoke this plugin then too. But that just covers how I would do a plugin. If you're a module developer, there's other options available in Drupal 7, and it's much easier to shift this code and port this code to Drupal 8 than any of the other ways. So let's just briefly cover some of the other stuff here. View modes are a great, great thing that was introduced in Drupal 7 and is now really, really supported in Drupal 8. So rather than configuring a view display with different fields and that kind of stuff, you can actually go on your content in the content type screen, configure how the teaser is displayed for your node, or the full page is displayed for your node. And you're not limited to those view modes. You can create more view modes if you need them. Like I can make a card style view mode for a card display of things. Or an RSS view mode for outputting nodes with RSS. So if you'd like to add more view modes to your site, you can technically do it in code. But if you'd like to do it through a UI, I'd recommend this module, entity view mode. And it's really, really handy. I would really encourage people to use view modes everywhere when displaying content. Try and fit it into a view mode somehow. Because it really means that this can be cached easily. It'll be much more compatible with Drupal 8, all that kind of good stuff. Configuration management is this big thing that got into Drupal 8. It's going to be like, it's going to be features, but it's going to be everything solved in the way that we want it, in features that works right in Drupal 8. And I wish I could tell you there's a magic solution in Drupal 7 that gets us to work right. But I'd probably just say keep using features. I'm sorry. It's a let down, I know. There is this kind of configuration module that is kind of a little bit more experimental, but people are working on that might be possible for you. I'd say give it a try. But if you know features, we've all been using features for several years, I would say keep using that. Migrate module. It is your friend. Every developer on your team should be using Migrate at least once. Get them some kind of migrate task. Have them just migrate from a Drupal to Drupal site. I don't care. It's going to be super useful knowledge for them to have, especially coming into Drupal 8 because Migrate is going to be built into core. And with Drupal 8, there is no more update.php between Drupal 7 and Drupal 8. It's going to be a migration path that you will have to write some custom code if you have custom stuff. Otherwise, we can configure most of how to migrate it. So getting experience with using this system now is really, really important, especially since clients will start asking about when can we migrate to Drupal 8. Well, you have to know this first for your team. And if you have experience using this, it will be a little bit easier. Restful web services. So if you need to expose APIs on your site, exposing, not necessarily ingesting, there's a couple of good options here. Typically, people have recommended the services module. And I think it's still okay. There are some security concerns as of last year, basically. And I don't think that it integrates very well, like, for all your entity types. So there's a couple of modules here. There's the restful web services or restws. Or there's a GitHub module called restful that both do a really fantastic job of exposing for all your entity types in a much more configurable way. So I would encourage these to be checked out if you have an API on your site. Translation is a big one. If you need to have a multilingual site, kind of the standard encouraged way is using these two modules here. Entity translation and the title module. Some people use the content translation, one built into core, which like duplicates nodes in different languages, and we don't want to do that anymore. So definitely entity translation and the title module will give you a lot of support. And that's actually pretty much built into Drupal 8 core. So that's really great. Gabor is the one who did a fantastic job leading that initiative to make that better in Drupal 8. And there's lots of even more things I could cover, but I won't. External things like testing with PHP unit. All the symphony stacks that Drupal 8 has started to replace. Hopefully most people shouldn't need to know the symphony concepts, but it can't hurt. I know that several people on the Lullabot staff just like to explore making a quick symphony site without Drupal and just getting some experience working with that, because it can't hurt to have that experience. So encourage people to try and experiment with that. There's some JavaScript libraries, like underscore and backbone, which are being used in Drupal 8. So those are going to be available, so I'd try taking advantage of them now. Those are actually dependencies for the navbar module, too. So you'll have them on your site if you use navbar. Guzzle is an interesting PHP library. It's a replacement for the fetching information via HTTP. So it's just a thing to get data from another server. And Drupal has an internal method for that, but I would encourage people to start playing around with guzzle for that, because it's built into Drupal 8 core now. And just experimenting with other stuff like JavaScript local storage. We're using that for storing the back to the site link in that escape admin module. And Drupal 8 is using JavaScript local storage a lot more for everything, too. So start taking advantage of that in your Drupal 7 sites now with custom JavaScript you're writing. Experiment with Angular and headless Drupal. It's going to be things that are really starting to come into popularity with Drupal 8. So don't get behind on those. And I really should mention, it's an interesting development since the last time I gave this talk, too, is there's actually a distribution available to try all these things out in Drupal 7. I probably wouldn't recommend it for an actual client site. It's more just like, hey, that's cool. I'll see what it can do. So it's called the pre-D8 install profile that has most of the modules I've mentioned here in this talk. I don't actually maintain this one, which is a surprise. But if you'd like to try all these things out together, give this a try. And of course I've told about all these great things that are new and coming and you should be using, but we should really cover the things you should stop using, too. There's actually a page on Drupal.org that lists all the things that have been removed from core. So things like the blog module, you can probably just replicate that by making a new content type, rather than having a module for it. Just stop using that one now. The dashboard module is actually gone. The garland theme, if anyone's using that one, it's gone as well. The open ID module, that's a good one, too. If you're using open ID, I believe that's probably going to be moving to contrib for Drupal 8, but there are some security concerns about it as well, since we've had to fix those fairly recently, and we're not sure how secure it will be in its lifetime. Overlay, as I mentioned and kind of joked, is gone. There is no plan to keep it in contrib, although I guess someone could do that if they wanted to. The PHP filter. Has anyone used the PHP filter? Oh, people want to even admit raising your hands. That's great. Yeah, it's gone out of Drupal 8 now. It's a contrib module with a dependency on the bad judgment module. So you'll probably want to investigate how to remove that if you can. Either move it to custom code or replace it somehow, so you'll probably want to get in a path to figure that out. The profile module is now gone. It's actually hidden in Drupal 7, so I think a lot of people are using profile 2 as the module for replacing that. And the trigger module has gone now in Drupal 8, and our hope is that the rules module seems to be doing well with their porting effort, so that should probably be the module to use then. And that's all I had. That was a lot of information, so hopefully there's still room in there for the rest of today. If we have any questions, there's a microphone right up here, and I'd like to welcome anyone that has questions. And if not, you can enjoy the rest of your afternoon. Yes, right here. Yes, the question is, do view modes also apply to views? It does not if you're using a field display on a view, but if you're using, like, a display a node or display an entity, yeah, just I would say make your view display the whole node and do that and configure everything with view modes, because it's way more repeatable, oh, I just need to output another node randomly somewhere else. I can do that since it has a view mode. Views configuration with field is not repeatable. It's only repeatable in views, so yeah. Any other questions at all? Yes. Panels in display suite, what do we do with those? Panels, I'm pretty sure, is going to be ported to Drupal 8 as a contrib module. There's not really anything available in core that provides that. Display suite I think is kind of interesting because I think it'll be deprecated going into Drupal 8. A lot of the stuff like the entity view mode module supports some of the functionality that display suite does. You actually can manage the display of your form a little bit better in Drupal 8 core, so that kind of deprecates some of the functionality by display suite. It may live on just as some of the other parts, and I think there's layouts somewhere in core. We're not sure if it's going to end up in contrib, so yeah, it'll probably be split up somehow. All right, yes. Yes, it's called display modes in Drupal 8, and there are both display modes for forms and display modes for actual viewing of content. That's kind of what I was saying. You can actually configure a short registration form for your users using a short display mode and configure how that form is displayed, hide certain fields, change the widget for certain fields, but if they are on their user editing page, it could be different. Sorry, I say again. For Drupal 7, I wouldn't say there's anything that lets display suite kind of does it, but it only lets you do it for one form. It doesn't add support for multiple different types, so yeah. All right, if you have any other questions, come up to see me later, but thank you very much, and have a good rest of your afternoon.