EuroPython 2023 - Lightning Talks Wednesday
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 141 | |
Author | ||
Contributors | ||
License | CC Attribution - NonCommercial - ShareAlike 4.0 International: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this | |
Identifiers | 10.5446/68698 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
EuroPython 202375 / 141
8
17
22
26
27
31
42
48
52
55
56
59
64
66
67
72
73
77
79
83
86
87
95
99
103
105
113
114
115
118
119
123
129
131
135
139
140
141
00:00
Large eddy simulationQueue (abstract data type)Tournament (medieval)Goodness of fitMultiplication signOrder (biology)Perfect groupOpen setComputer animationLecture/Conference
01:29
Coma BerenicesFood energySystem programmingLattice (order)Sign (mathematics)Pattern languageWebsiteCoefficient of determinationEvent horizonCASE <Informatik>Multiplication signMappingGroup actionLecture/Conference
02:48
Bit rateBEEPPresentation of a groupTournament (medieval)Lecture/Conference
03:29
Tournament (medieval)Video gameNumberGame theoryOpen setComputer programmingRobotMultiplication signTournament (medieval)Maxima and minima
04:08
Software testingComa BerenicesFood energyBuildingCrash (computing)Game theoryMilitary baseData miningPlanningLevel (video gaming)SpacetimeComputer animation
04:44
Virtual machineComputer-generated imageryGame theorySign (mathematics)Coma BerenicesEvent horizonForm (programming)File formatRepository (publishing)Internet forumAreaRule of inferenceSoftware repositoryUsabilitySoftware developerBookmark (World Wide Web)AlgorithmQR codeRepository (publishing)Form (programming)Internet forumOpen setTournament (medieval)Computer programmingSpacetimeRobotSource code
05:36
Electronic visual displayQueue (abstract data type)Lecture/Conference
06:37
Open setQuicksortGoodness of fitMusical ensembleInformation securityOpen sourceSoftwarePhysical lawCybersexLecture/ConferenceComputer animation
07:20
ProteinOpen setQuality of serviceOperations support systemMultiplicationSelf-organizationDigital signalOpen setRegulator geneCybersexOpen sourceBoundary value problemSoftwareLecture/ConferenceComputer animation
08:19
MultiplicationSelf-organizationData acquisitionDigital signalOpen sourceTerm (mathematics)Self-organizationLink (knot theory)SoftwareInformationCybersexRevision controlProgram slicingProjective plane1 (number)Slide ruleComputer animation
10:21
Multiplication sign2 (number)Lecture/ConferenceMeeting/Interview
10:58
Lambda calculusService (economics)CodeFunction (mathematics)Product (business)Lecture/ConferenceComputer animation
11:40
Lambda calculusArithmetic meanRun time (program lifecycle phase)AverageMaxima and minimaCategory of beingRevision controlFunction (mathematics)Run time (program lifecycle phase)AverageDegree (graph theory)Physical systemMathematicsSlide ruleComputer animation
13:52
Food energyMusical ensembleRight angleLecture/Conference
14:29
FamilyFormal languageMeta elementContent (media)Table (information)Endliche ModelltheorieDisintegrationInferenceCodeWave functionComa BerenicesData modelPlastikkarteGraphics processing unitTheoryUsabilityOpen sourceSelf-organizationGoodness of fitEndliche ModelltheorieWebsiteLaptopFormal languageMusical ensembleCASE <Informatik>Open setProjective planeScripting languageVirtual machineParameter (computer programming)QuicksortRight angleBlogOrder (biology)GodType theoryMeta element2 (number)Multiplication signPhase transitionLatent heatWeb 2.0Transformation (genetics)FacebookPower (physics)TouchscreenQuery languageGroup actionLecture/ConferenceSource code
18:56
Food energyComa BerenicesFormal grammarArrow of timeFunction (mathematics)Demo (music)Connected spaceMathematicsLambda calculusLecture/ConferenceMeeting/Interview
20:14
Coma BerenicesToken ringRight angleFormal grammarObject-oriented programmingLambda calculusExpressionFunction (mathematics)Statement (computer science)Musical ensembleDifferent (Kate Ryan album)Parameter (computer programming)Arrow of timeMultiplication signSign (mathematics)Functional (mathematics)System callMathematics2 (number)Bit
24:23
Advanced Encryption StandardHand fanData typeInformationLambda calculusFunction (mathematics)Online helpPlanning1 (number)Lecture/ConferenceComputer animation
25:28
Coma BerenicesElectronic mailing listSoftware bugTupleTable (information)outputSoftware bugData dictionaryElectronic mailing listOvalCondition numberLevel (video gaming)QuicksortSoftware testingCodeInclusion mapHidden Markov modelRight angleCodeError messageMultiplication signMatching (graph theory)Ferry CorstenPhysicalismLecture/ConferenceComputer animation
27:32
Error messageMessage passingComa BerenicesError messageCodeResultantLecture/ConferenceComputer animation
28:12
Message passingError messageProgrammschleifeBookmark (World Wide Web)StapeldateiResultantData dictionaryTwitterString (computer science)Loop (music)Single-precision floating-point formatElectronic mailing listoutputTupleOvalCodeElement (mathematics)Lecture/ConferenceComputer animation
30:04
Lecture/Conference
30:46
Bookmark (World Wide Web)Coma BerenicesType theoryGoodness of fitCodeWeb browserSocial classElectronic mailing listSlide ruleLibrary (computing)Rule of inferenceScripting languageINTEGRALData dictionaryImplementationCompilerModule (mathematics)MereologyProcess (computing)Formal languageExtension (kinesiology)Interpreter (computing)NeuroinformatikWebsiteRow (database)Meta elementPatch (Unix)BitCheat <Computerspiel>Computer fileProjective planePlanningPower (physics)Phase transitionMultiplication signSoftware testingCASE <Informatik>Classical physicsMetaprogrammierungPattern languageCycle (graph theory)Exclusive orRun time (program lifecycle phase)SubsetNP-hardFluid staticsCompilation albumSoftware repositoryLecture/ConferenceComputer animation
35:45
Block (periodic table)Lecture/Conference
36:28
CodeGoogolComa BerenicesBlock (periodic table)File formatGeometryProcess (computing)Line (geometry)Element (mathematics)DigitizingBlock (periodic table)Video gameIntegrated development environmentTouchscreenCodeError messageExtension (kinesiology)Wave packetInjektivitätWeb browserFundamental theorem of algebraPresentation of a groupFunction (mathematics)Projective planeSystem callDampingType theoryLibrary (computing)Software engineeringHydraulic jumpLevel (video gaming)Electronic program guideLetterpress printingGame controllerShift operatorStudent's t-testInclusion mapSoftwareBitComputer programmingFile formatOpen sourceCodeBuildingProgrammschleifeKeyboard shortcutVariable (mathematics)IterationMIDITurtle graphicsPoint (geometry)Computer animation
41:38
Lecture/Conference
42:15
PiProgrammer (hardware)Process (computing)Perfect groupOpen setLecture/Conference
42:51
Open sourceFreewareInternetworkingSoftwareSystem callDecision theoryProduct (business)EmailDemonServer (computing)Address spaceEncryptionData modelFood energyExplosionOpen sourceSoftwareProgrammer (hardware)Software developerProduct (business)Descriptive statisticsSound effectSinc functionProcess (computing)BitCodeProjective planeNeuroinformatikVirtual machineSingle-precision floating-point formatType theoryMultiplication signElectronic program guideEvent horizonOnline helpRight angleLecture/ConferenceMeeting/InterviewComputer animationEngineering drawing
46:14
Lecture/ConferenceComputer animation
Transcript: English(auto-generated)
00:04
If you sign up for a lightning talk, would you please queue here on the side of the other side of the podium situation here, please? So first we have Mia from Pyvo Meetup.
00:24
So if Mia is around, please join us. Perfect. So the order of all the talks, so we have first Mia from Pyvo Meetup.
00:40
Then we have a tournament. Then we have Chuck with why you should come to CRA panel tomorrow. Then we have AWS Lambda loves Python 3.11.
01:02
Awesome. So Mia is here. We still have three minutes if you want to, do you need to prepare? No. No? I'm okay. You're born ready. Okay. Very good. So hello, everyone. One more time. Is there anyone that wasn't at the opening session?
01:20
Raise your hand. Okay. So a lot of people. So I'm Mia. I'm co-organizer of Prague Python Meetups. In Prague, we have Python Meetups that have been going on for more than 10 years. And these meetups are every Wednesday in a month. And today is now every third Wednesday in a month. And today is the third Wednesday in a month.
01:42
Which means we have a meetup. So our meetup is 10 minutes on foot from here. If you open the Europe Python website and you click on events, you will see there Pyvo Wednesday Meetup. We will have a group of people going from here.
02:02
And so you can join Honza. Honza will be standing in front of the venue when, Honza? Yes. After the lightning talks are over, so you can go with him. Or you can come at any time.
02:21
The meetup starts at 7. There will be some food there, some light snacks, and some smaller things. But in case if you're very hungry, if you want something big, it's better to go somewhere before the meetup. Is that everything? Yeah. And you can check the maps, but also we will put the signs on.
02:43
So just follow the signs or follow Honza. Thank you. Awesome. Thank you, Mia. Now we have a tournament talk.
03:15
Just a reminder, when you come to speak, please have your presentations ready to go.
03:23
Wonderful. You may start. Okay. Hi. My name is Neil. I'm the AI tournament guy. So if you weren't at the opening session, basically I've created a little video game that is meant to be played by a Python program rather than a human.
03:41
And during the conference, I want... Well, you guys can participate in a tournament that will be held on Friday, so you have three days or two and a half to write a little bot that will play this game. I can't handle, like, 200 bots at the same time on the game.
04:00
So please team up with people so that we keep the number of teams playing to a minimum. So I think I will just show you what the game is so you can get an idea. And I hope this doesn't crash. So what happens is everybody starts with one base on the map and your mining resources.
04:24
And with those resources, eventually you start building vehicles, you can build some tanks or some boats, eventually. With boats, you can make new bases and then you can build planes and you have to basically try to conquer this base.
04:43
Yeah. And if you go to that QR code, you'll get to here with some instructions. So if you want to participate, you have to fill in a Google form to sign up with your team name and some GitHub usernames. You'll be given a private GitHub repository where you can code your little program.
05:06
Read the game rules and start working on your bot. You can do that even before you get the repository. There's a forum on the Discord where you can ask me questions. Creating alliances with other teams is allowed.
05:21
Betrayals are also allowed, so be careful. And the deadline is 3 o'clock on Friday and we'll do the tournament in the open space on Friday afternoon. Thank you. Thank you. Thank you.
05:41
Awesome. Next we have Chuck. Does it work? Do I allow? I allow, but my mouse is gone for some reason. Why is it? Can you see? Oh, we can see it now.
06:00
Oh, geez. Oh, geez. What's going on? I don't know. All I can do is just drag it over. Jesus.
06:22
Display. Well, don't look at my PRs. Is Joshua around? Joshua! Wonderful. Yes, you're on the queue. Very good.
06:42
Oh, he doesn't reset. And then Rodrigo. Amazing. So Chuck. Yes. Okay. So five minutes. Okay. So this is actually the answer of the question why you should come to the PRA session tomorrow, but I'm going to tell you in detail.
07:01
So because government policy will affect you, how many of you have heard of Secure Open Source Software Act? Oh, some of you. Actually, because it's a US law, so, well, welcome to Europe. So, yeah, you know about it. So next one. Have you heard of European Union Cyber Resilient Act?
07:21
Ooh. Okay. More and more people. Of course, it's European. But how many of you know GDPR? Well, actually, it's not that exciting, because, yeah, in open source, we have no geographical boundaries, so no matter where you came from, you may be from Europe or maybe you are not from Europe, it will affect you. And government regulation. Yeah, exactly.
07:40
It will affect us. And now we have the Cyber Resilient Act. So who is maintaining an open source software? Okay. Some of you. And who is contributing to an open source software? More of you. Who is using an open source software almost every day? All of you. Yes, great. So European Union Cyber Resilient Act is actually a regulation that's trying to keep
08:02
us safe, like putting this logo on your software. But, yeah, so it's fair to protect people, but there's a problem that we are facing, because we are open source. So open source, basically, who has seen this before? Yes. So you know those purple ones?
08:22
It's actually an updated version. I stole a slice from somebody. The purple version, they have some money because they are supported by some organization. The blue ones are probably like a very rich company supporting them. But there are these little ones that everybody uses, but they've got no resources. Maybe one person trying to maintain it during the weekend and something.
08:43
So we won't have enough resources to demonstrate the compliance of the project. Or it will be very expensive. It's very difficult. And it will affect the ecosystem a lot if we have a cyber resilient act trying to make you and me maybe reliable on the software that is open source.
09:03
So there is a noncommercial activity that is extended, but there is a problem, because a lot of open source projects, they need to have some support. They need to accept donations. Maybe there will be people who work for another company who contributed to the open source. Is that okay? Or I know some projects you have been to the PyData booth.
09:21
There's some projects supported by nonfocus. Is that okay? And all these complicated things that will make the term commercial very difficult to define. So what shall I do? So we have to get more information and voice out our concerns. This is why the CRA panel session tomorrow is designed for this and for you.
09:43
So this is actually what happened in Brussels in May, but this is in the past. So we will have an amazing one tomorrow. And one of the advisors will be here tomorrow, hopefully. Or if you want to come to the session and then you want to get some background information before you come here, there is a lot of information in this slide.
10:03
So that's why I will give you the link to... You know, if you get this link, you will have access to these slides and you can read all these things before you come to the CRA session tomorrow. But even if you don't, it's fine. You can just come and ask questions. There will be people... The leader from the community will be there. So yeah. Please join us tomorrow.
10:21
Thank you. Thank you. Sure. Thank you. And now we have AWS Lambda loves Python 3.11. Let's see... By the way, I wanted to ask before... Who is this first year of Python for?
10:42
Who is here for the first time? Wow! This is very good. Well, welcome! It's our pleasure to have you here. Nice. How are we? Almost. I'll be patient. Just a second. This is quite a nice...
11:02
I should. I should, actually. Okay. Hello, my name is Jonas. I work at Otto. It's a big e-commerce marketplace in Germany. But enough about that. I want to tell you why it's a good idea to run Python 3.11.
11:24
If you're running code on AWS Lambda. I expect that most of you are more or less familiar with AWS Lambda. Those who are not, it's a function as a service product sold by AWS. Yes. So right to the chase.
11:43
We switched one of our functions from 3.10 to 3.11. And what you see here are screenshots from the switch. And you can see that our runtimes decreased in all categories. I don't have the screenshot from the max runtime here.
12:01
But the average and the minimal runtime both decreased by 10 to 20%. Just by switching the Python version. So you might think, okay, but 3.10 is the latest version
12:22
that is available on AWS Lambda. Well, you also can build your own containers and run them. We do it with Docker and Terraform. But we do not use Docker itself to build the container. But we use Nix to build a smaller container.
12:41
And that also allows us to actually be confident in saying that the runtime improvement is only responsible, only Python version is responsible for the runtime improvement. Because we know exactly what our container contains. Because Nix allows us to build very small containers.
13:04
All the system dependencies fit on the slide that are included in this container. Apart from glibc, I forgot to put it on. So everything stayed the same. All dependencies stayed the same. It's just the Python version that changed.
13:22
And that resulted in this performance increase. And, yeah, so it was basically one character change in the pipeline. And we saved money from it. And I think you can all benefit from this knowledge. And if you're interested in using Nix with Python,
13:43
just find me here the next few days in the conference. Maybe I'm going to talk about this tomorrow again. Thank you. Thank you, Jonas. Now we have Veebee joining us.
14:02
Awesome.
14:26
I will. I can't see you. All right. Good morning, good afternoon, good evening to everyone who is joining us remotely and also good evening to everyone over here. I am Veebee. I do a bunch of open source things at Hugging Face.
14:42
I'm also one of the organizers for this conference. Thank you so much for coming here, first of all. All right. So what I'm going to be talking about today is Llama 2. Who over here knows about Llama? Awesome. So Llama is this research model that was released a couple months back by Facebook,
15:03
which was research access only, which could be used for all LLM things, large language model things. So pretty much everything which Ines spoke about in her keynote. Thank you very much again for that. And so yesterday they released Llama 2, which is basically the successor for Llama.
15:24
Now what makes it interesting? So first of all, it was trained on much more data. So it was trained on 40% more data than Llama 1. So it essentially is a much more sort of powerful model. Second of all, they made it faster by using a specific type of attention called group query attention.
15:42
Now, this was launched yesterday, and, you know, Hugging Face partnered with Meta to make sure that we can release the access for Llama 2 to everyone. Now, there are certain quirks with the license, but by and large, this model is an open access model.
16:01
We can talk about licenses outside, but anyone can access Llama 2. You can read more about, like, how to use Llama 2 and so on, you know, on this sort of blog post. It's essentially hf.co slash llama 2, and you find that. What I'm going to show you is how can you actually run this Llama 2 model on your MacBook, right?
16:26
So we're going to do a bunch of hacky things. In order to do this, what I did was I essentially hacked together two scripts. One is in case you're a Python enjoyer, then you can essentially go to the script.
16:44
It's on llama playground. You can use Llama 2 via the friendly transformers API, and it works pretty much the same way as any transformer model works. However, let's make it interesting and let's make this work on our MacBook using A&E.
17:05
So I'm going to, like, quickly bring this screen, if I can. Or can I? Actually, I cannot. Can someone? Oh, wait. No.
17:22
Do I have some more time left? You have two minutes left. Oh, my God. I can't. Okay. We're going to try again. Oh, all right. It appeared. So what I'm doing is I'm using llama.cpp, which is, again, another open source project,
17:45
which allows you to run, you know, machine learning models, large language models on MPS. Again, the script for that is on llama playground. So what I'm going to do is I'm going to essentially run this which takes a quantized model,
18:00
and I'm going to ask it something right now. Write a joke for me, please. And let's see if it does something. I hope it performs okay.
18:23
Oh, my God. That's, like, really slow. But essentially what's happening right now is it's putting a 13 billion parameter model all on my laptop, and it's running it. And so here's one. Sure, here's one. Why couldn't the bicycle stand up by itself?
18:42
Because it was too tired. Oh, I am also too tired. Get it? Too tired? Well, what? Anyway, so it did something. You can do the same thing. Thank you very much. And you have a great day.
19:03
Awesome. Thank you, VB. Thank you very much. Now we have August with adding arrow function to Python grammar. I love that. And congratulations on doing a live demo, by the way.
19:22
That is VB, everyone. So do I need to do something special or it should just come to it?
19:41
Yeah, I'm going to start running the timer. A few technical issues today.
20:06
Okay, well, it will be very hard to do from here. So what we're going to do is we will change lambda expression into arrow function in CPython.
20:20
We will try to do that. I hope I won't do something wrong here. I already cloned the CPython, and I'm going to first show you how lambda expression works, just to be sure. This is how it is, you know, defined. And we will try to do something like this, right?
20:41
And it will work. It doesn't work right now. So what we are going to do is we will get into the grammar. Python.gram. Then I will go to the lambda keyword. Then I will copy this. I will create my own definition. Change its name.
21:03
Then I will have... Oh, okay. This is harder than... So I put my parenthesis. I'm not using lambda style parameters. Then I'm getting this. And put my arrow function, which means that I will need to define in the tokens also.
21:26
But first I will have to go to the lambda. And... Oops. The second one. As you see, there is an expression definition here. And here I will put it on top of sky.
21:46
And add, like, arrow def. Lamba arrow def, right? I hope it's correct. Then I will go to the grammar again. And I will get into the tokens. And I will find the column where it is defined.
22:02
Because we added something new, actually, here. I will just add another one. Function sign, which will be arrow. Then make a token. Okay. I started getting a little bit excited here.
22:25
Oops. Make again. Okay. All right. Now, this works for a few minutes or something like that. I'm not so sure if you work on time, because I started...
22:42
Fingers started trembling here. Yeah. So I'm gonna show something more. There are two things. One of them is expression. The other one is statement. Statement is IMOs. You don't know what to do with that. You just save it in your mind, right? Expression is like... I give a cup to you. You can do anything with it. You can throw it. You can give it to somebody else. It returns something.
23:01
What's the difference? The difference is, like, if I define a function, this is a statement, right? I can't do this. A equals. Because it doesn't return anything. But lambda returns something, actually, right? It returns a function.
23:20
So it makes kind of a difference. When we change this into this definition, it will be kind of... I don't know. It will seem in a nice way. And we could construct some stuff, like...
23:43
Like this. And then we could even change this into a function that returns a function. Which adds X and Y. Then we can call it, for example, 1.2. Like this. It's just...
24:01
Expressions are nice, right? You can nest them inside. You can merge them or something like that. Yes. Okay. Now we'll see if it worked. There we go. A plus B. Okay. Yeah. We have it. As you see, we changed the grammar.
24:25
So we can even do this and that. Yeah. I'm gonna actually do even more from...
24:41
This will also work. Thank you very much. I got some help from Pablo today, because apparently I put it into the wrong place. Thanks to him also. Thank you very much, everybody. Thank you. Thank you. That was quite fun.
25:02
Very, very fun. Awesome. So who has plans for dinner, actually? How are plans for dinner going? No one? Okay. No one's having dinner today. All right. Everyone is... Where?
25:21
Oh, Cracker. What do they have there? Meat and potatoes. Okay. So vegetarians. That is not for you. Okay? Maybe somewhere else? Awesome. Cool. Okay. Hi. My name is Yoni, and this is just a funny thing that made me go, hmm.
25:44
To be clear, it was a bug in my code, not in Python's least comprehensions. But you might be able to use this as an interview question or an obfuscation technique, sometime.
26:00
So here's the coding test. To be clear, this is not a trick question at all. This is sort of Fizzbuzz level coding. So the question is, we have a lookup dictionary from country codes, country names, okay? And then we have a list of data, which is supposed to include country codes, but it
26:23
has some garbage also. We want to filter just the items that are country codes, and we want to keep the country names along. This should be simple. There should be nothing difficult about this. And here is a correct answer.
26:40
This is what I intended to write. So there's the lookup table. There's a list comprehension, which has eggs looping over the input list, which has garbage under country code, and a condition if eggs in lookup, and if those match, if that matches,
27:06
we return eggs and lookup of eggs, right? This is what I intended to write. The bug was that I swapped eggs and the tuple.
27:24
Okay. So this is clearly wrong, right? So who thinks this is a syntax error? A few hands. Who thinks it's a value error? A few hands.
27:42
Who thinks it's a key error? More hands? You're kind of closer. Who thinks it's no error at all? Several hands. You're correct. There's no error. This is entirely valid code.
28:04
So what was the value of result? Sorry. Yeah. Yeah. Okay. Yeah. So the result is ABCD, which are not country codes, as far as I know, and we're not even
28:32
in the input list. Okay. So the next question is what else happened, but you answered it already.
28:42
Well, what happened was that I modified my lookup dictionary. For those of you who are not yet laughing, maybe I'll explain it. So there are I'm looping over a list of strings and assigning each string to a tuple
29:08
of two elements. And each string happens to be two characters long. In Python, if you loop over a string, you loop over the not really characters, the
29:22
single character substrings. So when I assign X and look up X to AB, I assign A to X and B to look up of X. So when you want to give a weird interview question to your candidates, here's one example.
29:45
And maybe if you want to remember something from this, there was a tweet by Ned Batchelder saying hey, you can assign to anything you want in a list comprehension. This is a much more useful thing to do than mine.
30:03
Thank you. So next now we have Antonio Curry with Spy.
30:21
I'm very curious about this one.
30:51
Good. So I'm talking about Spy. So the first question, how many of you use type annotations in your Python code? How many of you would like your Python code to go faster?
31:04
If nobody raised their hand now, it's a bit. So Spy is a new project which I started a few weeks ago. It's brand new. I'm doing it as part of my job at Anaconda in the PyScript team. It's static Python. So it means to be a new implementation of a compiler and an interpreter that aims to
31:24
be as fast as C and as Pythonic as Python. The first goal for us is to target WebAssembly because of PyScript and the GitHub repo and I would like Spy to be a first class WebAssembly language which use all the features which
31:40
are coming in the WebAssembly world. We can argue whether this is a subset of Python which is statically typed and compiled or it's a different language which is Python-like. I don't think the distinction is too much important. It's more a marketing thing. But yeah, I think it's a different language. But you can pretend that it's just Python.
32:03
Some of the goals for the project. I want this to feel like Python. So for most people who don't know all the details or the corner cases of the language, maybe you don't even notice that they are different. So for example, I want to have a fast edit run cycle. So you can just modify your code and run it without having to recompile.
32:26
And that's why I'm developing an interpreter and a compiler at the same time and I'm testing them to be 100% compatible so that you can just switch from one to the other. Non-goals. I don't plan.
32:40
I don't try. I don't even try to be 100% comfortable with CPython in all corner cases because I've tried to optimize Python for 20 years and I know it's hard. So basically I'm cheating and removing some of the rules. For this reason, I don't plan that people use .py files.
33:05
They use .spy just to underline that we have different rules. The idea is that you should be able to use, to create standalone executable that you can just distribute and execute without having an interpreter. You should be able to use spy for creating CPython or PyPy or GraphPy extensions.
33:26
So in this sense, you can use it instead of Cython or a better Cython as Stefan is in first row and is looking bad at me. But yes. I plan to have first class integration with C libraries but also with other Python
33:42
libraries by embedding CPython so you will be able to use Python modules from spy. But also since I'm targeting WebAssembly, you will have full first class integration with JavaScript and all the browser APIs. In the first slide, I said that I wanted to feel like Python, but a static type language
34:03
cannot feel like Python because we are too used to all the magic that Python can do. And if you don't use the magic by yourself, the library that you're using are using this magic. But the insight is that I think that the vast majority of magic happens at import time
34:20
when all metaclasses, decorators, and all these powerful libraries do stuff. And then the language that you use normally, it's actually pretty boring and static. And we tell people, oh, you should not mix types, you should use type annotation, don't monkey patch things, don't exec, don't create classes at runtime.
34:40
So if we stick to this, then this is very easy to compile. So the idea is that with spy, we just codify this pattern, there will be an explicit metaprogramming phase in which you have full power of the interpreter and your libraries will be able to do all the magic that they do. But then we draw a line, and from there, you are no longer allowed to, for example,
35:02
monkey patch classes and do things like this, so that the compiler have a better and easier job to emit fast code. It's almost bubbleware so far. I started a few weeks ago, so right now I have a very boring language in which you can do computation. I can compile Fibonacci, yes.
35:21
And I plan to add JavaScript integration very soon, so that I can translate to the browser and do interesting stuff already, then I will add all the other things like lists and dictionaries, classes, and then at the second stage, I will add the metaprogramming features, but they are there. Like I am designing the things for MTS.
35:42
That's it. Thank you. So next now, we have learning Python through blocks.
36:23
We had it. We don't have it anymore. We have it again. Okay. Good to go. Okay. So in this talk, I want to put the spotlight on Python in education. How kids learn how to code with Python and how we can all help. So my name is Josh.
36:41
I'm a software engineer at Anaconda. And my full-time job is working on edublocks, which is a project I created when I was 12 when I was a student. So how to learn Python if you're a complete beginner as a kid. So the most typical thing you're probably going to do is go onto Google, type in how
37:03
to download Python, and it might tell you that it's already preinstalled or give you a guide of how to install it. And then once you kind of got to that point, you'll probably end up with something that looks like this. Which is a Python text prompt that we're probably all familiar with.
37:21
But for kids, this kind of presents a problem which I kind of call the blank canvas. It's not very kind of obvious where to start. You're kind of just thrown into the text prompt and what do I type? And this is a very unfamiliar concept to kids. They've never typed a line of code in their life.
37:41
So they're not really kind of sure what to do with this blank canvas and text prompt. And this can kind of become a demoralizing experience that leads kids just to give up. And that's not really what we want because we kind of have a digital skills shortage and we want more kids to learn Python and coding.
38:03
So just to kind of give a bit of background for those who aren't familiar, this is Scratch. So this is kind of like the most popular tool that kids learn how to code at a very basic level. So Scratch doesn't necessarily teach the concepts of text-based programming, but teaches fundamental concepts like for loops, iteration, and all of that kind of stuff
38:24
that you need to know, variables, functions. And all the blocks are kind of presented to the user so they can see what they need to do and they can drag and drop and experiment. And you can't really get anything wrong. There's no concept of errors. There's debugging, but not in the sense of it's given me a block of red text and I
38:44
need to find out what to do with it. So one of the solutions that I have come up with is kind of introducing this block-based format back. And this is through eduVox. And essentially what I've done is I've put the Python text on the blocks so that there's a one-to-one mapping between one line of text and a block.
39:03
So the kids can kind of have that familiar environment of this block-based colorful environment, but they're starting to get used to the syntax and how Python works, which is really important. And I've tried to include fun libraries like Turtle, so been able to make it fun and engaging rather than just print hello world.
39:22
But these are libraries that can be used outside of eduVox. So eventually eduVox isn't going to be used by these kids. They'll move on to text-based Python, but we're teaching the concepts that they can later apply when they get to that stage. And very similar to Scratch, you have everything kind of on the canvas that you
39:40
can drag and drop, and example projects to load up kind of tutorials of how to use common things. So kind of what I want to get out of this talk is kind of just to get across some of the things that have been key considerations for me. And hopefully we can all apply to the stuff that we're building to help beginners, specifically kids.
40:02
So especially in the UK, where I'm from, and it's mostly a worldwide problem, there is a lack of teacher training. Teachers don't know how to code very well, and that's through no fault of their own. This is just through kind of having not the training in place to be able to deliver the lessons that they need.
40:21
Touchscreen devices are a problem. I ran a code club, and I had one kid ask what a keyboard and mouse was, and using Python, there's a bit of a problem. And also, there is a problem of text-based programming just being scary. You know, it's a big shift from the block-based environment, a scratch that I showed you, to a text-based prompt, and that is kind of
40:43
like the jump going in between one and the other within a matter of a few months within school. And also, installing software in school is a big problem as well. But there is a solution to that, which is browsers. If you're in the WebAssembly summit yesterday, we're talking about bringing
41:02
Python to the browser. PyScript is an open source project that is being worked on at the minute to make it super easy to get started with Python in the browser, and this is something that I want to implement. And also, kind of just another example of adding more fun kind of libraries. This is based off a scratch extension that I saw, which brings Spotify
41:22
into Python to be able to play preview songs. So it's kind of just adding another fun element into the learning to code with text process. So it's completely free, and that's really important, but it's free. So if you'd like to try it out, there are links, and yeah, thank you.
41:47
Thank you. Thank you very much. So I think we're getting to our last talk of the day, our last lightning talk. I don't know who is coming up, so it's a surprise for me too.
42:03
Let's see.
42:20
While he sets up, I actually found a joke, because I'm a little bit uncomfortable with the silence. So it's a pyjoke joke. So why did the programmer quit his job? Anyone? Because he didn't get a raise. I didn't say it was a great joke, but...
42:45
Perfect. So we're ready to start. Thank you very... Thank you, thank you, thank you. You go. Okay, so I wanted to talk to you about the 25 years of open source, because I don't see anybody celebrating that this year, and this year we are having 25 years of open source software.
43:08
So you must be thinking, he must be wrong, right? People have... Like programmers have shared source since times immemorial. What is he talking about? It's almost like 100 years at least, right?
43:22
But it turns out that the guy whose name is on every computer book created 25 years ago, created a conference where a lot of open source developers congregated. And they decided to name this phenomenon open source software.
43:44
Before that, it didn't have a name. And they decided to do... This is a screenshot from a description of that event, written by some guy called Guido Van Rossum or something. I don't know if you know him.
44:02
So yeah. So they decided to do it to help businesses realize that there is all that free code floating around that they can use in the business area. And after 25 years of that, we can reevaluate the effects.
44:20
Like the largest, most rich companies in the world have made billions on this open source software, right? Every large open source product has a foundation behind it so the companies can influence the development without having to employ programmers.
44:41
We have developed marvelous processes and tools for making software more like a shiny product that is ready to be sold to customers and packaged. And unfortunately, there are some downsides as well. As we use all this work, this effort to package it,
45:04
it also gets in the works a little bit and makes everything a little bit slower, a little bit bigger, a little bit, you know, less portable. So we built this magnificent machine but we are left
45:20
with all this craft that was there because it was a product. Also, it takes effort, right, to do the packaging, to do the CI, to do the proper, you know, type annotations, everything. And sometimes this affects open source developers in bad ways. They drop out or go crazy or, you know, some of them died.
45:47
So I'm thinking, you know, maybe those companies could do that work themselves and let's do more open source code and not open source software for ourselves within the community.
46:01
And we don't, like, not every single open source project has to be a shiny product at the end. Thank you. Thank you, thank you.
46:21
So that was our last talk for today. I want to thank each and every single one of you for coming here today, for helping us make this a party. And, well, you're free to go for dinner and the party continues tomorrow. Thanks again.