Now we're going to basically talk about in this part of the module how to annotate variants and prioritize them in relevance to and also some in part to talk a bit more about some enrichment analysis but let's focus on the goals of today's learning objectives. So basically we want to understand what variant annotations can I use, how do you understand the impact prediction models that are out there and then we're going to use in the lab one of these tools called Anavar which is kind of like a one-stop shop for variant prediction. So first we'll go through a few introductory slides about variants and genes. So one thing to consider is two different levels is the gene itself and the variant. So the questions we're looking at is the gene central to a biological process that may well be related to cancer or another disease. So things something like cell proliferation apoptosis or an extracellular matrix degradation and then things other things to consider is whether the gene sensitive to a particular perturbation. So if you think of the diploid cell, if you take out one copy of the gene, does that impact on the role of that gene in the cell? Does that contribute clinically to the disease? And then the variant, the question we're definitely asking is what the effect of that variant has on the gene product itself. So essentially the study of human genetic variation has kind of both an evolutionary significance as well as clinical applications and we're going to photograph us a little bit more on the on the latter. So there's different types of evidence to consider when we are talking about variants, variant occurrence or frequency, relative frequency of an allele in the population and its percentage across all chromosomes in that population. And then things like gene product function. So what's the role of that gene itself? Is it contributing to a biological process or a pathway? And then finally what we're going to be talking about here is the effect or to determine the effect of the variant relevant to the transcript and the protein function. Now there are different types of variants out there. Our focus today really is going to be on small variants, one to 50 base pairs, but it's also good to be aware that there are larger variants, entities out there. So typically a small variant, single nucleotide variant. Usually it's a base pair substitution. And with using next generation sequencing techniques, it's relatively straightforward to detect.  And there is a wide variety of databases that I'll be introducing to you earlier, sorry, later I should say, that will allow you to map the variants to very exacting coordinates within the genome. So I won't necessarily go through the medium or the large variants, the information is in your notes there. Now in terms of annotation or variant annotation, there's different things we're going to be talking about today. We'll talk about the different variant databases that are out there. There's three different categories. That's based on the type of information that they capture. So there's allial frequency from reference data sets. These are like a thousand genomes and the ESP database and the exome AC database. There's also dvstip, which is a resource that NCPI captures a lot of variant data across all species. This cosmic, which is more specific to cancer. And it's actually a very widely useful resource. I'll talk a bit of more about that in a moment. We'll talk a little bit about the gene mapping techniques. Also the gene product effect type. This is the impact, for example, the loss of function, the gain of function, mis-sense mutations right there. And then finally, talking specifically about different algorithms that are used to identify and predict the outcome of mis-sense mutations. And then there's other scoring effects that are out there. There's additional algorithms that can take into other genomic features that help present as well. So let's talk a little bit about the variant databases, frequency databases there. So the first one is thousand genomes database. This is actually probably one of the older databases that's out there. Essentially, it's a global project to catalog variants in the population. They've been very leading edge in terms of developing software and tools and the data formats for exchanging variant information. They're currently in phase three of the project. Their real goal is to hear is to identify all the variants with the greater than 1% frequency in the human population. It's using, it has just over 2,500 samples or subjects, I should say. They're apparently healthy. And the ethnicity is because it's a global project capture the different groups, population groups around the world. The sequencing platform that they're using is Illumina. In the early stages of the project, they were only able, just because of the high cost of sequencing in those days, they were only basically able to do about two to four times of the genome coverage. But now as the sequencing costs have dropped, they'd now be able to sequence to much greater coverage. Another very useful resource is the NHLBI. That is the National Health Laboratory of National Institute of Health, Lung Brain, and I think we also do, actually, sorry, National Heart Lung Brain Institute, sorry. I get too much, too many acronyms with NH NIH. We actually react almost funded by the NHGRI. I still can't understand what that is. Basically, the goal here is to identify variants relative to different heart lung and blood disorders. Although in this case, they're looking at a frequency of less than 1%. They have slightly different subject population in the case of they're actually looking at not necessarily healthy people. So obviously, these are people with the different heart lung and blood disorders. And they do have different subclinical traits that they can actually track and monitor well. And they have quite a lot of clinical data with that, which is actually very useful in terms of data analysis. The ethnicities, the focus quite, they're not as diverse as 1000 genomes. They're looking at African-American and European-American populations. So it's mostly a U.S.-based project. Now, their platform is a little bit out there. They're taking the approach rather than using whole-jewel sequencing, just to be sequencing the exopes. And their average coverage is very high at 110 times. BPX, EC database, the exome aggregation consortium. Again, another large U.S.-based project. It's actually being led by the Broad Institute in Cambridge, Massachusetts. Basically, their job here is to harmonize the exome sequencing data and summarize a lot of this information and make it available for researchers around the world. And their goal is to compile the largest set of exomes ever. And they're actually doing a pretty good job of getting there. Their subject population is a bit bigger, 60,000. Now, again, not necessarily healthy individuals. They're focusing on cardiovascular disease and immune disorders and some other neurological diseases, but also cancer as well. But I have been informed that they've removed certain individuals from different data sets. Why that is, I don't actually know. But, again, there is the distribution of the ethnicities within the population. It's kind of a global population of people. The platform is the Aluminium Exome platform. And they're using the particular variant calling Gata Key. All right. Now, again, another old database. In fact, I think it's younger than me, but it's been around since the mid-90s. This is DBSnip. This is actually a database-capturing variance across all species. It's a very large collection of variants, sometimes a little bit overwhelming, I would say. The only, the one very good advantage of this database is that it's integrated in with the other NCBI resources. So it's very easy to find relevant supporting annotations and literature citations associated with these SNPs. The other thing just to point out is that it does have a relatively good look-up service for variance information. I do find sometimes, although that the filtering criteria, though some claim are good, I find them a little bit challenging. And you do have to make sure that sometimes you remove certain plant variants when you're looking for certain variants within the population. Another very, very good resource is the catalogue of somatic mutations in cancer. This is cosmic. It's based at the Sanger Institute in the United Kingdom. They're basically cataloging a number of somatic mutations in cancer. They've created a very large reference database, a very nice user interface. They're capturing a variety of variant data from systematic screens. This is from the Cancer Genome Atlas, and also the International Cancer Genome Consortium here based at ICR. They also, which is nice, capture a lot of expert, manually curated variant data as well, which is actually very useful when you're screening through a lot of variant information, because there's clearly a direct relationship between the genotype and the phenotype there with all the relevant cited sources, publications, and that's actually a very valuable resource here, particularly when you identify a variant of interest. The important thing to mention is that they're also capturing the frequency of which the gene is mutated as well. Some resources don't necessarily provide that information, or they don't necessarily provide that frequency information for all variants. Cosmic does a very nice job of that. If I seem like I'm blasting through these slides, please raise your hand and ask the questions. Okay, time to just go back a slide. Excuse me. Oh, I did actually. Sorry, I apologize. Gene mapping. So now we want to talk a little bit about some of the kind of methods that are being used to identify different gene loci and obviously things like the distance between genes. So, especially these different types of things to consider here when we're talking about genes, obviously the focus really here when we're looking at Missens mutations is the location within protein coding genes. This makes it much easier to look at the impact of certain variants and then also non-protein coding RNA genes that are typically microRNAs. Some of the kind of caveats really refer to the kind of different functional relevance. This is basically things how large changes in expression may well be a consequence of particular variants and likely different variants in different cells could potentially have similar impacts but also you can also expect that different cells will have the same variant but have different impacts based upon different biological processes being affected by those variations. And we will kind of address a little bit about that in some of the talks, sorry, the talk tomorrow when we actually consider the impact of variations on biological pathways. Now, when we're mapping to the gene, different parts of the gene to consider here. There is the untranscribed region. It's obviously not translated. Sometimes it's difficult to predict the impact of a particular variant within this location. It's much easier to predict the impact of variations within the coding exons and to some degree within introns as well if that has an impact on splicing whether an intron is spliced out or whether the exon is included or excluded from the final transcript. Other things to consider are areas further upstream of the transcribed gene and also downstream as well and then the intergenic regions in between. Now, the system that we're going to be talking about, we're going to actually demonstrating the lab later, is ANAVAR. It has quite a nice priority system. As I said, ANAVAR is one of these one-stop tools for annotating variants and examining the functional consequences on the actual gene itself. You can infer a variety of different other genetic features like genetic bands, and you can apply different algorithms and look at the functional impact scores of those variants. Just looking at the table here, ANAVAR follows this different priority. Obviously, the default is to the exon and then a variety of different values are applied to different gene features or gene parts. Splicing, non-coding RNAs, UTRs, both 5' and 3', intronic upstream, downstream, and then the intergenic region itself. And what ANAVAR tries to do is to reduce the number of mutations, basically from a larger data set, filtering it through a variety of different gene parts, different algorithms down to maybe a hundred, or in some cases a handful, of significant variants. The actual mechanism is, as it follows, it removes things like frame shift mutations. It focuses on conserved regions within genes. It will move things like segmented duplications. It will also remove some other variant data from those in genomes, SNPs. It may well remove dispensable genes. These are genes with high frequency and loss of heterozygosity that are typically found in healthy patients, because they're not necessarily going to have a clinical relevance of that variant. And this is just a slide just to show that the kind of priorities are based on different sections of the gene. Now, to map variants to coding and non-coding genes, there's a need for a reference nucleotide database. In this case, and in the case of ANAVAR, we're going to be using RefSeq. This is traditionally one of the suggested databases to describe genes and coding sequence definitions. There are other databases that are unique, and each database will have their own kind of reference, sorry, will have their own genome browser. So there is UCSC, and there's also Ensemble as well. And your choice is entirely up to you. It's sure how you're comfortable with some of those genome browsers as well. I should carefully watch what I say in case I incriminate myself, by recording this. I personally like UCSC. It's been one of the resources that has been around for a long time. But then again, I curated for a previous database that I curated for. We focused a lot on RefSeq data. So it's actually, again, very useful because it's integrated into a lot of NCBI resources. And Ensemble is a nice European tool. I preferred the old interface, and then they suddenly changed it. And all the features that I got used to became default. The default features all changed. I had to then select all of the features that I wanted to use, and so I found. So I've set it high on my piece. Now let's focus a little bit on Gin Product Effect. Now, here we want to understand the actual, when you're doing a lot of, there's a lot of experimental work out there and you can study specific variants because of the basis of the contribution of that particular gene to a particular function, like an interaction or some kind of assay, or based on three-dimensional structure we can use information to understand the actual gene product effect, or how that variant changes can have an impact on a biological process or a pathway. So there are some regulatory effects. Sometimes these are difficult to establish what change means. Obviously some cases are easier. If it's known where a mutation is and it's within a domain, then you can potentially say that, well, if there's a mutation and this domain structure is changed and it no longer binds to an interaction, then there's the impact. Typically that occurs most of the time with protein coding sequences, and I would say for the majority of the time it is easier to chase after the protein effects. When you start looking at UTRs and intergenic regions, it's sometimes very difficult to understand the impact of those variants. In fact, there's some studies that even show that once you get out of small populations and you actually go to global populations, a lot of those initial studies kind of break down and you no longer find the same significant variants related to a particular clinical phenotype. Typically when we're talking about the change that a variant makes on the protein coding sequence, a variety of different types, there's the stop game, which is basically just adding a stop codon which causes a truncation of protein. Now in some cases that may have clinical impact because just as an example, say like notch one, if you have truncation within the C-terminus of the protein and you no longer have the pest domain, that protein is no longer being degraded, so it actually will stick around much more. So a particular stop codon can have a dramatic effect and actually that particular classification has been linked to ALL and AML, which are two forms of the chemias. There's also a Frameshift indels, so basically we're seeing a shift in the reading frame and obviously from that point forward, protein translated incorrectly from that point. It obviously has a particular impact if the C-terminus or when the protein has a particular domain and you no longer have that domain, which is involved in a chemist's activity or an interaction with another protein. Splicing, so you will affect there whether you're going to have a splice event, actually have a splicing event or whether you do not. There's also inframe indels, which will remove or add one or more amino acids. Again, if that's an un-structured part of a protein, there may not necessarily be effect, but again, if it's in a domain, that may have a drastic effect on the function of the domain or an interaction. The stopless, which is a loss of a stop codon, so you're actually getting transcriptional read-through and so what you're going to essentially have is an extra piece of protein and again, the impact of that is questionable. There is also mis-sense SNVs, where essentially this is probably one of the biggest groups where you have modified just one amino acid and then you finally have synonymous mutations where there's actually no amino acid change, but there could well be additional effects on the transcript that may not necessarily be aware until you actually look at the protein itself. Sorry, once you look at the transcript path and looking at the protein, so you may not see a loss in function of the protein, but you'll see maybe some other deleterious effect because of the transcript either being more stable or the fact that there are also loss of function variants. Definition here is stop gain, frame shift and splicing. They're definitely more disruptive, but the question here is what percentage of the protein is affected by these variants? Are there multiple transcript isoforms? We do know that, obviously, that genes are transcribed in different ways and so we don't necessarily always know whether that transcript being expressed in a particular cell type, but that variant has particular impact because the splicing, because the transcript isn't necessarily being expressed. Splicing events are pretty difficult, are somewhat difficult to predict and we do get sort of cryptic splice sites which are difficult to ascertain what the effect of a loss of function variant. And sometimes frame shifts can be rescued by another frame shift. So when I used to do yeast genetics years and years and years ago, my job was actually to do metagenesis and so you'd spike the PCR reactions and there was times when I actually would get this. We were actually going to frame shift further on and there was a second mutation and actually rescued the first. And theoretically, I mean, you can run gels to actually look at those frame shifts and you can see them and you can sequence them to obviously identify those mutations. But the actual functional impact of that mutation is a question of whether it actually truly does cause a loss of function or whether you actually, one frame shift is rescued and the other. So obviously the focus here is on mis-sense variants. When you're doing what this says, tell me more. I'm going to ask you what you meant by this. But really, how do we tell if mis-sense alters a protein function? And that's the $64,000 question, I think, for a lot of us. Obviously, if there's a distinct mutation that causes a change in the amino acid, then there's possibly a constant, there's an amino acid side group, the R group is very different and it could have a very deleterious effect on the protein. Other things to consider are the conservation of particular residues across species.  So if you have commutation, then maybe you will have a larger impact on that role of that protein. Particularly if it's in a conserved protein domain.  But I think most of the time, really, the big question is what is the impact on three-dimensional protein structure, particularly with docking and drugs, interaction with drugs. We'll see, because we've just written a grant for this for a reactant, that there's not that many pipelines which actually take into consideration to try and predict variant impacts and then putting that in the context of a pathway. Most of the time when you're looking at, and certainly when we're looking at the tools, you're going to have a list of variants, you're going to identify those that have, you're going to predict which have some functional impact. And then you're going to look at the annotations that are associated with different databases out there, whether that's gene ontology terms or pathways. But that's just a term. It's not telling you the consequence or the mechanism that could well be out there. So what pathway databases try to do is, you know, once you, your segue in is that there's a particular variant that's part of a reaction. The question is, what's the downstream effect of you changing that particular biological event? Do you get the same products at the end of the metabolic reactions or do you upregulate a signaling event? And that's actually something we're trying to do with Reactome. And maybe, you know, once we actually get the project, if we get funded for the project, there won't be more to talk about then. And then there's also other functional consequences of mutations and that is affecting post-translational modifications. In the case of signaling that could well be phosphorylation, but there are a variety of other post-translational modifications that have a huge impact on, you know, epigenetic effects. So that's like methylation, acetylation residues could, that could have a huge, excuse me, those variants could have a huge impact on different biological processes. And then one other kind of more computational issue is the difference. Obviously, with all of the variant prediction methods, there has to be a training. There has to be a computational approach, a machine learning approach. And the question is what kind of training set do you use and whether you include positive and negative data within that training set. So obviously a positive data set is that there is a causal link between these variants and this, you know, there are variants with a clinical impact. And then the negative data sets are things where it's not being demonstrated. The difficulty is that we haven't done all, we haven't looked at all variants in all tissue types and all diseases to know specifically. So sometimes the negative training sets are not necessarily the best approach to follow. And just an example here, just in the graph, it's just showing a particular mutation for BRAF failing to, no, in this case we've got glutamic acid change, which is a very distinctive change. So it is being linked to a pathogenic phenotype. But then we have these other mutations failing to anality where you have basically an unknown role. So it has been tested. The question is what's the impact of this mutation? So I would, you know, if I were, well, again also, and that's another thing to think about is the tissue that you're in. Because sometimes, just hypothetically, that BRAF failing to glutamic acid mutation or substitution could well be occurring in one particular cell type where it's been studied. And it's quite possible that a different tissue in the body could have that same, same variant mutation. But it actually doesn't have you're basically affecting a different biological event. So the outcome is different. So that's just something to bear in mind when we're looking at variants. Now we're going to focus a little bit on conservation and some of the different variants scoring methods. So conservation is really a powerful, broadly used idea. If, and really the goal here, I mean, premise assumption is that if the change in the conserved nucleotide is conserved, then it will have a, you know, could well have a kind of functionally significant change on the impact of that protein. And there are different approaches to actually score that information. Oops. So they're at the UCSC. What do you want to take it? So this file of p-score, which is very useful to assess single variants. There's plascones which is used to assess with the in-putative regulatory regions and not quoting, and not quoting regions. That's actually quite useful when trying to understand the functional impacts of variants and non-coding regions.  Now UCSC Genome Browser is one of the browsers I like the most. It's a very nice way of looking at different gene features and it's, well, in this case, if you're familiar with them, they have different tracks. So you can select and play different levels of information about the genes. So you can look at particular coding exomes, ETRs, and, you know, you can look specifically at nucleotides within the codons. And you can see, well, here's essentially at the bottom here is the conservation of the amino acids and you can see the different tracks. Sorry, different tracks represent a protein sequence, amino acid sequence across different species. Obviously the top here are the conserved eukaryotic, higher eukaryotic species and then as you kind of go down into other lower eukaryotes. So, final key is basically one of the tests that's used to detect nucleotide substitution rates. Basically you require an alignment of the sequence. Scores that essentially are being the score itself. Typically if you're looking at a conserved variation or a nucleotide substitution the scores will be greater than two. If it's a neutral score, then we're going to see zero and then for negative things we've got conserved then they're more divergent than neutral. We can also break down into different score groups. Species are all vertebrates and different mammals and primates. Sorry, what's the neutral drift? That's a good question. And I'm going to have to defer to my colleague Yuri to actually answer that one. Apologies. I should remember my evolution with genetics. I teach. Well, genetic drift is just the idea that you're having something outside of natural selection causing a change in the allele frequency in the population. Classic example is like the volcano that kills off a bunch of people and therefore you've got sampling of only a subpopulation and so suddenly your allele frequency has changed. Presumably neutral drift would be that that's not happening. Thank you. One of the main caveats is if you use conservation for a given position it will not tell you directly the effect of the variance but only if the position is important. That's it.  So when looking at missense variant effects different scoring models are here some criteria that are used are what features are used whether you're looking at amino acid conservation whether you're looking at specifically physiochemical properties and then the different types of machine learning techniques you could be using and as I mentioned earlier the choice of the training set that you're going to use with that machine learning technique and actually the example given here is things where you're looking for when you're comparing gain of function mutations versus inactivating loss of functions as well and then things like Mendelian disorders where you see prevailing loss of functions versus somatic mutations which are significant in cancer so the first method is SIFT it's the first widely used designed for identifying deleterious mutations to say disruptive protein function there is sorry so basically the approaches to start off with the initial of protein sequence they do a side blast to look for similarities in the sequence do a multiple line of the sequence identifying orthologs and paralogs and after that creating a matrix based on amino acid residues probabilities and for every residue there's an amino acid probability it's re-weighted by the amino acid diversity and its relative position and then finally you get a probability score where the observed amino acid is normalized against the residue conservation now I have to be honest that's a lot more technical information I can explain so I'm going to have to again defer to Yuri to explain this one later actually Yuri is probably going to listen to these slides and probably tell him I did tell him where to go so polyphen is polymorphism phenotyping and actually it actually adopts a variety of different sequence features and it considers a lot of other relevant gene parts so protein parts because we're talking about domains so to get to consider things like domains interactions and three-dimensional structures as well as the gene parts that I was talking about earlier this is where it gets interesting because they are trying to use two different types of training sets as far as I'm aware it's the only one that actually has made some good progress with the positive and the negative training set within the the humdiv which is the human diversity set so in the positive they are looking at particular alleles that have an association with a known Mendelian disorder and that information is actually getting pulled in from Uniprot actually Uniprot is one of those really interesting resources out there that has a lot of metadata associated with these different and actually a lot of cross-references between what you traditionally think is protein sequence and other phenotypic annotations it's actually very useful to look at sometimes and then they've also got a negative training set which is looking at non-damaging differences between human proteins and their related homologs in other mammals the human of our training set again has two different types this looks at all human disease causing mutations from Uniprot and then obviously the negative is non-synonymous synonymous s steps from without disease associations so it is a richer model than SIFT but it does have a little bit more bias towards the training sets than SIFT so both SIFT and polyphen are probably quite useful approaches to take for identifying the impact of variants and then there's mutation accessor to a newer member on the block it doesn't use machine learning it does consider Mendelian traits it does link out to OMIM it uses the amino acid conservation modeling approach to proteins and incorporates protein sub-family information so it's a kind of regard as an enhanced SIFT and again an entry base score is a little bit beyond my scope so I'll leave that one for Yuri to explain and sends, overall it sends to perform pretty well at current somatic variants but CAD is a new one which I have to be honest until earlier today I did not know existed all I can really say from what I've read over this morning is that it does seem to be a lot better than polyphen and SIFT and identifying deleterious coding and non-coding sequence variations does use a different machine learning technique and it does employ both positive and negative training sets and the predictive features are very wide-ranging so we'll leave it at this graph is supposed to tell you that exactly that's what I've just said and we'll leave it there one other challenge with predicting the impact of single nucleotide variations is the effect on essentially X on inclusion it's inclusion exclusion so this is you know how does that nucleotide change affect splicing events and basically it's a very it's not as easy to to identify the impact of these variations on splicing events and some of the the actual algorithms that are out there don't necessarily work with identifying the impact of these variations in splicing regions and finally some of the impact as I said earlier is that these variants does sometimes doesn't necessarily have well the effect on the the protein sequence also has an effect on the post-translational modifications in signal events this could well post-translational modifications like phosphorylation by default Yuri actually would be probably the best person to describe this because he actually did the work on this actually but it does seem that there are certain changes within um I mean I said sorry let's say this there are nucleotide changes that affect phosphorylation and protein modification sites and typically they're not discovered by a lot of the mutation assessment assessment tools so if Yuri had been here he actually would be telling you how to actually identify that and we'll leave it there just summarize on nucleotide level conservation a simple and powerful approach obviously it's important to look at multiple alignments had other gene features and when looking at the impact of variants the miscan scoring models are powerful much more powerful than identifying regulatory elements within regulator elements or in splicing regions and other things to consider when you're actually reviewing variant prediction it's conservation, the effect scores from the different models I mean our acid changes the sequence context whether you're looking at a protein domain whether you're actually getting clusters of somatic variants whether they're clustering to a particular protein domain and obviously as well as we're going to talk a little bit later not to forget about the gene level information itself and also the other annotations that could all be up there so apparently we're on a coffee


What's going on everyone? Sam here with late and sports cards. We're in 2020 Bowman Baseball, HGA Jumbo, 4 box break, number 19, random team style. So looking again at your random results. As always, you can find those on the website, under the results tab, as well as the link in chat. So I'm going to try out the link to Mosaic. That is the next break with spots, all teams on sale. Time for a Yordon. Yeah, I got Yordon and Peña, two wall. Got Yordon and Peña. I think either would be good. Yordon, Rookie Auto, Peña, first.  I'll make sure you hear it. I'll make sure. Promise you that. The chat, Rookie. Oh, that was Jaren Durand, first Chrome. 1990 Acunha, that would be nasty. This is like relatively, this is earlier Acunha. Oh, Gold. Gold Shimmer, first. Joe Genord. Nice one there, 250. Going to the Mets. Congrats, New York. Nice one, Mets. Robert Poisson. Chrome, first. Paper, first. At his debut as well. Robert Poisson. Paper, first. Xavier Edwards to 125 for the Padres. That is not Colt Keith or Tor. They're not in this though, Spencer. That's the only thing. Base Auto, JJ Bledet. Nice one there for the Marlins. Congrats, Miami. Well, JJ Bledet action. That is a Aaron Shortridge to 299. Whoa, whoa, whoa, whoa. What just happened there? I apologize to the Starlin Castro paper base. Yankee legend, Starlin Castro. Jaren Durand, paper, first. There's going to be Peña in there, but I'm going to not. Ryan Chrome, first. Paper, base. Jason Aminga's first paper. Peña, first paper. Purple Tanner Hauke to 250. Olsen, yeah, dude. That's unfair. Volpe, first paper. He does. He has absolute rockets. Cabello, first. Chrome, paper. Again, there's nothing really super redeeming on the front or back for paper. Refractor, first. Auto, Quinn Cotton to 499. Congrats, Reds. Reds on that one. Yeah, his first player to hit 50 this year. It's a brave fit. Yeah, no, I can imagine. I can imagine you, Dean. He's a beast, man. He's really good. What a great trade that turned out to be. And Murphy too. He ended up getting Murphy from the A's as well. John with the Grizzlies in 25. Ray with the Nets in 25. Thank you guys. Appreciate that. Down to 12 to go on the first mosaic break. 12 to go. Boxed dose of Bo Majola. Yeah, younger version of Ferdy Freeman, honestly, though. No kidding. We got a purple Oscar Gonzalez. Nice one, Guardians to 250. He's a major leaguer now. He's all on all of our 2023 products as a rookie. Nice. Purple. Purple. Keeper Ruiz, the 250 daughters. White speckled. Jason Aminga's first to 299. There you go, Yanks. Rashid with the Yankees. Congrats, buddy. You can toss that in a recap. On the Martian. White speckled first. Never a bad thing with some Martian color. Aminga's first chrome. Eric, I would say Bobby Witt, Jason Aminga's Anthony Volpe, Jeremy Pena, Jordon, Robert Poisson, first auto for the A's. Joe Ryan, Sharon Duran. Trying to think Oscar Gonzalez is a decent guy. Pena Chrome first. Like J-Rod's got autos. Adley's got autos. There's like a bunch of big prospects that have autos in this as well. We pulled a Bledae. That was pretty solid. Right, Josh. Mackenzie Gore to 499. I'd have to not miss that. Welcome back, Joshua. Purple, Dylan Cease, rookie to 250. Like Bachette's got rookie stuff in here. Robert Poisson. Refractor, Aaron Shortridge auto to 499. Going to the Pirates. Victor Mesa. That's a Pena first paper. What are we down to now? 12 to go, everybody. 12 to go. 12 to go on Mosaic. Breaking in just a bit. That's pick your team style. Some good teams still left, Aminga's. Good value in there for show. Like 25 autos. Nice. Volpe. Volpe Chrome first. Joe Ryan. Look at the auto that's just staring you in the face right now. Nothing super big out of this one yet. Had a pretty nice Dominguez numbered card. So that was pretty solid. Robert Poisson. Paper base. Pena Chrome first. That's fair. That's fair. Dominguez paper first. Volpe paper first. Ran first paper. And it's a white speckle. Sam Huff first. The 299 for the Rangers. Congrats, Texas. Pretty solid one there, actually. He had a lot of hype. Especially at this one, this product first came out. Piles in chat. Jeremy Pena first. He was further up, I think. Yeah, said let's go. Further up. Not usually. Not usually unless you request it, Chad. Usually they'll all just separately go out because we sort everything and ship everything by day of the week. So if you have one break on Tuesday, two breaks on Wednesday, one on Thursday, the Tuesday will go out first. Wednesday will go out second. Nice. Sharon Durand to 499. Refractor first auto. Congrats on that. Oh boy. Jonathan's here. What up. What up, Jonathan. Dub. What up, J. Dub. Anthony Volpe first. Is that guy? Is that we're gonna have to start calling him now? I'm down with that. Oh no. I like it. Oh no. He's in the hang. He's in the hang. I'm calling you S-Bot. Space. Got me. Got him.   It was so funny. I had Dylan on the floor, dude. But tell me how everybody you asked what they all do. They thought you were suspicious. Yeah. No one was gonna eat them. I tried to get Joe. I had Joe walk in. I started laughing like before even got to me. He was like, what's going on, Joe? Hell yeah, Spencer. You better, dude. You better stop, dude. For sure, dude. You better stop, Spencer. Stopping. Ronaldo Hernandez, the 499. The APK. Yes, sir. U.S. face, seriously. Yeah. You want me to fill in the other four letters to go with? No, three letters. Well, it could be four. Well, I already gave you the S. Okay. Yeah. Base auto, Bryce Ball for the Braves. When you open, because we'll arrive at like three. 11, right? We're open to the public at 11. The shop? I think 11. 11, Spencer. There's Aaron Shortridge to 125. Yeah, that's about coming by here, right? Yeah. I had Wilson at the Jet Sea last night. It was down 30. Came back. Wow. That's huge, Jonathan. Yeah, Jet's defense looked good. You had what's his face? Jordan White had at three picks. So that helped. Whoa, lot of spots coming in. Justin with a 10 case or spot. Curtis with the Lakers in 26. Jinwei with a spot tomorrow. John D with three and prism choice. Thank you, buddy. Five shorted, Shortridge. I'll see you paying you first for Walt here. There's a pain in your first paper. It's a sign. It's a sign. I heard you won steamer in the month here. Is that at me or is that? No, I don't win. Yeah, you won steamer in the month. I heard that you did though. That was no, that was from a viable source. It was from Robert Poisson on that baseball right there. That's a cool name. Cool be, cool I be stream sniping on Tuesday morning. I don't think anybody. Omar Estevez to 100. Congrats on that one. They're Dodgers. True. That is a gold first. Anthony Cabello to 50. Grats on that Rashid. Yellow Owen Miller to 75. Nice one for the Padres. You go to Miami for work or vacation? These Heinz. I know, in New England. I know, we play sincey in sincey. I'm a little worried about that. Aaron Shortridge again for the Pirates. They look terrible. They did the same thing last year, broke through four interceptions last year in the week one. Bobby Witt and then they just, they completely came back. So you caught it Rashid. There's Poisson, but I won't put you through it, because I'll be getting you on 10 bucks for sure. Which team are you in NFL? Ravens. Raven Spooka. Ravens. So we play the Bengals this week. Blue Paper. Matthew Lee Resort at 150. Still is a rey in this. Pre-trade. 12. So 12. Still 12 to go on Mosaic. Everybody gotta get those sold out. All teams on sale, guys. All teams are on sale. That's the pack of the break. Good luck, everybody. Refractor Glenn Allen Hill going to the Diamondbacks to 499. I know, his arm flies. I know. It's wild, dude. Right, exactly. All right, quick recap, everybody. We had Aaron Shortridge, Bryce Bull, Robert Poisson, J.J. Bladet, Aaron Shortridge 499, Jared Durand, Quinn Cawton to 299, Sam Huff, Purple 250, Oscar Gonzalez, Glenn Allen Hill to 499, Atomic, Omar Estevez to 100, Gold Joe Genord, and a Martian, 19 of 299. We'll do it for the break, everybody. Thanks again for the fill. Coming up next, 10 box, Tuesday, baseball.


Good afternoon, everybody. My name is Todd McAuver and it's a real pleasure to be able to present to you a special musical piece that we've created just for this closing event of the World Economic Forum. And music is one of the most powerful media that we have to connect people and to build collaboration. Music does this by teaching us how to listen. Of course, teaching us how to listen to the music itself, but also how to listen to each other and how to listen to the world around us. With my colleagues at the MIT Media Lab, we've been experimenting with a pretty bold way of encouraging this kind of collaboration through music and through listening. We're working on a project called City Symphonies and the idea is that we go into a city to make a sonic portrait of that city. It's past, it's present, and it's future. And we do that with music as you normally think of it, but we also do it by listening to the sounds of that city, the man-made sounds, and the natural sounds. And the final turn is that we invite everybody who lives in the city to work with me and my team to create the piece together. So it's a true collaboration to make a symphony in a way that I don't think's existed before. And we ask people to go out and listen and record the city, to send us the sounds they like best, the sounds they don't like, personal sounds, sounds that identify the city. We write special software at MIT so that anybody can create their own original music and send it in. We create numerous contexts, both online and in person, so that we can improvise, share, sing together, experiment with this music that can become part of the piece. And then we invite everybody to be part of the process of deciding what the narrative, what the story is of that particular place at this moment that everybody can share. And what we've done for today is to create a special version, a glimpse of these symphonies, and how this process works, and how all of these symphonies together might give a sense of the world connecting. So, so far, we've worked on five of them. Toronto, Canada, Edinburgh, Scotland, Perth, Australia, those have already been premiered, Lucerne, Switzerland, which we're working on right now, and will be premiered at the Lucerne Festival at the end of this summer, and Detroit in the US, which is a very different experience from the others, but really, really, really interesting. So we've woven those together and added some extra spice today to give a sense of the city symphonies, but also to give a sense at this closing event of a kind of ideal feeling of what it's like when people are connected and collaborating with each other, also with the city around them, and the man-made world, and the physical world, what it would sound like when those things are in balance. So this special piece is called A Symphony for Our Times. You're hearing it for the first time. We worked with the Artisan Group in London to make the quite extraordinary images that you're going to see, and I'd like now to introduce Anita Schaufelberger, who's the brilliant pianist who'll be interpreting and augmenting and connecting the sounds of the world on the piano. So we really hope you enjoyed this first time through A Symphony for Our Times. Thank you. Okay. Anita Todd, thank you so much, you know, Artisan, for taking us on a journey and letting us close with this experience, and I just before I formally close, I'd like to, again, just reflect on those two words journey and experience, and it was wonderful, wonderful journey, and really the best experience, really, to bring us all together in the close of the annual meeting. So thank you very much. Before I, on behalf of the managing board and our executive chairman, Professor Klaus Schwab, close this annual meeting, I'd like to, if I may, just have your attention for a few moments, to reflect on just two things before you deservely go back and connect with your families, your communities, and your organizations. We began at this stage on Tuesday. Professor Schwab, you mentioned that our motto, not necessarily the theme, but our motto for this annual meeting should be sharing and caring. And so I'd ask all of you, when you go back, to share, share your insights, share your emotions, your enthusiasm, your concerns with everyone, and clearly continue to care, care about the issues, the friends you've made, the things you're going to do about, share and care, sharing and caring, because that's also those of us, the teams, my colleagues, we've also shared and cared very much for you, for being a part of this. So thank you. And before I formally close, we have, I just, one moment, I also want to dedicate this annual meeting to a colleague and a friend, who very much was all about sharing and caring, and that's our friend and colleague, Ted Chiesa, who I want to dedicate this annual meeting to her and her sharing and caring. And with that, again, thank you again for this journey, this experience. Go back, share and care. And with that, I'd like to formally conclude this 45th annual meeting of the World Economic Forum. Thank you very much.


What's your secret party trick? Oh shall I just do it for you? Yeah What was just happening there? I don't know I don't know where it came from either It's just like the thing I can do If you could take one item to the jungle, what would it be? I would probably take a coffee machine. I think that that's not the most helpful thing when you're like stra- I mean, am I stranded in the jungle yet? I'm taking a coffee machine. I like coffee and I need it. What's your favourite reality TV show? It's a new one, Siesta Key. People aren't really watching it yet, but start watching it and really invest it in their lives and I follow some of them on Twitter. It's ridiculous. That's an MTV show. It is, yeah. Would you rather have fingers as long as arms or arms as long as fingers? Fingers as long as arms. But then they'll go, if they're as long as my arm, like they'll go down to my peat. So they might like drag on the floor and stuff. But I don't want tiny little... Yeah, I stick by my decision. Describe yourself as a teen in one word. Weird. What's your best joke? Two whales are in a bar. One says, and the other one says, Bob, you're wasted. What's your go-to pizza topping? I'm really boring. I like margaritas and I don't venture outside of margaritas because they're the best and I know them and I like them. What's the last video game you played? Maybe Crash Bandicoot. What's in your pocket right now? I don't have any pockets, but if I did, I'd probably have some Breath Savers. What's the last text you sent? I think it was, you look really sinister, but I still fancy you anyway. What's your favourite board game? It is Cluedo. What's your most used emoji? It's the cry- laughing one. It's the only one I use. I don't feel comfortable using emojis other than that one. What's your best impression? Okay, shall I just do it? I'm crass to f'wacken! But also I have two more. I have Arnie, and then Britney Spears.


So let's start with Kristen Yellow, it's Frank. And he just is so consistent, obviously, what we're seeing. What do you like about Yellow? And what he does with his swing? The main thing that sticks out with me with Kristen Yellow is his stance. It jumps to me right away. He's a 50-50 workable balance stance. I started my career with a 50-50 balance stance. Had a tremendous success. I had to change later. You saw me open up a lot, or move out a little bit because they consistently started to pound me inside 85% of the time. But right here, this guy's tall, uses his leverage. He can hit a ball from line to line out of the ballpark. And another thing about this guy, he's tall. And he has great leverage. And he uses it perfectly. Swish, why don't you show us? Give us a little feel. Yeah, I think the one thing that Frank's kind of talking about when they're talking about the 50-50 stance, what he means is the difference between your left leg and your right leg starts in that 50-50 athletic position. The one thing that I really appreciate most about Kristen Yellow is really his ability to finish his swing, right? And what I mean by that is if you want to hit homers to left center and to center and to right center, you need to be able to finish that swing. And what Yellow's does such a tremendous job of is finishing that swing. Getting that full follow-through. You're not going to see him flailing at pitches out here. You're going to see him compact within his body, using that leverage like you talk about, the best way possible, his legs in that good stride, that power L on the backside. And when you're six foot four and you got hands like this, right, he's coming into his body. And that's why I think you see the home run numbers raise and raise. And he's consistent. He does that every time. But I know, Frank, you notice that there's a little difference with Cody Belanger's swing this year, right? The biggest change for me at Cody Belanger this year, he's let the ball get deeper in his zone. He's got more upright. He's using his leverage. But his swing looks, for me, 50% shorter. He's always had the best finish in baseball since he's been here. But now watching him let that ball travel deep into the zone, it's like a shark karate chop. Straight through the zone with the best finish in the game. This is why these guys having tremendous success. For me, he's more of a 60, 40 guy, 70, 30 guy, because he opened up and he's tall. But the bottom line for me is this guy is dropping the hammer straight down with that excellent finish. And you see in tremendous homerun mobility, extrovasibility, this guy could end up with 50 homeruns this year. Yeah, there's no doubt. I think the one thing we saw in the playoff last year get kind of exposed on some certain pitches. And I think the one thing that I really like about Cody is not only his ability to make adjustments and evolve his swing over time, but right now I think what I like most about him is his lower half, right? It seems so much more calm. Young kids think that if you create this huge leg kick and you get all this motion, that's going to cause the power. That's not it, man. What causes power is hitting the ball right here on the barrel. And as long as you can keep that head still, which I think Cody's doing such a tremendous job, sometimes you'll see his bat flat, sometimes you'll see it up a little bit right now. But as of here, you're seeing him walk into his stride, right? You're seeing him load and walk right into that. And when you have that short to it, long through it motion, man, I'm telling you what, that's the reason why he's hitting around 450 right now. It's working. Bellinger with 10 homeruns, Yellish with 11. But Yellish isn't just hitting homeruns, OK? He's got all this magic going on right now because there's another side to him, OK? These two sisters, six and four years old, brought this sign to Brewer's game back at the end of March. And of course, Yellish does hit a home run that day. And so the Brewer's after that got in touch with the family and Yellish surprised them with a dog. And the family's watching batting practice and here comes Yellish with a puppy.  Tell them to kick her after this puppy, though. Come on. I mean, that is great. You got to show what happened at the ballpark that night. Frank, also a fan of dogs. Oh, I love puppies. Especially that night, that guy, which is ballpark, hit three home runs after giving away that puppy. Exactly. I would give away puppies every Monday. Frank thrives at barking the park. You know what I'm saying? He does. Also peeps. Also peeps. He doesn't like them. He likes them. He likes them.


Said Said job for the class one boys four by one hundred Kingston College going on quickly camper down trying to stay close KC with Jaheem Cox on the first leg Kingston College now with the outstanding Tariq Stenet Stenet runs a competent back stretch and KC well away now Kingston College larger in charge in this four by one hundred the baton slows down gets to Shaquille low who is on the pressure from Excelsior low Comfortable down the stretch though takes KC to victory in 41 point three zero Shaquille low beaten in the long jump earlier today, but turns up on anchor in the four by one hundred and For the second week in a row leads his team to victory


Think we can start Okay, so the keynote speak a speaker for this morning, I don't think it needs any introduction I think everybody knows Guido So we are really honored to have you here again this year. So welcome Guido. Thank you Hello everybody, I'm so glad to be back at your Python. I can't believe I think it's been five years since the last one I attended Yeah, oh and Bill bow is really a beautiful place to be I've really enjoyed it so far here both inside and outside the conference Center So as I wrote in the program, I don't know if you've actually read that I will have some prepared to read prepared remarks on the state of the Python community and Python's future directions But first and foremost, this will be an interactive Q&A session and So I warned you but there's still an update. It's all going to be Q&A However, don't get unduly worried to warm you up. I have prepared a few questions and You can answer them. No, just kidding How how do you define a recursive function that computes factorial? I Really do have a few questions And I have some answers So my first question is what do you think of Django girls because I think if Ola or Ola were here Are you guys here Ola and Ola? Oh They're they're resting. They've been partying. Well, I Thought I thought it was much cupcake really great talk. I love the storytelling. I am terrible at storytelling There's absolutely no story in my presentation today. It's just Branch to branch hopping also as you can tell I cannot make pretty slides or beautiful drawings I was absolutely stunned when I heard that that Ola or Ola Drew that drew her own squirrels and batchers and They were really good drawings. I was like I was I was really very impressed There is another thing that I really liked in their talk they said at the end somewhere When we started we had no idea what we were doing or maybe they said we still don't know what we are doing That is very much that sort of resonates with how I look back When I started creating Python 25 years ago, Python celebrates its 25th year here I had no idea what I was doing. I had no idea that a Programming language needed a community With lots of different roles in the community from core developer to supporter to organizer and That's a really important thing to recognize that you don't always know what you're doing, but you're still doing important work One final remark about Django girls I don't know if all I know I realized this themselves yet, but they have created a strong brand in one year and Sort of if you look at their list of how do you create a Django girls event? They know how to keep the brand strong and sort of protected in a sense. You have to register with the Django girls foundation That is that is amazing skill all by itself Which which many geeks actually don't have at all. I'm terrible at that kind of stuff myself So I predict that Ola and Ola and Django girls will go very far Just based on the on their first year and that's really all I have to say about Django girls So now the questions that you wanted to ask me for example Why should I switch to Python 3? Can't you? Can't you already sort of Give up that whole Python 3 stuff is never gonna work. Look everybody around me is still using Python 2.5 Well, actually hopefully They have they have no excuse for not being on 2.7 and so Well, this is a complicated question. Why why should you switch and and and ultimately I'm not saying that you should switch. I would like you to switch But I also recognize that it's difficult to switch. It feels like a lot of hard work that you could also spend instead on say improving the design of your website or Adding features to your application or library and instead you would have to spend it on the sort of the grunge work of Porting to Python 3 and it is grunge work if you have a large body of code 100,000 lines of code millions It will take a lot of effort to port that so why would why would you even? Bother why not just happily stay on Python 2.7? Because Python 2.7 isn't dead yet It's it's going to be supported at at some level of support at least With security patches and maybe security features as needed for the next five years Well, Python 3 really is a better language and for example, it is a much better language to teach and so one thing I cornered that one of the Olas actually both Olas yesterday and They told me and they were very happy. They said we do all our teaching in Python 3 and I realized wow, they wouldn't have been able to do any teaching using Python 3 if the Django core developers several years ago probably close to five years ago by now had Actually started doing the grunge work of making Django Support Python 3 and in their case without dropping support for Python 2 So that grunge work actually paid off because Django girls is teaching using Python 3 Which really is a better language for teaching than Python 2 let lots of sort of little boards have been removed from the language That make it more pleasant as a first experience so Yeah, that's sort of Python 3 just is a better language and It is getting better over time if you look at the list of new things in Python 3.5 Which is going to be come out of beta this fall That's an amazing list of new features lots of cool new stuff Python 2 on the other hand is a fine language and it will remain exactly what it is Yeah, we'll we'll fix the occasional bug, but It's sort of it's asymptotically approaching 2.7 perfect and it's never going going anywhere beyond there so that's why you should switch to Python 3 because You will the only way to benefit from all the good work that core developers and other contributors do to Python is by switching so a related question and maybe a little dated by now is why Won't you do a 2.8 release? Well, it wouldn't really solve any problems Either 2.8 is has no new features compared to 2.7 and then we might as well call it 2.7.10 or something like that Which actually is coming out eventually Or You open the floodgates of back ported features from Python 3 and Then porting to Python 2.8 would be almost as difficult as Porting to Python 3 would be and a really big difference between 2 and 3 that can never be split It's not so something that you can gradually Evolve into is the unicode change Most other things you can you can write almost Python 3 code in Python 2 7 actually from future import print statements a new try accept syntax and go on But unicode you just cannot switch so Enough is enough. No new features I want to focus the energy of the Python core development group, which is already busy enough I want to focus that energy on making Python 3 better So what is my favorite Python 3.5 feature? I Went over the list of what is new in Python 3.5 and I realized that that list is way too long There are way too many cool new things. So in some sense, maybe everything together is my favorite new feature and this this goes from the vastly optimized Function for scanning large directories OS dot scanner which will be used to make OS dot walk faster and sort of It's a pep all by itself. Most people will never know. No, it's there But it's an incredibly cool project There's a small community of people who will be very happy to hear that there is now a matrix multiply operator in the language There are no built-in types that Define that operator. It's an ad sign by the way, but it has its own Mapping to a dunder function and numpy can start using this So eventually numerical Python users and scientific Python users will be able to write matrix multiply in a much more natural fashion than Calling a function Maybe my favorite feature ought to be type hints Because that's the only well. That's actually one of the two, but the only major pep that I authored myself It's been a huge struggle to get that pep accepted Which is kind of bizarre because I'm the BDFL so I can just accept my own pep if I want to but I Thought in this particular case that that wouldn't really be fair. I wanted to have a real discussion about the benefits And I wanted to have an independent as independent as possible party to sort of Validate the design and Mark Shannon author of hot pie Another Python Interpreter that is faster than CPython Gracefully agree to be the BDFL delegate for type hints and We worked out a Process and eventually using the process we worked out a compromise and I'm very happy with The outcome and that sort of the outcome really is better because of all the effort that mark put in there So thank you mark and Yet I think if you sort of if you caught me on the wares and you asked me what is your favorite feature in Python 3.5 I would have to say it's pep 492 Which is literally the last pep that was accepted before beta one It's async def plus an await expression an await keyword and also async for and async with and It's a new more natural way of spelling co-routines That is a direct follow-up on The async IO work that I did a few years ago, and I don't think Yuri is here. He's Canadian Not that that would preclude him from attending But in absentio, thank you Yuri great pep great feature and I think that a Few years from now. We'll look back at on that as one of the big new things added to Python 3.5 So I guess that's my favorite 3.5 feature, I don't know if that counts as a killer feature so another question much more humbling and a Woman named I think Lena Lena from Ukraine She knows who she is cornered me yesterday during lunch and asked me this and it's it's a really complicated reason I mean Yes, it is true There are many many open bugs in the Python bug tracker and if you if you were to pick an Open bug at random from the tracker Chances are very high that you'll you'll catch a bug that is years old has several Patches attached to it has several core developers discussing that patch to death several renowned core developers Stating that this is a good patch that needs to go in Or perhaps not but long discussion proposed code and Yet the bug is open Patch has not been applied Why is that that are we are we just sort of is the core development group a lame bunch of developers? Do they not accept patches is there some kind of? Old boys network where only patches written by core develop existing core developers ever get accepted or what? What do you have to do well there that it's it's unfortunately just a Fact of life in any large project I I haven't looked but I bet you if you look at the bug tracker for Linux if they even have a bug tracker It would be even worse. I remember I Worked at Google on the App Engine project which had lots of external developers The project was especially in its initial stages very popular with very vocal developers We had a huge number of issues in the tracker many of which had sort of good discussion and it was very hard for the team to admit that we just couldn't address them all and sort of When someone reports a genuine bug when you you don't have a reason to close it instantly as like that's not a bug That's a feature you misread the documentation There are lots of lots of those too, but those get closed right away So the ones that stay open are real bugs But they may be hard to reproduce There are a lot of bugs in the tracker that only occur on one obscure platform Maybe only to one user who has a particular Combination of things they do that makes the garbage collector crack up or Any number of reasons there is probably some subtle bugs somewhere in CPython and Nobody has been able to find it. So those are bugs that don't have patches then there are bugs for feature proposals where someone actually made it a patch but Usually if you read the whole discussion carefully, you'll find out that there is hesitance to accept a new feature because Either it is not consistent with other features of the same module or There is doubt that it's a useful feature. Maybe it's a three-line Function that people could easily come up with for themselves Maybe There is a change to something existing that is a backwards a subtle backwards incompatibility that the author of the patch and maybe several reviewers even don't see they're sort of it's just really difficult to to sort of accept patches and Not break stuff all the time and and I know my personal experience of course going 25 years back 25 years back. I started accepting patches from others like first. They were the people who worked with me in the same office after a year I started accepting patches from people all over the world and Some patches are obviously improvements But they're also backwards incompatible in those early days I didn't mind if if everybody's Python code broke. Well, that was maybe a hundred people and It would they would all have their code fixed in a few minutes and the change the fix was obvious Nowadays if you if you introduce a new patch that accidentally breaks someone else's existing code That other person may not even be a Python programmer They may not even realize that they're using Python It may just be some installer script that comes with their Linux distribution That breaks when they try to do a certain thing because some a new reserved word was introduced in the language by by An optimistic path patch. There are just so many Different things you have to worry about Does it work across all platforms? Is it consistent? Is it easy to understand? How would you write the documentation? Do you provide tests? so also the sort of core developers have a limited amount of time and With open source development in general nobody actually gets paid to Review and apply core Python patches. We're all doing it in our spare time and that also means that if If none of the core developers really cares about a particular feature and they don't care or know the person Who submits the patch? You can't really blame them Collectively for not applying the patch if you if you have professional software development Then you have presumably a commitment to releases and features that includes if you want to Continue to be employed at this company you have to do a certain amount of grunge work and you do that in a rotation or sort of maybe through seniority However, you resolve it when when people are paid to do software development They know that sort of doing unpleasant work that is still necessary is part of the job with open source You have to volunteer to do the unpleasant stuff and some core developers have been doing unpleasant stuff for such a long time that They want to take a break and sometimes that just means that there aren't enough people who know a certain area Certain module or a certain part of the interpreter well enough to be able to accept a patch even if there are other people who say this looks great to me because How much do those people know you you mean eventually there there has to be a chain of trust So anyway, these these are many reasons why you have many long old Bugs in a tracker. There's an additional reason which is a simple Statistical effect that you often overlook Which is that if if you sort of if you randomly were to pick a Bug from the tracker that was either open or closed You would probably find a closed bug Most bugs are closed quickly because they are simple things Perhaps some bugs are closed because they weren't actually bugs other bugs are closed quickly because there is a very simple to fix It's a typo It's a very obvious Problem that everybody can agree. Oh, yeah, that's clearly there is little bug here fix fix fix done So the sort of the bugs that are easy to fix get fixed and closed easily quickly and So what remains is sort of the bugs with a longer lifetime Contribute much more strongly towards the collection of open bugs So the sort of I think the average age of a bug probably increases linearly at least with the age of the project So in a project like Python, which is 25 years old even if our bug tracker isn't quite that old Even if everything was was Spinning perfectly and we had tons of core developers closing bugs. You would still find a large number of Mysteriously old and open and unclosed bugs in the tracker And that's why there are so many open bugs in the tracker as best as I can tell So another question that people always ask especially journalists who Have sort of hope to get something a sort of Headline worthy out of me out of me. What will the future bring? What's what's going to be the next big thing in Python? What's what are you excited about in the next release and I'm always sort of I'm always caught unawares by that question So I had to sort of think really hard before I realized that that should also be one of my prepared questions today. I I Really don't know what the future brings is very much dependent on what the community cares about and sort of what certain individuals in the community suddenly Decide to spend an insane amount of time on just like 25 years ago I spent an insane amount of time on Python in addition to my day job and it sort of it took over my day job for a while and and I Had had to work out an agreement with management to Be able to continue doing that So if if there's something you really really desperately wants to contribute That could become the next big thing in Python I'm hoping to work more on type hints and I'm currently on a very long summer vacation when I come back to work in August I'm coming back to type hints and I'm going to work with other people interested in type hints and sort of really Do stuff with that feature so that That type hints are something that people can actually use in practice. It's not just a pep that has one little foothold in the standard library But there are many other things maybe in a few years. I'll get bored with type hints and I'll suddenly Devote my time to multi-core support Getting rid of the gill. I mean, it's not a topic that will go away. People are working on it Maybe pi pi will take over. They still have a bright future ahead of them Maybe Python will will get a boost on mobile platforms. There is now a mobile sig where people are discussing issues like cross-compiling Python for Android and iOS and That may may sort of evolve into a real capability of doing Python development for mobile platforms Which would be great because you could write your application once in Python and run it both on Windows phone Android and iOS wouldn't that be wonderful There are also people and I consider these sort of the crazy lot, but yet who knows Python in the browser There was a completely insane demo from someone who had done yet another Python in the browser Implementation it was someone from Mozilla, and I think that it involved rust somehow or maybe I'm mixing up two different talks, but there there There is some great Experimental work going on in that area, and I think they have an interactive prompt that can import two or three important standard library modules, but nevertheless There may be something there but sort of It's up to you, and and I also hope that the rest of this This we have half an hour left, and I hope that you are going to come up with questions for me now and I Don't see people running up to the front with their questions, but we have I think we have someone with a microphone if you could bring the microphone to the front of the room and And I was actually hoping to alternate questions from men and women Is there Someone of the female persuasion. Yes, would you mind coming to the front? I can have a Q&A Q Yay, I'm the brave one So my question is Could you give us more insight into the guilt problem and how this issue is being addressed? Very good the guilt problem so Well, how much time have you got? Long ago Python was single threaded and everything was happy There was computers had only a single core at Some point we added a threading facility But computers were still single core So what a threat did what multiple threads did was they would basically just Share that single CPU between different threads of execution Python at least see Python and the gill is a CPython problem primarily Is implemented in C and if multiple threads Were to access the same object from C code They would run into race conditions race condition is where two threads try to update some shared piece of data and They sort of they get confused like you add one to a reference count And this is a real example Suppose you have two threads that are both using the same objects because CPython uses reference counting as the primary garbage collection Mechanism they both want to increment the reference count So the way that is done is they read the reference counting to a register add one to it and write it back So in in multi-threaded code if you didn't have the gill two threads at the C level could do the same thing they could both read the reference count suppose it starts out with 42 they both Move that into a different register Updated to 43 and then write back 43 and so now the reference count Which logically would have to be incremented by two is actually only incremented by one If there are no more race conditions Eventually the object will have a reference count of zero while it Actually ought to have a reference count of one at which point it will be prematurely freed and Then the remaining Thread that still has a reference to that object will continue to use an object But it's actually being freed and the memory has been reallocated to some other object and all hell breaks loose so In order to prevent this one solution could be every object has its own lock and in order to Increment the reference count you first grab the lock for that object Then you can safely increment the reference count Then you release that lock or maybe you hold on to that lock as long as you are accessing other parts of the object That would require a lot of locks and a lot of locking operations and People have experimented with that approach and the problem is that if your program does not need multiple threads just the locking the sort of the locking without Other threads content contention for the same for the locks Because there are so many reference count operations and so many other situations where you need to Keep the data locked or the object locked before you can do anything with it even read it because someone else might be right it might be writing it It would slow you down like a factor of two so Python would be twice as slow Just in order to be able to support multi-core and so you would start seeing benefits only when you use three or more cores in parallel Also, this would have been a very Difficult architectural change to see Python and it would break all C extensions So rather than Introducing per object locks. We introduced a single lock that locks the and Essentially locks all objects together both their reference counts and their contents And that is the global interpreter lock, which if you look in the code I'm not even sure that it's called global interpreter lock Although by now there might be a comment saying this is the global interpreter lock because that the term was invented Long after the concept was introduced in code base so the problem is that Fast forward 10 15 years from the introduction of the gill Now multiple cores are commonly present on even on laptops And people actually would like to be able to write multi-threaded code Without having to resort to multiple processes currently using the multi-processing module You can use multiple cores, but there are certain costs involved like You may have to Import all code in every process You have to serialize through pickling Your objects so very large objects or very large trees of objects are inefficient to pass around back and forth And so multi-processing is not a complete solution. So People would like to see multiple multiple threads Supported in a way that doesn't require the gill or maybe maybe we'll have to break down and do something like the the per object locks We If if you sort of if you could design a language from scratch that didn't need a gill you would probably design a language without mutable objects or you sort of Limit the mutability to much more sort of to a small number of specific object types rather than making pretty much everything mutable from modules to classes to Instances to dictionaries to lists you're taking the words right out of my mouth So we have to find a compromise like like almost everything in life in my experience at least involves compromises And we have some exceedingly clever people who have been thinking about this For a long time and exploring different Different ideas like Armand Rigo is working on software transactional memory Probably has been working on it for five or ten years There's also a guy Trent Nelson Who currently works for a continuum analytics who? Apparently also has a brain the size of a planet because he managed to at least on windows only on windows introduce Changes to the reference counting macros in Python and changes to the interpreter that make Guilfrey execution possible in limited situations So hopefully something will will eventually happen there and There are other people who are threatening to sort of Bang their head against this particular wall until it breaks and I I expect that eventually we will have something breaking through that wall, but It's gonna Be a while if you have ideas about this Without change without just redesigning the language so it would not be Python I'm all ears And I'm all ears for the next question Hi Are yourself using pi pi I mean do you like the jit do you like the SDM and maybe in the future Do you see the pi pi being the default interpreter? so How do I see the future of pi pi? Let me try again if you yourself are using pi pi and How do you like this the features of jit the features of pi pi like jit and SDM and If you see pi pi that it could become the default interpreter for my turn Okay, I am not Myself using pi pi It it just doesn't naturally come up I have occasionally downloaded it and played with it for a few seconds and I'm happy with what I see but I sort of I Have two basic modes in which I use Python myself and One is I write like very short scripts to solve a very simple problem Almost more like a demo and I have no reason not to use just the Python that I've already built From the CPython sources that I always have in four versions in my home directory The other mode in which I use Python is as a Dropbox engineer and We deploy code to the Dropbox production cluster Which runs a specially modified version of Python 2.7? Yes, I Said it. It's Not a secret There are actually at Dropbox. I believe there is One small surface that does use pi pi because it is faster All the rest of Dropbox does not use Python does not use pi pi because it is not sufficiently compatible or perhaps because we We would be worried that there would be a hidden incompatibility somewhere that would break our production in a very subtle way and we have enough of that without having to blame the language Nevertheless, what do I think of pi pi and the The features it provides I think that pi pi is a very good Tool in in the fight against complacency Pi pi shows that you can execute Python code faster than CPython does pi pi shows that sort of pi pi provides a test that for Interesting ideas like STM If you if you look at where pi pi is actually used at sort of at a large scale You would you would actually have to ask the pi pi developers. I believe they are talking. They're giving a talk sometime at this conference My hunch is that the sort of Conservative stance is to not use pi pi unless you have a proven need for the extra speed Unfortunately that sort of that That is a self-defeating Principle because by the time you know that you would have benefited from the extra speed You've probably already deployed to enough different servers that It would be a major engineering task to switch and Again, just like people don't like to have to spend engineering time Take it away from feature development or application bug fixing and put it into Porting to Python 3. They also don't like to take put that effort into testing with pi pi and There are real limitations to pi pi in a typical deployment like a Dropbox We have hundreds of third-party dependencies some of which are very old. I think one or two of which We only have a binary for Or at least we we have lost the art of exactly how to produce that binary from the sources that we also have That mean this these are just I mean if you ask anybody who has a million or more lines of Python code The stories are the same That mean that that's I'm just I mean a few years ago I would have been able to to sort of tell you similar stories about Python usage at Google. I No longer work there. So I'm I'm not telling but I still know what Situation there was like a few years ago Maybe pi pi needs a better marketing team Maybe they need to hire Ola and Ola the brand specialists To improve their their sort of The perceived quality of the brand Because pi pi is really cool project, but There are all these sort of checkboxes that are hard to check off that make it easy To say well, we'll go with with the tried-and-trusted Python CPI from 2.7 Hello Instead of asking one long question. I'd like to ask five short questions So they just need one word answers. Okay So the first one Was What is your favorite web framework? What is my favorite web server framework? Oh my sorry my favorite web framework Well, I only ever write one web app in any framework and then I don't have an opportunity to write web stuff for a long time and then When I have to do some more web stuff There is a new framework, I think the latest one I've tried was flask and I don't know if it's my favorite, but it's cool. Okay, and What is your favorite testing library? My favorite testing library is Mostly just the standard library unit test and mock In Python 3 those are all especially mock is very good in Python 3 in the standard library and What is your favorite text editor? My favorite text editor is emacs But if you'll allow me there is a funny story here, which is that I also occasionally use vi or Vim and for for Historical reasons because I I used Vim 30 years ago before I was introduced to emacs and switched When I use Vim for five minutes It takes me 15 minutes to get used back to emacs after I switch back to emacs What is your favorite language besides Python? Oh, I used to say C but that's kind of boring I Have it from from people I trust very much that the modern C plus plus is actually a really good language With like the type inferencing and lambdas and smart pointers I've dabbled a little bit in that and I Found it certainly much more pleasant than old C plus plus like I remembered I quite like go although I have never never actually written anything significant in it and Again, mostly from looking at it and talking to the designers a little bit. I really like Swift I think Swift is a is a well-designed language using sort of the steel steel features from other languages that you like which is really a Flattery and so they stole quite a bit from Python But they also managed to sort of Make that Swift the language quite coherent It's easy to sort of come up with a language that steals the wrong features from all different languages And you end up with this this horrible Frankenstein monster of a language But Swift is the opposite thing they they combined it all They only stole stuff that that fit well with their core design principles is Swift open source there I've heard that it has recently been open sourced. I don't know how many teeth that announcement really has it could be that There is a real compiler that is not open source that is Apple optimized or they all sorts of Reasons why open sourcing is not always the same as open sourcing Yeah, okay, and the last question is what is your favorite exception? What is my favorite exception? A keyboard interrupt we have ten minutes I Would like you to hear your comments on the vitality of the Python community compared to other Language communities. How are we doing when it comes to? General acceptance. How are we doing when it comes to? Innovation in the language. Oh My that's I'm like the worst person to ask to compare the Python community to other language communities because I'm like totally at this the center of the Python community where everything seems hunky-dory and firing on all five cylinders and sort of new stuff is always coming along and and I see lots of women in the audience much more than five years ago I believe So I I see our community as incredibly vital and and Growing and and successful and I see the language as being very successful. Of course you Someone who happens to be a big Java nut and who has been doing Java work for 25 years Might perceive the Java community as exactly that and sort of at the periphery see this little Python thing That never will amount to anything. So I I don't know how to compare. I sort of I can Easily name two language communities that when I started with Python were much more vibrant and have now sort of dwindled dramatically a pearl and tickled TK both In in 95 I went to a scripting language conference And I met Larry wall and John Osterhout and a few other people who had done scripting English thing each scripting languages things And I was really looking up because pearl was like everywhere super successful Riley was running pearl conferences that had thousands of attendees or at least that's what it felt like Tickle TK was clearly number two in that space and Python was just a sort of up-and-coming little guy Who still had to prove themselves and had this big disadvantage of the crazy white page space shit and Focusing more on sort of elegance than on Being able to really quickly whip up the most crazy script in one line and Somehow Tickle TK pretty much got destroyed when Osterhout decided that he no longer wanted to lead that community it's my feeling and Pearl I think was severely damaged by the pearl 5 versus Pearl 6 Rift and that's sort of even when I started with Python 3 I Could see that happening in the pearl 6 world and I wanted Python 3 to be much Closer to Python 2 now you could argue that looking back. I still didn't know what I was doing but they still think that as a community we're strong and So but maybe comparing us to pearl and tickle is easy Ruby is A very very sort of happy community. I believe much smaller than Python, but I Don't really know any numbers Yeah, there are sort of big languages with lots of followers PHP JavaScript that I'm sure are pretty happy But I Don't know. I mean at every Python conference. There are always plenty of talks that explain in much detail Something cool about JavaScript for example because you can't get very far with Python without doing JavaScript Yeah, hi So this might be a bit like the pearl 5 and 6 thing But are there any circumstances where you would accept breaking the C API of Python modules that you would actually Consider it worthwhile to have people do the migration work to something new Breaking the C API well, there there are sort of two different ways of breaking it There is an ABI which is a limited set of C API's where we strive for binary compatibility. So a Binary extension module compiled for Python 3.4 Should work with 3.5 and and actually there's quite a wide range, but you have to sort of limit yourself to a Sizable but but still limited subset of the C API On the other side of the spectrum you could argue that we're not really breaking the C API when we just change what the macros do and people who experiment with Say gil-free coding often redefine the reference counting macros to do something else either sort of implicitly acquire lock or They turn them into no ops because everything is garbage collected anyway or they invoke special platform dependent Atomic increment and decrement instructions Which means that you would have to recompile C extensions in order for them to work, but That still arguably is within the bounds of the C API Although not within the bounds of the the ABI compatibility beyond that We we have occasionally I believe Changed API's Where we found that The signature was just wrong we've but but we've we've almost always we've introduced a new function with the correct signature and Mapped the old function to something that was backward compatible so we do take this pretty seriously and So the thing is that For so many people Python is just a glue language that is used to glue various extension modules together That if you break the ability of using of using extension modules Albeit, maybe requiring recompilation of everything Python's reason for existence would would disappear Which which is unfortunately also part of the story of the difficulty for pi pi acceptance because pi pi typically has a very different Sort of natural API to talk to its objects from C code or C++ code That's question. Hi. I have a short question. What things you hate about Python? What things do I hate about Python? Anything having to do with package distribution version sort of version skew version dependencies that that is just such an endless mess I Dread it whenever someone at the company where I work Says can I ask you a simple Python question because almost in variable? Well, let's say 50% of the cases It's not a Python question at all, but they've got some kind of mess with the the import path And there's just there's just no easy answer So those that that's sort of the general area of Python that I hate So we are out of time. Sorry Okay, yeah, we're out of time No time for our questions. So thank you. We do very much for And we have a very important Thing now we wanted to thank we do for coming in all the keynotes. So From the organization we want to walk Thanks, Mo Guido and all the keynotes. So we want to give him a present a very typical Present we forgot yesterday to give to the Olas. I don't know if they are here of the they are Seeing us from the streaming of the can came Thank you again. Thank you guys. So now we're having coffee break Just another reminder don't bring food to the room. Thank you