A very good morning and warm welcome to all of you. Today, I welcome you back all here for much more presentations which we have in store for you. Let's start with the first group for today, Blender Animations, managed by Mr. Sameer Shah Sabuddi and mentored by Ms. Pooja Bhavasar and Mr. Nitin Ayer. Netra 3D. Netra 3D is an e-learning application designed to acquaint a student with the anatomy of human eye with its varied features, components and functionality in a 3D view space. It offers both exploration and practice for the user to review and evaluate learning at his own place. Easy navigability replete with the Android interactivity, cavalcade, off touch, pinch, zoom and swipe. Let us see what the presentation has. Good morning everyone. In this session, we are going to discuss about the various stages that we have gone through in creation of our final product. We belong to the Blender Animations group which has been creating various applications for desktop and educational apps for desktop and Android platforms. So in this period of internship, we were given the task to create an educational app for viewing the internal structure of human eye using software such as Blender 3D and Unity. The use of media is increasing day by day. People are more inclined to the use of tablets and smartphones. So we wanted to exploit this feature for using an educational system. What we have presently is, our means of education is through textbooks nowadays. So that textbook is convenient for some theoretical topics but not for topics such as eye in which we have 3D model in which we need interaction and viewing the model of eye completely because eye is a topic which can be viewed best when we have the cross section and view at various angles. So in textbooks, we have 2D images which do not have any kind of interaction. They are not in motion and they just show the cross sections through various angles. So in our app, we have added the interactivities like whatever interactivities are there in Android applications and tablets that we have tried to exploit in our app. We have added swipe interaction, touch and pin zoom interaction and accelerometer rotation. So our app basically consists of 3 stages in which we have explained the internal structure of eye and the working of eye through animation and the various practice activities involved with those explanations. So starting with the basic modeling of eye, my teammate Rakshita will continue with the stages that are involved in creation of that eye model in Blender. Hello everyone, initially during the first 2 weeks of our internship, we were being trained in the Blender software. So what is Blender? Blender is basically a 3D open source computer graphics software where we can model our 3D objects, create animations for them and build the interactive applications for the desktop purpose. We were completely new to the software. So by learning all the features that were present in the Blender, we could model things like cup, pan, chess pawn, etc. Not only we learned the Blender but also we got the chance to teach the Blender. One of the labs in the Crescent, they approached our mentors and they asked them to conduct the workshop for their interns and we got the opportunity to teach them the Blender. So that was one of the interesting learning sessions that we got during this internship. Now, our project required the 3D model of the human eye. So this was created by the Blender experts. The slide shows the eye model without the materials and textures. In the next slide, this shows the eye model where in the Blender we added materials and textures to give it a realistic view of a 3D human eye. Blender comes with its own game engine, Blender game engine, which is used to create 2D as well as 3D applications but that also for the desktop purposes. It does not give .APK as its output. So we cannot use that game engine for the Android devices. If we want our Blender files to be run on the Android devices, we need the Blender player. But the interactivities that we get to see in other Android apps like Swipe and Zoom that are not being included due to this Blender player. So we had to exploit other source, open source game engines as well as proprietary game engines to have those interactivities for the for our app. So from now, Himalini would continue. Thank you, Rakshita. A very good morning to the August gathering present here. I will take you walk you through the other approaches we took than Blender game engine. Now Blender game engine was restrictive in the fact that an additional Blender player had to be installed for the app to run. So other than that, we explored a cavalcade of alternatives. Major of these alternatives in the open source category were Min3D, GameKit, Ogre, LibGDX, JMonkey Platform, Catcake3D and Cocoa3D. Among these, it wasn't logical to spend all the time, all the course of the internship on every one of these. So we put up notches in our timeline and we divided ourselves into team where we had a major, a simple task of including all the interactivities of touch, zoom, pinch and swipe in a single Blender model. So if we could do that, we could definitely extrapolate every of the iModel functionality. So among the saving, we excluded these options from the beginning because Ogre, okay. Ogre is object-oriented graphics rendering engine. This was eliminated as an option for pursuing our entire project because it has no sound documentation. And the graphics quality, developed graphics quality is poor. Our major USP for creating this app was that text is bland than visuals. More visuals than graphics are appealing to students. So poor graphics quality was something we had to eliminate at the beginning only. Catcake3D is a software which is still in beta, so we could not continue work in it. JMonkey Platform similarly is used for low-level game development. So again, the graphics quality is poor. We had to eliminate this as an option. LibGDX does not include textures in the blend models which are imported. So graphics option, we had to eliminate this right away. And Cocoa3D is something which does publish apps in Android and iOS, but most of the work that has been done in it has only been for iOS. So after the saving, we got to punctuating our options to two, which were Min3D. Okay, Min3D is a lightweight 3D framework for Android. So what it does, you can take your blender model, dot blend model and export it as the mesh, the dot obj and dot mtl file. And what Min3D will do is that it'll flatten your object into an array of vertices. So it requires ADT bundle with the Min3D framework installed. So you can actually take the model and its vertices for manipulation and do whatever changes or modifications you want in the Android application code. So we did not actually use Min3D as our final option too, because for one model, we could create these touch, zoom, pinch, swipe, interactivity, but for multiple models, many glitches were coming. So this option could not be considered for our model. We then explore on to GameKit. GameKit happens to be a cross-platform 3D game engine using OgreKit and Bullet Physics for Windows, Linux, Mac and iPhone. So what GameKit does, it provides us a bridge or a pipeline from dot blend to dot apk. What we can do is we can impute the entire blender game engine logic, which we've created, and use GameKit for just taking it from one place to another. So what it helps us, the way it helps us is that we don't have to go through the hassles of adding more logic. Like whatever we've done in Blender game engine can be used directly from Blender to GameKit. But GameKit also wasn't used as a major punctuation point because, okay. Game, because it exports the entire logic, we have no elbow room to add our own logic. Supposingly we want to change or put some more interactivity, we have to go entirely back to Blender game engine and then impute all those additional features. So the entire export as a complete package made us restrictive to adding any more features into it. And because we see, because entire logic is exported, we had no access to the model for manipulation. Like if I want to explore with the components of the model, I could not do that with GameKit. So GameKit also, we had a premature punctuation to that point. Now after exploring these game engines, we came to a point where we were introduced to the very promising Unity 3D. Unity 3D happens to be a game development ecosystem. It has a powerful rendering engine which got us right away because that is exactly what we needed for textures. Visuals was our major propaganda which we were saying that these are more appealing students like it more and it was available in Unity 3D. It has rapid workflows to create interactive 3D and 2D content. Again, it has multi-platform publishing so you can create your applications in iOS, Mac, Windows Linux, and obviously Android. We had access to the assets in the Asset Store. Now Asset Store is an inbuilt feature of Unity. Okay, it has sound documentation and an active forum. We got through a lot of winding tassels from here to there and nowhere in all those other open source game engines because we had no documentation. So if we continued from one point, we actually dominated our exploration because we could not go any further. Unity had a very active community which could help us when we had any doubts. And it had the requirements of JDK and the ADT bundle to be installed and the .NET framework to be installed to work. So Unity was our best bet. Unity is a proprietary product. So it is not open source but it was our best bet because all the open source game engines that we explored, they had this one thing that we needed. Our major requirement was neat and crisp graphics. These are the things that attract a student. A student will prefer an app like this over textbooks if he sees good graphics or something which is more colorful or the components which can be seen in specularity and all those features. So all those open source game engines, they had poor presentation. So Unity 3D happened to be our best option because correct textures we got, every object we could manipulate singly. For every object and its subcomponents, we could do scripting and scripting also we had a flexible option in three scripting languages which were JavaScript, C sharp and Boo. So any three of these we were comfortable in, we could add the scripts individually to models. It had an extension for playing animation videos on the Android platform. Now initially when we were using blender game engines, we could not play the animation without having blender play installed which stopped us from working any further. Like you had to add this additional thing installed and already we had this extension in it. Okay, the tangible .APK file that we needed, Unity 3D was giving us as an export directly. The best point was that we got a time sensitive free license to work with Unity 3D Pro. So our mentors and Professor Sameer Sahasrabade, he approached the head of operations of Unity in India, Alex McCready for a free license to actually explore Unity 3D if it is actually what it promises. So we got our request heard and we got a free license for two months. So we could do, we had access to Unity 3D Pro, those features of glow effect, graphics, playing animations. These are pro features which we got access to. And another major incentive was from the work which had already been done in Unity 3D. Many games, many games like Temple Run, Avon Guard, these have been created in Unity 3D only. And there had been some work which had been done from our distant mentors from CMU who could help us whenever we got stuck in Unity 3D. So I think I should hand over the amp to Ravi who will guide you through the process of how we did work in Unity 3D. Now we see how we implemented our app in Unity 3D. So this is Unity 3D logo. So we got a license that we are happy. So now this is the outline workflow for implementation of our app. So we basically, we are creating the models in Blender and export it into FBX format. Then the Unity, in Unity 3D, we import that models which are in FBX format. So in the next, we add interactivity to that models so that is the intention of our app. So there are so many interactivity possible in Android. But for explaining the structure of I, so we stick to these four major interactivity. So touch, swipe, pinch zoom and rotate. So in order to implement these interactivity, Unity provides there are two ways to implement it. So we can use either C sharp or JavaScript to write the code and we used C sharp for this app. So it's an example for code for touch interactivity. You can see. And this is for pinch zoom interactivity. Actually, so while explaining the internal structure of I, so we need to look whenever we click on retina. Let's say it's a part of I, so it has to be highlighted. So in order to know the user has clicked that part of I, so we need touch interactivity. Here we can highlight the portion of I so that and we can also provide information regarding that part. So this is for pinch zoom. Pinch zoom and accelerometer rotation are the prominent interactions that are possible in our app. So this is basically game plan that we took for Net3D application for that is for our app. So it contains actually three phases. So it can be better explained with the video. So I hand over to the Ruchi. Thank you, Ravi. Now I'll showcase you the video featuring this application. So this is our Net3D icon. We have developed it in Blender itself. So with this flash screen, there are three modules which are structure of I, working of I and adaption of I. In structure of I, we have instructions which is for exploring its controls. How do we control it? So we have structure of I, details structure of I explained here. So you can see when we are clicking on any component of the I, we can see its detailed information in the left panel. So this is for blind spot, cornea. So we can have the whole view of I anatomy in 3D view scope. So we can have zoom feature as well. We can zoom it like this. And then we have accelerometer here so that we can get its 3D view. See, the object is tilting. We can see the latency here. So we can have its 3D view like this by tilting it. I'll just forward it a little. Okay, in this, then we have practice activity as well which will showcase you quiz. We have quiz for students which will, which is all about like the various parts of I. We have a questionnaire like select the correct option for the highlighted part in the image. So we will going to select any option. And then like I have chosen blind spot here. So we got a description here and my score goes with one, goes from zero to one. So we have multiple questions here. Then we, then in working of I, we have, sorry. Then in structure of I, we have practice activity. We are done with it. And then in working of I, we have three modules. First is for image formation. Second is for defects of I. And third is practice activity. So here we can, we can see the image formation here. All this animation is previously created by previous interns. We just imported it in unity. So defects of I we have. Okay, this is the practice activity. Okay, here we have this part which is adaption of I. So how I adapt with the light intensity. So we have the video which is showing light intensity on I and then the practice activity for this as well. So this is the video showcasing the effect of light on the size of pupil. So you can see that when light increases the size of the pupil contracts. And when it, the light intensity decreases, it dilates. So this is the practice activity. We just, we just increase the light intensity using this slide bar. And you can see the changes in the pupil. It contracts and dilates accordingly. So now I'll hand over the, this to someone. He'll tell you about the challenges we faced. Good morning to all. Now I'm going to explain about the various challenges we faced during the making of app. In many technical problems, we have many technical challenges faced in that we are not, we would like to show a prominent examples of that. One of the example is that installation of open source game engines. There is no proper documentation available for that installation of opens, many open source game engines that is very tough to install. And we are stuck with it. No one knows anything, how to do installation, no documentation available. Sometimes we thought that coding that game engine is bit easier than the installation of that open source game engine. That's what the situation we faced. Even though we have faced many coding problems in Unity 3D, we have a forum and which is of quick response so that we code it easier and our work is simple with Unity. Coming to the next, what we have learned. We came to know the various open source game engines and pros and cons of that. We learned Blender. Blender is good enough for making models for our use. But we came to know the main importance of Blender when we are asked to conduct a workshop on that. That is one of the biggest learning point what we have had. Where the students, suddenly we are faced with the students, they were supposed to ask the questions and they are checking our knowledge on the Blender. That's what the situation and this is what the biggest learning point what we have had. And learning Unity, teamwork and team management. This is what we have learned here in summer intern 2014. And now to Arpana. Hello everyone. Now I'm going to tell you about the future scope of our project. Now we can introduce multiple languages, multiple Indian languages like Hindi, Telugu, Marathi in our application. By replying the text, we can use this same approach of learning with all these user interactivities in various human body parts like for brain, for heart, for lungs, etc. And we can also extend the features like we can add gesture recognition, eye tracking, etc. And as we know Unity can give output for multiple platforms such as Windows, iOS, Linux or various game engines like Xbox or Oculus Rift. Then we can also use this app with Oculus Rift also. And Oculus Rift is a real-time 3D game engine which allows us to go into the virtual world of game. This is our team. I have one question. How much time did you take to actually develop the application apart from the learning? So if I give you year now, how long will it take? Sir, to actually create the application it took less time, we could complete it Exactly, that's why I am asking. Yes sir, two weeks. Two weeks into how many people? Two weeks and seven people. Two weeks into seven people, so 14 person week required for any human, this thing. Yes sir. But 14 blender experts or Unity experts or both? Both. So most of the time was actually spent in deliberating over a game engine to choose. So we worked on each of the open source game engines to figure out what are the shortcomings in each one of them. So because Unity 3D had the crisp and snappy graphics we needed, we had to converge and stop at that point and begin work and finish it actually. It works on desktop also? We can create it but currently it's working on Android. You said that it produces all kinds of outputs. Unity? Yes sir, we can create an desktop application but this was created customly for Android. The touch, pinch zoom and swipe interactivity. You just now said Unity creates all kinds of outputs. Yes sir. Yes sir, this can be created for desktop. What is your timeline? What is the function? Dot exe. Dot exe. What about Linux? Doesn't run dot exe. So Linux, we have these options in built settings of Unity itself. So wherever you hosted this thing, you should host other all the operating systems because let us see if Unity works. And make sure that it is hosted wherever for people to see. Sir, that can be exported but the interactivities will be different for different platforms. So accordingly, we'll have to change the code interactivities and then according to that, we can develop the application. Are you sure? Sir, because pinch zoom can't work for desktop applications that has to be in Android only. For desktop, we'll use keyboard and mouse interactivities. Sir, these all features are present in the Blender game engine itself. So that can be done in lesser time than we took for Android. No, no, your basic objective is to create something for all cross-platform. Now you started by saying that Blender game engine, though great, does not work with Android for some reason. Okay, that's why you chose Unity. Yeah. Okay. Right? Yes sir. If you want to develop it on two, I need a single development platform. Then it has to be only Unity. Yes sir. The mouse and keyboard interact. Yeah, the only thing is you have to add, same listener, you have to add to different kinds of events and then it should work everywhere. Thank you all for your patience.


OK. So we're going to crack on with our next talk. We've got Katie Fenn, who's going to be going through debugging in Chrome. Thank you Katie. Good afternoon everyone. My name's Katie Fenn.  A quick content warning to everyone in the room before I start. Heavy animation is used frequently in my slides. So if this might make you uncomfortable, dyna i chi'n gweithio i'w gweithio'r gweithio'r gweithio. O'r ddangos, efallai y ddweud yma o'n nodi'r gweithio'n mynd i gael y link ac yr ysgrifennu sy'n mynd i ddweud o'r ddweud gweithio'n ddweud a oeddwn ni wedi'u gweithio'n ddweud mae'r gweithio sy'n gweithio'n gweithio'n ddweud i weithio i'r ddweud. So, this is as a talk about debugging. Let's remind ourselves what debugging means. It means to remove bugs or mistakes from a computer program, and we do that by monitoring application flow and state. We have to understand what our sites are doing before we can understand what they're doing wrong. wrth gwrs, mae'r ffordd yma yw'r tyfnwys yma, yn ymgyrch gael html a css. Mae'n rhaid i'r pwg ffwrdd Cromedewtileid, rhaid i'r pwg ffwrdd cyflwyddiol, ac yn ddiddordeb yn ddiddordeb yn ymgyrch, ac mae'n ddiddordeb yn cymdeithasol, ac mae'n ddiddordeb yn cyflwyddiol. Mae'n ddiddordeb yn ddiddordeb, mae'n ddiddordeb yn cyflwyddiol, ac mae'n ddiddordeb yn y pwg ffwrdd Cromedewtileid. Mae ydych chi'n gwybod i ddos o dddiddordeb yn yr ysgrifio cyflwyddiol, ac mae'n ddiddordeb yn yr ysgrifio cyflwyddiol.  Dydian o'r ffordd ar y mein ydych i'r cyflwynt, company yw ddynnu'r cymdeithasol a gweld yr adrod yw'r hynny. Ac wrth gwrs, yw'r cyflwynt ddysgu fod y cyflwynt ddysgu. Fyddech chi'n wneud y bwrdd ar gyfer o'r cyflwynt froedd, pan yn ei ddysgu sydd fydd gradd ac yn chweithio'u pan fydd gennym. Ond yma'n cymdeilydd gyda'r gweithio yw'r websaith yn gwneud y system passengers a'r wneud yn ddwyio ddref ar unrhy warning. Un o'r tyn nhw y gallwch chi'n gwybod wedi ychydig ar gyfer mewn crème deff diwrnodd y pwysig yn cysigadraeth droi o bobl uchwnd o barandal ac mae stor i fynd o bwysig sedwn ar gyfer cyfweld. A dyna wnaethe'n gweithio, ychydig yw ychydig ein fhau by clicking on the false element state button. If you do a lot of work with CSS animations, you can click on the CSS animation button and you can slow them down to a fraction of the speed so you can see what's going on. So we can see the effects are reflected here and all the CSS animations have slowed right down, making it easier to see. A really fundamental part of building websites in the modern era is building websites for different devices such as tablets and phones. And a useful feature that Chrome DevTools gives you for that is the device mode. And you can launch it by clicking on the device mode button. And when you do that, you can see that your page is being resized to the kind of size and aspect ratio that you see on some devices. And you can change those settings so we can emulate an iPhone 5 or an iPhone 6 or even an iPad. And as well as emulating those sizes of the screen it also emulates things like user agents, the kind of DPI that you'd expect on high resolution screens and much, much more. Also when you interact with your site using a mouse you also see touch events being emulated to. So the next feature I'm going to talk about is the network tab and we use this for debugging HTTP requests that your site makes across the network. So this is what it looks like. You can see that a list of all the requests to resources that our site is making listed in a list as well as useful information such as the HTTP method to request them, the status code that your response has returned, the type of request so whether it's to a document or to a script or to a star sheet, the total size of the response returned and the time spent downloading it. There's also a visualization of all these requests and the visualization shows when the request starts, when it ends and how long it takes. Developers affectionately refer to this as the waterfall because the cascading nature that requests come in as your site loads. You might be able to see that requests, the quest bars are split up into two different bits. The lighter bit on the left is the time spent setting up network connections, everything to get requests ready before you actually download data. The darker bit on the right is time spent sending and receiving data across the network so you can see that quite a lot of time is sent not actually sending data across the network. The red line is the point that the DOM load event is fired in your scripts so you can see that's when content is actually finished downloading. There are lots of filters available if you just want to have a look at specific requests in particular so you can filter by the resource type that you're requesting whether it's a script, a star sheet, an image, a font. If you want to know where to filter AJAX requests you can find that in the XHR filter. There's also a filter field there as well and if you start typing into this it has an autocomplete function so if you start toying around and really playing around with different things that you put in there or suggest things that you can filter by and you can filter by all sorts of things like a file name as well as HTTP headers that you don't normally get to see. At the bottom there are some really broad metrics for your site such as the total size of requests downloaded the time it took for all your content to load down as well as the point at which the DOM content loaded and load events were actually fired. These can be used for really basic performance benchmarking if you want to start optimising performance of your site. Another fundamental part of modern web development is developing on devices that have really slow or very bad connectivity to the network so you can use the throttling feature to throttle down to 3G I'll just run that again so you can see. Here I'm clicking on the throttling feature it has a drop-down of lots of different networks and speeds so I'm going to select 3G. I'll reload my website and see how much longer it takes content to come down. As it's loading you can see it's taking many many seconds to come down and this is a really good way of just doing some really basic testing of your website under non-optimum circumstances. One of my favourite features of the network tab is the screenshot capture tool and you can enable that by clicking on the camera button at the top. What happens then is that when you reload your page DevTools will take a screenshot of your site at specific intervals as your page is loading. If you mouse over them you can see on the timeline the point that they were taken is highlighted and if you double click on them you can inspect them in detail. You can use this feature to really optimise the size of the request that you're making and their timing so you can deliver more meaningful content to your users sooner. The next feature I'm going to talk about is the sources tab and we use this for debugging scripts. If you've debug scripts before you might have come into contact with the console.log function and that's really was where I started doing it. In fact if you've been developing as long as I have you might remember debugging with the alert keyword which isn't really very that useful at all. But that's kind of a pain because every time that you want to change what you're debugging you have to go back into your file and reload your site. So next time you do this try instead using the debug keyword and what this will do is it will pause your script so you can interact with it in the middle of what it's doing. So some of the things that you can do with this that you can't do with console.log is that you can see all of the variables in your script. So you can see what this is. You can see global variables. You can actually change their values by double clicking on the values and changing them, allowing you to experiment with your scripts while they're running. You can also expand them so you can look into specific properties. There's also the call stack which is a list of functions that are currently being called. So a script here is paused in a function called update frame which was in turn called by a function called onScroll. And you can click on these functions and inspect the variables when they were called as well. There's also a watch expression, the watch expressions pane which allows you to put in arbitrary lines of JavaScript so you can keep an eye on really important variables that you're really interested in that you think are creating bugs. You can also call functions in that such as jQuery so you can keep an eye on what your DOM is doing if you want to. It's there for anything that you want. And these will be reevaluated every time your script is paused allowing you to see how those values change. Finally, there's execution controls at the top. These allow you to step through your script line by line so you can see how it's doing stuff. So let's take a look at how they work. The first one is the resume script execution button and I've told you how to pause your script but haven't told you how to restart it so you use this one to restart it. And what that would do is it will restart your script until it gets to the next debugger keyword or the next breakpoint where your script will pause again. These breakpoints on the left you can create them by right-clicking the line gutter. They work just the same as the debugger keyword. When your script gets to one of these lines DevTools will pause your script so you can look at what it's doing. So when your script is paused and you use the reason script execution button your script will resume until it gets to the next breakpoint. You can right-click breakpoints and you can set conditions for them to pause. So if you're debugging a part of your script that is executed very quickly or very often then you can set a condition and they'll only pause when that is true. So in this case this breakpoint will only pause when status is published. Next these controls is a step over next function control. And what that will do is it will tell DevTools to skim over any function calls that you're making and go to the immediate next line. It's important to understand that the functions are still evaluated. They're still running the code inside there but you're telling DevTools that you want to skim over that. You're not interested in seeing it and you want to pause on the next line. The step into next function control does exactly the opposite. It allows you to tell DevTools that you want to go, you want to step into that function. You want to follow your script into that function. So here I'm calling the get function and if I use the step into next function it will pause on the very first line of that function. If we were to pause back on the line later on after we've been through that function if we use the control again it would next step into the save function and it will do that for each function called. The step out of current function control will pause your script at the line that it was called after that function has been run. So if we use it here in the save function it will pause back at the point that it was called. Some people when they're developing or when they're testing their scripts or their sites in general like to write JavaScripts that help them do things such as fill out a registration form. We have a really long registration form on our website. So I've written a script that will fill out these forms for me and you can put it in the snippets tab which is in the sources panel. You can save these so that when you come back to DevTools later on even after closing Chrome they'll still be there waiting for you. You can quick open files as well by hitting command and P. You start typing in a file name and Chrome will do its best to find the file that it thinks matches your request. So this is a script that is on the production website. It's been minified and it's really difficult to read. So I'm going to click on the format button at the curly brackets at the bottom and Chrome will do its best to insert some breakpoint some line breaks to make it easier to read. So if you want to find out more about a couple more features there's black boxing. So quite often we're only interested in stepping through our own code. We're not really interested in stepping through jQuery or Angular for instance.  Workspaces is a really neat feature that allows you to save changes that you make to files in DevTools to your local file system on your computer which will allow you to use DevTools as a text editor. The final feature that I'm going to talk about is the timeline and we use this for profiling the performance of our websites really broadly. So one of the things that it's really good for is debugging problems with frame rate when there's lots of animation going on in your site. So this is my old website. There's quite a lot of animation going on when I'm scrolling and I've noticed that the frame rate has really suffered. So I'm going to go into the timeline I'm going to hit record interact with my website and we can see that DevTools has gathered quite a lot of data and given us some results. So let's look at what they mean. The frames view at the top is a bar chart every frame of animation while the profiler is running and each bar corresponds to a single frame of animation and the taller it is the longer it is taken to render. There's two lines as well running horizontally through all of these. I'll highlight them so that you can see them. These are your budgets for rendering at 30 frames per second and 60 frames per second. If your bars are exceeding this you know that you're breaking these budgets and your site is rendering slowly and you've got a bad frame rate. There's also a list of all the events that's going on while our page is animating as well. In particular you can see that I've expanded some scripting events that's going on. You can see that lines of my script that are being executed. In particular there's a lot going on inside my on-scroll event which I expected. So if I want to try and debug this I might try and remove these lines of script to see if it makes a difference to the frame rate. So I've gone away and I've done that. I'm going to run the profile again. I'm going to hit record. Interact with my website and we can see that the frame rate has vastly improved and all those bars are safely underneath my budget for rendering at 60 frames per second. You can also see that all of those scripting events have gone as well. So a couple of other features that you might want to look into if you do a lot of... if you want to look in greater detail the animation and the rendering on your page the paint profile that allows you to look at that in detail and the frame viewer will allow you to see each individual line of CSS animations if you use those. It will allow you to see outlines of your content even stuff that's hidden which can be really useful for debugging stuff that you can't often see. Other dev tools are available as... Oh no, that's the next slide. If you do a lot of development with Angular, Ember or React then you can get plugins to help you debug applications that are written with those to allow you to look inside their state. And the breakpoint is a great podcast that was created by Adios Manny and Paul Irish at Google. It's a bit old now. It's sort of like two or three years old but it covers a lot of the fundamentals that I've mentioned in my talk in much greater detail. And there's hours of content there for you to look at. Also other dev tools are available. Firefox in particular has very matured dev tools of its own as well as Firebug which has been around forever now I think. Internet Explorer particularly since versions 9, 10, 11 and Edge also has been vastly improving their developer tools so definitely check those out. You might also not know that you can use Chrome to debug websites that are running on actual Android devices just as well as you can with the desktop browser. And you can use Safari to do the same with the iPhone. So if you do a lot of mobile development definitely debug your sites running on actual devices. So in summary we use the Elements tab for debugging HTML and CSS. We use the Network tab for debugging HTTP requests across the network. We use the Sources tab for debugging application flow and state in your scripts. And we use the Timeline for debugging performance broadly across your site. And I'm going to leave you with a quote from one of my heroes. This is Gene Kranz. He was the Apollo Flight Director for Apollo 11 and Apollo 13. And this quote was taken from the Apollo 13 logs about 20 minutes after the accident. Everyone keep cool. Let's solve the problem and not make it any worse by guessing. This is how I feel about learning how to use developer tools of all types as much as I can. And I feel that looking inside your sites, looking inside your applications to figure out what they're actually doing can make a real difference to how you feel and your competency as a developer. So thank you very much. My slides are available online at that address. All the videos, because there's lots of videos also available at the address below. And you can find me on katie underscore fen on Twitter. Thank you. Fantastic. Thank you very much, Katie. We've got 10 minutes now for some questions. So can you have some hands up if you'd like to ask a question? OK, we've got a hand up over here on the left. Hi there. Could you tell us a little bit more about those watch expressions, the arbitrary code that you can inject? Did you say that they could, they would be executed every time the script was paused? Yeah, so every time every time you resume your script and it's paused, the JavaScript code within each watch expression, in fact, I'll find the slide so you can see. Will be rerun. So if you've got, let's see, script, script, script. That's networks. I think it's this one. Yeah, so you can see that I've got some arbitrary lines of JavaScript in there. We've got a call to one of the global window properties. And also I've got a line of jQuery in there to keep an eye on the value inside one way HTML elements. And you can see that it's actually my name in there at the moment. But if my script has changed that, if it's changed after I impose it, those lines of JavaScript will be rerun and you can see the values change. So the most important things that you find as you're being a super sleuth going through your code. If you've identified things that are really important that you think might be causing a bug, you put them in there and it's the easiest place to see them. Functions will be rerun. You'll just get the result. Brilliant. Thank you very much. Have we got any more questions over here on the right? I was just wondering if you had any tips on inspecting canvas elements. I know that I've just recently switched from using Firefox for building to Chrome and I haven't found a good extension or plugin or way of doing it by default in Chrome tools. I've not done an awful lot of that myself, actually. I don't want to make something up on stage so find me afterwards and we can see if we can find something. Sorry, I can't answer your question. Thank you very much. We've got a hand just here. Thanks for talking. It's something I started getting into last year was just empowering myself rather than just going to a friend and saying to me why it broke, you know, finding out what it is. I think I just wanted to add to it. I don't know if you covered some of the CSS stuff in it but I noticed in, I think it's in Chrome to have tools that you can go in and what you might do is edit CSS on the fly and see its effects and then you can now map that to the actual file and just click save. So you can actually write CSS in the browser and it'll save it to the CSS. I only came across it a couple of months ago. I just wanted to add that to the conversation. Yeah, so the feature that we're talking about is the Workspaces feature. It's really simple. You just give Chrome DevTools access to your local file system and if you're looking at a star sheet in Chrome DevTools and you want to make some changes to it, you can just make those changes. Click save and it will save two files on your local file system.  One thing that's another really useful feature that I think we just touched on was the source mapping feature. If you're using a CSS preprocessor like SAS, for instance, you can... Chrome DevTools has the ability providing that your preprocessor and your build step supports it to map changes back to the CSS source files so you're not looking at post-precessed CSS so that you're looking at the code you actually write rather than the stuff that SAS has spit out. So that is really, really useful. We've got a hand just over here on the left in the heart. Hand in the heart. Thanks a lot for the great presentation. You know maybe this question is a little bit out of the big picture but I've been having this question for a long time. Do you know if there exists in the Chrome DevTools like a keyword that we can just type like a break point and put it in our code and then run our website and that stops in there without going to the... I can't quite... Could you repeat your question a bit louder, a bit closer to me? Yes. Well basically I was wondering for some time about the... You know if there is a keyword and that we can put in our code like a break point and then we just go to our website run it and then stop right there into the debugging tools. Do you mean is there a keyboard that will allow you to pull stuff? I've never seen anything like that I think. It's mostly just using the mouse but the debugger keyword does at least allow you to go into your script and put in debugger and then whenever that comes up in the script tag it will pause but wouldn't it be lovely to have a keyboard that has everything that you want on it? I really hope that answered your question. No, it's okay. I just wanted to ask, you know? Okay. Thank you. I could take your hand just over here. Hiya. Sometimes when you change stuff in DevTools and then you want to see how it loads you can't refresh because if you refresh you lose the changes you made in DevTools. Is there any way in the tools to emulate a refresh without actually refreshing the page? Not as far as I know. The keyboard shortcuts will work as you expect them to so if you hit command and R it will refresh but that's not what you want. Yeah. So... I suppose the work around would be to attach your files and then save and then refresh but there's no way sort of within the browser. I don't think there's any way to do that in the Chrome DevTools. A feature that you might want to look into is CSS Auto Refresh. Have you heard of that before? No. So it's a mixture of a grunt or gulp plug-in as well as a browser plug-in. Whenever you make changes within your local file system it will detect those and it will stream the changes to your site without actually reloading it. If you're building a React website you can actually go one step further and your code will update while keeping the state of your program intact. So while you're in the middle of your application and you're seeing it at a certain point you can make changes to your React components and they'll auto reload without changing the point that your application is in. That is React component autoloading. I can't remember the name of the feature. There's loads of cool stuff in different DevTools that you can get. Okay, cool. Thank you. CSS autoloader, I think. If you Google those terms you should get to it. If you're throwing gulp and grunt as well you'll definitely get it. Any more questions? Am I missing a hand? I think that's everyone. I've got a quick question for everyone actually. Can you put your hand up if you're currently using Chrome DevTools? All right. It's popular. Okie dokie. Thank you very much, Katie. That was a great talk. I really appreciate that.


So let's talk a little bit about environmental contaminants, what a contaminant is, and how we sort of separate the study of contaminants. Basically, we have three groups here that we're going to talk about, transport, fate, and exposure, and define what these terms are. First of all, let's talk about being a living being. Living beings interact with our environment, and indeed most of our primary bodily functions are about interacting with the environment. As a human, you're regularly breathing, you're regularly eating, so we have our respiration from breathing, we have ingestion, we're eating things, we have perspiration, where we're exchanging temperature and water with the environment through our skin. We have excretion and secretion, where we release different chemicals into the environment and or get rid of our wastes. And we also have the ability to add things through topical absorption, in other words, we can absorb certain things in through our skin. And so we're regularly exchanging things with our environment. So most of our functions involve sort of exchanging different substances with the environment. So substances that we use for survival are often called nutrients, that were nutrition, anything that we sort of use that helps us and improves our survival. And a substance that doesn't improve our survival but that actually damages some of our bodily functions is what we call toxic, something that damages bodily functions. Now I will point out that toxicity is a matter of amount. Anything, if you can think about anything that's, well, anything that's harmless, let's say we drink water regularly, we breathe in air regularly. Anything that we actually ingest into our bodies, if it's in the wrong amount, in the wrong place, there's a possibility for too much of it in the wrong place that it can be damaging. For example, we know that you breathe in a little bit of water vapor regularly in the air, but if you fill your lungs with liquid water, you drown, that's damaging. So liquid water can be toxic. In fact, even if you drink too much water, that can be toxic as it can create an imbalance in your body. Things like eating a banana.  But if you eat too many bananas, your body will actually reject it because there will be an imbalance in the amount of different ions in your system and it will be bad for your body. So too much of anything can be toxic at a certain level. On the same token, a small enough amount of anything can be harmless. Your body can usually repair it even if it creates damage. Your body can repair that damage in a very short period of time. So we are regularly breathing in things that will be toxic in large enough amounts, and sometimes they're even beneficial if they're small enough, but again, too much of it's bad. Arsenic or mercury, or think of anything that you consider to be a poison, there's probably some small, tiny amount of that in your body at any one time, and your body can easily deal with that. So the key idea here is that this idea of toxic or toxicity, how toxic something is, obviously depends on how much of the thing there is, how much of this substance there is. And a substance that is toxic or actually a substance that when mixed with other substances increases the toxicity of the overall mixture is called a contaminant. So it's going to increase if you have something harmful or even beneficial, for example, if you're breathing in air or drinking your water, and it's mixed in with something that is toxic, that thing is called a contaminant. And there's typically three ways that we interact as humans. We breathe air, air is breathable, we drink potable water, and we ingest edible food. Well, any of those things can be contaminated or made more toxic than when we intend by the addition of something that damages our body. Contaminants all have a source. They all have something, some place where they get into the environment. That source could be a natural source or the source could be something man-made where we create something that has a different purpose but ultimately ends up being toxic if mixed in to our food or our air or our water. Usually we separate these into two types of things. We can call them a point source. We can identify a point source. A point source is something like a volcano or a leaking gas tank, one single location in space that is generating or has generated some amount of contaminant. If instead we're gathering the contaminant from lots of different locations, this is what we call a non-point source or NPS, and that would be the example of maybe there's a little bit of something that's bad throughout the soil, but there's not a lot of it, but then the water flows through the soil and as that water does it gathers up little bits of pollution from different points. That's true with things like pesticides where we spray them over large areas and then they can be accumulated into a water source or in smoke that's in the air that there's lots of different locations that maybe it has come from. If you have a large forest fire burning, for example, that would probably be more of a non-point source. So once we have contaminants in the environment and they've originated, they've gotten into the environment, there are three sort of methods or three pieces that we care about to study. And these methods line up sort of with our standard sciences. The first method is transport. The contaminants are going to move from their source and eventually end up in contact with a living being. In our case we care most frequently, we care about humans. So transport is the movement of the contaminant, and usually that movement is governed by physical processes. For example, fluid mechanics applied to water or air or the primary processes. Some motion of solids actually occurs too. You can have pollutants that are in solid form that move along with water or fall or drift in the air. But transport processes are one of the first major things that we can sort of study when we're talking about environmental contaminants. How do the contaminants move from point A to point B? The second piece here is the fate. Fate is basically chemical processes. It's really what happens in how the chemical or the contaminant changes over time as a result of interacting with other substances or other contaminants or maybe non-contaminants, just other substances. Again, it evolves chemistry and usually what happens is either the chemical becomes more or less toxic by combining it away. For example, salt and ACL is sodium and chloride. Well, salt itself is harmless and actually beneficial. But chlorine, if the salt is broken apart to the chlorine ion, the chlorine ion can be very damaging. Well, the fate of a chemical or a contaminant in the environment will change whether or not we have to be concerned about it. It might become more toxic. It may become less toxic. It might also become less inclined to move. It might stick onto something and stay there and be trapped more or less permanently and stop moving. So we are concerned about the fate of chemicals because we know whether they're being removed or added to our system that we're concerned about. And then the final piece that we're interested in is exposure. An exposure is basically a description of the toxic interactions between the contaminant and a person or some other biological entity. And these, again, are pretty much biological processes. And they depend upon a number of different things. They'll depend on usually something about how long you're exposed and also depending upon the toxicity. So basically exposure is an interaction of the contaminant with the biology and we measure it by talking about how long you've been exposed to the chemical and how much chemical you've been exposed to and the mechanisms whereby you are exposed. For example, if you touch something, you're going to have a very different kind of response to that as opposed to if you breathe something or if you ingest something. So those three processes, the main processes you should remember from here, transport, basically the physics of the environment, fate, basically chemistry of the environment and the contaminant, and finally exposure, basically the biology of the environmental contaminant.


We'll come to order. I want to welcome the panel of briefers today and the NRC staff members of the public who are In the room or listening remotely the purpose of today's meeting is to provide the Commission Opportunity to hear about human capital activities and an update on equal employment opportunity And we'll begin with presentations from the staff Following that we'll hear from Maria Schwartz chapter executive vice president chief steward of the National Treasury Employees Union for Remarks I look forward to today's presentation and the ensuing discussions with members of the Commission about these about these programs Vic Morning, Mr. Chairman It is a pleasure first to brief you this morning on our human capital programs and equal employment opportunity The agency is faced with challenging times But we have a firm foundation and our ongoing mission to protect the public health and safety and the environment But it's through the skill and expertise of each and every employee here at NRC that enables us to meet our mission Many of the actions that we've taken and that you'll hear about today Continue to put us in a good position as we move into the future These include managing external hiring Aligning people and their skills to our jobs and accelerating attrition through early out buyouts These efforts amplify the importance of our human capital programs and How they play in our agency success and why it's critical that we continue to invest in people through these programs At this morning's meeting you'll hear about some of the most most important human capital and leadership topics that this agency Will continue to focus on in addition You'll get an update on the status of our civil rights program as well as our diversity and inclusion efforts During these times of change We also need to ensure that we do not lose sight of the great progress that the agency's made over the years and Enhancing our diversity and opportunities for all NRC employees and that we continue to invest in these areas So with that I'm happy to turn it over to Miriam Cohen our chief human capital officer As we briefed you over the years one thing that remains constant is that we continue to be in a period of change As we move into the future. We know that that pace of change will only continue to increase Our challenge is to embrace these changes and the possibility they present In looking at the nrc workforce, we continue to be in a period of contraction We expect to begin fiscal year 17 with approximately 3348 employees on board This represents a reduction of 17 percent from the high of 4,800 employees in 2010 We're able to reach these numbers as a result of our efforts this fiscal year To increase voluntary attrition through an early out buyout program Where 86 employees will be departing before the end of the fiscal year As these employees depart it is critical that we capture the knowledge and their expertise of these employees So that we can prepare remaining staff to take on these new responsibilities Given this starting point in fiscal year 17 We expect that the agency will need to conduct limited hiring in 17 To ensure we have a sufficient and skilled bench bench strength for key positions such as resident inspectors During these times we must also focus on maintaining high levels of employee engagement The nrc has always been considered a high performing organization And a large reason for these high level of engagement is because employees feel a strong connection to our mission of Protecting people and the environment For us to continue to meet our mission needs our human capital programs must continue to evolve in recognition of where the agency is going in the future