Okay, so our welcome everyone for learning talks. This is my favorite part of the conference and say so our first one is Chuck Someone is sharing the screen, which is not mine Okay, okay, it's your screen now. Okay. Okay now now I can share. Okay So your time is starting you have five minutes Right, so hello, I'm check So I hope I have met some of you like in person previously in the previous your ribbons so today this is My life-sharing talk and if you want to grab the slides I always put the link of the slides at the top of the first slide and also my contact detail like in my first life as well So please like you can ask me questions. That's fine. You can contact me for like Twitter or just tag me in the conference. It's fine So this is about teaching in in Africa. So This is actually what I did last year early last year that is in Picon, Amoeba I went and attended and also I You know together with me as friends and dreams some of them that some of you may have met her I will give a data science workshop in Python there and I can tell you the experience is amazing the people there Love learning Python. They're so enthusiastic and that's why I think it's a really good thing and that's why I want to tell you about that So the plan was that we gone going to is people seeing my screen or ish Yeah, so yeah, sorry. I see your message But anyway, like we want to do it in Picon Africa This year we want to you know expand not just in Namibia, but you may be in Picon Africa We should wish was planned to happen in Ghana Well, it didn't happen because of COVID-19. That's why we are all sitting here at home now and Well, fine. Let's do it online then, you know, it's just like taping away like just you know, I don't care I have to make it happen and Actually, it's not that difficult because we figured it out We have actually already done it in Picon US this year like is it online workshop is about data science for absolute beginners and We had like it was break into two days. We it's two Saturday and people learned You know, very like very very beginner topic about, you know, how to use pandas how to use, you know scikit-learn and Some of them don't even know Python and we have to teach them like very very basic Python. So So this is what we we have done in May this year in in Picon US and But, you know, we are now like, you know, two weeks away from Picon Africa So the workshop this year in Picon Africa will be on the 9th of, you know, August and we really really need people to participate. So that is this this link here and You can also follow us on Twitter. We just have this brand set up So so things could be a little bit still like a little bit empty, but is is is there So we what we want you to contribute is that, you know, of course, like if you know some like data science stuff You know joined to be mentors. We need a lot of mentors to make this happen We plan to have as much participant as we can accommodate online And of course, if you know anybody who want to, you know, learn Python or want to maybe like learn how to do data science with Python, you know, share the link to them The application is closing on the second. So please do it quickly. And the last thing that I want to tell you I've like around like one minute a little bit more to to say is that Did you enjoy the conference? I think you can just like raise your hand, but I won't be able to see it Because you're at home. I hope you enjoyed the conference. If you want more There's part of the global happening in November this year CFP closes on the second as well So please act quickly. The link is there and also I'm also organizing another conference at the end of the year 5th of December, it will be 24 hours. It'll be around the globe It will be we will be all wearing pyjamas and because it's called pyjamas con okay So we are all going to wear pajamas and the CFP is going to open on the third So when you finish your pie data global, you can like submit the same talk or submit some other talks To pyjamas con and it closes on the fifth And we also need a lot of help from Asia Pacific Because now all the organizers mainly in Europe or in America. So we need someone from Asia Pacific to help So please contact me my contact details at the beginning of the slides. I can roll back if I have time The website is pyjamas dot life So I will go back to the first slide so you can contact me So please get in touch if you want to join the workshop or join pyjamas con or submit to Paddy a global we need to help and that's it from me and hope you enjoy the rest of Europe hyphen So, thank you chair, thank you. So next one is Ben Ben is going to talk about pyjamas So for for you to know if you see the in if I know if you're seeing the the zoom but there is a In the Euro Python society, you can see that there is a time that's useful for you Otherwise, I would interrupt. That's okay. Okay, can you see my slides? Okay. Yeah, great. Okay So quick intro and then I'm a software engineer at BBC. I used to work at the Raspberry Pi Foundation So why pie wheels so the four pie wheels existed pip install on the Raspberry Pi would take ages People don't generally build on platform wheels just x86 and variations for Linux Mac and Windows So I wondered if it would be possible to build a repository to host on platform wheels It turns out it is so I did So just a bit of background. So if you're uploading a pure Python package to Pi Pi the main Python package index you generally Create a source distribution, which is usually a tar ball or a zip containing this the source the Of your of your project and you upload a universal Python wheel a wheel file, but if you're If you have C extensions or any compiled extensions in your in your in your package You have to compile it and it has to be compiled for every Version of Python use for every every minded version and every operating system and every combination of those So you might end up with something like this, you know Depending on the number of versions and platforms you support and then your source distribution as well And so what would happen would be that a Raspberry Pi user would get Would you know hit all of these platform wheels and none of them would match So they'd get the source tar ball of zip and they'd their pip would have to start doing the build Themselves so it would take that's why I take take a long time So pie wheels is an open source project maintained by myself and my friend Dave Jones It's kind of the tooling to automate building wheels of everything on Pi Pi and then And it kind of it but it's targeted towards the arm platform I mean you could tweak it to work for other platforms or other Other hardware platforms, but it's obviously made for the Raspberry Pi So you end up with wheels tagged with Linux R&B 6L and Linux Linux R&B 7L PiWheels.org is the equivalent of PiPi.org for PiWheels So it's the website the repository like PiPi Hosts all the arm wheels that we built The website comprises of the simple index Which is what PIP uses to navigate your files and find suitable distributions to use And project pages like PiPi does so you can browse the human readable HTML and look at look at different projects And what's available on which which packages and which versions of have builds and have wheels and then You know some additional info pages and a blog and things like that that's what's on piwheels.org and so Compared to what I showed you earlier piles provides wheels for Python 3.4, 3.5, and 3.7 for Linux R&B 6 and R&B 7 R&B 6 and R&B 7 Compiled platform wheels It's these Python versions because they are what comes with the the Raspbian version the Debian version that Raspberry Pi uses so Debbie and Jesse stretch and Buster have these three Python versions in them and we just support support those So a lot of people assume we cross compile the The wheels for plus speed, but we don't we eat our own dog food and build everything on Raspberry Pi So they're natively compiled on Raspberry Pi 3 Just for compatibility and then ensuring that We know that they'll work. We use a cloud service provided by a company called Mythic Beasts They actually sponsor the project and give us access to these these Raspberry Pi servers But you can they do Raspberry Pi 3 and Raspberry Pi servers in a in a Pi cloud. So we use that The stack is made up of obviously a bunch of different pies doing different things As we have a sort of main pie that Distributes the jobs and works out what's going on Distributes jobs to the builders which compile all the Packages that they're told to build and we've got a few for each of the different Operating system distribution versions that we support The postgres database we used to be on a pie, but we move back to VM basically the way it works is you build for Your lowest ABI and then if it fails you move on to the next one if it passes now You either rebuilds or or if you've got a compatible wheel that works on all you you you can finish there Raspbian is pre-configured to use pywels to always an additional index so people Don't need to know about pywels. They can just use it So everyone just gets this for free and doesn't need to know how it works or anything So you pick install sci-fi you get You get a wheel from pywels.org That's what the simple index looks like.  We had about nine million downloads in 2019 and saved people 128 years in total So find out more about pywels at pywels.org Okay, thank you very much So next one is a Luis Let me know when you're ready. I'm going to start your timer Luis, can you? Yeah, yeah, let me let me just share my screen. I'm trying to find the keynote. Yes, sharing my screen I Think I need to Allow me. Can you see the keynote or no? No, I Can move to the next one if you want and you can fix that So Vinicius, are you ready? Yeah, that'd be great. Thanks. Thanks. Let's be great. Yeah, sorry about that That's okay. That's okay So Vinicius, I think you're mute Can you hear me now? Yeah, I can Great. Okay. Okay. Okay. Go hit it. Let's see Okay, uh, I'll be talking now about PBR I 18n project which has the objective to bring python for people in brazil who doesn't speak english My name me My name for those who not sort of don't know me is Vinicius Gubianifeira And this story started a little bit about a year ago when I went to python brazil last year That's been in the audience looking at several talks And among these talks, I saw this one where they were recruiting volunteers for this project I took a photo and decided to check it out later when I arrived at home Over there the first contact I had with Some of the organizers of the project the volunteers Were through GitHub issues and uh, I quite didn't know how to start I asked it for help on to what needs to be done. What needs to be translated After that they direct me to a telegram group, which is where I talked with them about One at every three four days to get a work done and The work itself the translation for the python documentation is made using trends effects We're evolving into lots of steps. Some of the guys are now making it possible to translate using your own mobile phone You don't even need a computer itself directly when you are on a train on a bus I particularly use the computer because I feel more comfortable and there's glossary and other features to help out and Just after the year switch it even thought 2020 is not being in such a good year But at least this graph shows it is for the translation for portuguese Which is good. We are increasing our rate currently Python documentation is about 30 30 something percent translated for portuguese But it's a tough battle because new docs come in and we don't have enough people to help us translate Not everybody works on a daily basis or long hours during the weekend So I know there are several brazilians over here in the conference If anybody speaks portuguese and wants to join the fight, please talk with me after this talk Hopefully I will get to the last slide with my contacts And Some of my buddies asked me why do we do all this volunteer work since I don't get Any money at all into it any fame nothing at all And I sent to them with The perks I got after this I was able to join the pintone software foundation as a contributing member Which include voting rights even thought I was too busy to vote. I'll admit it But I can't vote every three years is the election My name and all of the other volunteers are into the python repository itself the documentation But Most important to engage with other people that want to make a change with open source And to pay for something that we borrowed from for free without paying not a dime I wish I could donate for the software python foundation, but brazilian highs is Sad currency. It's if I converse to dollar. I'll be poor forever. So that's my way of helping with work Uh, but most important in my view that the project help others to learn and to inspire other people One outcome that from this project that happened about two or three months ago I guess is which now the python translation for spanish is In work. We hope to see it on the official website as soon as possible Uh and some key notes It's very rewarding and fulfilling to work with open source Doesn't have to be exhaustive and it's actually easier to participate than it actually looks you don't have to work With cold cold itself documentation is Good it helps other people. So as long as you feel you're doing a good job, then that's okay for you Well, thanks again for the opportunity guys and uh any questions look for me in this means or even on the discord channel with this alias slash nickname. Thank you guys There is a spring for the python spanish translation this weekend So luis, I think you are Yeah Let's try now Yes, yes. Thanks so much for for being a reactive like you were and let's try now um, I think I can share my My screen this time. So can can you see the slides are good? Yeah, I can see them So, um, as you can see, I had not shared my screen before in zoom, but uh, but yeah, thanks for being right like that So i'm a i'm a machine learning engineer working in NAP projects, uh in berlin And that's where i'm calling from and that's nice stadium And today I want just to share my excitement about the um, the python ecosystem at large like we are not going to have time to go into the dnip specifically much but Rather, I I will take you along with me on in an overview of the life cycle of the project And try to give a shout out and highlight all the great open source libraries that helped me like doing my job as a As a machine learning engineer So the first thing you need to do you've probably heard about that is that You know, if if someone asks you what you're doing as a data scientist on machine learning Chances are you're building data sets, right? So, um, they have the two libraries that I want to give a shout out to our first of apache airflow I use that to orchestrate my pen as Function as a service it here. They have a great Two point already is coming up and the team there is really really hard at work. It's really really cool The second one is dbt. It's using python and ginger So templated sequel and that allowed me to take the sequel out of my application code and build clean data sets And you can also unload them to s3 which actually Allowed me to take some code out of airflow and and and make things a bit a bit cleaner and keep the data sets on on the sequel side Once you build your your data sets You you should first like try to be the algorithm before before anything And the first thing that I looked at there was to try to set up a human bench benchmark with some Labeling tool So there are many labeling tools out there this prodigy. They are like many others The point is that I was trying to find something quick without having to reinvent the wheel and rebuild anything So I found ducana, which is a jango based labeling ui and The second thing I looked at was this library called snorkel, which is Comes out of of stanford And where you can basically use it to build a library of what's what they call labeling functions And as you build this labeling functions, you're going to build up an understanding of your data sets And you're going to try to build that algorithm and improve it and that's going to be very good for your project Then you're going to Work on the problem formulation and you can start with rules and then sadly here I have to say there is no library for that right. So there's still a bit of work to be done So you need to know about in my case In entity recognitions entity linking text classification, etc But there I would Point you to a great talk that was even at the raza conference not too long ago From one of the raza engineers that explains about their research process and there's you there you rely on your On your research process within your team and as a as a teenager I would just say that Um, uh, you know, you should really pay even the old ones. I'm not going to spoil anything I don't have time to go into it, but basically my winning solution relies on something that is quite old Um, then you do the modeling there shout out to Like all the experiment tracking uh libraries like for example image flow It helped me to structure my process and also to communicate to stakeholders Because the the cost of of modeling scales not linearly basically you can get stuck for one And adding a benchmark and presenting it like this or the tool like this is very good Then of course, uh, the old side side scientific python ecosystem Um, and of course spacey people have already spoken about spacey And again, there was a great talk from one of the co-founders of spacey at the raza conference. So I I point you towards it Um, lastly, you need to serve your model to the users. So there I really enjoyed, uh, you know learning about a fast API Which allowed me to to build the back end point leveraging pydantic types um I one thing that I found useful was also to to to prototype an applet to quickly show Show my model to the product managers and to the other To the others stakeholders. The funny thing here though is that they use Websockets and this kind of complicated my life a lot And just also shout out to the to alter for being great visualization library And so back to the point of these Websockets I ended up rebuilding the the the web app the old way sort of with just ginger templates and the fast API endpoint and And yeah, I just wish that there was some kind of Python library that gives you the the the streaming experience of scripting your frontend But more with the whizgy and azzy style of fast API. Um, so that's it. That's just a quick overview of the of the of the end results And uh, yeah, thanks a lot So next one PI Okay, so please unmute yourself share your screen Yeah, thank you Welcome So you have five minutes starting now Okay Thank you. Hello everyone uh, myself mijay kumar I'm a teacher And I brag about these two monuments This is our goal converge second largest monument in the world This is our Lord Shiva second largest statue in India And these are in my city vijapur. So anytime in India, please do a visit And regarding this lightning talk as I'm a teacher I find it hard to convince the students that Python is really necessary for hardware So this is where I keep Finding some interesting projects in this talk. I will Try to simulate. Uh, I'm not sure whether I can Share my computer audio. If it's possible, then we'll listen to some music We'll take the music We'll use libraries Python package And use pi CD I have this hardware connected with wire And we'll blinks some LEDs For that blinking of LED We are using the esp 826 is microcontroller Through audio mode so Just in case I have the code for backup I'll try to show the core and Let me see how can I share my computer audio? Yeah, it's here Okay Yeah, uh, up and running I guess So this is our Python package We'll use the iPod on display I have a sample music of Just One second one second or more Okay, so this is recorded. We can change the sampling rate and plate slowly similarly, I can increase the tempo Same music. We are hearing in different ways This library site has a built-in function where you can track the beats And find the clicks where they should be added So once we listen, we'll have a better idea So this is how we are going to add clicks to the music just for comparison sake. I'll play once again After finding the tempo, we're adding the clicks Some analysis how to do and all I will share the code Later, so this is my web page For any queries or getting the code we can visit that page And again, just for enjoyment. I have this another music file I don't try to judge me by these music samples I just quickly grab whatever I can find on my computer Okay A collab takes a bit of time once we have this will add Clicks, let me see whether this is already there About the music once I have the values I need to compile the Sampling rate number of seconds Sorry length of the music file then add bits to it Along with this, I will move on to the python package called pie serial Will import it. Sorry Sorry, my nephew So we'll use the serial I don't need this Okay, and using the comport. I'll see really write the values which will in way communicate to this or dino code and or dino code Which is already dumped here. We'll provide the Lightings means based on the beats and clicks. We are going to develop the lighting. I'll just quickly run this so Along with the music will play this Thank you. Thank you. Thank you. That was Super cool. I'm doing a demo live demo in a learning talk. I think it's a 2x price. It's like yeah, actually You're brave. Thank you. Okay. Thank you very much. Okay. Ross you're next Sure. I'll just share my screen. I'm going to struggle to compete with libroso, but I will do my best and say It's strong competition So let me see if I can Screen record here. So I'm doing this for my tablets. It's going to be a little awkward to begin with I'm hoping You guys should see a blue slide coming up now Yes, so you can a bit of delay Five minutes. Lovely. I'll crack on so this is going to touch again on the open source contributions and giving back to python Ultimately since we use it for free. So there's a bit of a running theme here I am dialing in today from ember in scotland, which is You're really quiet given the circumstances. Usually at this time of year, there'll be a lot of people visiting and it'd be nice to see the city Booming again with more tourism as things slowly return to normal. So working here in ember I'm quite heavy on python but also on amza web services working for a company called people's postcode lottery And while I was doing some testing for some more python work I was doing a bit of work around HTTP responses and requests And it came to my attention in the HTTP library that status code 418 is missing now for those that don't know status code 418 It is I'm a teapot Whereby a server is going to respond saying I am refusing to brew coffee because I am in fact a teapot Now this was part of a april fools joke back in 1998 for something called the hyper text coffee pot control protocol Now clearly this isn't intended to be seriously used in any live system But if it is kudos to whoever's doing that From my perspective, I was surprised if either was missing. I thought that was an officially recognized code Looking into it a little further. I I learned this is a somewhat contentious issue some languages like go line We're supporting already We have sources like mozilla that already support it, but then others like the ayaana, which was not and Looking at previous python contributions It seemed that most people were following ayaana's approach and so thereby that is why 418 was missing from the supported codes So thinking it was rather scandalous. It wasn't supporting this I decided why not add it myself python's open source and the c python repository that one of the core parts of the foundation Software is sitting in github free for people to contribute if they so wish and have that reviewed So I decided to give this a whirl this being my first open source experience personally And so I just want to touch on that lightly for a few minutes So first of all, I think it was quite an easy experience There was great documentation out there explaining how to go about setting yourself up locally with your builds and your tests Now was that initially took a little time to spin up once you had done it one time? It was a relatively succinct process going forward And the quality of feedback coming back from the viewers was top notch I I was very impressed with the feedback usually with examples Which would help me improve any patches that the my peers were suggesting could be better And it's certainly some of the best quality feedback I've had now in my few years of doing software development So good work from from that front for everyone that participated and helped out The only downside which isn't so much a criticism but something just to For people to bear in mind if they decide to contribute themselves is it can be quite a slow process Unless of course, it's an urgent bug fix of some form It can be a long turnaround time between addressing feedback and then waiting for further reviews or approvals And now simply this is because people are giving up their own time that makes sense It would be unreasonable and unfair I think to expect any quicker And nonetheless With that aside, it was a tremendous experience that being my first open source one And I am happy to announce that in March this pull request albeit a very small one was merged And it was a great first contribution from my perspective towards python as a programming language And certainly many And really what I'm wanting to drive home here is not so much the http t pot status code whilst i'm very proud of this It's More to tell people if you haven't contributed to an open source project before I want to give it a whirl I would highly recommend it. It's been a great experience And i'm sure python would very much appreciate that I've left some contact details at the bottom for medium and linkedin most of my blog posts are about aws But there is some python in there as well And i'm happy for anyone to reach out to me during conference or on these channels for a further chat. Cheers Okay, thank you well Okay, so Next one is a Jill Um, there is a space for more linking talks, so i'm going to cheat and i'm going to sign for a linking talk So if anyone is brave enough to do that, uh, We have uh, we have time for Um So are you ready? Uh, can I start uh, can you see my terminal? I can see your terminal. So if you have some minutes go great So this is the story of how I solved the problem that didn't exist. I don't think it still exists um Let's say you're playing a table top game, right? How do you how do you throw a dice in python? You do from random import random And then from randoms we have a 1 to 6 And we're just rolling dice, right just calling the function a random number from 1 to 6 Uh, and what if we want to throw lots of dice, right? So we have we we can do a list comprehension do random 1 to 6 again for d in range of six And this gives us six dice um Now this is boring, right? Like it's I I thought that I thought that pattern was an object oriented programming language, right? So why not use objects? Now dragon gives you objects So how does dragon give you objects so dragon? And the people who know about lunges and dragons will know what d6 means It's a die. It's a die with six sides So because this is an object we have to call it and when we call it It rolls What if you want to roll six dice? So this is where it shines You just want to roll six dice, right? Let me call over and over um So yeah, if you want to play board games or dungeons and dragons Have been stole dragon Thank you. That's literally it. I don't need more than five minutes cool Okay Thank you. Okay, so That was the last in the program But I was cheating because we have time. So I signed it for one Chuk is pushing me to do some karaoke talks So I will do two things. I'm sorry for the Oro Python organization this conference has a really nice schedule. I'm breaking it. So But we have time until six. That is it's going to be no misceller keynote So first I'm going to give a lightning talk five minutes, but then if anyone Wants to do karaoke talks karaoke talks is You the you say I want to do that then I share my screen I google for a random war Like slides sharks And I open the slides and I start playing the slides and the person has to give a talk about that So if anyone wants to do that Tag me in the discord channel and we can do one or two of those And if we like the idea, we are planning to do that tomorrow night until we after drinking probably That kind of things Okay, so I go to share my screen and someone has to So can you see a github repo here? Yep, maybe okay So this year we have the Remote python piece of conference ab initios that was talking here about the python brazil translation Was talking giving a similar talk to a longer version than this one And in that conference we start to say, okay, you know, this is a good idea We are i'm i'm part of the python argentina community. This is my t-shirt for python r 2019 And we say, okay, we need to do that for the spanish version. So that we should do that that was In may or that was in april so in may first of may we have the first meeting And we're starting working like quite hard Um We took uh the python tutorial that python argentina was maintaining for the last 14 or 12 years I remember and we migrated to the po format that python Don't don't or is official documentation is using And then we build a channel and we build a community and now Right now we have a community that is around 100 persons in a telegram channel working We have this ripple as you can see this is official python ripple And I can go here and show you some numbers So the past month We did like Are you seeing my full screen or half of it because I have a green line there. So, okay, I don't know Looks like the film Okay, so 50 poor request marriage 39 open 29 closed issues A lot of contributors Uh, so and now good news is if you go to dog the python dot or You can click here and select spanish And it's official with it So you can go to the tutorial and you have the official python documentation in spanish Uh, and I think that's just awesome. That's just called the python community. Awesome is Uh, if you like this project and you want to participate go to this ripple and This weekend in the sprints. We are going to be working on it. So showing us there is a python doc s channel And next year in the picam. We are going to be also working there If you don't know what picam is, I don't have time in this learning tool But it's the best event python event in the world. You have to go there. It's next year in april in barcelon Okay, okay So I have a bug by my stop come someone stop my sure scheme because i'm stuck here It Disappeared so maybe one of the cocos can Do that for me. Thank you. Thank you very much Uh Zoom is not taking a lot of love with the python client. Okay, so I want to check the discord channel Two wants to do karaoke Who wants Jason, okay, we have two persons Rados also, okay three um The one that is not here. Jason. I'm going to promote you to panellists This is new Catherine And honestly, I I was actually before the karaoke even got requested I actually wanted to throw one in there just a regular one honestly because I I can actually do one You want to do a learning tool? Yeah, I just wanted to do a lightning talk. Yeah, I Okay, go for it All right, so i'm gonna i'm gonna start my video here. Let me start my screen share. I am completely Uh making this up as I as I go along. So let me just uh make a mess of my screen. So Can I can ever can everyone see my machine my screen? Yeah All right, cool. So, uh, basically there was a problem that um, I noticed tends to exist in the world of computer, uh, project management programming Management And that is that we have this thing in our issue trackers where we have okay We have high priority. We have low priority problems. Those priorities are constantly changing. So The reason I brought this up is the official form of this but I wrote a much more fun article and dev about this But I invented a system called quantified task management that just makes it a lot simpler to um prioritized tasks So basically there's four different ways you have of measuring it You start out by coming up with the gravity while you're coming up with your requirements You you figure out the gravity all of these are on a scale of zero to five zero being not at all five being critical And so you figure out what are the critical features of your program? What are the things you cannot ship without those of your g5s you keep those? Fairly limited and then g4 is the stuff that kind of adds improves on that. You only cut it if you're desperate Uh g3 is is like polishing tasks the most important bells and whistles and it just goes down in terms of priority You set the gravity once initially and you can even use these as story points if you like doing agile methodology Um and then uh from there so that stays fixed and then you have your priorities And the nice thing about having these separate is that you could have something needs to be done right now But may not be a critical task Because your critical task needs six other pieces and so you can't get to that high gravity task yet So it's a little priority. So it lets you keep these two things separate Um, so priority again is uh zero to five, but we reserve five for my hair is on fire type of events So p4 is your usual. I'm working on this right now Um, and then there's two other measures I threw in here Um, briefly friction is fun because this is a measure of difficulty based on the resources available to you f zero for This is you can finish with copy and paste from stack overflow for this all the way up to f5 Probably never been done before and may require esoteric knowledge of two or three languages and possible skill and demo gorgon And then uh, the relativity Um, is the probability of black hole probability when your boss says hey, how long is this going to take and you lie And you say two weeks you can stick a relativity score on that and say, you know what two weeks are three There's a good possibility. I'm not going to get this done. So this goes all the way from zero Deterministic time is definitely going to take exactly two weeks There's no way it's going to take any more time all the way up to r5 It will take more time than in the known universe and we need to refactor this By adding these and these you can add these easily into any bugs Bug or issue tracker you add all of these in there and it becomes really easy to Track your progress track your productivity And just generally keep yourself from going completely crazy So you can find all of this if you go to standards dot mouse palm media dot com Click on quantified task management or you can even just type in quantified task management into your search engine I've written a couple articles and dev about this as well and it just makes tracking issues a whole lot easier I've been using it for a couple of years now So that's uh, that's mine I really like how I created some auto program all the scale things so The next one is Where are you? Binayak We found you so you're ready Please share here your screen Yeah To know your camera Open your microphone Can you see me? I can see you. Yes Or can you see my screen and your terminal? Uh, I can see your terminal and you have five minutes Yeah, so this I can talk is about A feeling of fear of missing out that I got last year When I was applying to a lot of conferences, uh, like just tracking CFPs and just Like being overwhelmed by the fact that there are so many different websites Where you have to go and like look at conferences if you want to track them So, uh, this is something that I built To fix that it is called conference radar or gonrad for short. It is like a CLI tool which Uh, which can help you track conferences on your terminal So if I just do a phone right show Oh, let me just Yeah So it'll show all the conferences that are happening this year In a nice table format and Convert show also has A lot of filters for example, I can do Location India They'll show me pike on India And similarly if I do Name Europe It'll show me Europe. I through your sci-fi jungle form and I can also set reminders for each of these conferences, for example um Each conferences and id so if I do a conrad Remind hyphen isom id it'll set a reminder for that And I've added that to my shell startup file. So every time I open a shell I see a reminder for CFPs and conference start dates And There there's a basically a lot of different filters that you can use to query the conference data For example, I can also search web tags These are all the python conferences happening this year And If I want to refresh the conference database, I'll just do a convict Convert refresh And it'll refresh the database to give you the latest conferences So on the back end how it works is that it's just using a get-up action to um scrape all of these sources and Basically condense them into this one json file, which is in this repo and then the cli to two recalls um That end point to get the json file and show you all of these And it runs Monday and Mondays and Thursdays two times a week Right now it doesn't work for paper call, but um, it works for all of these other sources And if you want to add if you want me to add more sources, just open an issue or you can Also do that yourself by just looking at this documentation of adding a crawler So you just have to import a base class and write a crawler for The website that you want to scrape and create a list and that will It's that easy and I just added pyjamas cons To a source that i'm tracking and it got merged so you can also set reminders for a reminder for pyjamas cons Which is going to happen in december this year And that's mostly it. Thank you


What they gonna do with me now? I'm still a talk of the town I'm gonna assist us, I'm hooking them down Lying so nothing could change me Y'all, it's your girl Brianna Imani You're tuned in to another Talk of the Town interview And who we got in the building today? I'm Shabiga I'm Haasadidi And we the girl called Yes, girl called We got Talk of the Town's top females for 2021 Congratulations Thank you How do y'all feel getting this award?  How did y'all meet? How we met? What's he? Okay You gonna do it? No Yes No, no, no I'm not gonna do it I'm not gonna do it But we did meet in high school Like we got close in high school That look was telling me something What's T?  Yeah, putting yourself out there.  That's the girl code Everybody so they the girl cold. Okay, so you just said the girl called That's how we treating niggas and you know as women we stick by a girl cold. So Let me so that we could all know what's girl cold to y'all what what's give me like top three rules of the girl cold Number one ladies cuz obviously now it's girl code even though the fellas the girl code is not only for girls But just number one is for the ladies Don't have sex or In the course or mess with or talk to your friends significant other Simple that part number two Don't leave your friend until they They ride whatever they join come and get them make sure they got home safe You leave together you come together simple like don't run on your person come with them Whatever they go through y'all gonna do that shit together And number three is his new car better be his only being Oh Y'all are like so insane. I love it and I said before we got on camera It's giving very much cheetah girls. Who's like somebody that like people say that child remind them of a lot. Is there anybody? So and peppa e-p-m-d agent showbiz Okay, so a lot of dynamic Of course the original thank you. So who do I think if you like What type of image are y'all like putting out so you know how like people would say y'all remind them of salt and pepper And you know, there's an image that automatically comes into your mind when you think about that What image would you want people to think of if somebody were to say like oh y'all remind me of girl code? Like what does that mean? And that's it and And besides being a like talented and really knowing how to rap. Mm-hmm We know that like Comfortable in the motherfucking skin you and well, we're talking about artists though because a lot of Artists don't really get to be who they want to be on cameras and and photo shoots and shit like that So we want to show the world ladies men that y'all can look however y'all want to look and still be fly It still look good still bag honeys bitties biggies bitties or like Biggies I was I've never heard that before I Because a figgy alright is a B word put me on a figgy is a B word or a John like you see if you was my John You would be one of my figures. Oh, right, right? Okay, if he was if he was my John He would be my pretty over there, but most so a pretty like he that's my pretty that's my John Yeah, but it's more so a male tree because it's like, you know, yeah, they be saying that word a lot for us So we decided to make up a word for them like so you were pretty boy like you know So they breedies y'all making me feel like there needs to be an albonics part two because I wasn't in the first one Hang it tell that pretty keep it banging I ain't stressing by no pretty cool I'm pretty cuz he nameless if it's up then it's on if it's on we gonna get it if we get it You fucked. I'ma leave you on a pavement.    So what was what was the reaction when I should drop like she was crazy You know, I feel like like anything else we do We never expect what happens cuz we really sound like chill bitches like we this is a fun sport for us That we want to go fall in and we see we have time and potential So when we be dropping shit, we really just be like, all right Here y'all go and we don't be expecting it to go as crazy as it really be going but albonics went crazy Like we got a couple repos from like big Publications and big DJ's throwback DJ Yes, it was fire. Who was like was there one that like surprised y'all Like OD like I would never think that well wait my full diary. I'm sorry diary Well from from the jump because Ron brows produced the beat so So that was really Cuz he made the beat for me for the person so that was some big shit actually and it was a Couple So how would y'all like say support is in general do y'all feel like y'all got this the support of New York right now I don't know cuz you look you're saying one thing When she looked at you I seen like oh, I bet so now. Yeah, yeah Like How has it been though like coming up as female rappers right now I mean, it's a lot of female rappers especially in New York coming up like how are y'all feeling? What kind of vibes y'all getting from the industry? Well, I feel like honestly, we just gonna continue to like Write our best and be our best cuz like you said it's a lot of female rappers right now They doing a thing everybody going hard like yeah, like then and and besides the fact that it's niggas That's doing a thing. It's like a little percentage of us girls over here Cuz it's more dumb so you know Not even only us too, it's like Out in this field male dominated type shit like China So like in my in my mind, of course, I'm not a rapper But I would think that because it's such a small percentage You will kind of want to stick together like do y'all feel like y'all have the support of the other female rappers as well Yeah, yeah Oh So, I mean even if we talk about the niggas y'all don't really have like a lot of features or anything like that So what do y'all like do y'all plan on working with some niggas like We really cuz like you just said a year you feel me like we wanted everybody to get to know the girl code Everybody to know what the girl code is Is how we spend like we want y'all to get familiar with us first Before we start working with somebody else that's how most likely already know Right so y'all establishing y'all over and then you Collab so who's somebody that like y'all would like to collaborate.  So you might know who All right, what would compliment us because we don't know who would compliment us now I'll say off camera because I don't want to sound biased But if y'all don't know who y'all would like to work with is there anybody that you are working with that you could like Give us a little tea on right now Cuz I was about to say no, we was really I like lifting but peppermint is cool. Listen all flavors any any that you willing to provide. I'm willing to say The project is coming is coming All right, so has there been anything that you've learned like why y'all coming up in this industry that you wish like maybe you had a little heads up on Not speaking in tongues speaking in tongues, it's crazy I said did you gotta go first for that one?  So that's a lot in itself number one. Mm-hmm.     That's what I learned.    We're not about to do this this whole interview. That's what we're not about Like no captain view was this is a trick question. I read she got it. No, no I was just saying I was giving them the discretion So I wouldn't say it's hard and I wouldn't say it's easy Because at the end of the day, this is our talent. This is our career. So we got to put our all into it It's hard on our behalf because we are very critical when we are right in videos Anything we do we criticize ourselves.  We got to do this like so It's a little it's not easy and it's not hard like it's fun What it is it's the girl coat so did you agree? So how do you I keep each other motivated like how do y'all? How does that work? First of all?       I saw the code these Wish I could I had a camera from this angle That was like that was so cute.  Mm-hmm that you just gonna be like alright. I'm gonna run with that and then I'm gonna run with that, right Yeah, do you have any comments? No I knew I knew it was gonna be what one day I was gonna say I do not read the motherfucking comments y'all because people really be trying to It's like one and one time. This my one time and it's my last time talking to y'all motherfucking commenters listen You don't know me I Can't say what I really want to say, but what I want to say you will not like what the I would say so Threat lightly on those Twitter fingers Instagram fingers Facebook fingers Skonex fingers Gmail fingers whatever fingers you got relax on them Cuz you gonna get some author writers after I'm done So let's say hypothetically speaking got the big something happens, you know, when he I get locked up or pregnant or something like that Would y'all would y'all hold each other down like Got the bell right of my mother. She got the bell. She got the lawyer number Where to my mother she got the lawyer number. Yeah, like no matter what happens here I'm gonna we initiate like we've been before it became this what y'all know of as girl code It was gonna be that So we gonna make sure Right now y'all got like your freestyles going up on tiktok like that should be on my for you page People be like using the voiceovers and everything like that like do y'all feel like tiktok is helping boost your presence right now on social media It's definitely helping. It's helping. It's helping But if you read the comments Maybe like I was looking for this video. Yeah from before. Yeah We just updating them on you know, like the Apple music the Spotify cuz you know when they see it again And then they go on the tiktok the link is right there Some nanny's seen the other stuff so nanny's seen what girl can't really about mm-hmm.   What is that like? Listen y'all, I'm not even going a lot of y'all is difficult It's not gonna be easy for anybody.  Everybody got a story Yeah, so I don't like I don't want to hear what I know from someone someone someone someone she was though What about you cuz you real quiet over here.  I don't even think I don't gotta be him. They gotta be and be him.  Like what you mean? This is 2022.  Uh-huh a matter of fact You gotta pay attention to people Y'all gotta pay attention to people action stop listening to what people is just telling y'all pay attention to what people do Stop paying attention to what these niggas or these bitches just be saying to y'all to make it sound good pay attention to how they move You gotta use your eyes whether you got full whether you got to Wise words from girl code So all right, so back to the business. Let me know like what are y'all thoughts on signing be independent? Listen at the end of the day do what you got to do to get to where you want to go I'm not saying compromise your integrity or anything that you believe in listen Babies talking deals if y'all asking what's the daily yo, I'm on a yes cuz these bitches know they really own never was a runner I was running shit really though So clearly y'all got a verse for every question I asked I think that's that's dope Y'all cover a lot of time to your music That's why we can't wait for the project to drop because we feel like certain questions that be asked in a lot of interviews We can't say like in our music unlike a lot of what we did. We really you know I So yeah, so yeah against like talking on people dead smoking on Cuz you said we smoking I don't know but what about for like other people what y'all think about cuz you know, they ban and drill right now Don't do that We were doing good. We were doing good. I thought we were doing good y'all not about to turn this on me Nah, I honestly want to know how do like honestly like Right we listen to throwback R&B I so do I all right, but you so do I I see mad new music You know, like you ain't right. No one's going over drill. All right. So next question Y'all real sneaky and y'all on the same page, I feel like I'm being double teamed right now But y'all and y'all never told me so do y'all feel like y'all will eventually sign to a label or no Yes, yes. So what do y'all look for in the label? What type of things would you like to? We look for some Brooklyn nights.  That's gonna help us Anybody on y'all radar? Um Don't do it cuz you're looking at me. Don't even anybody on y'all radar So make sure you tune into that. Yeah at the end of the day straight balls It was Yeah, it was you know, if you know, you know It's a lot on our radar Like that's why I don't want to narrow it down. Mm-hmm because it is a lot like file potential You see y'all I want to y'all but it's all right. That's why it's all right. It's all right So looking forward like at this year, what can we expect from y'all which I got cooking?  So that means it's gonna be real good real right exactly But what kind of vibes can we expect like I feel like everything? Yeah, definitely a lot imagine this on a track Well on multiple tracks right on every track. So it's given versatility. Yes But y'all still can't say like who y'all collabing with or nothing Because we're not really focused on Girl now did y'all that would be fire, which we mean collab like See Talking to town right now It's a collab with the big with the big-ass Platforms when y'all get they make sure y'all letting girl code get GC get PC since we just you know spoke we just uh-huh So what advice would y'all give to like upcoming artists right now? Like if they were watching this What would y'all want them to get from now?   Just doing nothing anymore.  You gotta make changes.  She's staying in the studio AB He'd be mad, but you be staying So what's the end goal for y'all what do y'all like hope to get out of This is a long-term thing. Are you doing it until you reach a certain point?  Mm-hmm.  I know they gonna put this up already, but it's two L's and two L Don't forget the two L's never forget the two E. Yes, we want to thank y'all for giving us, you know, the best female Of course, congratulations again. That's your OD. Y'all. Thank you for voting for us, too I'm mad shots and I'm mad I'm flabbergasted.  Yes, everything is two L's too easy. I can't forget the two L You'll find it All right, well, thank y'all again for coming congratulations again on your award


Only the Spirit field can truly worship God. All true worship is a response to revelation. When something about God is revealed, the natural response is awe, honor, reverence, and adoration. Worship is giving God glory as you see His glory. You can sing without a revelation, but you can't truly worship without a revelation. As the Holy Spirit reveals God's power and nature to you, you won't be able to help but worship. When our singing and praising comes from that place, then it's truly worship. Those who worship Him must worship in spirit, by the help of the Holy Spirit, and truth in response to revelation. What revelation about God has inspired you to worship God? Tell me in the comment section.


If you have private information that you want to keep private, just stick it in an E-U-L-A. Nobody is ever going to read it. Privacy isn't explicitly mentioned in the U.S. Constitution, but it probably should have been. Louis Brandeis was the first U.S. Supreme Court justice to write about privacy as a legally defensible right. In 1890, he published a paper in the Harvard Law Review with Samuel D. Warren that was simply entitled, The Right to Privacy. Now, privacy as a right was a novel concept at the time. Before Brandeis, wiretapping without a warrant was 100% legal. After all, the text of the Fourth Amendment only protects physical things like papers from being searched and seized, not phone conversations. Brandeis looked at the text of the Fourth Amendment differently. He argued that during the time of the framing of the Constitution, the only way to know somebody's thoughts against their will was by force, intimidation, or by going through their personal effects. Brandeis insisted that the intent behind the Fourth Amendment was to protect U.S. citizens not just from the unpleasantness of interrogation, but from the invasion of their privacy by the state. Now, many people have different views about the extent of the right to privacy. The most common rebuttal against Brandeis' position is something called the nothing-to-hide argument which is cited by both government intelligence agencies and suspicious parents. If you're not doing anything wrong, then why do you need privacy at all? After all, laws exist to protect and to foster people's well-being. The more that law enforcement can see what people are up to, the less of a chance of somebody getting away with criminal behavior and thus, the safer everyone will be. However, Article 12 of the Universal Declaration of Human Rights explicitly prohibits any arbitrary interference with a person's privacy. The question is, why is it a big deal if someone at the NSA is reading your email? The heart of Brandeis' right to privacy argument is simply that people should have the ability to determine how and to whom their thoughts and feelings are communicated, if at all. That's important for several reasons, but I'm going to focus on two. First, privacy is the last refuge for liberty. No matter how oppressive laws become, so long as you have a private place where you can do, think, and say whatever you want, that's a stronghold that even the most oppressive government can't overcome. Think about it like this. Even under Stalin, if you had a truly private place, you had all of the liberties guaranteed to you by the Bill of Rights. That's freedom of religion, free speech, all of it. Second, privacy offers the opportunity to imagine and practice things without fear of social repercussion. Society is a structure that has evolved over a very long period of time to be very stable. That's great for people because we get to enjoy that stability in the form of things like currency and infrastructure. However, the price of that stability is that it's also awfully resistant to positive change. We'd still be living with an awful lot of terrible status quotes if people's lives were on display 24-7 throughout history. Education of women, drinking, recreational sex, interracial relationships, masturbation, the freedom to be Jewish or Protestant or Catholic or atheist or whatever. We owe a good portion of our freedom to do all of these things to our ability to do them behind closed doors without our neighbors or the authorities finding out about them. I think that Brandeis gave us a gift in viewing privacy as a right unto itself. Now, the mediums have changed, but it doesn't matter if it's through G-Chat or through a phone call. You should have the right to communicate your thoughts and feelings to whomever you wish without a third party finding out about them. Of course, there's also the opposite view, if you have nothing to hide then you have nothing to fear from government surveillance. Leave comments, let me know what you think. This is my nerd crit, this is a vacuum tube from Raytheon. Let's see what you had to say about science fiction and artificial intelligence. Sam pointed out that human-like thought and memory could be said to be based on emotion instead of just containing it. I don't know whether or not to believe this, but in response to her query about an artificial intelligence that exhibits emotion convincingly, if that existed do you think that we would even be having this conversation? She also brought up an excellent point by a lot of opponents to the development of artificial intelligence, which is that the human mind is incapable of comprehending itself and we can't program something that we don't understand. I don't think that's true. I think that any advanced mathematics is operating in a space that we can't actually inhabit mentally. For example, I can add the numbers 20 billion and 50 billion in my head, but that doesn't mean that I have any intuitive grasp or understanding of those numbers. Is a blown-foam reference Star Trek The Next Generation, which is one of my favorite shows ever and the inspiration for the previous episode. She says that an artificial intelligence that is sophisticated enough to ask for rights should be given them technically, but that human beings tend to demonize things that don't fit into their nice categorization schema, which is sadly true. Semi-IM chimed in with yet another very thoughtful post about what happens if we decide that artificial intelligence actually should be granted rights and what happens to all of the software that leads up to that intelligence, whether there's going to be some sort of arbitrary cutoff and what happens if people don't make the cutoff and it's just fantastic and you should click right now and go to the episode and comment on it. And finally, my dad commented to let me know that in an episode about artificial intelligence, I forgot to mention IBM's Watson. Thanks, dad. Next week I'm going to talk some about open-source software and intellectual property. There's some links in the description if you'd like to read up on it. Blah, blah, subscribe, blah, share, and I'll see you next week.


క్షిలో మేవిల్ట్ర క్విస్ట్ప్వింర్ర్ మేగిసాడేనినొ కార్ర. ఉనీలో కడిపినొఀటె. కనూర్ర కార్నా పెర్చ కరంపర్. today i wanna discuss one more question which is related to intervals so this is status failure report so let's move to another slide where we will discuss about the question so this is our slide and you can see we have an input table and it contains two columns first is transaction id and second is status and we can see status value is p and f when it comes feed then pass otherwise fail so we want to get those transaction id which comes after the status pass so here we can see we have transaction id 1 status value is p and then transaction id is 2 value is f so f come after the status pass so we want to get in our output as you can see we have transaction id 10 and value is fail our previous transaction before the 10 is 5 and the status value is pass so we want to get in our output so such type of values we want to get in in our output which comes after the status pass so how we can achieve this output by using sql server query so let's move to sql server management studio where we will write the query to get the output as i am using sql 2014 you may have another version of sql server but the query would be same for all the versions doesn't matter what version you are using and i have already created the table and inserted the record on the same so here we can see we have transaction id 1 status is pass and another transaction id is 2 and a status is fail so 2 would become in our output so how we can achieve this output so first of all we need to understand the logic how we can achieve this as you can see in our input table we have transaction id but transaction id is not in sequence as you can see transaction id is 5 then there is some missing transaction id is if we have transaction id in a sequence then we can apply a self join and we can get the output so first of all we need to create a sequence number for creating sequence number we have to use row number so this is our row number and we have to apply over clause and then we can use order by on the behalf of this transaction id so this is transaction id and now we can execute and we can see we have a column and it has the sequence number 1 2 3 4 5 like this and we can give some alias name is sequence so now let's assume you have this sequence number as a transaction id so copy this and go to excel to understand the logic how we can get the output so this is our excel i want to put self join between these two tables so i have pasted two times so here we can see here we can delete this row and this transaction id as well so and now this is our transaction id when a status value is p then we will get in our single table like 1 4 5 and then we want to apply a join between this and this table and in this table we want to get only those status which is pass so here we can see we have 1 4 5 and then 8 so now i want to apply join between these two on the behalf of sequence number so this sequence number value is 1 is equals to and here we can see the sequence number value is 2 so we have to compare between our first row from this pass status table and the second row from this another table so we have to apply this sequence number from left table plus 1 so sequence left plus 1 is equals to sequence right table so when we apply such type of join then we can see we will get the output so now let's move to sequence row management issue you to apply join so now i want to put this query in a city so we can call the city as a city main and as keyword so this is the syntax for the city and now i want to use one more city to get our left table as i have displayed here and in this left table we want to get only those transaction id which status is pass so we can put simply comma and we can use simply nasty city and give the city name so city pass as we are going to get only those transaction id which status is pass so select stick from city main table city main and as keyword missing where status value is pass and then we can see select a stick from city pass when we execute this query we will get those transaction id which status is pass so now we have to apply join between city pass and city main so this is our city main and we want to put alias as a then inner join with city pass as b on a dot sequence number is equals to b dot sequence number as we have explained here our left table is those table which status is pass so we have to add one in our sequence so this is our b table so we have to add plus one and we want to get only values from main table and we have to apply a where clause because we want to get those transaction id which status is fail so a dot status value should be fail and now i want to execute this query and we can see we are going to get the output as we want so i want to select the table so it's very easy to compare between them execute and i am going to maximize so here we can see little bit big yeah so here we can see we have two ten and two zero two so two value is fail so here we can see our first value is pass that is okay then ten so our previous value is five and status value is pass then two zero two so our previous value is pass so by using this query we can get the output so i hope you have understand how we can get the output if you like this video please subscribe our channel for many more videos and press bell icon to get all the notifications for new videos if you need this script it will be available on my facebook page you can couple from there thank you so much for watching


virtual attendees. Hello Portland, if you are streaming there. And thank you all for having me. My name is Ava, Ava Roten, and I'm here to talk about accessibility. That's going to be a little bit different. This is a success story. This is a story. Accessibility first, and everyone wins. More composable, intuitive, and testable. We've all heard of mobile first. I'm going to flip it on its head a little bit. Once again, I am Ava Roten. I go by she, her, and I am a software engineer at AlloView. At AlloView, we build software for K through 12 school districts. And I'm very proud of what we do there. We build this all in EmberJS, and I've been doing Ember for, oh, the past seven years or so at different companies. You can find me on GitLab or on GitHub at the things in the doobly-doo. So we'll be discussing a project feature that was saved by accessibility. It might not have gotten off the ground otherwise. So I'm very excited to share the story with you. During the course of the story, we'll be talking about adding functionality with composable components. So we'll discuss composability, composable components, and what that means, how I did it in this case. We'll talk about equitable and discoverable user experience design, and we'll talk about what those things mean. And finally, we'll talk about automation testing and how it relates to all of these topics. And hopefully, you'll see something you haven't quite seen before in an automation testing with an Ember, or at least you'll see some of the newer ways of how automation testing can be done in some of the latest Ember practices, which has me really excited. And so here's the story. I had a feature. This is several years back now, and on my team, we were given a ticket. This ticket had a feature on it called item reordering. This feature was so simple that it had no design. We just wrote it up. Users should be able to move around items on the sidebar in order to reorder them to their heart's content. Okay, that sounds good. It sounds simple. Maybe a little too simple. So, okay, mouse, drag and drop. That makes sense. I can make that happen. What about touch? Do we support touch devices? And of course, when you ask that kind of question, it sounds great. Yeah, support touch. Just go through the extra loops that you need to do, loopholes, jumping through hoops, that you need to do in order to make touch work. No big deal, maybe. What about accessibility? Okay, so the room goes dead. It goes real quiet. And I need to explain a little bit more what I'm talking about. So firstly, you're already seeing on the screen several times now, A11y or A11y. And if you expand that out, it becomes the word accessibility. It's a sort of acronym, if you will, that means accessibility. Perhaps you've seen that before. Perhaps you haven't. Accessibility has 11 characters in it. And so we shortened it down for things like this presentation or for documentation to simply mean accessibility. But we're also going to be talking about equity. So what is equity? Well, let's think about the idea of what I was being assigned to do. I was tasked with delivering a feature that I felt like maybe not everybody could use. Okay, drag and drop sounds simple enough. A user can use their mouse to move up and down, click on something and drag it and let it go. That requires some fine motor control, it sounds like. And also touch on a mobile device. But it doesn't have anything to do with a keyboard input or a screen reader or some other ways that maybe users are interacting with our app. Imagine using no hands and you're using the eyes in order to click on things and move them around. Clicking and dragging is a very difficult thing to do without a standard mouse or touch interface. And so I felt like it was potentially unfair that we were maybe unintentionally locking out some users from accessing parts of the app. This entire feature that I was assigned to work on wasn't necessarily accessible to everybody, literally not able to be used by everybody. And so I felt like there was a lack of equity. Not that everybody is entirely equal, that everybody can use in the same exact way drag and drop, but in an equitable way that I was hoping users to be able to interact with this via the keyboard through a different input medium. 15% of the world lives with some form of disability. And a great many talks have been given already, trying to sell accessibility, trying to be the person up on stage who is selling to you why accessibility is important. I'm merely wishing to set the stage for my motivations here about what really got me thinking about this in return in respects to this presentation, in respects to this feature. There are different degrees of disabilities. Sometimes there are invisible disabilities. Sometimes there are visible disabilities that are just varying forms of ability, right? Limited mobility, muscle slowness, tremors, low vision, color blindness, partial hearing loss, things of this nature. And this is just a few examples of the varying ways that you can have a varying degree of ability. That maybe something isn't completely inaccessible to you, but might be more difficult. That perhaps you would even just prefer to interact with a device in a different way. Many times I find myself preferring to interact with a device via the keyboard. Everybody has their own reasons, whether it be ability or otherwise. And I want to design for those kinds of things. Luckily, web assistive technologies can commonly help us with vision, hearing, and movement varying abilities. We can use these web technologies in order to piece together interactivity in a way that can allow more people equitable access to these kinds of features. At the end of the day, I build software for humans. I wouldn't be happy with myself if I shipped some software that was completely unusable to some users just because we lacked some foresight. And so, I did my research. I came across the W3C website. They have a list of patterns if you dig down deep enough. And I was looking at some of their approved web patterns. And for what it's worth, W3C stands for the World Wide Web Consortium. And so, they have a lot of really great, well researched, accessible UI patterns that you can borrow from. This one in particular caught my eye. It's called an example of list boxes with rearrangeable options. I'll scroll down here. Here's an example with a single select list box. So, this is using a select that has been kind of made larger and also some buttons beneath it. I can use my mouse to click on any of these, or I can click on these buttons down here at the bottom. But I want to use my keyboard to try to interact with this. I will hit Tab and I can focus into this element. The first thing it does is it automatically selects the first item in the list for me as a visual selection. I can see it very obviously become a bright blue and I see a dotted border around the outside of the entire list telling me that the entire list has been selected with a sub-selection inside of it. I can then use my arrow keys to move down my selection, but not the item itself. And then up in order to go back up with my selection. At the bottom of my list, I can see that there is an up button and a down button. There's also a not important button, which is not important for this demo, but the up and down actually allows me to deprioritize, for example, in this case, proximity of fast food can go down just by hitting the spacebar or enter key on the down button while I had a selected item. I can then shift tab back to my list and pick another item like neighborhood walkability and I can tab to the up button and activate it with enter or space. The first time I arrived on this page, I felt it was very intuitive. We were working with something that was using some raw HTML elements. I've already been trained to know how to use. I know that spacebar and enter key can activate them. I know that they are readily built to be accessible, that users will be told how to interact with them if they are semantically written correctly. So that already makes me feel a lot better about these items and I know how to interact with them. It's very discoverable, the user experience of if anybody came here and unintentionally hit tab and found themselves selecting the entire list, almost guaranteed that if they knew about how keyboard inputs worked, they would try to use similar key combos in order to interact with this list. And so you wouldn't even need necessarily a tutorial to tell them how this works, which is excellent. Down further on the list, we also have some great accessibility information around REI labels and how they can be dynamic, but that's going to be a little bit outside the scope of this presentation for now. By highly encourage you to read this kind of documentation, W3C is excellent at providing it. Next in my list of to-dos was to find a add-on that was sort of the basis instead of having to reinvent the wheel on drag and drop with an ember. We have a fantastic ecosystem of add-ons out there that do a great many things that people have built for us that we can then pull into our ember applications, often as simple as in this case, running ember install ember sortable. That is fantastic. Ember sortable I found on the ember observer website under the category of components drag and drop. It was very easy to come across. It's also very highly ranked by ember observable and highly scored. The rank on this plugin at the current moment is 26 out of the top 100 add-ons and it's in the top 10% of downloads. I can see how many open issues there are and when the latest commit is. So I felt very good about leveraging this add-on. Ember sortable provided mouse drag and drop, touch drag and drop, and it provided a really great ember observer ranking. So I felt like there was no reason not to try to use this for the project and that's what I did. The component structure as given to us by ember sortable is a component of sortable group and another another component of sortable item. These components are shipped to be composable by default. As in a sortable item can be placed inside of a yielded sortable group. And so I decided to follow that pattern. Instead of doing a reopen on these components or even forking the entire add-on to add an accessibility, I added my own custom wrappers. I generated these sortable group accessible and sortable item accessible custom wrappers. And so it looks a little bit like this where you can see the nesting of each of these items put together in a list. There's an each loop inside of there for each of our items and everything else is just kind of nested going down. And I was able to not even have to touch the original ember sortable code for this to work. So here's the final result. Here's a demo application that you can access at that little URL at the bottom right of gitlab.com slash gaity slash sortable dash recipes. I will put this I will place this URL in the discord the ember conf channel there in case anybody wants to access it where you can see the code and also all the slides for this presentation. So in this I have a demo application where I have sortable recipes. Right now we have peanut butter cookies on our list. I can add another meal like this blackberry fool which has hazelnuts and butter and other things in it. So now I have a list of several items and I can drag and drop these lists. Let's say I wanted blackberry fool to be higher on my list. I can just click and drag using ember sortable in order to reorder these items and some kind of a priority or however I wish to use this list. This is really great. This also works for touch right out of the box without me having to do any work on my part. With the accessibility components that I added in and wrapped around these I can also hit tab and I can tab to the point where I select the entire list and then the entire list gets a different colored outline around it and I see buttons appear for an up sort and a down sort. I can now use my arrow keys in order to move my selection down and my selection up much like the W3C pattern did and I can tab into these buttons and I can press space or enter in order to activate the reordering of these items. I can of course shift tab in order to move it back up and I can just activate these buttons as much as I wish and none of this blocks the interactivity of being able to for example tab to the links that are under here. So these are actual links so here's the link for peanut butter cookies and here's the link for blackberry fool. I can hit enter in order to activate one of these anchor links and it'll take me to that page. I can also click on any of these items in order to activate them as well. No functionality is lost while doing these kind of interactive things. In fact Ember, pardon me, Ember CLI template lint does not throw any kind of warnings for this kind of composability as long as you build it kind of carefully in regards to having nested interactivity because you can build these as separate elements very carefully with your interactability. And so this felt great and worked great and when I showed it off to some of the other co-workers they actually really liked how it was going. So let's dive into some implementation details. If you want the full details of this you're able to pull up the GitLab repository and dig in for yourself. All the tests are passing for this repository and you can see how all the tests are done and how the components are done for this demo code. One of the things I wanted to talk about for composable components are splatter boots. Splatter boots are relatively new to the Ember framework and with the introduction of glimmer components and template only Ember components we no longer have a wrapper div assumed on our component on the outside. And so if we want to pass in attributes like a tab index or a class we can now do so by passing a dot dot dot attributes within of our within our components template and it will automatically figure out all the things that you passed in and render out something like this at the bottom where you have a tab with a tab index of zero and a class that we defined of border and a focus border of teal. What's nice about this is that you're able to split out the levels of concerns. The attributes that are going to be assigned within for example in this case the index like application kind of route the index route template we're able to say we want this one to have these classes and we don't have to have sortable group accessible component either worry about the classes itself or have to expose a class api of some kind or have to have a wrapper div that would allow you to pass these things in instead we're allowed to use splatter boots to intelligently pass these things down wherever we wish within the component now on to events and modifiers within our sortable group accessible component I have many many even more than shown here event modifiers because we're listening for things like focus and blur key up key down into a spacebar things like that one line two you can see an example of a modifier this is a modifier that ships with ember it's called one and one is tied to the div itself and so it knows what the event is pardon it knows what the element is and it listens for in this case a focus event and when I this div gets a focus event it'll fire off the event to this handle focus action and in that action is where I handle all the focusing logic similarly a line down is blur and then on line four I could have done the same thing I could have done on key up and then assigned a key up handler in my component but instead I opted to write my own ember modifier I wanted to do that so that instead of having to have the component itself listen for every single possible key up event and then doing some kind of a switch case or a series of ifs about which event is being fired for which key like what key is being entered on the keyboard and then ignoring a lot of it I wanted to abstract that into its own modifier and so that's what I did here at the bottom of the screen you can see there is a modifiers key up file this is the entire modifier it's just eight lines of code the most important lines of code are on line six and seven line six adds an event listener on to our element that listens for a key up and then on seven we undo it we say remove that event listener when it's no longer needed for this modifier the rest of the logic is just listening for an event and firing off a function when it gets on listening for the event and also narrowing down to that desired key so okay let's with shift gears us a little bit we're going to talk about some testing details many of you have probably seen ember test mod ember test helpers up at the top of your testing file if you were to generate a new component right now you would likely get an import that will import from ember test helpers a line like render render is the most common one that you see and it's how you can render out your rendering tests your application tests things like that one of the first ones that people end up finding out about when they want to write more tests is click and so these are asynchronous and you can await a render and you can await a click event and then you can assert some kind of data has been changed or some kind of ui state has been changed within your tests something that people are not as aware of commonly is trigger event and trigger key event so what we're using those now if we go back to our key up example we're going to write a test for that we can write a test just like this it's asynchronous so work with me here we're going to be on line seven where we are going to render out a div and that div is going to have a modifier of key up and it'll pass up a function to this dot key up and we'll handle that in a moment so now we have a div with our modifier on it with key up and on line nine beneath it we have an await trigger key event and it will be first past an element that we're going to put the event onto and then a string of what type of event which is a key up event and then finally what key this could be a key code like number 13 or it could be a string that starts with an uppercase like enter we don't hit line 10 yet because this is asynchronous so after line nine gets hit it's going to trigger that key event which will trigger our modifier with the key up event listener and this case is going to go as line seven says up to this dot key up and you can see that on line two this that key up so this that key up receives an event which we are going to destructure we're going to take out of the event object just key now on line three we're going to make sure that key is an assert equal to enter now line four we will just go ahead and assert a step of key up now if you haven't seen step before it's one of my favorite bits of key unit uh on q unit you can assign steps which will then add automatically to an array anything you want typically strings now in line 10 we can then verify those steps for run and so we can verify an array of one string in this case of key up was fired if for some reason line nine did not trigger this key up function then this test would fail as it did not get all the steps that they expected to get and verify steps and so to cover this one more time we make a div we can put a modifier onto it in a test we can then fire something like a trigger key event and then we can listen for what that key is in this case and make a step and then verify those steps occurred similarly in application testing we could test the entire page logic for something at a higher level and so in the index test for example we could assert in the DOM this is using q unit DOM which is another add on we could use q unit DOM to say assert in the DOM the first element has text of item one so what this is really doing is we're going to find all the items like item as zero index and item at one index and we're going to assert that it has a certain text inside of it you can also do this with dot text content if you wish to but at any rate this is going to verify the beginning state is what we expected to be item one and then item two now we're going to test reordering we want to see if we can flip those and then test for that the next line down we await a trigger event which is a lot like what the user is going to do where they're going to focus by hitting tab onto the entire list itself so we're going to hit focus as an event onto the entire list and then that'll make the up arrow and the down arrow up here and we'll await a click emulating a click event on that down arrow so now that's asynchronous and we said await for that click to occur all the ember run loop runs through and now we can do another assertion afterward so we can now just take the same test that we did a second ago with the same assertions and we can just flip the items now we expect item two to be first and item one to be second accessibility just allowed us to test reordering when I first got to this I did not think that we would be able to promise that we could have automation testing for drag and drop and while technically we did not in this case automation test the drag and drop of the mouse or the touch but we were able to make sure that we can guarantee that the list can be restarted with keyboard inputs and that was a big win for us we had a lot of different team wins in fact throughout this project we had a very quick feedback loop with development because once we had tests written we were able to do test-driven development from then on and we were able to see when tests would go red if we broke something and stayed green well while it was still good we were able to work with design to continually improve on this functionality and all the different visuals passing in splatributes of more classes to adjust the visual style of things very quickly we also had a very quick feedback loop with project managers who were instantly able to see that we achieved the baseline functionality of mouse drag and drop and touch drag and drop and then gave us a little bit more time to work on the keyboard interactivity we got quick sign off for ux which was excellent we're able to see how it was working in every step in the process because we were doing composable components and we had less stress than qa because we were able to deliver an automation tested um page the entire feature was automation tested from beginning to end and so instead of them having to do manual testing for every release from here on end we were able to have that automation tested for them and then finally we had less scope creep because instead of having to come back to this either in the final days or months later down the road to have to force and accessibility for this feature it was just already built in there didn't have to worry about it now something I find very interesting ember sortable version two came out after most of my work was done for this feature and I've implemented this into the demo project where now we have version two of ember sortable and now I have a list here of peanut butter cookies and lasagna um and now you can I just love that combination you can click and drag just like we were able to before but also without any of my composable components ember sortable out of the box supports keyboard events I can tab to the list I can hit enter I can use my arrow keys to move them up and down and hit enter again to finalize my selection it's a bit of a different UI pattern but I actually really like the way that it feels and it's shipped by default and it's part of the main ember sortable library which is excellent you get these kind of things for free by leveraging open source community projects on top of that in order to do an upgrade from what I had shown previously to this version all I have to do is delete those two composable components and then rewire this back up very slightly and it just works I can move forward by just deleting code that's something you always want and so where do we go from there something I did not talk about but is very important it's accessible screen announcements screen announcements letting the user know that something has changed such as the order of items in a list another thing is ember sortable version 2.2 now has an alpha which has modifiers as the main way that you write ember sortable components so instead of having composable components you could actually write something like an ordered list that would have a modifier of a sortable group and li like a list item element that has a modifier of a sortable item I find it to be very exciting there's also ember accessibility testing and ember cli template lint that I feel go hand in hand to help you avoid some accessibility um plot holes plot holes uh pot holes that you could run into where you're like oh no I accidentally forgot to put a roll on my button for example what is the very real case that happened to us recently and so what did we discuss we were talking about adding functionality with composable components and all the different advantages that came with composable components such as being able to upgrade more easily over time having faster feedback loops and being able to not have to modify core functionality from another add-on for example we talked about equitable and discoverable user experience design while looking at some of the w3c patterns and also just the reasons why you would want to do these things and then the final result and how good it feels then we also talked about automation testing and automation testing accessibility but this is something that is not commonly done but I would love to see more of it once again I work at all of you as a software engineer we are hiring and we are working right now with k through 12 school districts to not only help them through the coronavirus epidemic that is happening right now but also throughout the year as they are budgeting in order to make a more equitable education system for everybody um we build ember software so we are ember through and through and we develop software with shape up by base camp so if you're looking for something that's an alternative to agile take a look at all of you lastly I have a challenge for you hire somebody different than you that might sound completely off topic but it's really not if you hire somebody that's different than you in regards to I don't care if it's race religion orientation gender maybe they like legos and you like mega blocks it doesn't matter the more different people you have on your team the more likely you're going to have people asking important questions such as is this accessible and that's when it's fired us to do this on our team so I encourage you try to hire somebody that's different than you if you have the opportunity you won't regret it and lastly I ask you to make accessibility a priority at your next design meeting