Let us take up AS4 now, accounting standard 4, okay now contingencies and events occurring after balance sheet date contingencies actually they have given the name of accounting standard 4 but later on when they issued accounting standard 29 they covered contingencies in that chapter and they removed it from here. So tomorrow we will do AS29 and we will cover contingencies today we are here only covering events occurring after the balance sheet date, okay now why do you need events occurring after balance sheet date or a standard on that now see balance sheet is prepared up to 31st March balance sheet is signed somewhere later maybe 1 or 2 months later 3 months later so suppose we signed balance sheet in May, okay so there is a 2 month gap between the balance sheet date and the signing date, okay now there might be certain events which are material which might occur between the balance sheet date and the balance sheet signing date. Now these events the standard say that some of these events would be adjusting events means you go back and adjust your balance sheet some of these events would be non-adjusting events that means you just disclose it or it might not even require disclosures so it depends upon what type of event it is it is it just says that you take caution of making note of all the events that happen between these 2 dates and then you decide whether I should go and adjust the balance sheet or not or I should disclose the event or not. The point here is event is occurring between balance sheet date and signing date but it relates to something which has happened or something existing before the balance sheet date I will give you examples, okay event occurring after balance sheet date is significant events whether favorable or unfavorable both that occur between balance sheet date and the date on which financial statements are approved which is in the board meeting or when it is signed, okay 2 types of events can be identified one which provide further evidence of conditions which were existing at as on balance sheet date. The second one is which are indicative of conditions that arose subsequently I will repeat one event is which will confirm or which relates to a condition which is existing as on 31st March or before 31st March and the second event is which the conditions arose after 31st March. Now the conditions which arose after 31st March are normally considered as non-adjusting event maximum you might be required to disclose those events however conditions that existed before 31st March but were confirmed after 31st March or events occurred after 31st March those events are generally considered as adjusting events I will give you examples for each of them. Just a pictorial thing of what we discussed there is a start of reporting period which is 1st of April there end of reporting period which is 31st of March then there is a period during which or there is a date on which the financial statements are signed then the information is made public that means annual reports is published and then you have a AGM sort of these are the normal dates. Now we are only discussing or AS4 only covers 31st March to date of signing of the balance sheet it does not cover anything happens after that or anything happened before that it is only specifically covering 31st March to date of signing of balance sheet ok. As I said there are two types of events adjusting event non-adjusting event adjusting event requires appropriate adjustment in financial statements non-adjusting event just require disclosures through report of approving authority that means it might be in your director's report or it might be in your trustee report or some other report it just require disclosures it does not require any adjustments. Now when I say adjustments adjustments might be required anywhere whether assets liabilities expense income capital fund are required for events occurring after the balance sheet date that provide additional information materially affecting the determination of amounts relating to conditions existing on the balance sheet date so adjusting events on the only relate to those conditions that are existing as on 31st March so what are the requirements First is event should occur before the balance sheet date sorry between the balance sheet date and the approval date or signing date it should provide additional information regarding a condition that existed as on 31st March as I said let us take some examples a loss on trade receivable account that means you have a data standing in your balance sheet ok that data is bad becomes bad which is confirmed by insolvency so the customer becomes insolvent that insolvency occurs after the balance sheet date now what is the event is insolvency of customer that insolvency event occurred between the balance sheet date and the balance sheet signing date but the condition that means he was my data and the condition that means ok what is the condition in this case that existed as on balance sheet date sorry he was not officially insolvent but we doubted or we had a doubt that he would pay and we created a provision for doubtful dates ok that means only if we had created a provision for doubtful date and later on we came to know that he has become insolvent then and then only we should go back and adjust our accounts and we should make it a bad date and not provision for bad date if there was no provision for bad date for that customer then the condition was not existing as on balance sheet date and hence adjustment is not required if the amount of bad date is material then we can give it as a disclosure in the notes but we should not go back and adjust our accounts is it clear what is a condition existing as on balance sheet date I will write it down for you I have a data of 1000 rupees ok 31st March I feel that he will not be making me the payment or I have some doubts I have doubts about it so what I do is I create a provision for bad dates say suppose I create a provision for 60% this is my balance sheet as on 31st March ok my signing date is somewhere in May ok so sir I said 27th April I come to know that he has become insolvent or he has filed for insolvency now because he has filed for insolvency I know that I will not recover any money from him right now was there a condition existing as on balance sheet date I had doubts so that was a condition existing as on balance sheet date the condition got confirmed on 27th April when he filed for insolvency hence what I should do I should go back to 31st March and adjust it with 1000 rupees make it 0 and classify this as bad date and not provision for bad dates this is called event occurring after balance sheet date suppose suppose I did not have a provision for bad date here ok this was entirely 1000 rupees appearing in my balance sheet that means I had no doubts regarding recoverability of that amount if I had no doubts about recoverability of the amount and on 27th April I come to know that he has become insolvent this is not a adjusting event ok then I cannot go back and adjust my accounts is it then I have to one second one second let me complete then I have to first decide whether this 1000 rupees is material if 1000 rupees is material then I just have to disclose that the receivable of 1000 rupees has become bad in notes to accounts or directors report or somewhere I do not go back and adjust my accounts yes is it material that how many percent is provision I am making how many percentage provision I am making suppose 2% provision it is not material see 2% provision if you have made on the entire receivables ok that means you are not doubting a particular data it is just a normal policy of your institution to provide for the total receivables then it is not a adjusting event adjusting event is only when I have a condition that I am doubting that he will not pay the 2% to my back is up a create cut that you he's go for I create a excess provision of say 30% then only adjustment then only it is a adjusting event otherwise to call me that are insolvent do I have to go back and adjust that's not the case because 2% general policy a mess up pay cut right exceptional exceptional exceptional cases only another example a fraud during the accounting period fraud over April to March K beach me but I detected it after 31st March so suppose 27th April is the date when I come to know kiya last year me kuch fraud over now was there a condition existing as on balance sheet date yes fraud to pay the way fraud pay the way is a condition existing as on balance sheet date event kiya what event is detection of fraud event has occurred after balance sheet date but condition of fraud was happened before balance sheet date hence I have to go back and adjust my accounts for the fraud a good fraud over the first of April go and detection over 27th April go is there a condition existing as on balance sheet date no then I will not go and adjust my books these are what we have to make some adjustment you are you are not making a provision for audit remuneration yeah sometimes we will make we will make that okay so suppose how will auditor remuneration come in event occurring after balance sheet date suppose I made a provision of 30,000 rupees for auditor's remuneration okay on 27th April or some other date I realized that no it is not 30,000 actual approval was 35,000 or I have revised the auditor's remuneration to 35,000 suppose back they did so that is an event occurring after balance sheet date because condition was existing that means auditor's remuneration had to pay in the last year so I will go back and make it 35,000 how about in case of CAG remuneration sorry CAG CAG remuneration how we have to treat that because CAG remuneration okay what happens what are the event event occurring or event existing or condition existing on the balance sheet date for example what will happen first statutory there is finalized right statutory auditor finalized right and afterwards CAG's will come and they will the event will occurring that means that do you make a provision for CAG fees yeah sometimes so you just are required to make see that provisions will cover in AS 29 this is only events which are occurring after balance sheet date and for which I have to go and adjust see audit I know that audits will happen for every year so I have to anyways make provision for those audit fees whether it is normal audit or CAG audit or reporting date is first April to 31st March 31st March becomes reporting date see reporting date definition of the date on which you report that means you prepare the balance sheet that is 31st March signing date is date on which auditor sign so event occurring after balance sheet date is between the date of balance sheet and the date when the auditor sign or the balance sheet is signed balance sheet sign balance sheet sign what is the date when balance sheet is signed balance sheet date sign which is our institute we have to prepare it before 30th June 30th June so event occurring after balance sheet date is between 31st March and 30th June so for us that would be April May June is the period when you have to think about this standard no it is not about audit those CAG balance sheet sign will be signed on 30th June 30th June that will be considered as yes for you that will be considered as signing date so 30th June 1st April to 30th June is the event occurring after balance sheet date a small thing I want to clear suppose on April I came to know one data has become insolvent but data has become insolvent actually in May March March I have not made any provision in that case what you have to go and adjust adjust I will I will repeat this question he says that I have a data of 1000 rupees that data becomes insolvent in March but I come to know in April okay so event is I come to know that he has become insolvent in April condition is he had become insolvent on 31st of March so you go back and adjust make it a bad date okay so there is a case study which you have to answer a limited has agreed in principle to sell a plot of land on 18th March 2012 at a price determined by a independent value or pending the agreement for sale and due to non receipt of values report the sale of land could not be completed up to 31st March the company or the institute received a report on 7th of April 2012 and the agreement was signed on 10th of April 2012 the financial statements were approved on 12th of May 2012 is this a adjusting event yes the conditions were existing you had entered into an agreement you know that you have sold it you have sold a land before 31st March it was only that the price was not confirmed hence it is a condition existing as on balance sheet date you go back and make the transaction or record the transaction at the proper price so it is a event occurring after balance sheet date hence adjusting event and company should record the sale in the books as on 31st March okay any examples you have on adjusting event any questions you have whether this is a adjusting event or not okay non-adjusting event non-adjusting event is any event where adjustments are not appropriate because conditions were not existing on the balance sheet date it is only to be disclosed to approving authorities report like director's report example you have certain investments and the investments value go down after 31st of March now the investment value has gone down after 31st March hence it is a condition which was created after 31st of March so you do not go back and revalue your investments at the lower value the investments will still be valued as on 31st of March only you will not go back and adjust it ordinary fluctuations do not relate to condition existing at the balance sheet date and hence you do not adjust okay another example of non-adjusting event is an announcement after the balance sheet date but before approval of financial statements that you want to discontinue an operation now when you want to discontinue a part of operation say I will not conduct discourse I will not do this this happened after 31st March hence it is not a adjusting event non-adjusting event it you only have to disclose in a director's report or your trustee report or some report of approving authority you have to disclose nature of event and the estimate of financial effect of the event where estimate cannot be made the report should state that estimate cannot be made and it should give nature of the event okay now an earthquake destroyed a major warehouse or may be a building on 20th April 2012 last accounting year was 31st March accounts were approved on 8th May is this an adjusting event no condition did not exist on 31st March hence it is a non-adjusting event hence the construction of warehouse it is non-adjusting event okay X company limited theft of cash rupees 5 lakhs by cashier in January 2012 it was detected in May 2012 the accounts of company were not yet approved by the board of directors of the company whether the theft of cash has to be adjusted in the accounts of the company for 31st March yes condition was existing as on 31st March and she should go back and adjust it so again I will repeat event should occur between the balance sheet date and the date of approval adjusting event is a event when condition was existing as on balance sheet date then you have to go and adjust the accounts non-adjusting event if conditions are not existing on the balance sheet date you do not go back and adjust only disclose the requirements okay a few MCQs multiple choice questions event occurring after balance sheet date are events favorable or unfavorable which occur between which of the choices you have a doubt in the MCQ one second I will come to a doubt one second let us answer this MCQ then I'll come to a doubt it is second number because board meeting date is the date when you sign the balance sheet so it is between balance sheet and the date of board meeting okay yes sir it is very clear amount should be made after 31st March only amount should be released for the period of January to 31st March what is the treatment for the DA areas when do you come to know about the day but balance sheet balance sheet is not signed June 30th only and you come to know about the amount before 30th June no we don't know the DA percentage DA percentage we know you will know before 30th of June 30 of the June yes what is the treatment for that DA areas okay so the question is that the DA fall to March is paid in April or May or somewhere after 31st March the amount is also known after 31st March but it is known before the date of signing of balance sheet am I correct yes then you should go back and adjust your books no no create a liability is very clearly says order government order is clearly saying you should not be paid before 31st March it is about payment it is not about accrual I am not saying go back and pay before 31st of March I am saying create a liability before 31st of March okay what happens to bonus when do you come to know about the bonus in the middle of the financial year before signing of balance sheet or not after signing of the balance sheet okay do you make a provision for bonus yes that is on estimate basis yes now because you come to know about the final amount after signing you can't go back and adjust because balance sheet is signed suppose in a particular year if you come to know about the final amount before signing you go back and change the provision for bonus and make it a final amount clear okay which of the following are adjusting events as per accounting standard for which of the four one answer is one only if you created a provision before 31st March otherwise none of the above clear answer is one if you created a provision before 31st of March otherwise answer is none of the above so both the answers is correct with some conditions second and third is wrong second is what a decline in market value after balance sheet date you cannot go and adjust third is a fire in factory after balance sheet date hence it is not an adjusting event


Going on everyone Sam here the late sports cars have been 23 tops inception baseball hobby 16 bucks full case break number 36 Random vision style. There's a look again at your random results as always Find these on the website under the results tab as well as Lincoln chat. So good luck. Here we go Brock a with a 10 box basketball mixer. That's not a seven ago now everybody. Thank you Brock It's gonna be a fun one man. Oh, this is the wrong wrong case kidding. I had at least a week from you Here's the right case you can see 16 one Really made a huge difference. We have to five boxes, but probably good that we didn't just open it now for no reason I'm kind of with you on that side. I want to see how it does That's a cool one dude. That's a really cool one Roy you got an investigation. You can do that Spencer. All right, Spencer can lead that one Spencer can lead that that investigation We're all open Coming with a monocle and a pipe one bit a little hat that Sherlock Holmes wears magnifying glass Code I send a green. Yeah, this is Watson Tray Turner and Riley green 275. There he is Congrats al-central specter show Steve market gets to the bottom of this Manoa to 99 Goldy And Reagan's yeah, the the triples are sweet. We pulled a Libre Tor Gorman and Burleson. I think it was it is Nolan Gorman at 25 on the orange and al-central Congrats on that. Thanks for father big boy. W. Nice woman That is a Goldy purple Cory seager to 150 areas areas and it's three weeks. We were worried Let's be prepared. Nice. There you go Vaughan. Hell, yeah One Soto and Jordyn Groshan's and at least the 125 It's pretty quick actually Vaughan. It's not bad man. Yeah, that's fire Hell, yeah, two days a card and the turn around are both Yeah, please that works Yeah, no Cruz Valdez James Outman Pascantino David VR that is 23 of 15 nice patches on that for color and a West and El West oh, that's over 15 threes. I was like cheese. Oh, wow got faith in J. Not every day That's 1.5 15. Yeah, I was gonna have corn 45 just on made threes. Hope they were doing like crazy bets or something Luba 100 Brown to 99 And Hunter Brown again Coach and drawing Karnaz young two-colored RPA going to the end of least This one there, Jace It's up Jace talking about you earlier. We're like, where's Jason? Sure wandering around And we said you would be Watson for Spencer Sherlock Spencer's investigation Gunner Green Orange 250 is Alex Bregman Brice young And I said Brice young distracted him Kate Cavalli bloody jr. 75 a least very cool With the on cod Teal I'll Simeon Woods Richardson Christian Yelich and Oscar Colos That's a maker probably a negative five thousand to be the tavern. Yeah, probably Jordan Diaz the 249 AL West CJ Abrams Oswald Braza in your canal Bryce Harper and Dylan Cease the 249 is that future Yankee Dylan Cease. Mmm. Yeah essential. I don't know They're like three days Reese Hoskins Justin Steele Yeah, it's a 99 ATL Michael ATL Michael Michael Harris the 99 green RPA. Let's go on that and at least get life-flated Long-grissom 299 is Joey Weimer and Matt McLean Cal Mitchell and L central to 75 Aqua auto very nice very nice Mr. Jeffrey H picking up spots and all of the inception chrome black mixers. Those are nice dude 40 36 bucks a spot I'm in dig it. I'm in Got a bunch of top strong black in again So those will be fun rips for a while Bunch more bowman's best university delay as well Thomas to 150 jitter downs and tenor bibby and David VR that is nine of ten going to the NLS on the blue That's NL West a few more boxes left here, but Let me drop you guys that link to ten bucks Ten bucks is down to it ten to go ten on ten Ten on ten box got how to turn on my Darth Vader lightsaber. We figured it out Messing around the lightsaber right not what I was expecting to hear today. Just lightsaber in a round Beatty the guero and fujinami. I think Salisthen's gonna be good His prices are about the same as Salis's Whoa Three of 99 Shohei Otani congrats on that one al west. There we go. I'll do AL West Tom C congrats Tom Tom good stuff, buddy Little Otani action for you very nice looks like city connect potentially. Hello Larry Larry Tom Fujinami red to 75 Justin Steele Restoring Well, whoa 23 at 99 that's pretty jitter downs inscribed at 2017 30-second overall pick That's sick man Congrats AL East going to run our good stuff run. That's cool, man. That's really cool That's a Yankee jitter downs right there clean green Corbin burns and codice and got Senga Debut got pulled. I saw that great already. Is it really great? Really Really SGC graded and damn I saw it. I just saw the redemption. I saw the redemption and the grade today at the same time I don't know how the rush and waited to post the redemption or what true ATL Michael ATL Michael Nice one there congrats on that NL East thank you. Mr. Chen picking up a spot 10 box basketball.  There's Spencer again glad Michael's coming out What's up glad Michael's coming out? Harris ATL absolutely Meyer Verlander Oswaldo Cabrera 150 and Patrick Bailey Steven Schrossberg and Nicola Dolo and El Centro 249 Rats on that one. Nice one. Ah Nicola Dolo and last box and break. Good luck everybody. Ozzy Obbies 250 is my Miguel Amaya the producer tack to Sean God Manual about this. It's like talking to a brick wall when it comes to that Riley Greene and Jonah Bride to 125 Mr. Roger Clemens to five and a Jay Rod Gold to 50. Yeah, some nice stuff actually out of black. It's pretty solid pretty solid overall All right quick recap here everybody got autos Lodolo Michael Harris Jeter Downs really cool inscription on the Jeter Downs as well. Very nice David VR Cal Mitchell Dylan Cease Jordan Diaz Vladhy Jr. Jordan Groshan's and Nolan Gorman Dude is such a boomer that Rock Is Michael Harris and Blink 180 to Gerard Carnassio and David VR and Riley Greene And then of course the Mags guard is there's a Jonah Bride as well. That was the last one and Shohei Otani That'll do it for the break everybody. Thanks again for the bill up next 10 mocks budget mixer


This paper examines the effect of institutional bias on deep learning models trained on the TCGA dataset. The authors found that certain institutions had a greater influence on the model's performance than others, suggesting that the models may not be generalizable across different institutions. Additionally, they discovered that the models were able to pick up on institution-specific patterns which could potentially interfere with other applications of deep learning in digital pathology, such as image search. This article was authored by Tohei Dekarganian, Azama Sillian Bidgeli, Actin Ryosaitian, and others.


Welcome back to our lecture series Math 4220 Abstract Algebra 1 for students at Southern Utah University. As usual, I'll be your professor today, Dr. Andrew Missildine. This is gonna be the first of four lectures based upon Chapter 8 from John Judson's Abstract Algebra textbook, and this is about the idea of coding theory. Now, before you get excited, think we're gonna be writing computer programs or codes or anything like that. We are gonna be talking about the idea of algebraic coding theory, which is the idea of using abstract algebra, particularly in our example, we're gonna be using group theory in linear algebra to encode so-called error detecting, error correcting codes. So to give a little bit of background to better explain what it is we're trying to be doing, imagine the following idea here. Well, digital communications are often transmitted as a sequence of binary numbers. That is, when the computer with a digital computer communicates with each other, it communicates with zeros and ones. So a single number, zero, one, this is what we refer to as a bit. Alright, so that's like the fundamental bit of information for the digital computer. Well, unfortunately, during transmission, sometimes noise can interfere with the original message and alter the bits in the message. And when I say noise, I mean this sort of like in a parabolic sense. The computer, obviously, won't be hearing anything. It doesn't have ears. But as language speakers, we're kind of used to things like this.  Can you say that again? Computer communications have similar problems, although of a different nature, right? This noise can cause error to get into a signal. And so as the significance of each bit is important, right? So if your list, if the computer is listening to this message, you might actually meant to send a one, but it might have actually been heard as a one instead. So the zero became a one in the transmission. A single error in a bit can have can make the transmitted message become useless because it's just gibberish, or it could actually become dangerous because the computer was commanded to do something that was really bad. Like, imagine, you know, here's an important file, right? If the command was to copy the file, but instead her delete the file, you could see something like that being bad things. And I'm not saying that's exactly what's going to happen here. But the point is, it's important that we make the transmission, we want it to be correct. But the issue we're going to see here is that we can't expect flawless transmission to happen in all this all the time. So instead, we need our codes to be able to detect and if possible, correct errors in transmission. And so group theory is going to be a valuable tool with this in this regard. And I should mention that again, as language speakers, humans are actually hardwired for this type of thing.  You know, you question them because you don't believe what you meant or you don't believe what you heard is what they meant to say. So you've detected an error in the communication. So because you detected an error, you're requesting a retransmission. Computers need to be able to do that as well. But also, how many times have you done the following? Where a friend or family or someone's talking to you and you're like, What did you say? Never mind, I got it. What just happened there?  So humans are hardwired to do this with language. What? How do we do it? How can a computer simulate this process? That's what we're going to be talking about in chapter eight in this lecture series. Now the first thing I want to talk about in this video is talk about the necessity of error detection and error correction. And so I'm going to have to deviate a little bit into random variables just for a short manner of time. And I guess I need this diagram still on the screen. So let me talk about the idea of a binary symmetric channel. So we're going to call that T and that's what's illustrated with this little diagram to the right. Well, this binary symmetric channel, it's a model that consists of a transmitter capable of sending a binary signal together with the receiver. So the ideas you have over here, your sender, which is somewhere apart, you can think of as just one part of the computer, don't worry about the computer engineering whatsoever, you have a sender, and then you also have this receiver. Okay. And so they want to send bits of information. So we're sending a zero or a send in one through this symmetric channel right here. Now as the sender sends its bit to the receiver, well, there's two possibilities, the sender, either the bit it wants to send is a zero, or the bit it wants to send is a one. All right. Well, imagine that P is the probability that the bit is transmitted correctly. So if the if the sender wants to send the bit zero, then there is a P chance that it'll send correctly the zero. But there's also a Q chance where Q is at the complementary probability, one minus P is equal to Q it's complement there. There's also a Q chance that instead, a one will be sent erroneously in place of the zero. And this is a binary symmetric channel meaning that the other options to sender want to send a one. Well, there is a P percent chance that it'll send a one correctly. There's also a Q chance that it'll send a zero incorrectly. Now the likelihood of sending zero correctly is the same as the likelihood of sending one correctly. So we do have this symmetric channel in that regard. And so this then leads to the idea of a Bernoulli trial or sometimes called a binomial trial from probability theorem and probability theory. It's the idea of like if I flip a coin, how many times if I flip a coin five times, what's the probability that I'll get three heads. Now in the case of flipping a coins heads and tails are equally likely. There's a 50% percent chance of each one happening. But let's say that in this case when we flip a coin, there's a 90% chance that the message will be sent correctly, but there's a 10% chance that error could occur. And so when you look into Bernoulli trials, you get the following probability of function for this random variable. So x is going to be a random variable that is its assignment is decided by chance by randomness. And so let's say that we send we send our bits with in bits. And what is the chance that K of the bits could be sent with an error? So that's saying that are well, okay, what our random variable equals K, right? What's the probability that our random variable could equal K? And so without going into the details of the probability here, there's going to be a P to the end minus K times Q to the K, and then you're going to times this by the binomial coefficient and choose K. So that that's how one computes these Bernoulli trials here are binomial distribution. And so let me show you an example of this, let's assume that we have a let's assume we have a probability of transmitting a correct bit to be 99.5%. That seems very accurate. That's really good. You would love it if that's your grade and abstract algebra, right? So 99.5% accuracy. What happens if we send a 500 bit message? Okay, which is actually quite reasonable for a computer to want to do that. So what's the probability that this 500 bit message would have no errors in it whatsoever? Well by the by the formula from above, we're trying to find the probability that x equals zero. So we would take 500 choose zero, we time we times that by 95.5% to the 500th power, and we take half a percent to the zero with power, and that would be approximately 8%. Okay, so so let that sink in for a second. There is only an 8% chance that this 500 bit message would be sent with no errors whatsoever. So that we should anticipate errors, right? The the complement of that right is there's a 92% chance that there will be at least one error in the transmission. What you see, I'd be about 92% right there of some error in the message. Well, what's the probability of having exactly one error? Well, if we do the calculation there, the probability of when x equals one, we take the binomial coefficient, the success to the 599, 499 failure to one, you're going to get a about a 20% chance, 20% chance that you'll have at least one error. And then if you did the same calculation for x equals two, what's the probability that there will be exactly two errors? Again, you go through the calculation here, you can double check this for me. There's about a 26% chance of having exactly two errors. So when you put that together right there, there is a 46% chance that there will be one or two errors for this for this symmetric binary channel right here. And so you can see you can see that calculation going on right here. So what's the probability of being more than two errors? Well, that's still going to be about 46%. And so one has to expect that there will be errors, we can't just stick our head in the sand and expect that we can transmit this without errors. Errors are likely going to happen. They're not going to be a lot of errors, mind you. But there's a huge chance that this is going to happen. So even though the probability of success is so, so, so high when you have enough trials, eventually there's errors that's going to sneak into this. This is a conversation that happened a lot in the year 2020 when the coronavirus was prevalent around the world, right? The thing is people would say things like, well, yeah, the success, the survival rate is like 99.9% chance. Well, sure that for most of us average Joe's, that's a really good thing. It's like, oh, I'm most likely going to survive this thing. But when you multiply that by the population of the country or the world, the US population, for example, turned out to be close to 330 million people. If you took 99.9%, well, let's take the failure of the death right there. If you take 0.1% any times that by that population, you're going to see that is several million people. That's a huge number, right? And it's the same principles applying with this error transmission. We can't just pretend errors aren't going to happen. They're going to happen. And therefore, our computer science needs to be designed in such a way that it can it can detect and possibly even correct these errors when they inevitably will occur.


Thanks to Shawn for requesting this one he has suitably pointed out that the most viewed video on this channel is best Sega Genesis games that SNES owners missed out on which is kind of weird considering this channel is mostly you know Super Nintendo stuff. Anyway he wanted to see a part 2 of that video so thanks for the request. I thought I'd narrow down the focus for this one a little bit for Genesis exclusives that aren't all that well-known, but there are a couple well-known games that I have to start out with, that I simply flat out forgot to mention in the first video, games like Herzog's Vi, one of the best 16-bit games ever made period. This game combines shoot-em-up and top-down run-and-gun gameplay with a real-time strategy game structure. You control an airship to fly around the battlefield, but you can transform into a mech and fight stuff on the ground. In the meantime, you order combat units, command them to attack the enemy base wherever that may be, and all sorts of other stuff. This game is way, way ahead of its time, seamlessly blending action and real-time strategy, and it has a two-player versus mode which is pretty cool. This is up there with Gunstar Heroes, Phantasy Star 4, and the Sonic games as one of the best Genesis games ever. I also have to mention the Road Rash series, particularly Road Rash 3, although all three Genesis games are pretty good. The third game, however, has better and more interesting weapons to beat the crap out of these other racers with. The bike or sprite animations may not be the greatest, but it's still so satisfying to clobber other racers or to watch them get blindsided by arm-cumming cars. Like I said, you can't really go wrong with any of the Road Rash Genesis games, but I had the most fun with the third one. Not a lot of nuance or strategy here, which, funny enough, makes it almost the opposite of a game like Herzog's Vi, but if you just need to unwind and kick the bejesus out of people while racing on motorcycles, then you can't beat Road Rash on Genesis. Let's get back to what the Genesis does best. For example, a game like Ranger X. I mean, just take one glance at this game. Look at this friggin' insanity! This isn't quite your typical run-and-gun action platformer, though. Ranger X controls like a cross between a game like Metal Warriors and Defender, meaning the A button fires your weapon to the left, and the C button fires to the right. In the meantime, flipping between special weapons with the middle B button. It takes a bit to get used to, but once you do, this game is a ridiculous amount of fun with flamethrowers, bombs, and really cool-looking full-screen clear-all attacks. Ranger X is a great example of what the Genesis could do really well and to make it stand out from the Super Nintendo. Now of course, the Super Nintendo did have some pretty good run-and-gun games like Cybernator, otherwise known as Assault Suits Vulcan. But the Genesis got their own game in the Assault Suits series, a couple years earlier titled Target Earth in North America and Assault Suits Lenos in Japan. And if you liked Cybernator, you would really enjoy Target Earth. It's got similar gameplay and controls, a ton of weapons to choose from, and the mission structure here also keeps things interesting. Like in the first level here, it's not just run to the right and beat the boss, you have to beat the boss before it destroys one of your bases. Target Earth isn't perfect, the controls can be a bit clunky and seem unresponsive at times, but it's still worth playing if you haven't. Let's keep going on the run-and-gun front with Dinosaurs for Hire. Yes, that's right, Dinosaurs for Hire. You play as a friggin' dinosaur with a machine gun and a Contra-style game that allows for two-player co-op. What's not to love here? Sure, this isn't nearly as good as something like Contra 3 or Contra Hardcore. And there's zero nuance here. But there doesn't need to be any nuance.  Alright, next let's check out Red Zone, a top-down helicopter shooter where you use your radar in the upper right corner to hunt down enemies, occasionally switching to levels where you gun down enemies on foot. What really makes Red Zone stand out in the Genesis library are the real-time zooming and rotation effects that makes this look and feel like kind of a combat pilot wings. The controls take a long time to get good at, unfortunately, and the difficulty here is brutal. You get one life and it's game over. But still, Red Zone is a great demonstration of what was technically possible on the Sega Genesis. I'll say this much, if you liked the final bonus level of pilot wings, you'd really enjoy Red Zone. From the creators of Xenophobe and Rampage comes General Chaos, a one-on-one war strategy game that takes place from an isometric kind of viewpoint in settings ranging from deserts, forests, and city blocks. You can pick from four different squads that each consist of skill sets like grenade tossers, a flamethrower guy, a machine gun guy, and so on. You just control where your troops run to and where they shoot. It's pretty straightforward for a strategy game. And when two opposing troops get close enough, they duke it out in a fistfight that plays like a fight in a hockey game. This is a fun game with a great sense of humor and a lot of personality. Next, we have Chicky Chicky Boys, and I'm cheating a bit here because this game is an arcade port that also showed up on a couple other consoles like the PC Engine CD, but this is a bright and cheerful looking platformer that looks like the kind of stuff you'd see on the SNES, something like Super Adventure Island 2, for instance. To be honest, there's nothing all that unique here. This is just the case of a well-made game that could use a little more attention. All the fundamentals are executed well here, throughout the game's nine levels, and the level design keeps things interesting as well. It can't be overstated how nice this game looks, though. And there's all sorts of locations represented here, like traversing the clouds, cutting through the jungle, or exploring a sunken pirate ship. Finally, we'll finish off here with two Genesis games that never left Japan. Here we have another game developed by Treasure, the same folks that made games like Alien Soldier and Gunstar Heroes. This is Panorama Cotton, and as you can see, this is a 3D rail shooter in the same vein as something like Space Harrier. And yeah, this game looks freaking spectacular. There's some occasional slowdown here and there, but this still is a great entry in the Cotton series. The Super Famicom also had a Cotton game titled Cotton 100%, but that was just kind of a run-in-the-mill side-scrolling shooter. The Mega Drive, meanwhile, had this, and this is another game where I just can't help but say, look at this freaking game. And really, you can't argue with the pick-up-and-play rail shooter. Really try and play Panorama Cotton any way you can. Another Japan-only release for the Mega Drive was the sixth entry in the Wonder Boy series titled Monster World 4. Yeah, I know, that's kind of confusing. This is an adventure-style side-scrolling platformer featuring long, elaborate dungeons, tons of boss fights, and a visual-style reminiscent of something out of the Shantae series. This is a great blend of adventure-style mechanics and platforming. The dungeons can kind of drag at times because they're so long, and littier I might add, not much exploration here. But Monster World 4 still has a lot going for it with the atmosphere, music, and visual presentation, not to mention the number of boss fights which are a lot of fun. Monster World 4 received an English translation on the Wii Virtual Console, PlayStation Network, and Xbox Live, so check it out there if you can. Anyway, that's all for now. I want to thank you for watching, and I hope you have a great rest of your day.


Hello. So I'm going to talk about Polymer tools for helping you stay productive, tools for everything from building apps and elements through to tools that can help make sure that your projects are lean when you're shipping them down the line. I'm also going to talk about a few new tools that we've been working on that we think you're going to find a little bit useful. And before I talk about any tools, I'm going to tell you a little bit of a story. So I was in Japan a few weeks ago. And it's a place that's really big on automation. Automation being this idea that you should take repetitive tasks and try to get a system or a tool to help you avoid having to do that work yourself. Now, one example of where they're really good when it comes to automation is the idea of parking bikes. Now, if you're from Amsterdam or you live here, you're probably aware that every single person in Amsterdam owns 3 million bikes. That seems accurate. Now, in Japan, they've actually taken that idea of trying to park a bike, and they've taken it to a whole other level. So this is the eco cycle. It's a system that will take your bike, it'll have a robotic arm, pull it down into the ground, and then find you a parking spot for your bike. If this is the first time you're seeing this, you're probably wondering, what sort of matrix sorcery is this? It's amazing. I kind of want that. But that's kind of cool. Now, the reason that I care so much about automation is that I very much believe in this phrase. I believe that if you want to be fast, you have to give up on the things that are keeping you slow. Now, this applies equally to reasons for automation. It applies equally to performance as well.  Now, you can't automate absolutely everything. If we did, we'd probably be out of a job. Now, in Japan, they actually make a really good balance. They strike a good balance between how much automation they apply and how much manual craftsmanship is still in place. One example of this, I remember I was staying at a hotel.  So this is like something manual someone's gone and made. Now, paper cranes are sort of really elegant. They're like these really well crafted things. They're really pretty. And I thought that I would go and try making one of these myself. You know, I know Java script. Surely this can't be too difficult. And it just didn't quite. No one is more horrified. than the paper crane itself. And I'm not really allowed back in Japan anymore. But if you've been working with web components and Polymer for a while, you probably have asked yourself some point, where are the tools for this declarative shift? The JavaScript ecosystem has got a huge amount of tools available for every task you might want to achieve. When it comes to HTML, there are still a few areas that we find are a little bit rough. Things like maybe I want to lint my HTML and all the assets inside of there. Maybe I want to run additional processes against the files that are making up that import. And the good news is that tooling for HTML and tooling for imports and web components are getting a lot better. Today I'm going to walk through a new Polymer toolbox, a toolbox of things that we've been maturing. There are some new tools in there, stuff like linting that we teased in the keynote. And some things that I'm really excited about, things like the new Polymer CDN that we're working on. Now before we dive into that, some quick tooling requirements, it's very important to cover this. So the Polymer team primarily use two package managers. The first is Bower, which is a front-end package manager. It serves us pretty well at the moment. And the other is NPM. Now if you've never heard of NPM, it's basically Tinder for node modules. You never quite know what quality thing you're going to get in there. But yay JavaScript. So let's dive in. Now the first thing we're going to look at is how we write reusable elements. We put together this package called seed element for this. And seed element is kind of neat because we actually use a very similar structure when we're building out things like the paper elements and the iron elements. Seed element comes with boilerplate right out of the box for helping you create your own element. Now one of the first things it gives you is structure. So it gives you the same structure that we use. Out of the box it includes things like a demo directory, a test directory, and some of these other files like seed element and index.html and your bower.json file. Let's dive into those. Now you might be thinking if you haven't played around with seed element before that your index is where your demo lives. But this isn't actually the case. The index file is actually where a component called iron component page lives. This is powered by another tool called hydrolysis. What this gives you is basically the ability to scrape your element and pick up API documentation. I know what every single person in this room is thinking. API docs, oh my God, that's amazing. Now the API docs that we give you, once they've rendered, they look a little bit like this. So you get a summary of all the properties that are inside your page. You get access to being able to toggle back and forth your private and public API. You get a summary of all of your methods and the different events that you're firing off. It's kind of neat. And it inspires you to do a little bit more of sort of documentation driven development. If we look at the index for the demo itself, this is basically where you go and you show the world what you've created. Some people go all out. They style this thing. It looks really, really neat. But you can go as basic or as far out as you want. This is just where you demo the thing that you've built. And then we've got seed element itself. Now seed element is where you have the logic for your element. Out of the box for seed element, we actually give you a lot of comments the whole way through the file. So it's very clear where properties should exist, where your template logic should go, where styles should go.  I thought it'd be interesting if we were to try doing something with seed element. Now I'm a really big fan of emoji. So I thought it'd be kind of neat if we put together an emoji text element, something that you could just throw some text at and it'll pick the relevant emoji for it. This is backed by a little library that Monica wrote. So here, for example, I've got it saying text equals tier and it's showing up a tier. And if I switch it over to tier clap, it'll pick out the right emoji for us. What we can do for seed element here is we can actually move all of our logic for the emoji text element into seed elements, boilerplate. We can replace the JavaScript lower down, replace all the properties, replace what's inside the template, add some of our own documentation. And it slowly starts to look kind of neat. We've got our render documentation customized for this element. And before we forget, we've also got a Bower install. We've got to install the dependencies necessary for seed element. Things like properly picking up Polymer and the Iron Component page element that we're using. And then we get onto another tool called PolyServe. Now PolyServe just makes it really, really convenient for you to serve up your elements. You don't have to really worry about using a Bower configuration file, no Bower RC file or anything like that. It'll just take care of all of that for you.  It just sort of works. Now a quick pro tip, if you don't like the default port number and I know some people get like, they really like customizing the port numbers, you can just use the dash P option to customize the port for PolyServe. What this gives you is a page that looks like this. So this is the customized version of our Iron Component page with my elements documentation. When you're sharing elements with other people, this is generally the first page that they will see. In the very top corner, they can go and they can then toggle a demo of your element. So here's the demo for the emoji text element that I've been working on. And as you can see, I'm typing in some text here and you're noticing that the emoji text is automatically translating. So I'm saying, hey people, let's sit on planes that don't read, listen to, or watch anything.  Now let's say that you then want it to go and deploy your element to somewhere like GitHub Pages. We have a workflow for that. I'm not gonna dive into too much detail here because we've got a guide on the site that covers this. But the basic idea is if you go and grab this particular repo, so the Polymer Tools repo, it's got a script in there called gp.sh. You can use gp.sh to just publish elements that you're working on, straight to GitHub Pages, and it literally just takes a minute or two. It's super convenient, I use it every day and it's kind of neat. Now how many people here suffer from element guilt? So you've written an element using Polymer 0.5 and you haven't ported it over to 1.0 just yet. So lots of people have got element guilt. Polyup helps with this quite a lot. We saw a preview of it a little bit earlier and this just helps you automate moving your elements from 0.5 to 1.0. So I actually had my emoji text element written in 0.5 and I wanted to port it over, but I didn't necessarily wanna do all of that stuff myself. So I went and I installed Polyup, so it's a global install, and then I can run it against that element and that just magically takes all of my stuff to 1.0. Now some of the stuff that Polyup takes care of for you are things like HTML transformations. So converting the 0.5 idioms like Polymer element name to DOM module, things like the template ifs to template DOM ifs and things like your template repeats to template is DOM repeats for the proper syntax. Now in our case, once I've actually ported this over, most of it worked, I didn't really have to do a lot of work to tweak it, like one or two small things, but not a lot. Here's an example of some of the places where it fixed things up. It just made sure that the syntax was exactly what I expected it to be for 1.0. Now quick pro tip, if you have an entire app written in Polymer 0.5 and you wanna try using Polyup on it, you can actually recursively upgrade. So this quick one liner will allow you to go and find all the different HTML files that are currently inside your directory and just run Polyup against them and overwrite any of the files there. I've used this on an app or two and it just gives you a really quick baseline that you can iterate on. I think that's a nice little one. Polyup has also got an online tool available, so if you've got, you know, something that I ran into last night was I wanted to port an element for use in an app that was still written in 0.5 by somebody else. I just dumped it into the Polyup online tool. And this is just a really neat quick online thing, don't have to install anything. Just dump your code into here, copy paste, and it'll actually just let you see what the transformed code looks like. Next let's talk about unit testing. So there was a recent survey done in the front end community where they found out, and this is sort of shocking to everyone, that almost nobody writes unit tests. It's just a wonder, I didn't really expect that to be the case. But on the Polymer team, we care about unit testing and we do think that people should write unit tests. So we created Web Component Tester for this. Now Web Component Tester is pretty convenient. It basically gives you a tool that works on top of Mocha, which is a really great unit testing framework for writing asynchronous tests, and Chai, which has got some great assertion helpers. You install this globally the same way that you install the other tools, and then you just run Web Component Tester against your tests, and it'll just go and run them. Now in seed element, we actually include some boilerplate tests for you out of the box. This is an example of HTML suite. So you can write tests in separate like HTML documents. So here, I'm just loading up. So I'm using WCT's namespace, and I'm loading up a test called basic test.  You might get a message in the console that looks a little bit like this, saying that you evaluated your tests in a millisecond because they do not yet exist. Here's another example of what a JavaScript suite looks like.  This is the first opportunity I've had in my career to include emoji in-unit tests, which is, I feel good. So I'm able to run my tests here, and as you can see, you can run web component tests in the browser. You can also run them in the command line, but here we're just getting a summary inside the browser, but also inside the console, and we can dive in if we happen to find that there are issues with any of our tests. When you run web component tester or the command line, you basically get something that looks a little bit like this. It'll go and fire off all the different browsers that it's trying to run your tests against. It'll pipe the output from those browsers back into the command line, and then it'll close them. I thought it'd be useful to just remind folks there are a few pro tips there that can help. If you wanna run web component tester with just a single browser, you can do that. Just use the dash L option. If you want to keep browsers alive after your tests have run. So for example, if you wanted to continue debugging and ensure you're finding in one browser but not another in your tests, you can just use the dash P option. And if you only want to test files that you specify directly, you can also do that too. Next let's talk about adding elements to an app. We're gonna do this using Polymer Starter Kit. So we announced Polymer Starter Kit a few months ago, Google I.O. And Rob talked a little bit about it earlier, but it basically includes a few different things right out of the box. It includes first class support for components, end-to-end tooling, offline first support, responsive app layout, and a few other nice bits and pieces. Now this morning, Taylor told you that the total number of downloads of Polymer Starter Kit was something around 65,000. I checked this last night and I found out that the total number was 66,000. And I checked it right before this talk and it's now at 67,000. So I'm assuming you guys are finding this useful. At least I hope so. You guys have been building some really neat things with Polymer Starter Kit. You've been building everything from sites that help empower kids to ride safely using the neon animation elements. You've been building 3D model viewers. This is my favorite example so far.  You've been building things like this using WebGL and Polymer. You've been building DevFest sites. You've been building meal helper sites using Ripples all over the place. It's been kind of neat to see this like the progression of apps being built. Now one thing I thought was missing was an emoji quiz app. I found my niche in the market in case anyone wants to invest. But we're gonna be building this today. So the first thing we're gonna need for an emoji quiz app is an emoji quiz card. Something that allows us to throw a question at the card, render it to the screen using the correct emoji, and then we wanna have people be able to enter in text representing what they think that particular movie or emoji actually represents. And we wanna run some validation rules against it. Paper input is really powerful and it's a great utility for helping us achieve this. So we use paper input and paper button on this particular element. Next we have an emoji quiz questions element. This is just a small piece of the logic, but the basic idea is that I'm gonna be doing a quiz using emoji in movies, and I'm just gonna feed it a list of different movies in and it's gonna iterate over that whole list and output all of the cards to the screen. Finally, we're gonna need emoji quiz categories. So something that allows you to select what category you want on screen. And we've also got sort of emoji quiz questions being used here so that I can actually just make sure that we're showing you the right list of things. This app is gonna use neon animated pages because I just love transitions. Now, if you're a front end developer or someone that's been developing on the web for a while, you're probably aware there are quite a few different build tools and task runners available today. Everything from grunt to broccoli to NPM scripts. On the Polymer team, we're really big fans of Gulp and we'll be using it for a bunch of the tools today. I know that some people still consider make as a good tool to use. Unfortunately, make is the only modern build tool that doesn't have its own logo. And I thought long and hard about this and thought that the adequate logo for make was the platypus. So we're gonna just go and NPM install and Bauer install all of the things that we need. This is a single one liner for anyone that's experienced with these tools. If you're not, we actually walk through like all these individual steps for you in the docs. But if you're familiar with NPM or you aren't just yet but you might be in the future, something that you're probably also familiar with is the idea of NPM installing all of the internet. We're trying, we're working with the NPM team. We're trying to see if we can fix this stuff. But sometimes it'll take a few minutes. Think of it as a good time to go learn a new hobby or bake a cake or something. But in a few minutes it's done, it doesn't take that long. It takes like three or four minutes. But it's worth it. So once we've installed all of our dependencies, we just go and we do a gulp serve. And what we end up with is this application. So this is my emoji quiz app. And what I'm gonna do is I'm just gonna go and select an option here. So I'm gonna select the movies option, tap on that. And here's our first question. So this movie is Ant-Man. So just gonna go and enter that in. It looks like I was right. Next one is Princess Diaries, still looking good. This is Bloody Needle and Rink. I don't know what this is, and I fail. But this app is kind of working. Kind of working, it could be a real thing. Now I did wanna mention one thing. So Monica gave a really great talk earlier. We've talked about custom properties. And I think probably everyone in this room knows that CSS is just the best thing ever. It's truly, truly amazing. Do you wanna know something funny? This actually renders correctly on this screen, but it doesn't up there? This just goes to show you how broken CSS really is. CSS is awesome, but custom properties make it a whole lot better. And if you're building an app using Polymer Starter Kit, I do recommend checking out materialpalette.com. It's a site that has a number of different options for selecting a primary color and an accent color. And what you can actually do now is there's a Polymer option in the very bottom of the screen that will generate you a theme file, an app theme file, using custom properties.  It'll like re-theme your toolbars, your paper drawer panel, your buttons. And it's, you know, it's pretty low friction. I tend to use this whenever I'm building out demos and I find it really useful. Next let's talk about productionizing our apps. So I believe that a build process is kind of important if you're building anything other than a prototype today.  You know, respect their bandwidth and respect their data plans. Now the build process in Polymer Starter Kit looks a little bit like this. We've got tools for quality and testing, for minification. We've got things like browser sync for cross-device editing and reload. But I'm not really gonna talk about this too much. I'm gonna focus on the Polymer tooling in our workflow that I think it's useful for you to just be aware of. And there's some new tools in here that are good to preview. So the first tool is Vulcanize. Now Vulcanize is really useful for concatenating all of your HTML imports into a single file for production. You might be wondering why there's a picture of Spock in the very corner of the screen. I thought that, you know, we should just say screw it to Vulcan tradition. It's okay for Spock to smile. So Spock is smiling. Enjoy. Now Vulcanize is useful for reducing an app and its dependence into a single file. We install it globally using NPMs similar to the other tools. And then we can just run Vulcanize against our emoji app and convert it into a build file. So all of those dependencies end up in the exact same file. It's kind of neat. It's also able to do things like inline our external assets into a single page. Now you might want slightly more control over what's happening with Vulcanize. We've got a number of options. We've got things like being able to specify whether or not your scripts get inlined inside the page. You can also specify whether you want your style sheets, your polymerized style sheets to be inline too. And we've got an option for that as well. Now if you happen to be working with content security policy and you're concerned about things like XSS and so on, CRISPR is a great tool to be aware of because it can help make your HTML files CSP compliant. So one of the things it can do is just like split your inline scripts from your files for CSP. Here we globally install it. We can then run CRISPR. We have a source option that allows you to just take a current index that HTML file. You can specify then where your build at HTML and build at JS files you're gonna end up. And if you happen to be using Vulcanize, CRISPR actually works pretty well with that too. So here we're taking advantage of piping at the command line. It's just that like thin line. We're taking advantage of piping at the command line to take the output from Vulcanize where we've passed in the inline script option and we're just gonna throw that over the fence to CRISPR which is then going to go and split those out into two separate files for CSP. Now another new tool that we've recently been working on is called PolyBuild. I know that we've talked about a bunch of different tools already so far and you might find it hard to keep track of them. PolyBuild basically tries to combine the best in class of things like Vulcanize, CRISPR and another little known tool we wrote called Poly Clean which helps us keep your HTML clean by removing white space and stuff. And it's sort of the megazord of the polymer world. I don't know how many people here grew up around Power Rangers. I did and the one thing that Power Rangers taught me was that if you've got an adversary or you've got anyone that you don't sort of get along with, if you stand in front of them looking aggressively for as long as you can, eventually they will explode. Thankfully PolyBuild doesn't quite do this. It works. So one of the things PolyBuild helps us avoid is this insanity. So rather than piping all of our different tools together, like Vulcanize with all of the options, Poly Clean after that, CRISPR after that, probably needing to drink some beer after that, you can just run this, just install PolyBuild globally and run it against your files. Good news is that we're already using PolyBuild in Polymer Starter Kit today. It's replaced some of the current Vulcanize pipeline and it works really well with Gulp. So the Polymer Starter Kit Gulp file is already using PolyBuild and we found that it works really well so far. So we hope you try out PolyBuild. PolyBuild has also got a maximum crush option. I was in the engineering meeting when they actually decided to call this option maximum crush. So it's a decent option.  And there's a good reason why I thought that a wrestler image in the corner would be sort of good here. Wrestling is a sport that I don't totally understand because you basically have people that don't wear any pants fighting over a belt. It just doesn't quite make sense to me. Let's get on to some work in progress tools. The first of these is called PolyLint and we actually just open sourced this less than an hour ago.  So PolyLint basically helps you by helping linting your elements and your imports. This helps you stay true to the patterns and semantics that the Polymer team think make really high quality elements but also makes you just make sure you're just catching errors that you think will probably not render your elements correctly. So you can go and NPM install PolyLint globally and run it against your files. And it does a few things that I think are kind of neat. So let's say that you ran it against a file and the output that it gave you was the expression square brackets myvars bounce the attribute class should be using dollar equals instead of equals. Now, just doing this thing at the very top was a little bit more of a Polymer 0.5 idiom rather than 1.01. And what you should be doing is using the dollar sign at the very end instead. So dollar equals. And it just helps you to make sure that you're actually following the right semantics when you're trying to bind to different variables. Here's another example. So let's say that it says property myvar was not found in properties for the specific element. What's happening here is I've tried to use data binding on a particular variable called myvar when it doesn't exist at all. What you should be doing is just making sure that anything you're trying to bind in there has got a valid reference inside of the properties object at the very bottom and you're setting up your types and values correctly. One more example, this one is kind of cool because it says, you know, computed binding using property not a function which is not in fact a function for element that we're using. And if you take a look at the very top, what you see is we're trying to compute. We've got a function that we're referencing called data function, it's a computed function. We're passing in some variables but not a function has for whatever reason been defined as a number instead of a function at the very bottom. What you should be doing is making sure that those are valid functions that you can actually pass variables to actually get valid output from. And there are lots of other use cases where Polylint just makes sure that you're writing code that makes sense. So I think Polylint is kind of cool, I hope you'll try it out and please file bugs. Another thing that I'm really excited about is polygit. Now, something that I love doing is working on prototypes. I particularly like using JS bin for this. And one of the challenges I've had before is being able to load in imports from multiple destinations, lots of different servers, it's the same place and have them still apply the rules of deduping without any issue. I don't really want to have to worry about that, I don't have to worry about like cross domain issues. And polygit is sort of a stateless CDN that's compatible with deduping and it solves some of these problems. And one of the first things that lets us do is let's say that we're inside a new bin on JS bin or one of the other services that are a little bit like it. We can actually reference elements on polygit.org. So it has a directory path called components, we can reference an element name by the Polymer team and then the name of the import. So in this top example, we're loading up Polymer and the paper toolbar. I don't really like the idea of writing these really like long paths for everything. So we can take advantage of the HTML base tag to just simplify this a little bit. So at the very top inside of our head we'll include a base href that points to polygit.org slash components and then I can just reference Polymer very, very conveniently. Let's take a look at a slightly more advanced set of examples. Auto organization selection. So the Polymer team work across a few different organizations. We've got the Polymer org, we've got Polymer elements, Google web components, web components. And Polygit is actually smart enough to allow you to load in lots of different paths and it'll just resolve this stuff behind the scenes for you. So I can easily include paper button on my page as well as Google sign in. They'll just take care of the resolutions for me. If you're wondering whether you can do even more complex things, here are some of the ideas that we're exploring at the moment. Ideas like being able to specify what version number of a particular component you want to load in. What branch and org you wanna load those in from. And whether you wanna specify a completely different org, like I might have an org of my own components of my own version of Polymer even and I don't wanna be able to try testing this out. Most of these examples actually work today and you can try them out on polygit.org. So we hope you'll try out polygit.org. It's very new, it's still sort of an experimental phase so user prototypes don't quite use it for production just yet, but we hope you'll try it out and give us feedback on what you think. And then we've got some bonus tools. Things that I just thought were super neat. So the first is an extension called Polymer Ready. If you're into Polymer and I have a feeling one or two of you might be, you might be interested in just surfing the web and seeing what pages are using Polymer and how they're using them. It might be using different elements that you're suffering using. On that note, I'm also happy to share with you that Chrome is now using Polymer for a number of our pages. So here is the brand new downloads page in Chrome. You can see that it's using Polymer 1.0, it's using some paper header panel, they're using paper material, lots of their own custom elements. This is the new Polymer powered PDF viewer in Chrome. We dive into here, we'll see that they've got lots of their own custom elements, but they're also using things like Paper Toolbar and some other elements in there too. And this is a preview of the new upcoming material design settings page. It's not quite ready just yet, but it's also powered using Polymer and things like our paper drawer panel and Paper Toolbar. So Polymer is being used all over Chrome today and I just think that's super neat. Another thing that I use in my daily workflow is Rob Dodson's Sublime and Atom Snippets package. Now what this basically allows you to do is let's say that you wanted to start prototyping an element. You can just type in like PH, it'll scaffold you out, like what you need for a demo page. Let's say we wanted to create a new element called awesome form. I can type in HI and it'll expand that into a HTML import for me. I can then include a reference to Polymer. I can use another HI to refer to something like iron form. And if I wanted to go and write a new element now, I can just type in PE tab and it'll scaffold that out for me. This is what my sort of daily workflow looks like. I go inside my element, I wanna start using something. It's also got auto completions for most of the iron elements and the paper elements. So I don't even need to necessarily go back and forth between the docs and the doc demos to get started. This is kind of a really neat package available for Sublime and Atom. Something else that was released just a day or two ago is a tool called Polysearch. It's a Chrome extension. But basically what this lets you do is look up the paper elements and the iron elements super easily.  It'll list all the possibilities and then it'll just help you dive right up to the elements page. So that's Polysearch. One thing I wanted to suggest folks do is build an experiment. If you find that there are particular workflows or particular tools that you'd like to use with Polymer and you don't see that they're necessarily officially supported just yet, please play around with them. Show us the things that you're building. Last night, I was actually quite interested in how well Polymer might work with something like Browserify. And so I started building a Gravatar element that would just like show a photo on a page. I found that there was a node module called Gravatar that basically did most of the logic that I needed for my element. So I went and I grabbed this node module and I wanted to create basically this, a Gravatar photo element where I could give it an email address and a size and it would just render the right photo on my page. So, you know, needing a user's avatar is a pretty common use case for apps today. Now, this is what this looks like. We have our Gravatar photo.html element. We have a script that references an external version of our script. So we've got Gravatar photo. That's gonna be the source. We've got a file that's gonna be Browserified using the require statement. So Browserify helps us use those require statements. Then I just have a gulp file that's gonna help build out that code for me. So please go experiment. If there are workflows you find, work really well with Polymer. Please share them with us. Now on to the future. We're currently working on two kind of exciting tools that we think are gonna find useful. The first is the Polymer DevTools extension. This is a new DevTools extension. It's sort of still very much work in progress that it's gonna help you with performance and both Eric Bidelman and Paul Irish are gonna tease some more stuff about that in their talks. We're also working on a brand new version of the Polymer Designer. This is an electron based sort of desktop app. You can also run it in the browser. That lets you go and work on your Polymer elements. We think that you're gonna find this stuff neat and we highly encourage you to also send us your ideas. PRs are also very, very welcome. And last but not least, there's a brand new version of Polymer starter kit available today. This includes everything from recipes for working on ES6 using Babel, to web performance recipes, to recipes for getting Polymer starter kit working with Chrome Dev Editor. It has a brand new build process workflow using things like PolyBuild and plenty of bug fixes. I'm particularly excited about the ES6 support using Babel because I just really, really love ES6 and slash ES2015, whatever your preference is for it. And our support also includes things like just making sure that you're using JSCS to properly style check your code. So I've talked quite a lot about all of our tools. One last thing I'd like to ask you to do, possibly, is give a big hand for all of our tool makers, the people that make our lives a little bit easier on the Polymer team. So that's it for me. Thank you very much.