Okay, folks, we're gonna start right on time today. So we're getting into the day on a very scheduled note and everything. So as people come in, I would like to welcome you to the next session in the business and strategy track for DrupalCon. The, just a couple of housekeeping things, the slides for the sessions. Look, I'm not sure exactly when they're going to appear. We'll be released for all sessions at the same time. So check the session page. You'll be able to download those. Also, there'll be the audio for the session with live slides in a YouTube video available for download from the site as well. I'd also ask you to please fill in your session evaluation. You go to the schedule page on the website and you'll be able to evaluate the sessions that you go to. And that goes into feedback back to the presenters and back to the DA. So I would really appreciate a short amount of time to do that. You can also post comments on the session pages. I am going to pre-exuse myself because I gotta go check out of my room in a minute, but I'll be back. But in the meantime, before I do, I'd like to introduce you to Pam. Pamela Barone is going to be taking this session. She is a web project manager at Previousnext here in Sydney. She manages large-scale web development projects on the Drupal platform, of course. So she has absolutely the right prerequisites to be talking about requirements for your Drupal projects. She currently specializes in delivering Drupal to government, higher education, and media organizations, which I think are Previousnext's key verticals, using agile methodology. Her session is entitled, Rethink Your Requirements. Please welcome Pamela Barone. Can everybody hear me? So as Mark said, I'm here to talk about Drupal requirements. I'm going to talk a little bit about why I think it's important to use Drupal to refine your requirements and then just give you a couple of ways that I've learned how to do that. I just really believe that framing requirements in Drupal terms is the best way to get a good outcome on both sides of things. It's the best way to leverage what Drupal does well to avoid misunderstandings down the road. Just a little bit about me, Mark introduced me already, but I'm a project manager for Previousnext in Sydney, and I do mostly work on government media and higher education. This is just some of our recent work. And before I started working in Drupal, I was a content editor at a large media company in the US, so my formative years were on the other side, at the client side of things, and now I'm on the dark side, the vendor side. Just first a disclaimer, there's no magic formula for how to do it in Drupal. It's not a translation, it's not a, you know, this is the way you write them in Drupal. It's really just about getting started in the right direction, using Drupal terms, using Drupal methodology. Like, Drupal is already your framework, so it just makes sense to use what Drupal does when you're writing your requirements. Kind of some background on how this came about. This is what kept happening. The client would give us requirements, they would say what they wanted. We would deliver what we thought they wanted, and then they'd say, no, that's not what I wanted. This happens all the time, and it's not unique to Drupal, but I think the great thing about Drupal is that there are a lot of ways you can use it to avoid this. And the kind of classic example that we see is, this is just a quick example, but the client says we need to integrate video with BrightCode, that's our video provider, so we just need to get BrightCode video on our Drupal site. We say no problem, there's a module for that. This will be an hour, easy, great. Then you deliver, and they say, right, this is fine, but we need to put our player IDs in to target our pre-roll ads. And you say, ah, okay, well the module doesn't actually do that. We can do it, but it's actually gonna take 10 hours instead of one hour. So 10 times as long as we said, and there was no module. Like I said, incidentally there is now a module for that that we built because of this specific use case, but it just seems to happen over and over. And I realized that we must be doing something wrong. The client told us what they thought we needed to know. They're not purposely holding back details because they're trying to mess this up. At least I don't think so anyway. They assumed that when they said we need BrightCode, that it would include all of the stuff that they have in BrightCode, whereas that's not really how it works. But they told us what they thought we needed to know, and we thought they told us everything, but they didn't. So I just started thinking, I mean, why does this keep happening and what are some ways that we can really avoid this in the future? And the real problem is that it's really hard to build a website from a stack of paper or just a collection of documentation because there are so many nuances and there are so many subtleties and there are so many different ways to do things that it's just really hard to say, here's what I want and then here's that exactly as you envisioned it. So starting from the beginning, I just started to think about what are we really trying to accomplish with requirements? And I think it's really whatever you need to understand what the client expects from the outcome. And successful delivery really depends on understanding exactly what they expect and why it's valuable to them. So I'm not really concerned about format that you use for requirements. Is it user stories? Is it a 200 page technical spec? Is it personas? It doesn't really matter and I don't really think the methodology that you use matters either. We happen to use Agile, but I don't think that's too important to the underlying concept of just a mutual understanding of what they want and how you're going to deliver it. So where does Drupal come into this whole picture? I think it should come in as soon as possible because you've already chosen Drupal as your framework. So why sort of pretend that that's not going to be what you're using. Discussing requirements in Drupal terms just reduces the potential for confusion and misunderstanding. And it eliminates some technical fitfalls that you can run into down the road if you implement something in a way that you thought made sense, but the client said no, that's actually absolutely not going to work. And I think there's a little bit of hesitation among Drupal people to say, well, Drupal's so flexible. So I don't really think that we need to have Drupal requirements because we don't want to make it seem like Drupal only does things a certain way. But if you're going to use Drupal, there's just no reason to kind of hesitate or try to avoid this because there are two parts to it. Drupal is so flexible and that's part of the problem. You can do anything, but should you? It's really the question. And the other thing is Drupal provides a lot of things out of the box and does things really well, but also does things in a really specific way. So if you tell the client, yep, just tell me whatever you want in your words and I'll build it. You probably can, but you might end up undermining a lot of what you get with Drupal when it's delivered. So it's really not about saying, no, no, no, we can't do that in Drupal, that's just not how it works. It's more about just being clear and being realistic about what you're going to give them. So this is a really standard requirement that we get on almost every project that we do now. Publishers must be able to quickly and easily revert changes to all pages. It's pretty standard, but at the same time, this is not something that Drupal really does. To be completely honest, Drupal is not a page-centric model. That's not a weakness, it's just the way things work. It's very dynamic in nature, so that kind of snapshot of a whole page is just not something that really happens in Drupal. There are initiatives in progress now with content staging to enable this, but it doesn't exist at the moment. And you can come really close, but it's not very easy. So when we see this, we say, yeah, we can do that, but if you meant publishers must be able to quickly and easily revert changes to all content, that's really how it works in Drupal. And it can seem like a small difference to Drupal people, because we're just so used to that being the way it works and it works really well, but to content people, it's a major thing, because if they come from a page-centric CMS, this might be a little bit scary to them. They say, well, what do you mean I can't have a snapshot of a whole page? I don't understand. It seems like a weakness in the system, but it's really not, and in most cases, the content will suffice, like, versioning the content is fine, it's plenty. It'll satisfy people, but you just have to be clear. So this is the idea, basically, is that both of you are thinking about it in the same term. We come to it with so much Drupal experience that it can seem, like I said, it can seem really unimportant that it versions content, versioning pages, because we're so used to it and we have a really clear picture of how it works, but in most cases, the client has never seen Drupal before, they don't understand how it works, they're coming from a CMS that might be really outdated and just does things in a completely different way. So they have just a different idea of how it works. So what you really need to do is specify how you're going to satisfy the requirement. Not just say, yep, we can do that, tell them how. And then like I said before, Drupal is really flexible, but at some point it can become a liability because, like I said, you can end up undermining the things that Drupal does really well. So trying to cobble together page versioning, just because that's what the RFP said is a perfect example of jumping through hoops and going in circles to make something happen that you really just don't need to do. So just be honest at the start. Revisioning content is really easy, Drupal does it, Drupal Core does this. Revisioning pages is not easy, it's really hard. And best case scenario, the client says, oh yeah, that's fine, it doesn't really matter to me, that'll do. And if they say no, say why, what's your use case? Is it because you're afraid people are going to publish things that they shouldn't have and you want to be able to undo it? Well, let's try a workflow system, a really strict workflow system. Is it because you want to keep an archive of what your site looks like on a given day? Well, we've actually built an HTML crawler for that. It's a lot more lightweight and it's stored on a separate server so you can click through and see what the entire site looks like at any given time. And that's completely outside of Drupal and in some cases that will meet the needs. And then it could just be, well no, our editors have to switch between versions of pages a lot. And that's why we want it. You could say well, versioning the content will probably be enough because the dynamic list is probably completely independent of that. So building page revisions is a really major commitment and it requires a lot of planning and it affects a lot of the rest of your site architecture. So it's like I said, it's really important to be clear about do they really need that and if so why and can you find a better alternative? So the first thing I think that's really important in terms of actually how to make this happen is get your clients to learn Drupal as soon as possible. This is actually a picture of Drew's bookshelf so it's a bit of an extreme example but there's so much material out there that clients can use to educate themselves.  There are even free training days you can recommend. You can hold a workshop with the whole team and just show them kind of the basics, the most important things and just give them an idea of the way Drupal works. We recommend that all of our clients take the Drupal in a day aquia course and by the end of the day they'll have built a Drupal site using views, contextual filters. They learn a lot of things that they definitely won't be using on a site that we build but it's a really great way of getting them to understand how things work and then they can be better at communicating how they envision that it will work. Suggest books to read, give them node one tutorials, just really make it clear that you expect some engagement from them on this level. Get them involved in technical conversation. Don't just say, yeah, tell us what you want. Don't worry about the technical side of it, that's our job. Force them to get involved in these decisions. And then when you're doing a project plan and when you're laying out your project, budget for it because you're gonna need this time to talk things over and to really iron out the specifics. So no matter how prepared the client is, they might come in and say, no, I've got a 200 page RFP. I don't need any requirements gathering. This is all you need. Just explain that, yeah, the RFP is great as kind of a, I don't know, blueprint is the wrong word but it's great to give us an idea of what you're expecting but it's definitely not enough to communicate the final outcome. You'll never get what you need from a document that's been provided by the client. So just include this in the budget. Just say this is part of what we do. You know, it's not just padding your estimates. It's not just a contingency. It's something that you need. So just tell them we start with pretty much, I mean, this isn't specific to every project but say 20% of the project budget is gonna be spent on starting things off, getting things, getting a project vision established and really working together with them to do that. So your inception phase can include any number of things but it should start with a kickoff meeting where you get together with them. You discuss roles and responsibilities. You know, you kind of iron out the details of how you're gonna work together but you also establish a project vision which is just a really quick statement outlining the purposes and the goals and what the client hopes to achieve from this project and it's really important that you actually kind of keep referring back to that and remember that that's what you're doing and don't get lost in kind of a sea of feature requests and scope creep because at the end of the day you need to just achieve that vision. It's not about kind of change requests and all that sort of stuff and why doesn't it do this? Just keep referring back to the vision and say well, yeah we can do that but do you really need us to do that because that's not really what the project was initially supposed to be. The other things are just workshops if they don't want to get you in a room with our staff, send out a feedback form and get just kind of some highlights about what they're expecting, consultations. So use that vision that you've established to kind of get an idea of how the work is gonna be shaped so if it's a project that's really strictly about the front end they don't like the way the site looks, they want to improve the kind of end user functionality, that's fine but if you find out through your consultations that actually what CMS editors hate the current CMS then that's gonna really have to shape the rest of the project and they might not have mentioned that actually. So through your inception phase you should like I said establish the roles and responsibilities and the most important person on a project is the product owner. That's what we call the client lead in Agile but it doesn't really matter who you call it whether it's the client project manager or the client lead, whoever it is. This is basically your ideal product owner. He or she is smiling and just reveling in all their responsibilities and ownership. Yeah that's great and yeah we're gonna collaborate. This is great. Ideally it should be somebody who uses the CMS on a regular basis and not just somebody that the client assigned to it because they want to make sure it doesn't go over budget. It should really be somebody that can get engaged throughout the build and make decisions and give you useful feedback. And you really should expect a certain level of engagement because like I said, this is absolutely the most important person on the project. It can make it or break it and I've seen this happen a project that sort of was really vague in the beginning but ended up going really really well because the client was really engaged and really involved. At the same time a project that seemed like it planned out to the detail and then the product owner just really didn't care and in the end the client didn't get what they wanted. So we do daily scrums. We send out weekly reports. We have approval deadlines. We have expected response time all up front but the reality of it is a lot of times your product owner can end up looking like this. I mean in some cases it's just not a job they wanted. They didn't want to get involved in the project. They didn't want to hassle. They're managing internal expectations. They've got committees. They've probably also got 10 other jobs and meanwhile they're just stressing out about the budget and constant surprises and just being bombarded with requests from you. If it's too much to handle you've really got to take that into consideration and figure out how you can reduce what you're expecting of them. So just say, hey what can we do to make this work? Is a once a day email too much? Is a once a week email too much? How can you kind of hand over part of your load to us? So you give us a really big kind of overview of what you all accept. We'll try to take on that role of product owner. So in Scrum that's sort of how it works. The Scrum Master can take on the responsibility of product owner if the product owner is not available. And this works out really well because like I said oftentimes the product owner is not thrilled with this job and in that case you really have to help. And if you do have a good product owner you can take advantage of one of the things that I think Drupal is best for which is prototyping and doing iterations and doing demos. So everybody knows this already in this room. You can really quickly add new features. And so in cases where the client isn't sure you can say, well let's try this control module. Does it need most of your needs? No, not really. Okay, well let's try another one. I mean that can take just a few hours to get to the right decision. So instead of spending say a week or even a day or whatever it is, trying to think of every possible eventuality and writing it down and saying if this then this and then we need this and then we need this, just say let's try something. Let's try something and see how it actually works and then we can probably answer a lot of these questions without getting too far into it. And the other thing is it saves unnecessary dev time so if the client says I need these 10 things you go off and do those 10 things well sometimes they would have been happy with two of the 10, but you really, you can't know that because you didn't tell them. This is a very in-depth requirement for managing links that came straight from an RFP. And at this point in the project we were up to our eyeballs and scope creep and we looked at a list like this and we said some of these make a lot of sense. Some of them are redundant. Some of them I don't even think are clear. So something like it should not be possible to have broken links within the site managed by the CMS. I mean content editors will find a way. No matter what you do, they'll find a way to have broken links. This is just not very realistic. So like I said, at this point there was a lot of scope creep happening. The budget was a concern so what we said was let's focus on that top line which is the overall goal of ensuring that there will be no broken links on the site. So this is really all they wanted. They wanted to be able to manage links so that they didn't have a bunch of 404 pages. We gave them a very pretty 404 page just in case but you really have to focus on the core intent of the requirement so that was the goal. We don't wanna have a lot of broken links. Clearly they came from a system where they had a lot of broken links so this was a major problem and I think as a result they kind of overreacted and got a little too specific. So what we said was let's start simple. We'll set up a link content type for managing external links. So there was a node ID for every external link on the site every time they linked off the site they were linking to a node ID and that way if they need to change it or if it got broken they only need to change it in one place they didn't even have to go around finding everywhere that it was linked to. The next thing is the link checker module which actually satisfies two or three of those requirements just out of the box. It runs periodic reports or it runs manually. Every time Cron runs it does a sweep of every single link on the site and checks for broken links. You can use that to generate reports. You can use it to generate notifications but it's a really great tool. And the other module we suggested was link it which is a way of linking within your Drupal site through the WYSIWYG without manually typing in without using that link icon. So you're linking directly to a node ID you're not linking to an alias which can be really confusing for editors to say well I don't understand why there's a number here why can't I just link to the alias and the reason of course is that the alias might change but the node ID will always be the same. So we implemented this, it ticked most of the boxes and it was pretty simple. It really didn't take a lot of time and we said look we'll do this for you, you test it out, let us know if you need more and we can add more to it. But in the end they were really happy with it. It totally met the goal without too much complexity because I think you also have to be careful when you're trying to tack on layer on layer on layer protection it can become a burden for the editors because if there are too many places they have to go to check things they're just not gonna do it. So like I said this was really simple you have the link checker report and that's pretty much all you need to manage those broken links. And the next thing that I think is really important is it goes without saying that you guys all have expert Drupal teams I don't need to tell you guys that it's really important to use developers who know how to use Drupal very well. But your whole team should really have a good understanding of the way things work and even your sales team should know a little bit about it so that they're not going off making promises that either you can't keep or that are just too expensive to keep. So beyond that though I really think it's important to get the developers involved in the process as soon as possible. Show them wire frames, show them requirements bring them to client meetings get them talking to the client and I think it really gets them involved in the whole project vision and then I think as a result they take more ownership of it. So they don't just see it as here's this list of tasks just complete it and then tell me when you're done and I'll worry about it from there. Then they can kind of get involved and give you ideas and say oh you know what? You said you would do it this way but I think actually a better way and a faster way or an easier way might be to do it this way. And then the other thing is that you can actually vet their approach you can say no don't tell me you can do it I know you can do it but how are you gonna do it? Because a lot of time developers minds work in a little bit of a different way they're not thinking about the content management side of things they're thinking about what's the quickest what's the easiest what's the technically best way of doing this where a lot of times if you actually ask them their thought process you can say yeah that's actually a great idea that's really clever but I don't think it's gonna work and this I think could be a whole talk on its own but you can't ignore the content editors. Their input and feedback is just so critical and if you don't have them on your side you're in big trouble. And I think what we found a lot of times is that the client kind of resists this concept of we should consider what the content editors want they say no there's too many too much of a hassle we don't want to hear from them and if you find that that's the case with the client then you need to be the advocate the content editors need an advocate and if they don't have one in their organization then you have to be that person because even if the client that we don't want to hear from them they're gonna hear from them at some point and if you wait too long then it's too late and it's gonna be really expensive to fix and I did some custom training recently for a very large web team at the end of a very complex build and there were a few bugs still but I was really excited and got there and I was all bright eyed and ready to show them how things worked and I mean just about every 15 minutes they would say why does this work like this and we'd say well that's what they told us to do and they say but that really doesn't work for me and you know oh okay and you can hear that a few times before you kind of think well I can't just keep blaming it on the product owner I can't just keep blaming it on the web team because at some point it just gets to be ridiculous like why were we making these decisions and why was the client just completely ignoring what the content editor wanted and half the time they specced these really complicated features as a way of making things easier for the content editors and in the end they hated it it was so automated they had very little freedom and I think the client thought that they could kind of reign in bad behavior by having a lot of limitations in the CMS and it really didn't work so what came out of that training and I did about five of them so by the end I just said like I know, I know you hate it but just I'm just gonna show you how it works if you have feedback on why you think it should work differently please follow that up through the appropriate channels but I can't help you so find out about how their current CMS works talk to them, do they hate it? probably why do they hate it what do they hate most about it what are the top 10 things they hate what are the top 10 things they do every day that they wish could be made simpler on the off chance that they love their CMS find out why they love their CMS are they gonna hate you for screwing it up it's probably not even that complicated like content editors they have a very difficult job and I did this job for four years so I know how it is and there's just nothing more exasperating than being shown a brand new CMS that you had absolutely no input on and just sort of scratching your head and thinking why did they do that that way that just doesn't make any sense so you just need to insist on it just say it's built into your process if the client says no we don't want you talking to the content editors just say you know what I know it's probably really politically delicate and sensitive and you don't want to open a can of worms but this is what we do so we're gonna come in we're gonna have this workshop you can be the bad guy you can settle disputes but it's just really important to get that feedback as soon as possible because like I said if you wait until the end of the project and you show them what it's like and then they get their feedback then you have a hundred angry people criticizing every little thing and even if you hear from them at the beginning it's a nice way of kind of explaining if you prioritize the things that you want us to do most we'll probably get to those we're not gonna be able to do everything you want we're not gonna make you a perfect system but just giving them that tiny little voice and making them feel like they've been heard can go a really long way so this is kind of along the same lines but you're building a content management system you're not just building a website so matching the design is just not gonna cut it because a lot of times the design doesn't specify how the backend's gonna work and that's a really critical thing so there are always a lot of different ways to do it in Drupal and you need to pick the one that works best for them and the only way to do that is to talk to them so find out who's gonna be performing this task how often are they gonna be doing it you know you say well there's a really simple way we can do this but it might take them a little longer to do it in the CMS so is it worth spending a couple more hours of development to make this a simpler task and this is a wireframe we got from a client it seems very straightforward a bunch of blocks with some dynamic lists and it was a layout that only appeared once on the site so this was not a repeated layout it was just a once off page and it seemed really obvious to us once off layout there actually isn't any original content on this page at all it's all references to other content so we said panels, beams, blocks and views no problem we're using that elsewhere it's very simple and it's very efficient the problem was when we delivered this to the client they said yeah it looks right on the front but why isn't it a node everything else is a node where's the node edit page I'm so confused how do we manage it I don't understand why there are all these little tiny different things that I have to edit it's not just all on one page how can we fit into the content hierarchy they were using a really complex hierarchical structure and we used the node hierarchy module well we didn't know that this page was in the hierarchy we didn't actually have a place there but they intended to use it that way and of course since it's not a node you can't put it in the node hierarchy so that was a major problem and the other problem was that they wanted to be able to track revisions and beams at this point are not revisionable so that was just another kind of tick yep okay we did it wrong probably and it just didn't make any sense to them and the thing is it's not as if we didn't ask the right question we didn't even ask them any questions because the idea that this should be anything but panels, beams, blocks and views was like just never even under our heads but in the end we rebuilt it as a node and I actually don't think we set up a content type just specifically for that one I think we did it like a display mode situation so it wasn't a total disaster but I mean from a technical perspective our implementation made perfect sense we could defend it from a technical perspective easy but it just didn't meet their needs so it really didn't matter that it made technical sense it was kind of a minor thing it only affected one page and we fixed it but this wasn't the first time we had a misunderstanding and it definitely wasn't the last either and I think it really led to a dynamic where it just got contentious because we would make a decision, implement it they would tell us they didn't like it and then we got really defensive we did this right because these five reasons and we shouldn't be defending that after we've done it we should be presenting them our plan and then defending it before we build it so that it can be a lot easier to change things and change our minds so like I said it was a small misunderstanding and in the end we fixed it but these kinds of things really build up and just can make the client just sort of feel like you don't get it and the other point is that like I said this only affected one page sometimes when you make a decision like this it can affect the entire site architecture so it can't really be fixed without a major cost so it's just another example of how we were just thinking different things we were thinking how to build it they were thinking well what's the best way to manage it so we just didn't consider how our approach was going to affect them so the next time we came to do something like this I started thinking about how we can find out what we need to know so this was another build we did it wasn't a complicated build it's a simple enough design but for a content editor a page like this raises a lot of questions the developer would say yeah this is no problem I can do this in a second but that's not really the point the point is how are you going to do it and the client wanted the ability to customize that sidebar content but the client will say yeah I want to customize sidebar content okay well do you want to do it per page do you want to do it per section do you want it to be a URL based sidebar content do you want it to be taxonomy based do you want it to be based on the menu there are so many different ways you can do it so these are just a few of the many many ways that you can do this a field on each node that's a lot of work right they can target each page but it's a lot of work and you're going to get a lot of duplication one page per section it's a little bit more complicated to build but it's a lot less content to manage and also a little bit less flexibility because every page in that section is going to have the same content a field on each node but it inherits if it's empty that's even more complicated to build but a lot of flexibility again you can apply it to a lot of content or override it if you need to and then the final way we thought of is block visibility settings which is really simple to implement and it gives you a lot of flexibility but it can be a little bit scary that manage block page there's a lot of potential to break things on that page so you really have to kind of trust that people are going to know what they're doing there and I mean this is four of probably 25 different ways you can do this and each one offers a different balance of ease of management ease of development and just complexity in general so you have to think about which one's going to work best I mean you're not going to go to the client with 17 different ways of doing it and say hey which one would you prefer think about it from their perspective how many people are on their team how many people are going to have to do this have they used the CMS before do they have any technical ability or are they you know that kind of Microsoft word mindset have they ever seen Drupal before do they understand how it works do they currently do this task in their CMS and how do they do it there that's a really important one that I think people forget about there's nothing worse to me than when the client says but in my old CMS I could do this and you want to say yeah but in your old CMS it took 24 hours to publish anything but you can't really go there so you just you have to kind of get to that before so ask them so when they say something like I want to be able to customize it you have to understand that there are so many different subtleties and nuances to the different approaches that you can take to this do they need to version it like I said before we implemented beans which work really great but you can't revision beans so that's a really major one and then again are there ongoing maintenance implications so say you set it up using context well we save context and code so if they want to change it down the road are they going to need us to update a code setting and in the end we thought it over and then we went back to the product owner and we said what do you think about block visibility settings she was really familiar with Drupal by that point and she felt really comfortable using block she said yeah that sounds good like I said it is a little scary to manage block's page so what we did was we locked down the permission and said only admin users can update the setting which in a way limits the flexibility a bit because you only have one or two people that can do it but it was super cheap it was super easy and it's really flexible so now she can target one page every page anything in between using any different number of criteria this is a quote from a client at the end of an inception phase at this point we had more documentation than we knew what to do with they said we thought of everything there's no way anything will change and of course everything changed everything that could change did change there were committees that changed their minds they saw the implementation like we did exactly what they asked and then they saw it and they said oh you know I think we actually don't want it that way we want to change that and sometimes we said we're going to build it using these two contributed modules well it turns out actually those two modules don't work well together at all so we're going to have to either do this customer find a different way of doing it but the point is that it's not that that guy didn't have a clue he really thought well we've sorted out everything and there's no way anything's going to change so that's really the at the moment I at the time he said it I thought oh gosh he really doesn't know but that's not the point the point is that he's never done this before so we've done it before a lot and we're supposed to be the experts so it's really our job to let them know that the end of the inception phase is not going to be the final word there are going to be a lot of things to do after that a lot of changes you're still going to need a lot of input from them and so when the client says something like this it's really important not to just laugh it off and say he's in for a treat you really have to kind of educate them and slowly but surely they'll catch on and they'll understand what they need to do like it'll get easier basically it gets better as they say so that product owner who might start off with a frown finds that as you keep asking him questions and as you keep peppering him with feedback he'll get better at giving you what you want on the first go so he'll say I know how I want this done and I know what to tell them so that they don't have to bother me again which is good so it really is our job as the Drupal expert to get from them what you need from them so like I said things change clients change their minds developers change their minds stuff sometimes just doesn't work so the really important thing is like I said not to shy away from this and not to say sorry you told us this this is how it's going to go it's really fine to go through these kinds of back and forth feedback loops we don't actually call them change requests like I said we do add up but the idea is still that it's an ongoing process so you're gonna hit road bumps and you're gonna you're gonna have problems but it's just about honest communication and like I said before at the toward the middle and at the end of the project is when you really need to start thinking back to that project vision so as you come down the line and you keep getting these the features to start piling up and they keep making things more and more complicated it's your job to stop and say hey we can do this we can do anything you want but do you really need it does this align with the project vision can we even do it right in Drupal you know does the client keep adding on feature and feature and feature and they're having you rebuild Mailchimp in Drupal say no we're not gonna do that there's a Mailchimp module sign up for a Mailchimp account it's gonna cost you a lot less money trust me so just think about is this really adding value they're paying for it but are they gonna get anything back for it and then where you need to redefine them change the requirements simplify their requirements deprioritize things and just plain eliminate things but at the end of the day it's all about being clear and telling them in Drupal how you're gonna do it so make sure they understand what they're going to get rather than sort of the surprise here's your UI hope you like it it's really just about open communication and speaking in Drupal terms and demanding that back from them make sure they're engaged it's a system that you're building for them so this concept that they don't need to know the Drupal side of it they're gonna need to know at some point when you deliver it there they're gonna have to learn it they may as well learn it at the beginning it's gonna make everybody's life a lot easier and like I said we do agile but I don't think it really matters what methodology you choose I think this is still really important any questions? sweet oh sure how we manage budget well it depends on the client to be honest some clients don't like the burn down aspect but I think it's all about like if they've agreed to it then they understand that they're burning down against the budget and it gives them the flexibility of not worrying about scope creep and not forcing them to fill in change requests so some of them are really nervous at first and they say yeah I know it's agile but are we gonna get what we are we gonna get what we wanted and you can say yeah yeah like you can tell them all you want you can reassure them all you want but it really takes just the first few weeks I think of building in Drupal and showing them after a week they have a functioning CMS really about building up that trust and like I said we send out weekly reports so every week we send a list of what we've done how much it costs how much is left et cetera but it really is just depending on the client it's whatever makes them most comfortable but really once once you have the budget like I said it's 20% that pie chart was 20% inception 10% delivery and 70% construction but if you found that the inception phase only took 15% of the budget that's 5% more you can use for construction and they really like to hear that they like to hear oh cool more money that's a good question I'll have to go back I'm not actually sure let's see the question was how did we resolve the requirement about linking to a node and being able to see the link that's on the target and those G's maybe we didn't like I said we're happy with a simple version of it let's see which one is it oh it must be possible to create income within pages if the anchor is clearly marked for authors I would say I don't think we did because if you really look at that closely I don't know what it means like authors must then be provided with a simple mechanism to browse a list of relevant anchors when creating links to pages so when you search for a node to link to you get presented with a list of the anchor on that node page yeah I have no idea how you do yeah the question was do we use red mine and how do we find it I love red mine I've used it before but it's really simple it's really kind of just the basics it's just what you need and I think it gives you a lot of flexibility and a lot of visibility and I think that's one that goes back to the agile budget thing when the client can see exactly what you're doing I think they feel a lot better about you working away all week kind of in a bubble they can see what you've done and they can see how much time we've logged on it and we do have clients that say that seems to take a lot longer than I thought what's the story with that and there are forums and there are back logs and there are a lot of plugins for red mines that you can do to enhance it and extend it I would say dated is I think is the wrong word I think it's just really minimal so base camp is really pretty and it looks really nice but I think it's also kind of overkill and it has a lot of flowery features that can get in the way whereas red mine is basically an HTML page with links on it so I mean you can embed images and you can embed media and you can upload documents but it's very I would say it's very utilitarian but in a good way yeah and like I said there are plugins and extensions you can you can theme it I'm sure you can make it look prettier but seems like I don't know this is my business director so yeah but it's never a surprise so yeah you're never going to get to the last week and you go oh my gosh we're not going to finish it's so it's so clear and everything is estimated and so it's much more you're much more ahead of it than that so halfway through you can get a really good idea of are we going to be able to finish everything that's in there if we're not there's ten things in here we think we can do six if we simplify those six we can do eight if we simplify them even more we can do all ten there are a lot of options and I think a lot of clients that might have been afraid of agile at first find that really comforting and actually really cool they don't have to fill out a change request every time they want something and you're not constantly fighting them and saying actually that wasn't in the RFP so we're not going to do that unless you pay us more and you don't have the ability to do workshops and you do have kind of limited access to requirements I think obviously like I said budget for it and explain that it's required and really try to educate them about the fact that if they do tell you what they want they'll actually get what they want and the way you can do that is like say if you have a client that says I don't care about Drupal and I don't want to talk to you go to them and use that as evidence so if that's the case if they won't tell you much and they won't give you much access the first few times they get contentious and the first few times that you find they're not getting what they want take that as an opportunity to start a conversation about you know if you did learn a little bit about Drupal and if you did give us a little bit more feedback you'd be a lot happier with the result but I mean of course some clients won't hear it so they'll hear the word of the requirement it's an unfortunate situation I mean I know that it does happen but there's not much you can do other than stick to the letter of the contract should be okay yes that's right fantastic Pam look could you please show your appreciation for Pam Barone and it looks like we're going to get an early minute and during this early minute you could perhaps fill in your feedback in the evaluation forms on your program schedule page you can do it for this session and also the other sessions that you've been to that would be great


Prometar, ki so več similačne, tako da ne zelo všeč v skreče. OK. Čekaj, da smo počučili vse projekte. Proste, da imam nekaj par. Kaj je to? Nekaj par. Mislim, je to. Tako. OK. Tako, to je tukaj projekto. Zdaj sem potrebno replizirati spektrum. Zdaj se zelo spektrum. Zdaj sem tukaj, da je tukaj. Tako, nekaj nekaj spektrum. Zdaj se na toga. 8, 14, 0, 0, 5 in tako. Kaj je to? To je naloj. To je naval bras. To je nist standart. Zdaj se se drugi? Tako, nekaj. So začre. Zdaj, dobe. To je prej v vrc. Je to nekaj. To je replizirati spektrum. Zdaj, ga se videl. Zdaj, ga se vrc. Ni no. Ne razgleda nekaj otroj konstituenci. Ale je to vse delne, testovatejne pravi. Alojče zelo novi, ker ne zelo zelo in vzivni komponent in bilo se otevno delo, zato nekaj oxide in tukaj karbon vzivni komponent v zelo, zelo prišlo početno. Menešovali im through this in in in every cycle of pixel even before and after, because we do sort of quality assurance that some detector does not skip somewhere or something like this. Ok, so now we have uploaded spectrum. And now, for example, the next step is, if you don't, if you didn't do it yet, you can go and make energy calibration. Zdaj. Kaj smo videli? Zdaj smo prišli vzumati. Vzumajte. Zdaj smo videli. Vzumajte. Vzumajte. Vzumajte. Vzumajte. Vzumajte. Vzumajte. Vzumajte. Vzumajte. 8.04 kv. So I begin with calibration. So I begin with calibration. Hopefully I will do it reasonably. Hopefully I will do it reasonably. Let's click it, and I put here 8.04 energy in kv. Let's click it, and I put here 8.04 energy in kv. Okay, and then you see it here. We see it. Human brain see it. That's thin. You see thin k alpha. I'm afraid that for goopics it will not be enough statistics, but we can use it at least as a calibration point. This is now I have some 25.27. 27. These are the values taken from the file I was struggling before to show you. You have it online. Okay. Now the calibration is done. Now comes a pain. In goopics you must go through all these steps. First, you should define whether it's a trace element solution in a known matrix. We are using this, for example. You have a plant material homogenized matrix is cellulosis, and you are looking for PPMs of zinc in it, for example. That's trace element in known matrix. Here we don't know anything. We just know it's alloy, and we need to do that iteration. I was also mentioning at the beginning of my talk. Computer needs to assume matrix, calculate concentration, and then correct the matrix and do again. And once it converges, it will stop automatically. Okay, so iterative matrix solution. Setup. We measure this at 45 degrees. Protons 3.03 mv. This is the charge. I will show you next lecture how we measure the charge on a micro probe. So we know the charge quite well. And then we need to select the detector. As I mentioned to you, somebody should already describe the detector in your lab for you or you did it by yourself.  Measure all the thin standards. So this is the description. That's how you describe one detector after another, several of them in each lab. And usually we like to have them in hand for all the detectors. See, there are many of them. Sili, even SDD that I was showing you on a picture. So, for us, this was EGAR detector. Okay, it's already there. Everything is there in description. So, now we go sample. Sample structure I mentioned to you. You can have thin samples in pixel, no stopping, no absorption, easy life. You can have thick samples, a lot of integration for a software. And you can have even more complicated intermediate thickness where you need to do that integration from one energy to another. In our case, it's easy life. It's a tick target. You click there, tick target. Where is now? Oh, I have... Houston, we have a problem. I cannot reach OK button. Okay. So, now we will say, you see trace element solution is blank. Because I said it's iterative. But I can define fit elements for iterative solution. And I add. We know it's brass. Copper, zinc. They mentioned that there may be some iron in it. There is probably some tin in it, whatever. I can do a bit more than required. It's not problem. I will show me that there is no, I don't say, let's say no titanium in it. Okay. That's roughly, and let's try if he is able to fit with this set of peaks. Okay. And you see here at the bottom, this is to spoil somebody. Normalize concentration to 100% total. If you use this, it's just that you don't know how to integrate the charge. How to measure number of primary protons on your sample. If you're using this option, I know many people do for alloys that simply means that they don't measure the proton current. For alloys where you see everything in it, it works like this Naval brass. For first stainless steel, they will be providing you professional pride to measure the current on your sample. For example, stainless steel, let's say it has 7% of carbon in it. You will not see it. So you will provide completely wrong numbers because you will have, you will see, say, okay, I have just iron and some nickel and some manganese in it, and you will give wrong answer to your user. If you will measure the current, you will see that you don't see something in this sample. You will have a deficit of 7 mass percent, and you know it's an invisible component in stainless steel is, for example, carbon. And you will provide them good answer. That's a big difference. Okay. So in brass, there is no invisible elements here. I don't need to guess anything. And now let's do some spectrum details. I have already calibrated it. I can also see it in channel numbers. And I don't want to fit here at the edge where this our absorber kills the low energy part, and we don't need to fit up here because there's nothing. So I would say between 200 and 1200. Let's see now. Fit spectrum details see from 200. Oh, let's say 1200. Okay. Calibration, we already calibrated. So Goop is already calibrated our detector. We did it at the beginning. Then these are just default values, how much pile ups he will filter and he will take into account and so on. That's already there usually. And you say just okay. And now with a bit of luck we will be able to run. See now iteration after iteration. Let's see what we got. Here residual. Do you like it or not? What's wrong? Immediately you see I like that most of the time I have very low residual. But here something's wrong. I screw it up. What's going on? I mentioned to you Igla detector from Orteg that we are dealing with has nickel collimator. So instead of you should not use entire crystal but you need to reduce a bit the window because on the edges resolution is degraded. So they put nickel collimator in it and they didn't tell us. It took us long time to figure out why our nickel results are usually wrong. Simply if you have a lot of zinc zinc photons have roughly 9 kev when they hit the collimator they fluorescent with nickel ke alpha further down into the crystal. So you have artificial yield of nickel. Even nickel is not in your target but there is for example zinc in your target. How you solve this in how you solve this in goopics you say do another fit and now description of the sample we define and we add additional element and we say yes nickel but I don't need PPMs of this bastard this is parasit and I tell him I don't like him, it's parasitic element there. So it will be fitted but not taken into account in calculation of concentrations. OK OK, let's see if I didn't forget something if I will be able to run again. OK Is it much better now? It is, yes. And let's see what is our so this is what needs the data that they give you for this these are mass persons and let's see what we got let's see we got 62 percent for copper 38.9 for zinc what you say it's good or bad you don't like it I'm not how you see we didn't miss much see let's see here the concentrations 62 percent and 39 percent 38.9 we have like half of the a bit of iron and we don't have enough statistics to see tin that's the story with a bit of low statistics you will not get much better precision with pixie but it's not too bad if you are chemist you will say that's crap I push on a button and it gives me result to the 4 digit and you tell me that you are here you are missing here concentration bar 1 percent that's crap the problem is that they have no clue what their machine is doing and properly is doing 10 percent error and they always do it the same way and that's it but here we control everything from the beginning to start and we end up with 1 percent and for me as a physicist this is not a bad measuring result you must be critical to the devices you are buying cause the black boxes otherwise you will sometimes do the errors others did it for you so this is not a bad result but I am quite confident with it if we miss 1 percent always I would jump to the ceiling that's my personal approach to this ok gu pixie is a bit strange as you saw but that's probably the best we have for broad beam pixie at the moment in hands and it turned out that we will leave with it with a bit of efforts ok another 5 minutes and then we go very short through rbs yes please questions that's a problem we have 2 detector pixie we have also another detector there for low energies which also sees that energy you must be careful if there is no zinc for example or something heavy like I don't know with 10, 11 kV or something in your eglet will give you a right number because there will be not enough energy to excite nickel in your sample but if you have a lot of copper and zinc in it you are on a bad track you should use it as a parasitic and you will not evaluate nickel with this detector the value is when we were high school students we were joking that when we were doing practical exercises we got exact results for example, Millikan exercise if you know when you measure elemental charge some of my school friends got perfect results almost for a Nobel prize and we were joking that they were using a constant not a constant but it's a value of all the parameters in your experiment in order to yield the proper result this is roughly h value in Goopis is similar thing if you don't go in detail with these thin films into your efficiency calibration and you will take a standard like this and you will get instead of 61 54% of copper you know you have a problem but using that h value properly you can bring it to proper value so you solve it for copper and then if you have enough standards but not micrometer ones you don't care much about efficiency but you do h value which is also energy dependent and in the end if you do a lot of standards you may end up with similar precision as we did that's why h is there because efficiency calibration is not always very successful or people don't take time it's a lot of work they take for example one of the glasses needs standards that gives you 15 elements in one shot and you simply forget about the efficiency of detector you can even click in Goopis that he will ignore efficiency and he takes only h value it's a function of energy and your concentrations will be again correct and you can do it in one shot but if you have time I would rather suggest to measure efficiency correctly now we have on micro probe we have stainless steel and that's why we need to play quite sometimes with additional plastic collimation to reduce the yield from the wall of the chamber it's not so straightforward so one thing you can do it that you sacrifice a bit of solid angle and recess a bit more your sensitive crystal and then you see just really limited part of your chamber it's a problem always if you have stainless steel chambers it's another question yeah especially with glasses with glasses is usually everything for example in glass is oxide and for me that glasses are quite I never worked with them but I see colleagues it's a big art to put proper oxide see inside that your concentrations fit actually what I learned everything in glass is in oxide form and you need to tell goopics that everything is in oxide and then still concentrations are well calculated I do much more trace element calculation for plant or animal biology you know some matrices that are good description and you just work in a trace element and this works quite well and quite insensitive if you screw it up with a little bit of light element matrix your result is in such constraints as we saw it matrix is if everything is of light element sometimes we say if you put mylar as a matrix of cellulosis doesn't matter if you want 10% precision you will be inside absorption is quite similar trace element levels for example for zinc we can do 0.2 ppm in long-run up to concentrations that are 0.1% you can still consider everything as a trace for example you buy package of wheat flour and it's inside it's some zinc, some iron in very low concentration that are typical traces for diet if you don't get that zinc and iron you know and that's where we are very strong with pixie if it's 200 ppm in plant matrix we can measure it pretty well yes please in synchrotron you have fluorescence which is in the best beam lines you have better lateral resolution than we have there for example you take 5 kV 5 kV energy and you can do fantastically everything below rate and you can do fantastically everything below rate say 4.5 below the edge but you don't get information for example on tin on some copper on zinc so it's I say we are still in job because we are easily accessible much easier than the synchrotrons we are much cheaper and in some occasions not worse than day but I agree for example one good beam line on synchrotron costs about 10 million or even more our entire center you will see tomorrow there is about 5 or 6 million of equipment so these are different proportions there are just one beam line is much more worth than if we work in accelerator centers then our accelerator centers that's the reason if not let's do a quick tour on RBS for half an hour I know that you heard about it and I will again Natko would you remind me 10 minutes to 4 to stop whatever I did to do one seminar run together with you ok he was in CC in the email she was in CC she was in CC ok because I checked it online I couldn't find it I went to his webpage let's do really experimental view on RBS so you heard about rather for backscattering already and we will go fast through it especially some considerations of see that not yet oh ok so I will just tell you just few brief words and then I will go to experimental setups how you put together a reasonable system that evaluation we will try one for example and that's it as you know this is RBS is like playing with balls you throw something in the box of balls with different sizes and another ball a small one and you get a jump out and based on the velocity of recalled ball you can somehow deduce that's roughly the case so you are firing on your thin film sample or bulk sample or whatever with something light in our case we are using a lot of helium free because it's also we get also NRA signal and also we did in the past a lot with lithium ions but also with helium 4 projectiles for conventional rather for backscattering and then you put your detector on backscattered angle with some slits to define well the space solid angle and that's it how to connect it and so on I will show you a bit later so you have a complementary method you can take heavy particle light elements out that's elastic recall detection but we will limit to RBS so standard RBS we detect scattered ions with silicon detectors what kind of detectors I have something with me I try to not really open it they are old and used take them out please and show to the people ok surface barrier detectors where in the past when I did my diploma work I used surface barrier detector they are still in use and in sale only I remember that putting it into operation was huge stress you touch it you kill it like beryllium window on X-ray detector very difficult to wash once you touch with a finger forget throw it away will never work again in plenty detectors that are we using the silver one that goes around they are quite resistant you can even wash in isopropyl alcohol and you will recover all the properties so for the energy resolution full width of half maximum of americium alpha source the line has 5.8 mv so easy and by very weak alpha source americium very thin so and then you just put it in and measure what is the performance of your detector as I mentioned to your surface barrier detectors were very scratch sensitive that actually these silicon detectors are like anization chambers what you have part of the space volume where you don't when the ionization particle enters this volume you need to take care of that recombination once the free carriers of charge are formed you should prevent against recombination and you can do it in various ways on ionization chamber you usually put electric field that pulls charge particles to the electrodes here it simply very similar in the case of surface barrier detector your short key contact between metal and silicon does electrical field and pushes the carriers to the contacts and if in the last time implanted detectors you do similar thing but you implant ions and you form this transition layer that collects and pushes the charges to your collection electrodes you see this is again this is from Leo old book that I recommend all if you find it in some antique store keep it on your shelf because lot of things are still completely the same today as they used to be in my student times so you see this is when you put into contact metal and semiconductor you got so called short key contact and this is the electrical field inside depletion we call it depletion layer and if you go with charge particle through it here no charge will remain here but they will be simply one side and go to one side one and another and you record on the contacts pulse that's how they are encapsulated at the end this is Ortec drawing and you can see them they are going around how they look like okay that's an old excuse me they didn't mention maybe intentional maybe a little later they are different detectors sorry they are typically I don't know maybe the contact is 10 nanometer gold one on surface barrier detector I'm guessing something like this and probably that layer on surface barrier is slightly bigger than on implanted one yeah okay so if you go to all Ortec catalog how they describe how you connect so first you need to put their preamp and you plug to the preamp by a supply and then you go through analog spectroscopy amplifier and then multi channel analyzer today we still use this approach but we have one shortcut you can take the cable from here and go directly to digital pulse processor that's in the recent times much more common and good practice rules if you want to get really good resolution in rbs please when you will put things together try to remember connection detector preamplifier as short as possible once you go for example from chamber if you have preamp on the air site how you will do the connection I'm sending you several feed trus here and please think which one would fulfill the request that I told you the best out of those four so what is there coaxial cable that connects detector and your preamp has a property that it's called impedance and you should not interrupt it on this way what is interruption for example you go just with a normal wire for real detector to the inner vacuum electrical feature it's uncontrolled impedance of that part you will catch a lot of noise on that road so the best is you put coaxial cable of this type on your detector and this is already 50 ohm impedance and then you have coaxial connector on the vacuum site and then connect to one of those flanges and you have again coaxial connector on other side so you don't interrupt this 50 ohm logic this is also cable, please pass around that's also important and this is another thing the same holds for pixel detector your vacuum chambers are actually big chunks of metal and your shield on the coaxial cables when you bring it out of the chamber should not come into contact with it so one of the one of the flanges there fulfills this requirement please think which one is the best out of those four that's a task for you so don't come into contact with your chamber at all the earth definition of your detector should be done either by your digital pulse processor or your spec amp, not by your chamber coaxial shield on coaxial cable should never come into contact with your chamber if the cables from preamp to spectroscopy amplifier are quite long try to use preamp with higher gain historically we were using I will show you this normal preamp this is cambera model you have also ortec equivalent and their gains are actually quite low and we were buying new detectors but it was a big struggle to get like 11 kV then in rbs in the last time you see how we make it this is the interruption between the chamber and the earthing defined by these shields of coaxial cables even to the preamp from the spec amp 5 meters away in your rack as soon as we got some omic contacts over resolution goes from I don't know from 10 to 18 kilo electron volts so it's bad try to avoid it need not constant for this is not the best I will show you even better solution here you have lemo fit through if you know this one but here you see there is a problem you have conflict flange and you have a chamber there we usually put viton gaskets are around substitute for a copper gasket they are also in one of these enclosures and we insulate the screws so the flange is on a potential of your preamp and digital pulse processor along the way no contact with the chamber and then this is inside that's how it looks like you have some holders for your detectors they should not be in contact with you you have them usually in some insulating ceramic or plastic enclosures if you want to have mass resolution put your detector as close as 180° if possible 170° is quite standard angle for many laps and then if you have this thin americium source you measure this spectra this is logarithmic scale actually on linear you see only one peak and you check his full vit f half maximum if it's 11 and cambera tells you it's 11, you did a good job in our lap this was a bit struggle it's really difficult to put it in real conditions and have 11 kV until we didn't get in the lap first cool fat preamps from amptech now this is quite standard for example this is now silicon edge and you see both silicon isotopes here this if you want to fit in an array it's better if you take 10 kV for the resolution than the specs 11, so if you do it well you can sometimes even surpass the factory given resolution because they always do it on a safe side, they put it a bit more otherwise you would complain I cannot get it from you if you do RBS of course and if you do peaks I mentioned before measurement of incoming kind dose you have several approaches the easiest one many of us are using is you connect your sample through the charge integrator to the earth yeah thanks so if you want that this works that secondary electrons wouldn't escape please use some battery pack it is above at least 100 volts or more so that all secondary electrons would come back you can insulate entire chamber also works in some cases but it's a big antenna our charge digitizer doesn't like it sometimes there is always some straight current measure and then you have in bin devices when I was your age I got agent EIA practice in Rosendorf in 95 all the chambers had choppers that I am using in my case as well in the labs so I will share so they are insensitive these in bin devices to secondary electrons escape from the sample type of the sample they don't care if the sample is insulating or not and I will show you two types one is quite simple you have two cylinders and you put inside a mesh looking from a side with roughly four lines per millimeter and the beam is coming like 20% of the beam end up on the mesh and you put it to the charge integrator also on the mesh you get secondary electron escape and you put these two cylinders here on minus like 500 volts and you have very stable in bin charge integration you don't care what's on your sample you will always tell correctly how much beam goes to your sample and alternative which we are using on micro probe you rotate such chopper in your beam and you then integrate the backscattered signal gold peak in your EBS ok no, just for broad beam the chopper is appropriate for micro probe ok now when you do when you start RBS you must do an energy calibration based on what you get on the surface of your sample so because scattering edge of your scattering box in your spectra is simply multiplication of quantity called kinematic factor just function of both masses and angle and depends on initial energy if you know initial energy you know your element and the angle you know what should be the energy there on the edge of the box and then you take for example tantalum, rhodium, molybden, tital, silica, oxygen and you check what were the channels on the boxes and you calculate what the energy should be there if you did it correctly usually calibrations are quite linear in this case you see it was energy you calculated as 11.5 kV per channel times the number of channel plus 21.8 kV that's connected to the question natko what this offset here means each detector has small dead layer and thicker the dead layer thicker this linear larger this linear offset is let's see the one example is for example nitrite tantalum nitrite what you can do with RBS you can estimate both thickness geometry of the film this is the tantalum box and here is the substrate front edge here indicates that you have tantalum there if you check what is the energy here of these channels you know that it's tantalum box this this box belongs to elemental tantalum and if you have charge normalized measurements of nitrogen in your layer these boxes correspondingly lower and now depending on the thickness these boxes can be wider or narrower that's how you estimate then the thickness I will show you now a short example with cement array on these aluminum oxynitrite films we did a long time ago with the assistance of the agency in 2005 let me see if we will manage to ok so that's similar oh shit let me try to better yes thanks ok so this is cement array in myer from garhink and once you upload the spectra you can see here you can use read spectrum data ask just two columns channel and yield very simple so once you upload the spectra here it's name you go to set up and you say experiment you select the ion in our case lithium 7 and here is its energy angles and calibration the calibration I showed you how it's done just before and then this detector resolution for lithium always worse than for helium that's how the physics works and that's most of it you describe your experiment and then you need to input the target what was the structure there on the top they put gold then comes aluminum oxy nitrate we don't know this how much any of those is with ordinary rbs it will be a big pain we cannot separate whether it's oxygen atom or nitrogen atom this is beyond the ability and then they put here a tantalum and then etched silicon we can say that there is no much oxide here in silicon now let's see what we can do with with lithium with 4.2 mv now I'm already putting the tentative answers for gold the units are 10 to 15 atoms per square centimeter you have somewhere up here tool to recalculate what is the thickness in nanometers for gold then comes aluminum oxy nitrate this is one of the gases I put some for nitrogen roughly 1, 1, 1 we will see how good description will be this for the first iteration and then next tantalum is there and then next with finite thickness and then you put silicon with some great number that means silicon substrate let's see the calculation he will ask me for cross sections I say take everything rather fourth yes yes no no it's okay okay so I deliberately put here logarithmic scale if we put here linear doesn't look too bad our first guess you see what's worrying is this what the hell are these boxes here these box and these box if you put logarithm axis you can see it much more pronounced something's wrong our task is to understand what was that because they need to make these films and conditions are not always optimal you see they made it quite nice because we have two markers before and after the layer so roughly that distance between these two layers roughly indicates the thickness of the sample and you see this box roughly corresponds to this and this strange box similarly there is something actually in this layer here in between let us guess what is there we go to target we keep the golden layer as it is and we will add two more elements in this box something is wrong in these layers now gases when you do thin films what could be in let's try iron let's the iron is maybe for the lower box and what we will say for the higher box something heavier what would you say some gas doesn't matter nickel is almost iron I would take something further up I borrowed a periodic system from my daughter so natko said iron let's say the iron is for a lower box let's take something heavier maybe some rhodium palladium, silver maybe something let's say rutenium I don't know what did they have in this reactor what happened, what's going on there we will see what are our gases and we will put there not much, these are impurities in the thin film let's say 2% 2% 2 atomic percent and now if I say ok, he will complain see Menere is a picky guy he wants 100% you see so I will simply take a bit of oxygen away and now it should be ok and let's calculate again we will see what was our gas the heavier is not heavy enough the lighter is not light enough is it this box should be a bit more here and this box should be more here ok, let's try let's try tungsten I wouldn't say tungsten natko because you have a valley there in between gold it's too close but let's try to see something lighter than iron how far down you would go so iron is there we go down the road where we will stop your gases where would you go let's do scandium ok then let's go lower guys sorry iron should be tungsten let's go less than tungsten ok let's go to what silver for example or ruthenium yes, ruthenium and here we said we will use titanium or what no, for the lower one titanium ok let's do scandium ok and then we say calculate better gas but still far away so let me we don't have much time so the guys who are operating these facilities usually use for as a carrying gases gas what, something that chemically does not interact let's say argon for the lighter one so instead of scandium we say argon and what we will use for the heavier one from the same class let's try Xenon, yeah you see these are noble gases so for us all I was so shocked when one finds out that noble gases are stable in the film and now you can only play with a bit of concentrations and you will completely reconstruct and the story is not over but we will stop here you see this peak here and you see this peak here again and their separation their peaks and their separation is the width of the box what would you say so this and this obviously somebody was cheating with gold it was not pure gold and also tantalong was not completely pure turns out the best goasis silver, like 10% of silver in golden layer and some strange thing I don't even remember in next to tantal that's how you iterate the height of the boxes you will do just by changing the concentration I will try to maybe I have the last let's see if it's the correct one roughly like this without surface without these two peaks that's all of it sorry for taking you 5 minutes just one question


Arms on now, where we go, terrific start there on the inside, it's Ty Woofendon who makes the best of it. What a move from Jason Doyle, jumps back to the inside. Keep an eye on Jason Doyle on the outside gate in yellow, you can see there he's got across Max Frick, then he realizes he's not going to go any further, Ty Woofendon just moves off the curve and that gives enough room for Jason Doyle to sneak between him and the concrete. Not a lot of room there, but green light comes on now, away we go. It's an even break, maybe Linglund's made a good start, but look at Smarslik, sweeps across from the outside. Jolowski comes through in the second place now. No idea, he hasn't settled down at all. You can see now it's Linglund from the inside, Smarslik just gets across, he gets down low as far as he can, it just... Tough race here, Woofendon on the inside, can he produce something special? Way to go, takes her up, Woofendon's got there alongside Martin Vashlik. Vashlik now gets his nose in front. Look at Mickelson, Mickelson, what a move from Mickelson! Once again here. Yeah, great speed, it's a great start from Mickelson, he's just given himself this chance here now. Jars makes a run right through the gap there with Ty Woofendon and Vashlik. I can't believe how much speed he generated on the edge of the dirt. I can see it once again now, it looks like Ty Woofendon's made a decent start, but he just runs across the track. Here we go again, green lights on, tapes are up and away we go. Jack Holder's made a good start on the inside, Thompson's coming across from the outside, Thompson on the dirt, Thompson roaring round the outside, great first corner for Amanda Stomson. We have Jack Holder and Bartosz Smarslik, you can see Smarslik there, he's got the front wheel in the air, looks like he's made a really, really good start the way the bike's reacted, but Jack Holder there in red and Anders Thompson rounding him up, so now at this point Bartosz Smarslik, last place. Great start from Smarslik at the same time, good start there, but do next there on the inside, but Thompson, keep your eyes on Thompson. Oh, what a move from Vashlik to come through.  And as Thompson comes off gate two, I think that was a very important move actually, just to stop Bartosz Smarslik, because he'd made a pretty good fist of it from gate three. Difficult all night and he really had made a decent start from there. We can see Vashlik, that thing, he's pulling his arms out and he does so, so well to keep that under control. Wow, that was a bit of a moment for him.


Jamie Neutron used to be one of the most well-known Nickelodeon franchises from the 2000s. Sure you have heard of the movie made back in 2001 before the TV series was made. Let me tell you how I encountered an unknown and obscure episode of the said series. It was around 2004 when I was 11, my family and I got home from the trip to the cinema to see Disney and Pixar's The Incredibles, which was released that year. I was in the living room, searching through channel after channel until I noticed that Nickelodeon might be airing a new Jamie Neutron episode at that time. Excited to see it so I go to the channel. It's still airing some commercials and promos so I waited patiently. But then, a promo for a new Jamie Neutron episode came up with the narrator saying, Coming up next, it's a brand new episode of Jamie Neutron. If you watched his special episode once, it will never air again on television. Only on Nick. That's odd. I thought to myself, Nickelodeon was airing a special episode of the show and will never be aired again. What was the deal? I pressed on. The strangest thing is that it doesn't start with the intro we come in love with. Except it was static and silent. As the static faded, it showed the title card called, Shlegs.  The quality however looks like it was ripped onto a VHS tape. Shlegs? I muttered. What is this? What does that mean? Such a pretty strange title for a Jamie Neutron episode, so I pressed on. In the background, it was playing some sort of quiet dark ambience along with the episode. After the title card faded, without the credits, it showed Jamie in his living room, all alone in the dark, except with some light illuminating from the TV. He was sitting on the couch, watching TV as per usual. But what's odd about how Jamie looked as the camera zoomed into him? He was, noseless. Not like graphically cut off or anything, but his nose just wasn't even on his face. It made me think of Mandy from the grim adventures of Billy and Mandy. I continued. As the camera zoomed into Jamie, he turned around to see where a window or door would be. He said the first thing in this episode. Ice cream. Said Jamie. The honest thing is that he wasn't even voiced by Debbie Dairyberry, which used to voice the 11 year old male protagonist.  After Jamie said that, it cuts to a window. It was almost dark outside as it was daytime, probably a sunset on a cloudy day.  Then, an ice cream truck appeared along with its jingle, stopping at where Jamie's house could be. It cut back to the interior of the living room where Jamie was sitting on the couch. Jamie got off the couch and ran towards the door as the camera zoomed in. The quality of the episode was starting to corrupt as if the signal broke or might have been a VHS tape that was age tampered or broken. After he opened the door, it cuts to a view outside, which is the neighborhood where the ice cream truck appeared. Jamie got outside the house and ran towards the ice cream truck as the screen gets more and more messed up. Then it went to static as the jingle faded to the sound of the static. The static however got weirder. It was turning red, and what was in the sound of static sounded like a woman screaming fading in slowly. But what makes it worse is that the TV is smoking and sparking. It felt like it began to explode. Okay, what is happening? I said worriedly, this is not good. Then, the TV explodes. I have survived the explosion, but then my mother came downstairs to see what happened. What happened? Are you okay? My mother asked worriedly. I'm not sure. I answered. Maybe it's because of some surreal Jamie Neutron episode that just only aired on Nickelodeon and was never going to be aired ever again. And what was the episode? My mother asked. It was called Shlegs. I answered nervously. Shlegs? My mother said curiously. What was this episode? It started with Jamie sitting on the couch. I concluded. The odd thing is that he had no nose. Then some ice cream truck appeared outside and Jamie was running towards it. The quality of the episode however looked like if it was recorded from a VHS tape that seemed to be broken. My mother seemed to believe me about what had happened in that episode. We even got a new TV after the incident. I'm pretty sure it might have been a hallucination or a real event. It made me feel like I won't look at Nickelodeon the same way again. Pretty sure that they air strange and surreal episodes of known shows that would never get to be aired again on the channel and are known to affect TVs when they were showing. As of the incident, questions were popping up in my head. What was that episode about? What does it have to do with the episode's title? Was it an episode that never got to be finished?  How did it cause the TV to explode as it was showing?


Soundcheck good. Good morning guys all hear me. Okay, you know we got some spots up here in the front row, right? Awesome, thank you. So those of you that were expecting JR this morning. I'm the younger taller better-looking, but not quite as brilliant version of JR Rivers So the session was going to be a little bit about about monitoring and kind of looking at open stack from from that perspective We're gonna actually change this up a little bit and talk about layer three to the host and How to interact with with open stack in a little bit different way Sound good. All right. All right, so I'm gonna bore you What if you could reduce your IP address count and the hassles of building a layer three fabric? By putting IP addresses on every with every single link in the fabric What if you could get rid of spanning tree In your fabrics, doesn't that sound like a wonderful thing? Yep, what if my clicker worked a little faster? Oh get closer to the here we go What if you could do layer three ECMP from your servers to do flow-based load balancing rather than Doing, you know something with layer two where you've got one link up one link down And you're basically wasting half your bandwidth and so server mobility. There's a lot of different ways to approach this, right? and then Reducing the controller to the fabric complexity and then more visibility So how do I how do I create a way to actually be able to visualize or show with a connectivity between the compute pieces of the network? They opens that compute and network nodes and the actual fabric itself so the answer to this is Basically create layer three fabrics and address put IP addressing on the host itself So part of that's that's a partial answer So the way to really kind of take this to the next level is to use something that we call BGP unnumbered so if I have a BGP fabric I want to use unnumbered interfaces. I essentially can put a single IP address on a device And have unnumbered on interfaces and essentially do point-to-point pairing and TCB BGP peer establishment across in the number link All right, so a couple of different design just a couple design slides. I want to show real quick first one is kind of discussing ECMP within the fabric and then kind of a Not so traditional. I guess a single attached server connection And then the second option is really looking more at this BGP unnumbered Concept that I'm talking about which now you can do ECMP type links across from the host into the fabric And so we're showing here more of a connection There's the I'm looking for my mouse, and it's not on my screen, but it's almost sure screen very good So kind of look at these links. This looks almost like a layer two fabric connection, right? But if you can kind of visualize or Think about this as being just just an example If you wanted to put eight nicks in a server and connect it to the fabric can just as easily do that in layer three environment Little more difficult to do that in layer two environment alright, so The demo that I'm going to show you is is really like a five-node OVA in virtual box And what I've got is a single spine two Leafs a management bridge so I can talk to all the different virtual devices and Then a couple of servers and these servers as you can see down here on the bottom It's an open stack controller. So there the two servers on the one hand is server one It's an open stack controller a compute node Network node and a dashboard node. So basically everything I do is pretty much going to be from And the demo is going to be from that that one server and then server two is going to be simply a compute node just to Essentially build your tunnels and establish connectivity. So what we're going to show is A custom tenant creation script So basically going to open stack kind of do its thing just build VXLan tunnels for two different networks build a virtual router And then make sure that the connectivity works between the different nodes and then use some Command line just to kind of show you the output from both the fabric side as well as from the actual compute side alright, so I see Nolan's in the back row back there I still want to his slides and put the train wreck up here because it's demo time as promised I've got virtual box up and you'll see I've got Mario server one I've got an external router that's running just as an example to open stack to kind of get off to the physical network a leaf Two leaves in the spine just kind of like we showed in the diagram right and if anybody wants to actually kick the tires in This demo themselves if you go out to the the cumulus website under our support site There's a whole list of demos and down here on the open stack cumulus VX rack on a laptop layer three to the host Basically step-by-step instructions On how to build this essentially you're downloading the OVA And there is a link to that right here Essentially you import the OVA as an appliance and it explodes into this all right, so as Promised the server is the spot where I usually go connect you first, right? So I'll go ahead and do that and you can see here That I've got some cheater scripts kidding on kind of like we talked about a little bit of you on the slides And so I'm gonna hold off on a minute before I build this because I want to go back to open stack go to horizon login No compute instances go down look at the network real quick Network topology Generic you expect to see this on a fresh install, right? Networks external network and then routers Blank again, so I'm gonna go back over here and land on the instances pages and Look at a few things here first of all look at the IP route table Kind of get a quick shot here at one two one sixty eight dot one hundred dot two or dot zero network And then there's a two hundred dot two and I want to show you Server two which I'm for now. I'm gonna ignore, but I'm gonna actually go over here to this leaf leaf one and so net show is It's a command. It's in the operating system It actually kind of makes the Linux interface for networking a lot more Appealing to somebody that's got more of a network background So if I do this command is called net show if I do net show interface Just kind of gives me a status on the on the actual interface and talks about it shows me with the name of the Interfaces the speed empty you you can kind of read what it's showing me here, right? The neat thing about this is I can tie into the open stack environment Back into the network node and if you look at what I've got highlighted here It'll actually tell me the local port what it's connected to so I kind of talked about earlier in the slides I want to show you how to make that linkage between the open stack component and the fabric a little bit more visible, right? This is one of those those methods of doing so So you can see it's an unnumbered interface So what does that mean no IP address on the actual link? We're using the loop back IP as a connection point All right, so net show interface there when I look at the LLDP real quick Do I so I can figure out who I'm talking to you'd see that my my port 49 is talking to the spine layer? We go back to the spine You see you've got fairly similar connectivity except that we're talking to leafs, right? LLDP talking to leaf one leaf two So if I go back to the diagram so everybody's kind of got a visual remember server one server two So we've looked at server one connectivity with the leaf one look at spine one look at my routes real quick pretty simplistic I'm gonna do a quick dump on the actual PGP config so you can see that From a BGP perspective This is about as simple as it gets you define the router ID You define the interfaces that you're actually peering on and then just set the remote as is External or internal in this case. We've got it all set as external I'm gonna go ahead and show the same thing on the leaf side. You can see it's it's almost identical as definition the router ID and then the port and then whether it's remote AX is external or internal you see we've got these all as a external as well okay, see One other thing I'll show is I'll do an IF query Just to kind of give a quick snapshot of exactly what interfaces are configured on the switch Okay so Going back to this guy. I'll go ahead and kick off the demo script I'm gonna go ahead and create this two tenant subnets demo And so what you see here is I got a nice cheater menu, right? So I'll go ahead and start this And what it'll do is it'll kick off all the all the scripts to actually build the infrastructure that that two subnets with a router And then it'll have four different VMs so we can kind of test the connectivity between the different networks Any questions so far? So the neutron plug-in that we're using so the neutron plug-in that we're actually going to be using for the connectivity is going to be vxLan It's going to be ml2. It's going to be the you know the vxLan overlay the That's not actually talking to the fabric. That's just talking to the compute node and the network nodes, right? So what we're doing is using Quagga The routing application on the host to be the layer 3 connectivity to basically pass reachability information to all the host and compute nodes The compute nodes in the network. No, excuse me that way now open second Do what it does best and communicate with its own its devices to build the overlay directly rather than have to actually communicate for fabric So it's like one less failure touch point, right? And this is taking a little longer than what I think it should She would Yeah, all right So you know it's funny because we had a discussion this morning is like I don't do live demos on purpose because the train thing happens I Record demos. I just got done recording this demo in the back put it up on YouTube and Here I go doing a live and we're getting something here little patience So what you're going to see when we get done? Is there's really not going to be any kind of changes to the? the actual Fabric itself the reachability information the routes the IP connectivity is already in place All the change is going to happen on the open stack nodes, right? I'm now I'm going to see I'm going to see my VX land interfaces I'm going to see my router interfaces all my bridges. They're all going to be created on the end points Still waiting And you're out in tomatoes out there. We get on time, right? Is if this doesn't like Finish up soon. I'm probably just going to go back to my MP4 and just hit play But I I think it's building. We're still working here in the background Port forwarding turned on to the to the actual VM. So I'm not sure that that's going to work Five minutes I'm afraid to interrupt that script. It might not finish the build All right. I tell you what I'm going to do. I'm going to go back and do exactly what I said I was going to do it's like a cheater approach, but yep still waiting. All right, so We've already done all of this This is the abbreviated version because I've edited it to cut out all the wait time And since we're running short on time. It's probably a good idea to go this right anyway All right, look familiar Yeah, so that's a minute to go exactly All right, so once this thing's done I go ahead and do a a verify because you got to create a verify destroy and a quit right so on the verify Just kind of go through and actually look and see that all the different interfaces and the subnets and The machines are all created and you can see down here. I've got the two vehicle I'm going to quit pointing at that because that brings up a blocking window. All right, what you're seeing What you're seeing here is just a list of of the different open stack Instances, right and as you can see in horizon, we've got two different networks We've got the router and what I'm going to do is actually go in and show the IP addressing on the networks So you got the the 100 dot 1 dot 0 and the 100 dot 2 dot 0 the two different subnets And you can see my virtual router here Interface list You got an interface on each subnet obviously in a one interface to the external gateway And then what I want to do is just kind of go back through here and actually show the IP addresses of those devices Inside of the server that compute slash network node And so once I go ahead and do that I'll actually log back into horizon or go back to horizon and then launch off a connection into the console and actually Ping across the different VMs just to kind of prove out the fact that it's actually built up the network So compute instances all four, you know two in each subnet you've got the 100 dot 2 dot 0 network So two instances there there's like one on each so we got two servers, right? So we've got a different one of those endpoints is on one server and the others on the other server that way We're actually forcing these of the overlay network And so from this one instance when I log in I just I just ping everybody from that one spot That's usually enough to verify connectivity minute and a half. All right, that's uh That's about it for the demo. So let me Let me go back over here and see if our actual demo actually finished building and it did not so I'm glad I went to the video So we got about a minute left any any questions any other questions out there. No Well, thank you everybody for coming out. Thank you