Patriot Prime Reviews is a channel for adult collectors and may not be suitable for children under 13 years of age. Viewer discretion is advised. Hey, what's going on guys? Patriot Prime here once again with another Quick Looks video. And quick reminder, Patriot Prime Reviews is sponsored by ToyHacks.com. So if you're in the mood to enhance your Transformer figures with some great looking decals or some new weaponry, make sure and check out ToyHacks.com and tell them Patriot Prime sent you. Now, on to the video. And the subject of this video is the brand new Transformers Kingdom War for Cybertron Trilogy, Golden Disc Collection Mutant Tigertron. My God, I almost passed out saying all that. So here is a quick look at the packaging. You've got part of the Golden Disc right there. Transformers on the side, back of the box, you see Mutant Tigertron and haul his glory in Tiger and Robot mode. Now, of course, if you have the other figures in the Golden Disc Collection, I have just two others right now. You can combine the boxes to form the Golden Disc if you so choose. Ooh, it's a circle. So now, without further ado, let's get Mutant Tigertron opened up out of this packaging and check him out. And welcome to Patriot Prime Reviews. Now, once you get Mutant Tigertron all opened up and out of the packaging, you'll see he does come with a sheet of instructions, his gut gun, and his tail. And of course, Mutant Tigertron himself. So let me go ahead and get Mutant Tigertron all armed up and we'll take a closer look at him. Now, Mutant Tigertron here is getting the quick looks treatment because he is just a straight up repaint of Kingdom Tigertron, except with a brand new face sculpt. It's not a new head sculpt, just a face sculpt. And we'll go into that more here in a bit. But what's really cool about this figure is this guy is based upon the original Beast Wars packaging art. Even though Tigertron was a white figure, the packaging art depicted Tigertron as orange and with this monster or mutant head sculpt. So I think that's pretty cool that we're getting a figure based upon that box art, just like we had with Buzzworthy Black Arachnia. Now they did use this same head sculpt though a little smaller for Kingdom Shadow Panther. Another figure that I haven't taken out of the packaging yet that I've had for weeks, need to do a quick looks on him. But for now, let's focus on Mutant Tigertron. And here he is next to Kingdom Tigertron. So if you want to see a full review of this mold, check out my Kingdom Tigertron review right there in the link above. Now as I said, the figures are exactly the same, aside from the paint applications and the head sculpt. And take a look at the head sculpt, or excuse me, face sculpt as I said earlier. If you look at them from the side, you can see the rear of the head is molded exactly the same. So what they've done is they just took the face off Tigertron and applied this mutant face here. Now taking a closer look at this mutant head, I love the looks of it. It just looks really creepy, especially with his gold eyes. Now my head is just a little loose. I mean it's nothing I can't deal with but a drop of floor cleaner right there in that gap. Let it sit 24 hours, I'm good to go. Now I do wish the face sculpt had some more paint applications, especially there on the tusks, because that was shown in the box art. Everything else is exactly the same as Tigertron, the weapons, the tail, even the paint application on the weapons the same, same type of pink on the guts. But I love the details on mutant Tigertron's tiger details, and we'll take a look at that right now. In tagger mode, mutant Tigertron looks great, aside from the green here on top of the neck and the green below. I wish they could have fixed that, of course that was a complaint of mine with regular Tigertron as well. But looking at these two together, look at the difference in the paint applications, especially on the face. The face on mutant Tigertron looks amazing and I love the paint applications on the teeth. That looks wild, they did a great job on mutant Tigertron. Eyes look about the same with the mouth, I just wish they painted the tongue. The same, I think I had that complaint with Tigertron as well. Man, that looks so good and I love the sculpted details on these figures, they look stunning. A perfect figure to have for the start of Year of the Tiger. So, the Transformers War for Cybertron Trilogy Amazon Exclusive Golden Disc Collection Mutant Tigertron turned out to be a pretty cool figure. The Kingdom Tigertron ended up being in my top five for 2021 and all my praises for that figure carry over to mutant Tigertron here. I especially like his history being that he was designed after the old Beast Wars package art. So is this repaint worth picking up? Absolutely. And to my knowledge, he's still available on Amazon.com and I'll put a link where you can get him in the description of this video. Now guys, if you enjoyed the video, don't forget to like, don't forget to subscribe and don't forget to click that bell icon to get notified when I upload new reviews. Also, if you're in any position to help out the channel, I do offer channel memberships here on YouTube and I want to give a huge shout out to my current channel members because it's your support that helps keep this channel growing. Once again guys, this is Patriot Prime signing out. Hoorah!


Yes, yeah, welcome to the second session a developer tool no longer a phrase that was used to bully me in the schoolyard It's a key part of web development It's difficult to imagine how we survive through a period where you know all we could do is play a game of higher or lower with With alerts I mean that's how I first started debugging and browser error messages were you know at best in distribution indistinguishable From stoner philosophy, you know things like undefined is not defined Yeah, thank you browser Too many arguments just everyone everyone chill out But what of the future, you know, where where can we can we take this? Well, I'm joined by this panel of developers developing developer tools with developer tools for developers They are Kenneth Ausenberg started remote debug an effort to unify remote debugging tools Henry Berger. Yes, I'm going to pronounce your name wrong already Sorry founder of no flow the Kickstarter based visual flow based web development environment We've got NJ the instigator of brackets Adobe's code editor built off the back of web technologies Representing the browsers. We've got Joe Walker who's working on Mozilla's new and shiny Developer tools. We've got Pavel Feldman who is working on the chrome developer tools and to start us off with some words About things a man who needs no introduction Okay big up to my chrome boy, it's Paul Irish So I want to give you a brief overview of kind of where we're at and web developer tooling If we can get my slides up, we'll be good There's been a lot of iteration movement lately, but I wanted to first kind of bring us back until I kind of the history Just a moment. It's not it's not me That's that computer. Yeah Oh Yeah, it's right. It's right Love it. All right. Thank you guys I'm gonna give you a quick overview of where we're at with propel for tooling But to do that I want to head back and tie down in the history Back in 2006 Hixxie the editor of HTML5 spec He was kind of testing out how HTML5 HTML is parsed and he kind of he He wrote a tool and this tool came out to be First he was like Diagramming how Dom is constructed based off of HTML and he's like, you know, I can create this live Dom viewer And so here is the Dom view of of what we've constructed with you know in this case Just a quick p-tag, right? That's our our Dom and then it just so happened that only three months later This guy basically debuted just three months later Joe Hewitt released these initial screenshots of firebug kind of Leaning us to this the angle brackets representation of the Dom that we know and love and see every day Now I do want to shout out to the more og The og developer tool. This is Venkman the JavaScript debugger inside of Firefox. This debuted around 2001 So it's really kind of the first thing but since then there's been a lot of movement So fast-forwarding now. I want to show you where some of the developer tools are these days So first over on Firefox. There's been some fantastic things happening I'm going to show a quick preview of what things look like with the WebGL shader editor. So we have here is a WebGL scene and we are live editing a GLSL shader Kind of changing some dimensions of this one of the really nice aspects I like about this editing environment is As we live edit it and make some mistakes. We actually get feedback on invalid validation errors that are cause that we are triggering in the GLSL Now moving outside of that There's been a lot of fantastic work This is a screen screenshot of some new upcoming work from the memory tooling inside of Firefox developer tools Keep snap shotting and showing what what's going on inside of the memory you might have seen this This is a nice visualization of what's happening with CSS transforms really fantastic to understand how exactly the original shape is being modified through transforms Also, this is fantastic work. We're going to stop here at a break point But we understand the various scopes that are active and see for instance how a certain variable may have been available in a Previous scope, but it's now been overridden. So it gets striked out And then this was a fantastic experiment That I don't think is landed yet, but I like where it's going. It's audio break points. So basically kind of like Hearing when different points in your code get hit. I really like this approach All right, so over on Chrome DevTools. There's been some fun stuff happening You might have seen screen casting. So this is An effort to say hey we can actually take what's on the screen of your device and show it inside of your desktop browser not only can we show it but Also have interactable. So if because typing on a phone is pretty slow We can just type on your keyboard click around and all those clicks will be translated into touches onto the device Then a few more good stuff This is a flame chart visualization of the JavaScript profiler giving you good insight as far as how across time Your JavaScript is executing understanding. What is sort of the pattern and rhythm of function execution inside the browser? This is Device emulation so emulating not only screen resolution, but device pixel ratio the viewport Configuration touch events and doing that all right inside of desktop so that we don't actually have to even go over to the Device and this is a new upcoming feature a synchronous call stacks So we can actually see from where we are where we how we got there across an X HR and across a set time out So we can trace all the way back in that full line The IE team has been trucking ever since the new release of their F12 DevTools They've done some fantastic work This is a quick screenshot of where the new network tool is really good looking waterfall and a lot of detail in there, too also new to the F12 tools is Proper memory heap snapshotting and memory profiling so here we can take two snapshots. We can compare them see what's going on And one of my personal favorites is their new UI responsiveness Panel which gives a lot of insight as far as the operations that are happening inside the browser How that relates to frame rate so it can help identify how exactly we can improve the performance of the page and reduce the jank So Kenneth here from the remote debug project Showed this fantastic demo over full frontal Remote debug is a fantastic way to basically bridge the gap between different browsers their run times and their browser and their browser developer tools So we actually have chromes developer tools interacting with the Firefox browser Not only can we you know inspect elements, but also change the DOM of Firefox using the chromes developer tools and there's a lot more where that came from NJ from brackets. I wanted to show this quick and fantastic demo Brackets has long been doing kind of live CSS development Where you can just change things on a fly, but this is the live HTML development. So as you know, there isn't a one-to-one mapping Mapping HTML to DOM is not a trivial thing But here we are moving around our HTML our DOM is updating We do a quick view into the CSS that applies for this age to and make those changes on the fly make it hot pink because that's the right way to go All right another fantastic thing inside of Brackets is the the CS JavaScript debugger really powerful work So here we actually see a log across our code of how it actually executed we had four calls that entered into the fetch and We can also see of those four calls that entered in the fetch two of them went into the air handler And then we can actually see oh we went into the air handler. What was in the air object? We can retroactively look inside of the air object and inspect that situation Henry from no flow is here and I want to quickly show what no flow looks like it's a new kind of flow-based visual paradigm for For writing Applications to see if we can get that video back up barely But it kind of turns the the idea that of looking at code on its head and Introduces a much more kind of revolutionary idea for building together rich experiences All right, so beyond kind of what's represented here on the stage There's a few other things that are happening inside the ecosystem of browser developer tooling I want to quickly show the trace to GL project came out a little while ago But said you know we're just gonna log absolutely all the operations that are happening in this case We are we are logging not all this but we inspect retroactively what happened here And we can actually see these if statements They're in red down at the bottom because these conditions were not met so visually we see oh these all failed We skip those conditions and we skip the associated context blocks With them spy JS is a similar kind of thing. This has since been acquired by By the web storm and kind of consumed by the web storm IDE But over on the left-hand side We have all the run loops for different events And then the call sacks that they triggered and then we can identify how exactly we map those call sacks into the code Really nice usable experience This is a project called ear horn, but you might have seen a similar thing from the light table IDE Here we map in the runtime information of what's happening inside the browser and bringing that right into the code So we can see on mouse move all these you know our client extra client wise live updating We can get a good idea of how this While looking at code what the state is in the browser is a quick shot of Looking at per statement based JavaScript profiling heat map so we can see by at the statement level or even expression level Where our code is most expensive? Adobe's been doing some fantastic work inside the browser. This is an experiment for a GUI for editing CSS shapes so we can move around inside the GUI and we update the CSS shape polygon that's defined underneath it and we've seen a fantastic amount of Innovation when it comes to all the JavaScript frameworks that are creating better tooling for themselves So this is a react Chrome extension on the it looks like kind of standard dev tools, but it's actually completely representing their kind of application state of the world and and all its properties and Similarly, this is embers Chrome extension They have a fantastic view of all the promises that are active and fulfilled inside the browser And this is inspiring a lot of browsers themselves as far as how we can better supply good information around some of these new things like Promises inside the browser So to me like what is the role of developer tools these days? You know allowing us to develop fast at the speed of our thinking letting us go as quick as we want Making debugging suck less none of us want to be debugging Hopefully tools can help us avoid the situation that when we are debugging But when we when we're there it should be easier for us and web development is hard Tools can help keep us on the golden path make sure that things are performant make sure that things work great across devices and Tools can help fill in the gaps of our of the knowledge that we don't have and the things that we forgot So I think developing for the web for JavaScript can be better Everyone on this on the stage believes that has been developing tools and I'm excited to see what's next. Thanks Yeah, so Paul's gonna duck out now because he's he's got the dreaded illness. I can hear a few people in the room How so we've got his stunt double pavils gonna gonna fill in on the panel for him I yeah, I can hear a few people coughing. I had it last week as well I've managed to trace it back talking to some of the employees of GDS who took a trip up to Newcastle And I hear that that's where that's where this illness first like came from so it's another valuable addition to the world from Newcastle thanks for that guys. I'm kidding. Of course. I love Greg's right first question Before we start the These guys are developing the tools that are supposed to make your lives easier So if you if they say anything you disagree with or there's anything you want to elaborate on then, you know use on slide If that's not working for you, please just raise your hand and I'll I'll pick you out for a question The first question comes from Sebastian Kiwi was was Sebastian over there. We got Sebastian microphone In the future, can we expect to do all of our development within the browser? Will browser dev tools become our full ID or should we or should browsers concentrate on interfacing better with IDs? So Macromedia brought a rendering engine to their ID 17 years ago But now it feels like browsers are bringing IDs to the rendering engine and now we have code editors that are written Entirely in browser technology Joe.  What do you see Firefox as DevTools becoming a full IDE? So I think nobody would like us to say you're not allowed to use sublime anymore Or whatever your editor is or brackets or brackets. Yeah, so that's not gonna happen On the other hand, there are things that the browser knows About how it's laying stuff out and what values are inside the JavaScript engine that you can only know by being a JavaScript And by being a browser So there are times when you will want to edit stuff inside of browser as well So the answer I think is both Enjoy you your answer is also a browser, right? I wouldn't call it exactly that I think our goal is to tie more directly close more close to the browser. I mean exactly what Joe said Which is that there are things that only the browser knows about and browsers in my opinion should focus on what they do really? Well, which is inspection right there inspecting the runtime they can tell us all this information that information I think for quick stuff or you know when you're really focused on the browser It makes sense to have tools in the browser and obviously, you know, that's a great workflow for that But there's times when you what you're really focused on is your coding, right? You're not necessarily you don't want to live in the browser when what you're doing is writing a bunch of code And you're just trying to get stuff working and you're iterating rapidly on your code The browser isn't maybe necessarily the best environment for that So I think what we should really be focusing on for that aspect is to make it so that the browser information is exposed To code editors and other kinds of tooling, you know no-flow whatever so that we can provide a much richer development experience Outside of the browser as well working with the browser. I agree with you That's the whole reason why I started remote debug and Joe. I actually disagree with you Because because the browser today has a lot of information that is not exposed to the outer world But I think I think that's a problem of the state way and right now Because frankly what NJ is building with brackets is that he would love to have that information available to Write better JavaScript debugging get information about the dawn the network stack all the kind of thing I assume you would love to to pipe them into your editor, but he's not allowed because he cannot get the information So I think the responsibility of the browser windows is to expose that information And that's why I think we need to start an effort like remote debug to unify and build the interface talk to our browsers So other tooling vendors like brackets telemetry benchmarking tools can start accessing that information that right now only privileged tools like Building if tools and browsers has access to so there's two different things there A Firefox to the top of tools work remotely they log in through a TCP sockets I know all of that stuff you can get out as well as I can so we're not keeping anything private at all And there's a self-documenting API to get a list of everything that we are talking to There's another second part to it and That's I'm sure there's going to be another question on this which is should there be a standard protocol by which we debate Do we want to We'll get there It's the browser is a Because it has it has the runtime all built in is it in a better position to do things I even even with code like like all complete I mean I watch games developers work and it seems to me that they just write you know a comment to do Make half-life free and then from then they just hit the tab key You're the best games developers are also the best at track and field the arcade game Is the browser in a better position to do stuff like that? Yes, I mean so We've got some stuff that does fairly deep analysis of JavaScript now and we'll do some fairly clever completions That is just landing I mean that to be honest most of that technology is static which brackets could do just as easily But I think there is actually value and we did some experiments early on we haven't really done it in brackets around Essentially querying the runtime from right now like if you're stopped at a breakpoint you just ask it what's available now And there is more stuff there And again we could do that from a code as well as long as it's exposed to the runtime I guess the other point I would make I don't know if I'm getting away from what you're asking But is that you also want to write other kinds of code beyond besides browser code often and so having one environment for hey I'm gonna do browser stuff and now I'm gonna do my node stuff and I'm gonna do my Ruby stuff or whatever seems a little funny Of course, if you were just doing JavaScript, maybe you could retarget the in browser developer tools to know it I mean you can already do that with no inspector and things like that But I think you know there's room for lots of different kinds of tools people have lots of different workflows They have to work with local command line tools. They do this and that In terms of you know The browser sort of has its role as a kind of sandbox place where you do browser stuff And I think that again I think the solution is you have both kinds of tools and they talk to each other Yeah, like I I don't think like having a contextual diff tool with building to the browser It's ruling out having another tool like your editor But the kind of problem I think by having really specialized browser tools for each browser said I said developer I need to learn a new diff tool when I'm targeting another browser, so that means my workflow is kind of broken because If I develop a Chrome, I need to use learn how to use Chrome diff tools navigate this Source code set breakpoints if I do the firefox I need to learn that tool And to me that's just this kind of my productivity So there's a lot we can do to help there So you'll notice that in firefox dev tools now the key sequences are the same as in chromes In our box model highlighter that's just landed then all of the colors to denote borders Paddings etc. They're the same colors and I ease exactly the same as well So the stuff we can do to help there if I don't I think there are many reasons why just saying there should be only one tool Is hard, but that's that old question again. Yeah, we're gonna come back to Before we move on to the next question. I know we've got questions on the floor from everyone's favorite shaver Remington sharp On on the point of kind of you know working with firefox dev tools working with chrome dev tools working with IE tools so I I haven't used the F 12 tools yet and when I look at the That the you are a responsiveness I wonder whether or not that's gonna give me more insight to the responsiveness of my web page across all the browsers Or if it's just for that browser and that's something I'm unsure if I I mean I'm quite comfortable in Chrome And I can navigate DevTools really well, but am I? Debugging for Chrome or am I debugging across in most cases bugs? Yeah sure before things like performance and responsiveness I've no clue and do we need all these different tools for each to target each browser? That actually leads into our next question, so I'm going to get her Shane Hudson to read it out because it kind of expands on that So you rewrote my question for this Initiatives like remote debug look to unify developer tools. Is this a good thing or could it have the diversity of tool? That's so that's this question So some people Would like to just have one tool and Obviously many tools are being created it and there's a There's a ton of ways in which our tools are specific to what we're doing so There's new APIs that we're experimenting with we need developer tools for that and we wouldn't expect the Chrome Team to provide us with those tools so and there are things you know There are optimization techniques that will work on one browser that won't work on another You know, I think there are good reasons why we have an obligation To tell you about the stuff that is in our browser that we are the only people that can tell you about it Is us we have that an obligation to do that and so that's what we're doing Yeah, so on that If there was a standard way to get that info out of the browsers then Some third-party interested in building that kind of profiling tools Specifically given task could easily go and grab the same data feed feed the same HTML JavaScript Whatever to IE Firefox Chrome Grab all of those statistics and show okay, you know Here's how this and this thing performs. Yeah in that browser. Yeah, and right now. That's something we don't really have We definitely don't want to kill innovation I mean, it's great that you guys are doing different things you guys are doing different things But as you mentioned just now too, you know, you're trying to make some things the same right because you want the guys to be Same and for just basic functionality I want to set a break point when do this I want to do that even the more inspection stuff It seems like it would be valuable to have at least at least even at the like highest shallowest level Some kind of just basically common protocol just to make it so that we can talk the same way And then you know this browser might have certain extensions for the stuff that it does and you know The browser might have different extensions for those things But on places where there really doesn't need to be a huge difference at least in the core functionality Why not? Well, I would say Joe first of all, I don't I don't just want one tool I really like that we have multiple tools available. Okay, but as a developer I don't want to swap between multiple tools just because I'm targeting another browser I don't want to change my workflow as a developer while I'm crafting a deep bug in my application and learn new workflows Because I'm targeting multiple browsers and that's the reality as front-end developers today Is that we have a bunch of different browser specific tools that we need to learn and it's counterproductive so my hope is that Your workflow isn't that different, you know setting a breakpoint, you know that kind of thing is basically very similar So I'm hoping but why why do I need to do it twice once in five of the tools and now One in chrome Right, so so two different use cases here. There's what brackets are trying to do which is To log into our DevTools celebrate points inspect the variables that sort of thing. That's one level of difficulty There's a whole different level of difficulty, which is make Chrome DevTools work on against Firefox I know that's that's a prototype of there is a massive massive difference between those two and You know what you're getting into trying to do that is all sorts of complicated problems about object lifetime in the browser And you know, etc. There's a multitude of problems. That's simple Now as far as the the case for simple debug goes so I mean just think about writing an add-on for a browser, right? So you we started off with you know a Firefox add-ons Which will do absolutely anything and then there's a new API that's safer that comes on top of that and You know, then it looks like we're in a state where maybe we could have the the Chrome API and the Firefox jetpack API there's some similarity there. Maybe we can extract that standard that feels like with grease monkey Right, that feels like he lets us right that that that kind of approach of you know giving people what they want You know everything Filtering it down to what they need standardizing it that feels like a good approach And I'm I'm for that kind of process But it's hard is there So it seems like we're all in agreement. So it's boring, right? We need to compete to innovate and nobody's taking that away Remy, we're sorry 60 FPS is going to be different on Firefox from Chrome You need to use different timelines. You'll use IE's timeline at least for now because those pipelines are entirely different The idea so you won't see with the Firefox tool So if you are going for a high-tech if you are going for performance You need to stick with the tools for the browser as of today now talking about the baseline that we've all Discussed for a single ID or whatever that will use that baseline. I think that the ball is on your side at this moment Most or all of the browsers are exposing their protocols as of today. They are different if you try and bridge them on your side and Prove that there is a value on bridging them and talking to multiple browsers There will be an incentive for us to standardize Otherwise as browser vendors who would always want to innovate first and standardize later Kind of dude this this kind of standardization effort that you're doing Is this something that you see going to a standard body such as the W3 or the WG? Well, well, we've been discussing that And I think it's too early because frankly right now. We don't know how to build for the way We don't know how to build components. We don't know how to build build the tools I think what we need to start and agreeing upon is the baseline like is our remote debug Is that going to use HTTP? Is it a bit socket? What what is the very fundamental protocol and then we can discuss all the API details? Like how is the Firefox API? How is the Chrome API? But the problem is like if you are if you know not a diff tool developer You want to interface with the browser that is so goddamn hot and and what I see when I look at what visual studio Or adobe are doing and then they're sitting and inventing ways to to do Instrumentation to extract information out of the web app so they can protect that information putting it into into the editors And frankly, I think that's a complete waste of time because that's the responsibility of the browser windows You guys are building the platform you should enable the ecosystem of tooling vendors We have out there to build tools for the web right now You only allow yourself to go for the web and and I think that's not good enough So can I suggest a way forward and that the way forward here is that we start off with something like a JavaScript API? Which allows you to do debugging in a browser whether that's remotely whether it's from one web page to another I mean that we pretty cool to write a debugger in a web page to look at the other web pages security issues obviously Ignore the protocol to start off with do it by a JavaScript API That's the way forward and that is a what that's something that you can build on bit by bit, but that's gonna take time On the on the related subject the next question from a Remy sharp again Remy a microphone Can we just wire Remy up So my question was rewritten as well I just made them more extreme to be more interesting Currently features launch before they have DevTool support e.g. Promises service and events web audio and so on is as fair to developers should we be ensuring We're developing features that are inherently debuggable. I don't actually agree with the question Well It Experiments come before standards right it has to and that's the only way we're making progress. So I it should be debuggable But I want to be able to get in there and Debug it whilst the browsers catch up with me as a developer So so you just answered your own question. So that's well, no service centers vent is a really simple example We've got tools for the debugging web sockets. We don't have tools to debugging service events Is that It's it's hard for us to go ahead and debug that and why aren't browsers making that easier for us Which is that question? I don't think we have a Well-established process of debuggability for new features We try to have everything debuggable by the time it leaves experiment or is no longer behind a flag so Shadow DOM is probably a good example that Shadow don't appear debuggability was there also behind a flag and Promises are already there, but there's no built-in support for them yet. We're working on it. So for us the measure is Future heating stable. That's an absolute requirement for us But there's no sort of better process and it's an early driven by our customers So if you file bugs about lack of debuggability of experimental features it gains stars. We will definitely look into it The promises bit is really interesting because there's a huge thread in the in the spec discussion about promises where they They were saying we're not gonna have a done method that a lot of other promises have Because that method is just there for debugging and we shouldn't be putting things into the spec that I just there for debugging So something is a how are you looking to what's your plan for debugging things like promises? Is it something you're looking at? Yes So we've got this thing called tag stacks, which is that the thing that you see in Chrome for looking back through async things I Think it'd be good to have some way of listing all Promises that will have been unfulfilled in some way that will be extremely handy Yeah, we want we'd like to do this just I mean I mean our dev tools are written in JavaScript We'd like it for our own purposes if nothing else, you know We're working on it. I I don't know what more I can say than that So I Got a question more for the audience, I guess I given given all these tools We have like, you know variable watching break points who here still uses console.log as their first first bit of debugging I find and I do this as well and I find this crazy because just writing debugger is less characters And that would let you in inspector. It's like it's like shaving with a knife, you know When there's a perfectly good razor blade there for you, you know It's why do people why do we think people like ghetto debugging? Well, I think it's because you don't have to negative it navigate an interface, right? It's like I know the piece of information I want So we just put it in the log statement. I don't have to like go twirling through things, right? the flip side is You have to know in advance what you want So that's what's kind of the idea behind these he is and I think you know This is like what some of the other double stuff is doing and this kind of omniscient debugging thing That's been around I think it's been in the Java world for a while Is that you don't have to think in advance about what information you need you just get it and you can get it afterwards You just sort of use it and then you figure it out and I think that's a really powerful paradigm The problem is that it has to capture lots and lots of data So it'd be interesting to see that go farther another thing to remies point is and this is something thesis does and I think other Things to do is I think there's actually a lot of power in building debugging tools through instrumentation, right? Is that you instrument you instrument the JavaScript and you can you know like promises you could instrument the promises Library and figure that stuff out. So actually having like a common library for doing that kind of instrumentation for debugging Just purely in JavaScript without requiring browser support would be kind of nice and thesis has like the beginning of that It's like a generic instrumentation library. I think aliens are trying to contact us I won't is I wonder if it's entirely the UI thing. I mean it reminds me of a An argument I got into at school It was you know my sense of humor this but it was about urinals And I point out that the design floor of urinal is that they lend themselves to a certain amount of splash back And I said this is something we should fix and he said to me no no like if you don't get the splash back How can you tell you're pissing hard like a real man? And this is someone who doesn't enjoy being showered with his with his own effluent But he finds it affirms his masculinity and it is that what we're seeing with with console.log is You know Like yeah, I'm just using the bare minimum of the tools to prove I'm a great coder I'm not going to use all of the you know, it's proving. I'm not a good coder if I have to use all the browser's help I'm gonna stop using console.log. I don't know I don't know what this console.log thing is you know, there's alert, right? Maybe that's a good time to move on to the oh no, we've got a question in the audience It's the element of asynchronousity. So it's sometimes it's quite hard to know when what all the things are triggered in So if you've got events and things like that and we find that Often that is just makes it easier to see the flow in the sequence of things So maybe it's the element of everything's it why a lot of things are in synchronous in the browser And that it's hard to visualize that and reason about that Is there a way to make that better in the tools? Would it would it be nice to have kind of this map where you can see That's flow in the browser. I don't know I mean that is an interesting thing about the flow based approach I mean there's been flow based programming languages for a long time But it's kind of interesting that we haven't seen it for javascript and when you're dealing with large amounts of asynchronous I mean, this is the number one force of bugs. I think we have in brackets in general It's just dealing with asynchronous crap, right? And so having visual ways to trace that stuff is really important. So the thesis does a little bit of that but One thought here. What if we enable on a platform level like new development approaches like this to surface rock, right? What if we allowed external developers To build new kind of tools for the platform. So it wouldn't only be the DevTools teams We do have a question about that coming up. So we'll say that now we got a question at the back Now it's just an extension on the same thing really I find for mobile development a lot of the time I don't want to jump into the DevTools because I'm working on a very fine grain something to do with focus and blur events or Touch start and various things like that and jumping into DevTools actually interrupts that flow So having being able to look back in as to what's happened in the last 10 seconds will be really useful So this is that kind of thing built in so DevTools just a snapshot of what has just happened Have any of you guys looked into omniscient? That's why I don't use debugger a lot of the time In the DevTools, have you guys thought about looking into that? Like capturing state So we Outside of DevTools tracing has this feature. It can record what's happening and it shows you a sliding window What's just Happen it is not traced into the content world. So we don't upgrade nodes and JavaScript there and In DevTools, we haven't started doing it We want to the next topic. We've got a question from Connell. Where are you? There are lots of deprecated apis and bad practices that browsers could detect and warn about How can tools guide developers towards better code without expecting Developers to run a specific profiler or manually interpret the results I really like firebug for this actually because it has always always visible a little error counter at the bottom And and knowing that other firebug users would see that sort of spurred me on I don't want errors on my page because imagine the shame of it, you know Is this a useful pattern? So yeah, one of the things that we are putting serious thought into doing is to splitting the web console in two So one part of it would be logging and one part of it would be JavaScript And then so we're putting lots and lots of extra warnings into the console at the moment There are there are all sorts of security things like they're at cause errors in there Etc And I think we should be having more of them and that basically encompasses what you're saying But it's going to make a complete mess of the web console if we do that. So we have two panels That's what we're doing Say that's what we're doing. That's what we're probably planning to do. We're you know, we've not Yeah, it's it's not it's not code yet. That's what the plan is We are not quite splitting the consoles, but we are also working on more warnings on Deprecations and not only deprecations, but the performance issues and potential bottlenecks for everything I would I would love to see some limping tools will into the diff tools that is that are contextual, right? So while the app is running, then it could detect. Hey, this api is being used to deprecate it DC assist like this of their hate you're doing something for that is causing jank That would be nice to have an ongoing checklist of seeing stuff, right instead of just a warning in a console Right. So one of the things we have, I think right now on firefox os is On top of the display on top of your web page you get a little a little thing floating over the top which tells you about javascript It tells you about jank tells you about that sort of thing. There's a bunch of little things that will do that So there's also a lot of things could be done using instrumenting codes We have a protocol api that allows installing a preprocessor that would instrument all the content javascript And chase it log it and do whatever you want with it So we expect a lot of innovation to come from there from the outside that would we analyze and promote the tool itself Is that shipping already in it is it is there for quite some time Do we see that users aren't We've got tools like timeline Chrome house as well are we seeing users use that or do we want to be in a better position where we want to tell people Hey, you have layout thrashing going on without them having to go to that and like say this is what layout thrashing is This is how you can find out where it's happening, but we know just from a small little test it is happening It wasn't the question. It was the answer, right? Yeah, can we have that and when can we have it? No, but I I think that is the solution to to proper bit performance better information to developers just like Why slow did it for for bit performance, right? That you had most of us who is just want to have a checklist to see hey, I need to have complete these 500 issues of what I have in my app and then I'm good, right? Yeah, we do want to Make timeline more popular. We want to draw attention to it and we will do that And you will see warnings Excellent, it's cool right We want the next question. This is from kyle simpson. Uh, was kyle over there my friend kyle All right, uh, so disclosure of bias a couple years ago I worked with jill walker on the firefox developer tools team. So You just have to keep that in mind when I ask these questions first Is what's stopping every browser From providing headless access and automation kind of like phantom js But for testing and processing and that it's not just javascript That's the entire stack with html and css but sort of headless into the tool So this shifts us away from what's happening in the browser to happening outside of browser Bubble Joe ship it So the very short answer to your question is nothing What's stopping us nothing? Um There's a fire question, which is what actually do you want From headless is this? Yeah, what's the what's the question behind it? I want phantom js, but I want it from the browser itself. I don't want to have some other project I want to be able to spin up kind of like a UI web view Okay, so it's testing Okay So yes, there is a slimer js, which is Basically this sort of thing. It's not a hundred percent headless. It's nearly headless It's kind of maybe here So Yes, I mean, that's as much as I can say. I mean, I'm kind of out of my depth here a bit because This is a lot of this the answer this question is kind of like deeper browser engineering than as DevTools engineering We've had new APIs Recently that look like they should make this a lot easier and I'm fairly sure that slimer is working on those APIs Um Yeah, we have a new version of web driver is implemented on top of the DevTools protocol So you can actually drive things in the browser and There's also a telemetry API that allows headless operation and that's actually how chrome team is Testing against regressions So whenever you have a content that you don't want to regress in scrolling You're using telemetry to implement a perf test for it. So it is there. It is publicly available You can use it, but it's not Center diced and it's chrome But I mean web driver is enough of a standard, right? I mean does does that inside firefox now Some internal firefox tests use that So that's becoming more of a cross browser standard Um, so, I mean, let me come back to your you know why headless You want to be able to run it without touching it as opposed to you don't want to see it, right? Because nearly headless is okay If if it's not a visual problem if what you want is automated testing you don't matter if the screen flicks briefly Right there's the testing side of it, but there's also a functionality side of it People use phantom js to spin up a headless browser that they can render screenshots from or things like that That's the sort of thing i'm talking about being able to In the build process spin up a tool for regression testing or pulling out rendering or Analyzing the way things are working all this And part of the problem really is is that phantom js is not you know, you think it's chrome or something But it's not you know, it's kind of chrome from a few years ago with some of the weird bits and minus that Yes, I think I think it would be nice if we were better at that I want to point out that developer tools actually do matter here because when you do that for the testing purposes A lot of times you want to extract information that would be available in developer tools As a part of those components because if this is a part of your test cycle You might want to audit the things that do not happen trace Right. Yeah. Yeah, so it should be a part of that idea. Yeah Well, is that something that remote evoke would be able to help if we had a headless version of of these browsers could could then I I see that as a natural extension, right? If we had a generic interface to the browser no matter if had this instance of chrome or safari Then we would be able to interface with the browser We would be able to take a tool like chrome telemetry And use it across browsers to do comparison of browser performance And it would enable a different generation of tools as I see it and things that we now do specific to phantom js and specific to slimer I just want to to interface with the browsers and VIP driver. It's not enough because VIP driver is focused only on automated testing I want to get the information about timeline events and all these other things that the browser currently has, right? We got a question from the audience over here This is more a user perspective kind of question, but we have window error being so flaky Is it possible for like the browsers for the dev tools when they record an error to actually like ping an endpoint somewhere which would So you would make specify ahead this on error ping My server with the error details in the stack trace So that way if there is a complete js failure due to the cause or some other unseen event that you would have an automated It's kind of the browser would tell you this and kind of give you user metrics and statistics So you want to get that information from the field or you want to be ping when you're running locally. I didn't get that No, so say say you've um You've um, we had an error where we put cross origin anonymous on google map script and basically google deployed a new version of maps Which completely broke all the JavaScript nothing could run so there was no error reporting No, nothing because the basic code said we don't want to run this because it's the security error So would it be possible for the browser to Actually ping so say if you had like a meta tag saying on error ping error reporting and basically you'll just send the stack trace Isn't there speak around this this is one of the things that that native people say Native is way better than the web at this. He's getting metrics on what the hell's going on out there We should be better at this Well this goes back to the point before about like do we do we build features that have debugging built into them? I mean we saw that that promises didn't but I think what you're referring to csp has As a specific feature for logging back. Yeah, do we need something like that for for error logging? A question from the audience Yeah, just sorry back to that What's actually your problem with window on error because as a guardian we do exactly what you say and we it works perfectly And we like say there's a cause error that wouldn't be reported on the map error So you'll never you'll never get that so basically you deploy the script when you've got the headers If the window on the error would never report to you you've had a cause error Yeah So it's something something to pipe what you would see as an error in console Yeah, the whole of your lint panel to redirect the whole of that lot back to you, you know That seems like I feel like there's there could be some privacy issue or something I you need to think about it I Of course the other front here So my question is what is it called to action so try to push it in the group But so far in both of those groups the tooling group and the performance group Somebody so far nobody was really interested going forward with this if you guys haven't and why just don't put a first version to gather What we all have there and try to draft the board can be standardized or cannot be standardized and start working on it I think we're just waiting for it to prove itself usable and user friendly And for now we're just innovating and moving rapidly there and So we just need time and we need more initiative from you On your side you're pushing for it That was my first way of pushing you Well, we're going to move on to our last question, which is a good question to end on and it's from rammy sharp again So we can get rammy a microphone strap it to him Okay, so I'd like to contribute to develop a tool. I would like contributing to develop tools to be made easier Um, not just adding a panel or tweaking Current between yeah tweaking functionality. How can I get involved and I had originally taxed on this Things like grease monkey made it very very easy to to hack the page and make it improve for me as the the the the visitor or the user or the developer I'd like to see that kind of like super low barrier of entry for all of the dev tools Except for apple because they don't play ball So what do we need if a developer wants to get involved in in chrome dev tools? What what can they do? We are not particularly good at that So if you want to contribute to core dev tools The entry bars fairly high because we are a part of blink Source tree So it's not good the extensions If I is not Rich enough for your needs, right and it's not reach for for a reason. We don't want people to fight for resources and break each other So, uh, we're just trying to get better at that and in both ways in contributing to core and Providing more richer extensions apis, but for now you get a Weakie or something you follow the instructions and you manage to plot a patch We feel a bit sorry for you But that's about it as of today So it's bad So we can do I mean I mean firefox you can hack anything on it. You know It's all javascript in our dev tools. So you there isn't a limit to what you can do the downside is next month it'll break We are trying to create some apis that are more standardized that won't break Um And we spent some time with the ember guys working out what they would like and we've done stuff too with angular to try and You know have custom extensions there um, if there's something that we're doing that you That is not doesn't help you then shout us and we'll thing is that's that's more kind of Like high level developer the experienced developer can do that kind of thing. I'm I'm talking about The grease monkey is a really good example people could just pick up a grease monkey script and install it for themselves to make I I make my banking site Readable using grease monkey. Yeah, I want to be able to do that with like dev tools I like being able to bump the font was a huge deal for me because I don't like tiny fonts and now Both firefox and chrome do it but before I had to tweak a style sheet, which was a little bit more of a area of entry It's kind of making that So you want a grease monkey script to plug into dev tools in effect that kind of sort of I'm really talking about the kind of the low barrier of entry to make it easy for anyone here so To to make their dev tools better Right. So when you want a better deployment for it or you want it for yourself for myself because yeah Until you kind of go right here's grease monkey access type access then. Yeah, it's going to be a complete cluster Yeah, but I'm talking about for the individual to be able to hack their own dev tool at all So what we For example, I wanted to fix things and made comps and make photoshop things and never anything work But when I wrote a grease monkey script and send people the link all of a sudden they saw the page change And basically interact with the change already. So a scriptable interface to the developer tools would allow me to do that as well We don't want to reinvent grease monkey But making it as easy to show where debugging stuff would look like or a tutorial how debugging works Yeah So one thing we're trying to do, um, this is a road and we're some way down this road What would be very cool is if you could simply Clone a repo on git which is our dev tools And you could now say in your browser. Don't look inside yourself look over there and it's all just tech files We're not I'm actually there's quite a few bits of that that work already like you can already say don't look inside yourself Look there. Um, it's not separate region. You can always do that with chrome today point to another folder Chrome has it for four couple of years, but It's not sort of getting traction. It uses it. It helps the adoption that helps Getting more contributors because it's easier to set up that environment and hack on depth tools But people don't use it for like on a regular basis. It's just too inconvenient Yeah, I think so It has been advertised Quite some when the remote debugging appeared because remote debugging was proved by the external front and running as a web Page externally, but we could we could do something like that Yeah, because that that's a big starting step being able to just say okay instead of loading up the internal dev tools Point is the the copy the icon and then I can start hacking you have a button in dev tools That's like fork dev tools and it spits all the code out for you and it's another directory and you can Well, and that is as important at a time I can see a lot of people have have extra questions But the very best of the people on this panel will be in the pub this evening the people who go home early don't really care about you But that brings us on to on to a break so you can Grab a coffee before the next session, which is build process, but thank you very much to the panelists


So, we have been discussing this online convex optimization problem, but then we saw that if we just to do follow the regularize reader for if follow the leader in some cases we may end up a bad regret we showed with an example when my function was linear. Then we showed that if you somehow regularize it things can be better and, but we have to choose our regularizers appropriately ok. So, for the case when we have my loss functions defined to be like this and when we use our regularizer to be what 1 by 8 r time norm of think there was a 2 here right, we showed that we get a simple update mechanism which was basically a gradient descent that you update your weights taking into account the gradients in each step and you will account your gradients in such a way that your weights will decrease according to the gradients not simply the gradients of eta times the gradient. So, based on that we had this simple online gradient descent algorithm which was like we started parameter eta positive u then we regularize with w 1 which is 0 vector then your update tool was w of s 1 u s w 2 minus eta times the t and what is this z t here the z t is the we say that this is the sub gradient computed at w t ok. And if the function f was differentiable then we say this is simply the derivative at that point in which case the derivative here is simply this z t here right and for this algorithm what is the bound we showed finally, we had for this setup we had shown that the regret with respect to n were upper bounded by. So, we had something like what was that t eta norm of u square plus summation t equals to 1 to t then norm of vector square is that correct there is a eta here ok.  After this what we did? We optimized this over eta because that eta was an input parameter and by appropriate choice of eta what is the final bound we got the best upper bound root over ok. Now, from this expression as you see the regret is dependent on the size of this gradient here right. Somehow if whatever you are choosing if this gradients have to be very large then your regret is also going to be large. So, that is why we assume that ok the gradients could be anything, but we ensured that they are bounded. Adversary cannot choose any arbitrary gradient it has to be related like this and with that we got this bound. So, it looks like to get a good bound one has to control this gradient levels. Now, we will see that this gradients can also be thought of of course, this is the property of a your function f, but we can now going to connect it to the lip sheet property of a of a function. So, now we are going to make a bit little bit due to and do some notations. So, we are going to call f is L lip sheet if if you take. So, I am going to assume this functions f are all real functions real valued functions. So, if you take the difference between this function f at the point x and y this should be upper bounded by and now you see that I have taken this to be real value function, but this real valued function takes argument to be vectors x and y could be any vector and if this is like for all x y and this L is your constant this does not depend on what is the value of x and y here. And now you see that I have written this x minus y and I am interested in some norm of this right. What is this how is this norm defined? Right now I am going to say f is L lip sheet with respect to norm and I am going to define this whatever this operator. Now right now just think it as an operator ok. This operator is this if you tell me this norm and you are going to say your function is L lip sheet with respect to that norm then this is what I mean this is the definition ok. Now, what is the norms we are interested in? In general if you have a x of p norm is defined as summation x i to the power p this whole to the power 1 by p ok. So, what is if p is equals to 1 we are going to call it as L 1 norm. How does L 1 norm look like? So, L 1 norm is like. So, it is simply going to be summation of absolute value of individual components ok. Now if you take suppose p equals to 2 this is called L 2 norm and how does this look like? This is the one and this is squared of this sorry just this right and this is the one we are which we are most familiar with right this is called L 2 norm. And in general any norm with this parameter p is defined to be this ok. And I mean we are going to denote a generic norm. So, I am when I say this I have here I am just intent to say this is a norm of vector x, but I have not clearly specified whether this is L 1 norm L 2 norm or pth norm ok. So, this is just to denote this is a norm with respect to some p and depending on what is that we are interested in we are going to say this is going to be L 1 norm or L 2 norm ok that is basically in this we are not specified the value of p depending on what is value of our p we will say p is 1 or 2. So, there is a notion of dual norm. So, this is a generic norm. So, if you give me a norm whatever x is dual norm I am going to define it as and I am going to substitute it as like this. So, take any generic norm that has been given to you ok. Now, I am going to define its dual norm how I am going to define its value is going to be max of this inner product this is clear what we mean by this over all w such that this happens. Suppose I am interested in finding the dual norm of L 1 then this guy is going to be simply L 1 here ok. And now if I am going to be interested in dual norm of L 2 in that case we have to take this to be with L 2 ok. So, if this is the generic definition of dual norm when you have given a general norm whatever it is ok. So, you can verify I am just leaving you if I have w z two things this can be always upper bounded as norm of w and norm of its dual norm. Suppose you should take inner product of two quantities w and z the first whatever the generic norm you have let us say this is L 1 norm then the second term is the dual of that L 1 norm. So, here the dual corresponds to what are the associated generic norm. So, if this guy is L 2 norm here when I say this is associated dual norm of L 2 ok. So, here you see that I can interchange w and z right. So, here I could write it as z and here I could write it as w in which case I am taking the generic norm with on w here and its dual norm on z here ok. So, in most of our analysis will be only interested in mostly p 1 and p 2 ok, but it so happens that if you have p q greater than or equals to 1 such that 1 by p plus 1 by q is equals to 1 if this happens then so I am just going to call this as like L 1 norm and this is like L 2 norm here and this is like L p norm. Then L p and L q norms are real ok. So, if you are going to take L q norm it is dL norm will be given by q if 1 by p plus 1 by q satisfies this ok. So, suppose now let us do this suppose I want to take p to be 1. So, that is L 1 and then what is the q that is going to satisfy that satisfy this equation if I take p equals to 1 what is the value of q that satisfy this equation infinity right. So, so dual of L 1 norm is what L infinity norm ok. Now, let us define what is L infinity norm. So, by definition L infinity norm is this is x i to the power infinity and then take 1 by infinity power when the way to interpret that is simply max of i is the maximum component among them ok. And this think of intuitively like if you are raising this to power infinity and then taking this to be 1 by that power. So, if letting if you let p to go to infinity what is this power is converging to 0 right. And then in this case the one with the largest value dominate. So, that is why you can then you can argue that this definition just transfer to be this max of this component when by letting p go intending to infinity ok. The other thing is so now let us take L 2 if I if I take p equals to 2 what is the value of q that satisfy this equation 2. So, if my generic norm is L 2 what is this dual norm is again L 2. So, L 2 norm is dual of itself ok. So, that is why when I am so L 2 norm is the most simpler to handle I really do not need to if I just say L 2 norm I really need not worry whether I am working in the original norm space or I am in the dual space ok ok with this that is why L 2 and. So, here that is why it is important that whenever I am going to define my Lipschitzness with respect to a norm that matters because it could be L 1, L 2, L 3 whatever and depending on that this L could change. This may satisfy this for some L 1 if it is L 1 norm and if I am going to take this to be a L 2 norm this L could be different right ok fine ok. So, this with this notation now let us move back to what we are interested in. We here we were interested in the fact that this z t is here which are sub gradients we wanted them to be bounded. Now, is this sub gradients somehow related to the Lipschitzness of this function and if that is the case with what parameter. So, here I to make all these things work to get this sub linear bond I needed this condition right that all the sub gradients are above bounded by that. Is it that equivalent to saying my function is the Lipschitz? Is that true? So, we will see that S that is true. So, here is the result I am going to going to state it we will skip the proof. So, let my F is a real valued function from S to R be convex then we are going to say that then F is L Lipschitz. So, this basically states that if I have a convex function and real function and this is Lipschitz with respect to some norm ok and this is if and only if for every point in S and all the associated gradients sub gradients this satisfies. That is in this grade sub gradients in the dual space they are also upper bounded by L. So, if my. So, in a way what we are saying is if my function is Lipschitz then my sub gradients are also upper bounded by L ok. So, now let us take this norm to be L2 norm ok then this is also we know that this is also L2 norm. If my function here let us say is is Lipschitz with respect to L2 norm then all the sub gradients should be also uniformly bounded by that same constant L. So, in a way whatever the stuff we did here everything here works out instead of saying that my gradients here sub gradients are the dual norms of sub gradients are upper bounded by L instead of this if I say my function F the F1 F2 that I am going to see they are all L Lipschitz then everything goes through here right ok. So, henceforth that is why now instead of worrying about my gradients are the sub gradients are bounded in the dual space I just worry about whether my function is Lipschitz in the generic norm ok. So, henceforth that is why I am only interested now henceforth I will focus on whether my function is Lipschitz or I will assume that my functions are Lipschitz with some constant that automatically implies that my sub gradients are also Lipschitz. So, just notice here one small thing like when I derived all these things I assume that the squared norm are upper bounded by L, but here when I converted to this this is just dual norm. So, there is no square here. So, basically then we senseforth we have to replace our L by square root L that is the translation we have to do ok or maybe I what I should have done is when I wrote all these things instead of that maybe I should have considered this value and put all the things, but anyway let us not worry about. So, we will just keep in mind that then the square root L translation we have to do then we have to compare our bounds with whatever I achieved here. So, far what we did the all these things nicely worked out when we have a specific regularizer right. What was that regularizer? The regularizer we defined was R of u was 1 by eta 2 eta ok. So, this is the specific regularizer we took and this regularizer was defined. So, is this regularizer here was it a convex function with respect to so like when I when you this of course, it is a convex function was it a Lipschitz. So, just see if I take f equals to R here is it a Lipschitz and if it is Lipschitz you have to tell me for what L and with what norm ok. So, just plug in if you are just going to plug R here R here and just simplify what is that you are going to get ok let us do that. So, this is I am going to get it as 1 upon 2 eta norm of sorry x here minus 1 upon 2 eta ok. So, anyway this is already out right like this is 1 upon 2 eta the constant this is right. So, can you simplify this any further ok what is the definition of this norm of x whole square. So, norm of summation of x i square and this is summation of y i square this is written as less than plus and minus why is this true ok. So, this term here we actually get sorry if I just take it directly. So, this term is nothing, but whatever the components right because of this ok has split this, but what I want is here this. So, what is the this definition here if I am going to take it to be in L 2 norm what I want this this is nothing, but summation x i y i square under root of this whole square, but what I have here is only x square minus y square ok is x square minus y square is upper bounded by x i minus y i whole square. So, check out that this is indeed you can simplify this and you are you can get it as whatever this 1 by 2 eta norm of x minus y this whole square. Just simplify expand this try to get this x i minus y i square stuff in terms of x minus y whole square summation then you will end up something which you can write in terms of the norm of difference between x minus y ok. So, what we have actually is this function here is indeed Lipschitz and whatever the whatever the constant we have in front of it that is 1 by 2 eta here ok this one. So, this is you just apply the definition whatever like ok what is this what we want we want norm of x minus y right and you want it to be L 2 what is this is going to be I am saying you just have to simplify it right. So, you have to manipulate that and apply some inequality to get that right this is not the final sub I am keeping the stoop to work it out for you ok. So, you complete this. So, we have one regularizing function here which is convex we can look at other other regularizers as well right which we want anyway this regularizing function was convex that is a good we can because I was adding this regularization function to the sum of convex functions right and I want I was minimizing it. So, if I am adding this regularizing function to the sum of convex function if this regularizer is also convex function then the whole function is convex for me and I it easier for me to minimize this fine that property I desire. Now, what we are saying is in addition to this we would also like this all of this f t functions to be Lipschitz right then we are going to get this, but R the regularization function we have we are also thought it as convex function which I got it in the 0th round right the way we treated R is like f 0. So, we also want it to be also Lipschitz with some constant right. So, now, let us look at if I am going to consider other regularizing functions maybe let us say both convex and Lipschitz what kind of bound one can expect and what are the other possibilities we have ok. So, we would be interested in something like more what we is going to call as some functions which are strongly convex not just convex, but something more than that and for that we will be able to derive some better bounds.


Germany's way of destroying the global biosphere and creating climate injustice goes way beyond just mining and burning lots of dirty coal. Germany's wealth, which is obviously kind of the envy of the world right now, is based on selling cars, essentially. Now, cars aren't a particularly ecologically friendly form of transport. We are selling cars to the rest of the world and our wealth is therefore based on destroying the biosphere, on creating climate injustice. The German transport sector, the car industry, hasn't reduced its emissions a single bit in the last 25 years. They're just going for growth and maximising profits. And in a way, you could say that coal is the first way that Germany is destroying the climate and that exporting lots of cars are the second. The third is the fundamental assumption that Germany's wealth is based on producing more and more and more industrial goods for export, which is a sort of perfect crystallisation of the problem that we're facing, even if we're, say, switching to renewable energies. Because we all live in systems that are based on permanent growth. And as somebody once said, the only people who believe that you can have infinite growth on the finite planet are either madmen or economists. It's not going to work. You have a finite planet, infinite growth, there's going to be a problem. And that problem isn't one where we all suffer. We all sit in the same boat. Unless it's the Titanic where you still have lifeboats for the first class. Climate change always affects those of the most who have done the least to cause it and those who have profited most from the activities that destroy the climate have the resources to protect themselves. I mean, it's a bit of a banal example, but Holland is literally building swimming cities and Bangladesh is literally drowning. That is climate injustice. Climate change is about polar bears and it's about the weakest and most marginalised in the world suffering from the activities of the richest and most powerful in the world, which takes us right back to Germany. Germany has this image as this nice country. We're good to refugees. We're an environmental leader. But actually, the way Germany is running Europe and is running its economy is precisely what is wrong with this world.


Hey there Chameleons, it's Chamele and today I'm bringing you part one of my new hair dye series which is going to be how to strip out this red dye. As you guys see I have this kind of orangey to red ombre. You saw the tutorial for this, you know what it is. And I just want to get rid of this color in the healthiest way possible for my curls. So I'm going to show you guys how I do that. And then later, next video which will probably be tomorrow, I'm going to deal with these roots and bleaching my hair. But for now, let's get rid of this color. So I got this Salerm Color Reverse Kit which I've never used before and never seen before. But I went into a hair shop and the lady recommended it for me and it was $15. So you know what, I decided to get it because I might as well try new things. And she said it was supposed to be non-damaging for your hair, which is the number one thing I look for. So I picked it up and I gave it a try for today to see how well it worked. It comes in two bottles. There's a step one and a step two. You just mix the two of them together and then it will activate and then you can start using it in your hair to strip out the colors. And I love how it's black and white just like me. So you don't want to ruin your nice clothes. So you want to put on a t-shirt that you can get bleach and dye and all sorts of gunk all over. And I can't find my normal one. So I'm just wearing this tie-dye one because whatever. Now Rapunzel Rapunzel let down your weave girl. Just kidding. This is my natural hair. But yeah, let's just take a gander at that. So now assemble your supplies. You'll need a mixing bowl that is non-metal, a brush, the steps one and two that I just showed you and some latex gloves. And as you can tell, I've used these before when I did sort of a bluish color, but reduced reuse recycle girl. Now I'm using this shot glass from Austin, Texas to measure out my ratios for the steps one and two. I use this because you want to do equal ratios for each of the steps and it's just a good way to measure out the exact same amount of each bottle. So I don't use too much or too little of each step. So for step one, I just squeezed it right above the word Austin. So I pour that into my mixing bowl and I do the same thing with step two, which is more of a white and the step one is a clear. So then you mix the two together with your little mixing brush and then you form a nice solution that will be used for your hair. Now you want to put on your gloves and protect your hands with these chemicals. Now don't smell the mixture because it smells horrible. It smells similar to a mixture I've used before to strip my hair a little bit weaker, I'd say, but it still smells so bad. You will want to cry if you get a good whiff of it. So I'm just going to start by doing some of my ends because they're kind of the darkest, but I'm just going to be running that mixture throughout my hair just using my hands. No brush needed. This doesn't have to be super precise or anything because it does spread out easily. And I'm doing this on unwashed hair which is recommended and just kind of sectioning my hair out into pieces to make sure that each section that I do is completely saturated. And now I'm mixing a second batch because that wasn't enough for all of my head. Same ratios about the same amount made and this is going to do enough for the rest of my head. Not doing my roots because it's not going to do anything to the black so you don't need to put it on and I wouldn't want to risk damaging my virgin hair anyways because it's not going to help with anything. So just put it on the colored parts of your hair, do it in sections and then burst out into song when a good one comes on because it's a long process and you need to be listening to music to keep you occupied. Back to business though. Doing all the strands, making sure they're all saturated and flipping them over my head when I'm done with them just to organize everything.  It will just make sure that you get more coverage. I guess just get everything nice and saturated so you can get out all of the color. Now I'm putting my hair up in a bun once everything is completely coated this will just keep it out of your way and then I'm putting a nice plastic bag on my head because do you ever feel like a plastic bag drifting through the wind wanting to start again because that's how I felt this day. Also it helps trap in the heat and activate the chemicals and have it stripped better. So there's that too. You want to set timer for 20 minutes so then you know how long to keep it on and then when you're done rinse it out wash it out and it will look stripped. The lady did tell me it would take more than one round just because it's not super damaging. It's not like bleach or anything. So this is what it looked like after doing one treatment of the stripping and it is lighter. In this shot I really felt like violet from the Incredibles like with the hair over my eye. Anyways it did strip a good amount. It looks lighter in person but then there are sections of my hair that are less stripped out like the red parts and the ends. So I'm going to definitely focus on those for the second round because as you can see there is still more pigment in there. This is what my hair looks like when it dried and it looks sort of fluffy and stuff because I didn't put anything in it. I just wanted it to dry and that's why it looks kind of fluffy. But yeah that's what it looks like. The top part is definitely more faded than the bottom. So we are about to do a round two to get this to where I need it to be for when I put in the new color. So now we're just going to do the same exact process. If you guys get it done in one round then that's good for you. If you need two, three, however many you need just do it until it's light enough and we're just doing all the same stuff again. Same bun, same bag, same sass. And this is what it looks like after stripping the second time which is mad light. The top is pretty much almost blonde. So I was really happy with these results. The lady did say it wasn't damaging but my hair felt a little bit drier after so I'm not exactly sure that's 100% true but it definitely did a good job. So tomorrow I am going to show you guys how I bleach my hair the healthy way and then we'll get on with the color the next day. Hope you guys enjoyed this video and if you did don't forget to subscribe to my channel. I have all the products linked down below as well as my vlog and cooking channel and I hope to see you Camillons in the next video. Kisses.


a political anthropologist at SOAS and I specialise in the study of organisations, specifically organisations that aim to do public good. So far I've mainly studied international NGOs and parliaments. Within SOAS I run something called a global research network on parliaments and people and we've been giving scholars and artists in Bangladesh and Myanmar and Ethiopia to study their own parliaments and these projects are designed and led by those scholars in their own countries and the results are truly outstanding. So you can see some of their research on the web page that I've given you here on the title slide and I really recommend having a look because a lot of their work is truly extraordinarily talented but I'm going to talk about my own research today and I'm going to talk about a growing trend which is studying institutions at home as you know. Traditionally a lot of anthropologists used to go to other countries when they were doing their research but quite often anthropologists turn their attention to home and I'm particularly interested in these institutions of parliaments and in Europe the territory of parliamentary studies was very much dominated by historians, political scientists and legal scholars until quite recently. Marc Abiles was the first anthropologist to venture into European legislatures in France and then in the European Parliament and he was interesting because in contrast to political scientists he really avoided kind of just looking at the institution as an abstract entity producing lots of statistics and schemata and typologies and so forth and he shone a light on aspects of parliaments that are really neglected, their history, their language, their rituals, their symbolism, the imagination that's involved in doing politics and how these are all interconnected. So he really got into the entanglements that you find in parliaments and looked at contradictions rather than avoiding them. So I followed in his footsteps and went to the Westminster Parliament and I started by studying the House of Lords so I was there intensely from about 98 to 2000 and then part time after that and then I went and bravely went into Commons which is a much much more frantic place. So what did I do when I was there? Well I did an immense mix of activities and that is how anthropologists work. We never use one kind of method to try and understand what's going on in a place so I'm not going to bore you by telling you all of these except just to say that actually although I did a huge number of formal interviews over 350 so far and still still counting I actually learned more probably from the informal conversations basically the gossip, you know catching people after meetings and talking to them during functions to find out what is really going on behind the scenes but I also found out a huge amount of by doing what I call kind of mini histories so it's kind of case studies but with a kind of narrative form and I'll tell you a little bit about one of those in a moment. So I used a whole range of methods to try and understand what was what's really going on behind the scenes in the House of Lords and the House of Commons. So there's a brilliant anthropologist called Tim Ingold who describes what it's like doing anthropology. He writes about how we're interested in philosophical questions but we don't just stay at a really abstract level, we leave the people in, we're interested in everyday relationships and the ways that people make meanings in an everyday sense and so it's in a way it's a bit like being a detective except that we're trying to answer puzzles rather than to solve crimes. I looked at various sites that politicians go to because what I was interested in was to try and understand the nature of political work. So what do they actually do politicians? We get a very strange view of them because we see them through the prism mainly of the television and the way they look in Prime Minister's Question Time or when they're arguing with each other. That really represents a tiny, tiny fraction of what politicians actually do. So I went to all the different sites, I tried to get into political party conferences and more difficult into their meetings, I visited constituencies, I watched them in select committees and so forth. So I really covered up the whole range of all the different sort of jobs that they do and I realised that actually politicians are shapeshifters. They jump from different audiences, different expectations, different pressures and they have to literally shift their shape in order to adapt to the different kinds of work that they do. And this is very revealing about what anthropology is like because I discovered this one day not in a kind of cold clinical even way but in a kind of revelation that I had when I was talking to a clerk in this, this is one of my most frequented fieldwork sites, this is a café in the House of Commons where very often MPs will meet visitors and I was talking to a clerk and the clerks are the people who run parliament, they're extremely knowledgeable so I was asking him to try and explain to me about the work of select committees and an MP came up and he saw that I was wearing a parliamentary pass so he assumed that I was a member of staff in the House of Commons. So he started joking with us and he started saying oh gosh he was warning to me he's saying oh beware of this guy he's really unstable you know you really gotta gotta watch out for him and Tom the guy who was talking to kept trying to interrupt him and say can I introduce it and finally he said can I introduce you to Dr. Crew who's from the University of London she's writing a book about the House of Commons and this MP shapeshifted in a second he stood straight he became very formal and serious he shook my hand and he said Dr. Crew I'm delighted to meet you if I can help you in any way please just uh here's my business go. I said to Tom after this guy there well it just happened always going on with that guy and he said yeah that that's what it's like for MPs every day they have to try and read their audience and work out what kind of relationship they're in because they're in such a dizzying kind of range of different relationships with different people so they're continually having to adapt jumping from one one job to the next so I wanted to tell you next something about uh in little bit more depth uh two of the kinds of jobs that they're doing one is about making law and the other one is what they do in their constituency so the lawmaking I thought right I've read this lawmaking is absolutely core to the business if you're like of of parliament to to what it's actually trying to achieve it's a legislature amongst other things so so well how does law actually get made well I thought well I'll I'll I'll follow law I'll follow and I chose one very um small clause it was 250 words in a bill about children and families and it had come about because um uh when families break down on average 350 000 children don't get to see both parents on separation and this is often the father because they tend to have often don't have such a the main role as as carers so a group sprung up fathers of justice um and they were campaigning to have more time with their children on separation uh because they thought that the courts weren't fair to fathers and this piece of law was trying to encourage the courts to say children should be involved with both parents but to cut a long story short I followed all the changes that were made in this little tiny piece of um legislation and I got particularly interested in the final one which is expressed here in 2b so this little bit of uh this amendment um if you look at all the documents so if you just kind of did a textual analysis which is what lots of scholars do then actually it looks as if this was made by a member of the house of law it's a former family court judge and uh yes indeed she did stand up one day and put this amendment and it got passed but that kind of covers over an incredibly complex huge number of people who got involved in campaigning for this clause in fact it was originally written by a young woman called Hazel a paralegal in a children's charity uh in Bloomsbury uh as she then put it to the Labour Party and they didn't manage to get through but finally this this court judge did because she stood up and said you know I'm above party politics this is this is evidence and uh sure enough okay but it was also a political campaign that took months and months and months and my point is that if you look if you just would take a superficial look at the documents um that lead up to a law uh becoming approved by parliament you miss out all the engagement between politicians and and civil society and this is what anthropologists are about they're they really like looking at the depth of the relationships that go on kind of beneath for example illegal text so the other area of work I really wanted to tell you about was MPs in their constituencies this is a kind of mysterious world from the point of view of scholarship because not that many academics have gone and really looked at what happens in constituencies it's not very easy to find out because a lot of the meetings particularly the meetings uh which are called surgeries in in in the UK as you probably know um a private so you have to treat this with an immense kind of delicacy but I I observed a lot of surgery meetings I shadowed MPs I talked to MPs and their staff and I found out a few very interesting things one was that they have a kind of encyclopedic knowledge of their constituency of what's going on the issues the problems the various charities which are the efficient housing officers um all the different health clinics they really know their constituency well and in a way they act like and particularly um when uh we've had austere austerity for a number number of years the problems caused by austerity really show up in in constituencies the other thing that really shows up are mental health issues so in a recent uh visit with um um a colleague who is a psychotherapist and a group analyst we listen to estimates by MP staff that possibly as many of half the people who present with problems in constituencies have some kind of mental health issue so what's and they're doing these MP staff are trying to help those people without that much support themselves um and finally about constituencies another aspect which I found very interesting was that it was the women MPs who seemed rather more comfortable with this kind of work um and although lots of men were also comfortable it was only male MPs a few of them who delegated entirely to female case workers or looked a little bit uncomfortable at this very emotional kind of labor and that is interesting it needs a little bit of a bigger sample but it would be interesting if and a familiar pattern if it is the case that women MPs across the country are doing this much more hidden very emotionally difficult labor because it it it does mean that they have less time to be kind of uh working in parliament and improving their position within the party so that they can get a position in government or on the opposition front bench so that's just to give you a little flavour of some of the work that goes on in in parliament and in the constituencies to return to the question of what it feels more generally like to be an MP um I was very struck by the the stress that they experience themselves and um I think it's partly because they're juggling these multiple roles they're having to shapeshift they're having to adapt to all these different pressures they can't please all their whatever it is between 50 and 100 000 constituents um the the constituents are very uneven and one described it being MP as feeling like um you're on the receiving end of Genghis Khan's preferred form of torture which is when you have uh or each limb being tied to a horse and the horse being told to to pull and it can be a very lonely kind of job addictive yes but but lonely and so this raised another puzzle for me which was so how do these MPs cope how do they cope with this endless changing and fracturing and and pressure and exposure on on social media and so forth some don't alcoholism and divorce are pretty high amongst MPs um but many do and many really really keep going back they keep standing to be MPs and they do stay relatively sane so my question is how do they how do they do this how do they create some kind of stability uh in their work and I had kind of three processes which I identified as processes which create some continuity across MPs work and and potentially some some stability so the first kind of continuity for MPs is what I've called rifts you could you could think of these as little kind of nuggets of ideology or or ideas or or values or beliefs or whatever so um MPs have to develop rifts as individuals as factions within their party as political parties and need to improvise them for different audiences so we think of MPs as very inauthentic and changeable but actually they can be quite repetitive actually because um if I give an example of Chris Bryant labour MP told me that when he was having to be an expert on pensions he developed a riff about pensions which was possible to use for all kinds of different audiences he had a 92nd version a five minute version a 20 minute version and and so forth and um these these rifts are what politicians have to use to try and persuade people uh to give them support for the causes that they mind about the second way that they create some kind of continuity in their work is through rhythms so again there are similarities between all MPs so all MPs pretty much go to prime minister's question time at the same time every week with the parliament sitting on a wednesday and then there are other rhythms which are organised MPs by party so they tend to go to their annual party conferences for example but there are still more rhythms which are idiosyncratic to each MP and MPs will be very influenced by whether they've got a background in social work whether they're more interested in business or whatever but but I think we need to know more about the rhythms of MPs and how they vary including our own so it's an understudied area and finally rituals are really really important in parliament and we think of rituals as something that happens in religion but actually they're vital in both political worlds and in the legal world we really need them so if you've got a very important decision being made for example by a judge in a court or by politicians about say brexit then you need to have rigid rules and to be able to witness that people are sticking by the rules for people to consent to the decisions that are made we would have anarchy without rituals but they're also interesting for researchers because the more things are ritualised the more that it reveals that there is a politically significant event going on so they're also very useful as research tools and this is partly why anthropologists really are very interested in them so to conclude politicians are like us but they're also not like us so they're like us because actually we're all shapeshifters to some extent we're different with our families we're different in our workplace we're different if we're going into holiday we have we shapeshift in the sense that we're continually adjusting to different places and times and audiences but what's interesting about politicians I think is that because they're so exposed they they are connected to thousands and thousands of people partly in their constituency but also to those who are interested in their causes so partly because they're exposed partly because they're very ambitious and partly because they're in competition with each other um they are shapeshifters in a way that the dial is turned up so we're all similar in the sense that we have to make adaptations but they do so in a way that's magnified and amplified so politicians are like us but with the dial turned up and I think this is partly uh why we don't like them they kind of remind us of the worst of ourselves but actually we should really put that dislike to one side because to engage with politics we have to find allies amongst politicians and we need to distinguish between government which rules us and creates chaos very often and and the bits of parliament that are holding government to account and the bits of parliament that are about us being represented as citizens so I think we need to understand more about politics but we also need to do politics ourselves in order to make democracy work