Lightning Talks Day 1 by Various Speakers
Published September 6, 2017
This video features Adam Fast, Daniele Procida, David Vaz, Ed Rivas, Elizabeth Uselton, Griffith Rees, Kojo Idrissa, Marshall Sutton, Nicolle Cysneiros and Rodrigo Suarez at DjangoCon US 2019 in San Diego, California, USA.
DjangoCon 2019 - Lightning Talks Day 3 by Kojo Idrissa
Adam Fast 00:00
Marshall Sutton 4:24
Daniele Procida 9:29
Rodrigo Suarez 14:17
Nicolle Cysneiros 19:07
Griffith Rees 23:57
David Vaz 28:39
Elizabeth Uselton 32:52
Ed Rivas 36:46
This talk was presented at: https://2019.djangocon.us/talk/lightning-talks/
LINKS:
Follow Kojo Idrissa 👇
On Twitter: https://twitter.com/Transition
Official homepage: http://kojoidrissa.com/
Follow DjangCon US 👇
https://twitter.com/djangocon
Follow DEFNA 👇
https://twitter.com/defnado
https://www.defna.org/
Intro music: "This Is How We Quirk It" by Avocado Junkie.
Video production by Confreaks TV.
Captions by White Coat Captioning.
The lightning talks cover a wide range of practical topics: deploying GeoDjango with Zappa and AWS Lambda, building NASA’s Django-based exoplanet modeling site, making a low-cost Raspberry Pi drawing machine, adding TOTP two-factor authentication, and using a paper bullet journal to organize work. Other speakers explain how Python was used to map the historical growth of FidoNet, invite attendees to DjangoCon Europe in Porto, examine Python’s detailed equality rules, and write effective alternative text for accessible websites. Across these examples, the speakers emphasize pragmatic experimentation, careful handling of technical edge cases, and designing tools that work for real users.
Summarised automatically from the transcript.
Automatically transcribed, so expect mistakes in names and technical terms.
Speaker 1: Alright, so I wanted to talk about uh Geojango and a little trick that I found to get it to work with Zappa, uh which is a way to run code on AWS Lambda, kind of in a serverless uh quote buzzwordy thingy. Um can't really talk too specifically about Geojo or Zappa because of the time. But if you've used it and you've been waiting for this, I finally found a comment after repoling every couple of months and somebody said Hey, there's this way. And so I wanted to spell that out and kind of put a bow on it. So if you add raster IO, which is a geographic library for dealing with raster or kind of traditional image data to your requirements file. And then this version is important if you want the paths that I specify to
Speaker 1: work. Go into your settings file and specify your Google or Geospatial Data Abstraction Library and Geos or Geometry Engine Open Source libraries as these Update the Zappa function, you will begin to be able to do GeoGjango queries as long as you have a spatial database. Post GIS is best and you can get that on RDS with their Postgres version as well. Spatial Light would work. do spatialite because that's an S3 database back end. Um now in a real world you would not want to do this because it won't run on Docker or locally. So use environment variables. Um there's a downside to this approach that is great for hacking projects, not so great if you're trying
Speaker 1: to port your app. It does cost about 20 megabytes over uh if you manually manage your dependencies. which I'll post some info on later, but you have to basically the short version is intercept the code package via Zappa package or by just copying the file before it gets uploaded. Extract all the data and then pull them into your own repository and upload them. Now if you use Slim Handler to get around that limitation, there's a 75 megabyte uh restriction for Zappa. then your paths will change. It will be in temp instead of in var task. And it will also be based on your your project name still in the raster. io. libs folder. If you are unable to find them or you change versions of libraries, go back to the GitHub issue
Speaker 1: and use the Zappa invoke command that they specify. Was that my time? Oh okay. I thought I heard a dinger. Okay, so we had a few extra seconds because the adrenaline got me talking fast. And uh so we'll talk about Geojo. If you want to use Geojo, uh you can do things like uh sorry for the small text, like line 11 would take all objects in the database and annotate a distance onto it so that I can see how far they are from the point I specified and then we order by the distance. And um then we're able to display geospatial data. This is really cool for finding where things in your data are close to other things. you know, searching for stores or locations or any of these sorts of things are all
Speaker 1: uh really useful. And then I guess we've got a little bit of extra time, so we'll talk about Zappa. There's a bunch of Django Con talks uh that are really useful on that. you can find on the DjangoCon YouTube channel, which will have posts from all of the talks from this year, including closed captioning, when within a couple of weeks. And so uh serverless still requires servers. It's a compatibility layer so that you can run on serverless with Lambda but not have all the lock-in. And most applications can run inside the free list. limit, which is kind of cool for hacking projects and learning stuff. You can pip install Zappa, Zappa init, Zappa deploy, take that URL, drop it in allow hosts, Zappa update, and then you're done.
Speaker 1: Thanks.
Speaker 2: All right. So we're gonna get started with Django and Exoplanets. Marshall, are you ready?
Speaker 3: Yeah.
Speaker 2: All right. All right. Please begin.
Speaker 3: All right. So this is me, I'm Marshall Sutton. I work at NASA's Geiders Space Flight Center in Greenbelt, Maryland. Um everybody wants to know what we do at NASA So a little bit about me as software engineer. I'm very new to Django. I was working on some Earth Science applications and this uh laser validation um uh GUI setup there. That job ended. Um my boss came up to me and said, hey, do you want to work on this other project that involves Django and web programming? And I was like Sure, um just send me to DjangoCon and I'll do it. Um so that new project is called the Exoplanet Modeling and Analysis Center.
Speaker 3: It's a website, it runs on Django. And it's a clearinghouse for different um scientists to showcase their work and to present models and And there some of the case some of them are interactive. My coworker who is here somewhere, Apex Patel, actually worked on the CSS for this. It's a pretty uh basic website. We've got forms. Um you put in some of the characteristics of your exoplanet. Uh how big is it? Sorry, it's a little small. I can't even read that. Um the your size in terms of earth radii. Uh
Speaker 4: how hot it is, and you get some characteristics back about the uh the chemical composition of your exoplanet and so it's this uh nice graph. Our job is to be uh format agnostic. So whatever model uh the scientist comes and brings it to us, it's our job to integrate it into into the website. So sometimes they come in as the form of C or Fortran code or whatever the scientists like to use. And then part of my job is to uh make these plots. What is an exoplanet? An exoplanet is a planet that's orbiting another star other than our own. How do we find the exoplanets?
Speaker 4: You can't really see them with visible light, so with the naked eye, we have a telescope, so we Use these light curves. As the planet goes in front of the sun, it dims the light a little bit. And so if we look at the star long enough and hard enough, we can see these patterns. That works well for very big stars and stars that orbit closely to the sun , but that's not the first ones we're found. What are scientists interested in? Um they also want to look at the spectra of these extra exoplanets. Um this is the wavelength on the bottom that goes from ultraviolet to um near infrared visible in there and uh we're just seeing what kind of radiation we would get back
Speaker 4: from a uh from an exoplanet They model the theme what a planet would theoretically give off is radiation. And they want to know if we tweak some of those parameters, how is that going to change the spectrum? So that's the blue versus the red. What happens when we tweak the temperature of the planet by a few hundred Kelvin? uh so nasa exoplanet missions this is uh the first one's a test uh transiting exoplanet survey it's got uh four cameras inside that little uh box i keep moving my uh point my cursor i don't know if it shows up okay
Speaker 4: um thinking that we'll point So there's the four cameras. It just stares at stars looking for those variations in the light curves. And that was managed out of Goddard. So that's what's looking at exoplanets now. In the future, on the right, we have the James Webb Space Telescope. That was built in pattern. It was um actually settled in the building. You can go in and see it being built. It's got an 18 meter um mirror, segmented mirror that folds out and unfolds. There's a uh sun shield the size of the tennis cord that's quite an impressive bit of machinery. Check it out if you can. It's supposed to be launched in 2021 or sometime thereafter.
Speaker 4: How many exoplanets have we found? uh wanted to look at the number, but there's 4,000 exoplanets, there's 3,000 um ones that they think they found. I was reading that the number of exoplanets that we discovered doubles every 27 months So apparently that's the new war 's law. Hi everyone, I am Daniela. I want to show you the world's cheapest and simplest pen water. In case you don't know me already, I work at DVU. We do cloud hosting for web projects for people who don't like to cry about deployment. So if you deployment makes you cry, come and talk to me about that.
Speaker 4: Offer you a remedy. And you can talk to me by things find me all by finding me on the internet. So my question was what is this cheapest, simplest pep plotter that could possibly be made? And I made it. And it was called a brachyograph. Brachio meaning arm and brachio to write. And um it's made of two arms with um two joints and Many triangles. After a while you realize that everything is made up of triangles. Here is the representation of it geometrically and what it actually looks like doing something. from sophisticating materials like closer
Speaker 4: paste. Here's the mechanism for lifting up the pill or the pencil that it's drawing so that it doesn't make a mark on the paper. For mathematics, it's not rocket science, but it's, you know, 30-year-old high school germinometry, so it might as well have been rocket science, as far as I was concerned. The bill of materials, very cheap, the Raspberry Pi zero, by the way, everything runs on the Raspberry Pi, $5, the three seller motors about uh $3 each. The rest of the stuff, you can find actually all of it is so cheap that even if you were to steal it you'd be very unlikely to get punished or punished steel simply because the cost of punishing would be so much that it wouldn't be worth it. So When you're dealing with low-cost things actually you can get away with quite a lot. The tools, a ruler, and a knife.
Speaker 4: If you need a tools, can you carry a knife? So what I do, I uh I've got a routine as well to vectorise images. I start with a photograph, I uh vectorise it and then I draw it in this case with charcoal or with a soft pencil. This one is a pencil again and isn't patching as well as drawing the outline so you can I've got four levels of grease scale in that. And again the charcoal. I like the charcoal very much. I like the effects Yeah, it hurts. Everything's on GitHub and it's pretty well documented. So take if you want to take a photo, take a photo of that where you'll find it.
Speaker 4: Oh but I still have to have one minute. Okay, so get that for me later. I'm gonna come out here now and if using kind of I'm using FaceTime to fake this. So this is the this is the machine. Where's Calvin? Calvin helped me out on Europe when I I had three people on stage holding cameras and typing on special keyboards. So you can see it working here, I hope. There's It's me, isn't it? So I use a photograph not because I'm a narcissist, but because it's actually quite easy to draw and it comes out well. So you can maybe see the pen going, the pencil in this case going up and down there with the uh
Speaker 4: um the third server motor. Oh it's drawing the line so it's not bothering to work them down. But I think you get the idea. It's made out of bill sticks then you can do it also with stiff card. The advantage with the sticks rather than the card is that if you use card you have to cut the cards, so this way you don't even need a knife. And these server motors are the cheapest you can find. You can find cheaper ones, but they're probably counterflexible to stop working. Um if you use better letters, you get much more accurate results just for a couple of dollars more. But I think it's quite fun to see these um uh low resolution results. I'll just show you a couple of other pictures here that I did earlier. Oh I think you've seen these pictures so There's one sorry? One whole minute. What am I going to talk about? So I'm not the greatest cameraman.
Speaker 4: I do my own sound at the same time as well. So it's you know, it's really easy. You can build the whole thing in um 45 minutes or so and you know most of that time will be spent getting the go off the kitchen table. So um I'll have it set up again and oh I wouldn't kind of be doing some squinting on it perhaps over the next couple of days if anyone's interested. Maybe making a jangle interface so you can upload images and through a nice graphical. Well I can't talk to me about it. Thank you very much. It's been a really good
Speaker 5: Okay, hello everybody. I'm Goleo. I'm checking out GTP and how we can get a simple solution. using Pine. I came from Uruguay. I work as a full stack developer on October. In Octobot we really love Shango um and Python. And this is my first time speaking in English for uh Dash Alvin so Please have mercy. As you know, internet is a risky place. There are so many data stories every day. Also, as users, we need to manage many apps and many accounts. So we need to remember so many passwords and sometimes, but
Speaker 5: only sometimes we need to We use the same passport between different accounts. This is not safe, so we need to keep up safer using another factor. So we will get two factor authentication. So first of all we use a password and another factor could be a code uh that an upcom uh device so maybe uh you just use indicator uh as you know uh to run an account uh we need to to take a photo to a QR image and then they have give us a call, some numbers that change by the time
Speaker 5: but what are these numbers what are under the hood It's GTP, the term basic one time password. To sum up, GTP is a hash function, hash return But don't ask at all. We need to pass a secret and account. This secret is generated by the backend and then we need to share with the two the clients and the counter is the current time so for a moment the function returns a token and it will return the same token for a period of time called interval. After the interval, the function returns Another code.
Speaker 5: So if the backend and the client could generate the same token at the same period of time and the client could send the token to the backend to verify we are locked. So let's do this with a red library that is uh by OTP, it's very simple uh use it. The code is very simple. We just need to import uh the the the library then as I say you need to create uh a secret and the the the library has uh a method to create a secret but uh you can create the in a wrong way. Then we need to initialize the
Speaker 5: object with the secret. By default the the interval uh that I say uh is 40 seconds and you can change the if you want with the function but now uh the tttp return us a code a job and we can verify with the function verify. But this token is valid for thirty seconds. So if we wait thirty seconds and then we uh valid this token again with the function we tone force. So this is the base code and we now need uh more buttons uh there are one more step uh uh we need to create
Speaker 5: uh the the the url we need to share the secret uh as i said so in that point and we we shall have the user username and an issue so the the library have uh has uh another uh uh function call called provision uh duty So we just made the the URL but start with the the protocol TD off. We can use a simple front-end library to embed the URL and with the bool authenticator we take a photo to the QR image and we can verify in the app the new code.
Speaker 5: So with the new code we can verify with the back end and that's it.
Speaker 6: Okay, um hi guys. Uh so my name is Nicole and I 'm presentation here uh Monday aboutization. This is my first job on and I'm really happy to be here. Um this let me talk is actually nothing really related to Django or Python, but it's something that I apply on my day-to-day basis and it helps me out on my work using Python and Jenna so that's why I figured out that I should show this to you guys. So basically I'm going to talk about how to get organized with Wolf Journal. Bullet journal is a methodology created by Rider
Speaker 6: Herr. I'm not sure if anyone else is correctly. But um they describe it as as it it is described as a mindfulness practice, but actually disguised as a productive uh system. And the basic goal is to help you organize what you need to do while remaining mindful of why you need to do that. And bullet journal is basically written in reclogging, what they call it, which is just a way of capturing all the information as bullet lists. So the first thing that you do when you have a good journal is to define the syntax of your bullets.
Speaker 6: which we call the key of your journal. And you can get as creative as you want with this one. You usually put this on the first page of your journal just to indicate what's the syntax for a test. And a test is the thing that you have to do. Then you can define another syntax for just a note, which is just something that you don't want to forget. And you can create another sentence for events that are some noteworthy moments in time. So you can put a uh a square, uh just an actual bullet, a star, uh a narrow, anything that you know if you're more comfortable with. But why am I
Speaker 6: talking about writing on a paper in 2018? I know that we have a lot of applications out there that can help us to create bullet lists, like you can get every note. You can get Google Keep. It's going to give you work list. It's not a big deal. But actually, we have studies showing some benefits of writing something down by hand. It can improve your memory like when you write down, at least it helps for me. I don't know if it happens to you guys, but it actually helps me memorize better what I need to do. So whenever I write down using pen and paper, I feel that uh I remember better what I need to do. For me it's also a kind of a stress really Whenever I take some time to organize my journal, I go over everything
Speaker 6: and it's nice, it's it gives me a nice feeling of laying down and listing out everything that I need to do and then I can have this clear vision and I can take a breath. and know that I can accomplish this or forgive myself that I won't be able to do that. So it's just a nice way of getting rid of all that mental uh rush that we get. Oh I have so much to do. And then when you really sit out with writing, taking your time maybe practicing some calligraphy you can see that hey it's not that much and some of those I don't really have to do so it's really nice. It works wonders for me. And also it enables your creativity. When you put when you have paper and a pen, you have you have so much freedom.
Speaker 6: You are not limited by your uh your mouse or or your your keyboard, you can just go ahead and do whatever you want. So this is my favorite part of writing on a paper. So I hope that you guys have noticed that in your um in your bag you received this blender from Webcoats, that's a company that I work for. And here's just an example of how you can use the planner to organize your week. So this is my planner for this week. I took some notes of some talks that I wanted to see, some social events that we had this week. and I'm looking forward for screens next days. And on Sunday I'm going to go San Diego outside around the city. So I put that down there.
Speaker 6: So I hope you guys enjoy it and I hope you guys use this planner on your day-to-day basis and it helps you as much as it helps Thank you.
Speaker 7: Okay. Uh can just uh stands up, how many people here are fighting? Okay , true. Alright. I am doing much research on it and amazing objects. That's what I'm saying. Um so uh how I learned Python, uh I tried to make a student newspaper with someone you may have seen earlier today, uh, and I didn't job sorry about that uh and then I tried to uh study suburbanization about DC and my supervisor thought that was a terrible idea And then my best friend from middle school showed me a documentary about quality point systems. So hands up if we weren't quality point systems. Okay, so much larger percentage. If you're interested in both support
Speaker 7: systems, look up Finan, and it's actually got a whole episode in this documentary. Anyway, that's one new way to figure out what to study for a thesis and the dude I then got into contact with Corn Me in touch, put me in touch with the records he had of old finite node lists, which included all the telephone numbers you could call. And he tried they tried to keep them updated every week. Um So, uh that's where my terrible title comes from. And so Tom Jennings is the dude who, one of the main engineers who got work in the beginning. That's where his little ASCII logo comes from. And uh I definitely spelled that word wrong, but here is my attempt at an XKCD
Speaker 7: diagram of the motivation behind Finanat, which was Uh bullet support systems were very much uh individual networks, some would volunteer to run one, uh, but if you wanted to call someone outside your web network you had to pay long distance charges. That was really annoying. So Tom Jennings had a friend, I think he was based in San Francisco, a friend in Baltimore. He didn't want to pay long distance charges. How can we get around that? Um so he got the idea, well if there are lots of local bullet support systems, uh what if each node, I think at midnight every night would then sync up at their nearest neighbor? And then that would minimize the cost of log distance and it might take a while, but then it could send a spray message for this money. So that started in 1983.
Speaker 7: That became my research question. How did it change geographically over time? And then it actually takes in 1995, and that's hard for another day. And I guess I was gonna have to figure out how much parts are some of these NOS files. And now that's where the regext thing comes in. So initially I think Tom actually maintained these node files himself. and then started scribbling things down. You can search for that. It's kind of fascinating. And then I got standardized and updated weekly. as diffs. So that's a fascinating thing for looking at how that changed over time. It didn't quite work worldwide, which is probably because you didn't guess it would get that big.
Speaker 7: So this is an example of the early format. And you might notice the ones that I've highlighted. So he didn't expect it to have phone numbers outside the US. So that's why there's an asterisk there, and obviously much longer number. places where commas and spaces were varied a bit. And one of the most annoying ones was the England one, which I hadn't found originally, which didn't have a comma. And obviously not a US number. Anyway, so And the other thing was apparently what finally motivated them to change their whole hierarchy was he hadn't guessed it would be more than 256 addresses in day one. So anyway, they rerun it I think in 1985 and it grew and maximized at about
Speaker 7: uh 40,000 servers across the world. Anyway, so uh I ended up writing this crazy parser which is a regex. And to give you some idea, each thing has flags to indicate state. what the actual phone number was, board number names, I had to deal with that awkward England case. And this is how much you can in Python have a documented regex, which I can talk about in more detail in another time. Anyway, this is what I was then able to model as it grew over time. And that's my silly plot. Thank you very much.
Speaker 8: Hello, uh my name is Davis. I'm I come from uh Porto, Portugal, and uh the next jump point will be there and I'm here trying to convince some of you to look at the other side of the pond. So Portugal is one of the countries in Europe, the closest one to America by the way We have uh direct flights from Indyard. Uh any other city you have to uh get a connecting flight Porto is a lovely city near the near the river, Douro River, which is also the origin of one of our famous exports,
Speaker 8: Port Hawaii. Why should you come to Shang Kong Europe? Aside from the fact that it another jungle coin. It's another great opportunity to uh check uh other jungle coins. Um Portugal is uh one of the least expensive countries in Europe so it's It's another plus if you want to check out uh groups. And it will be in May, so you are expecting to have uh spring weather, lots of sun sunshine and uh good weather overall We have wonderful food and we are famous for why and the people are really welcoming
Speaker 8: So I will show you this video which promotes basically the venue location of battery host Jack Mario, but mostly because it will show you a bit more of the city sites. This is actually under construction right now, so it should be finished by the end of October. It's safe to bet that it will be Feel so fine.
Speaker 8: The class itself is uh located in the city center so with lots of retarchets all around And it's basically in the middle of a garden that has uh riverside views.
Speaker 8: So the the dates are are pretty much both but the weight of the biological tickets right now because this might change a bit in the next month or so when we uh until we finish up every details but uh more information will come soon in the official uh site And when we have the full information on both we will publish it in all the social medias of the user.
Speaker 6: Hi, I'm Elizabeth. I work at Rover. We don't have time to talk about me. We only have time to talk about quality. You might think that this is a talk about the difference between equals, equals, and it is, and it's not a talk about quality. is it's just to talk about double equals uh is is of course where things are in memory there we're done with that we don't need five minutes so we want to do this well every day um a equals one equals one, a equals b, it's true, great, we understand. Maybe you've even seen this. If you haven't seen this yet, now you have, so that's fine. This is the dumber equals method. And it's is a thing that you use to override in a class if you want to compare an equals in a custom way. You check how self relates to others. So we're going to make it an object that has an override in the equals matcher and it's true all the time, and one that's non-matcher and it's false all the time. So matcher equals matcher and that's always true, and non-matcher
Speaker 6: doesn't equal non-matcher and that's always false. So it's great That's uh everything makes sense so far. So what if non-matcher equals uh matcher? Uh that is false. Seems good, they're different objects. I'm I'm okay with this. Are you still okay with this? Um matcher is equals non-mature, what do we think? Um yes it is true which feels bad in my heart like you don't want the order to matter it's I I don't like that equals as non-commutative that feels wrong and it feels bad. And but we at least we have a mental model for how equals works or at least one of the first four things that equals equals does. So are you ready to be more upset about that one? So I'm going to make this thing subclass matcher and it inherits from non-matcher as it returns two group on the dumber equals method ,
Speaker 6: not false like the non-matcher. And so when we compare it to non-matcher, we get true, which is the thing that we thought we would get. But when we compare it to non-matcher, we get also true. So the thing that we just got used to where it was non-cenewable doesn't work anymore. Uh why is that? Uh well it's because it always puts the subclass on the left, first of all, before it does anything else. So you should have to really hear custom logic in your subclass, and uh if you don't, please do that because Python's gonna make an assumption that you didn't. But uh so if you're reading the Python data hall page, which I suggest you all do, it's a great beach read while you're here in San Diego, um again, you go down halfway through the page through the rich comparison methods where thunder equals is you find out that the reason we're getting such bad results here is because we're really doing things we're not supposed to be doing.
Speaker 6: We shouldn't be returning false when we're comparing two different things. We should be returning not implemented. So we're going to make this non-implemented matcher and it returns not implemented. That's not non-implemented error, I want to point out. It's not an error. This is expected behavior. It's just a single So matcher is double equals to not include matcher either way, and non-matcher is false either way, and that feels a lot better. It's like we have a consistent thing depending on, like not dependent on which side of the thing. wrong. So we now have three of the four things that double equals does. It puts a subclass on the left, A under equals B, B under equals A if uh the first one was not implemented. So what happens if we compare not implemented to not implemented? We get false. So if now we have a sort of rule for
Speaker 6: where it's false if um if number three is not implemented. But uh what happens if we save not implemented off to a variable foo and we save foo equals foo? We actually get true. That's because the last rule is that it actually does an A equal an A is B check. at the last one. And I actually have enough time that I could have told you about how the non-matcher one will not match if you do an is check because it won't get there. And that's how we can tell it's the fourth step, not the first step, but I cut those slides because it didn't I didn't think I'd have time, but I talked curly fast. So that's gone collie works on Python. Thanks everyone.
Speaker 5: Alright. So hi, uh I'm Ed, a web developer. Part of the work I do involves making sure sites are accessible. And one of the key things to make sure they are is to write good alternative text. And that's what we're gonna be talking about today. So I want to introduce some concepts and we're basically gonna be thinking of imaging
Speaker 6: in three categories. The first one is functional images. This image is trying to convey to the user that an action will be initiated. They are used in interactive elements like links or buttons, and you can think of them as icons or badges. Then we have informative images. These are images that graphically represent concepts and information. Those are probably the most typical images you think about in a website.
Speaker 5: They include pictures, photos, and illustrations. And then lastly we have decorative images. They only add visual decoration. They do not convey any important information to the user. And you can think of them as spectral images, orders, and other RT sync as they that designers like to put in websites. So let's go on a guide to see how we can decide which kind of alt
Speaker 6: text we should enter in a when we when uh facing different images. So these are the three guiding principles that are gonna be really handy handy to make sure you write a good alternative text First of all, you you must focus on describing the function or the content of an image. Then it's very important that all images have a defined alt attribute even if the attribute is empty. You do not want to have images
Speaker 5: just don't have an alt attribute at all. We'll see uh that we'll see why uh next. Then remember that context is super important when describing images uh Because in some context, defining or leaving the alt attribute empty is the best choice for that image So, uh you can start by when you uh encounter image, you can start by making this asking this question, is this image interactive?
Speaker 6: then it is a function of the image and you should describe the action or the result that the user is gonna is going to or should be expecting when interacting with this image So for example, if I have this markup, I have a logo that is being wrapped at the anchor tag. So this logo is going to take me to the W3C home page. So the alternative text is the W3C home because it tells the user where they're going to land when they click the link.
Speaker 5: Then here we have a little uh image that is an icon of a printer, and instead of just entering the printer icon, you should say print this page because it's it's uh entering the the act it's describing the action that the user is gonna perform where they click the link as well Now is an if an image is not functional, then you you go ahead and ask the second question. Does this image include content? If it's true, then it's an informative image.
Speaker 6: You must describe the meaning and purpose of the image You should avoid literal super obvious descriptions. Uh you don't need to start with picture or photo in your alternative text. Screen readers are going to tell the user that this is a graphic. And the surrounding funds is sometimes enough and you might not even need to provide an alternative text here. So for example, I have a paragraph here with two images, the little icons and then the actual value of the phone number or the facts And if you see the alternative text in the face, in the first case it's telephone, and then we have the number. So when this is announced by screen readers, you're going to see telephone 0123 and then fax 0123 And that's much more reusable than just say telephone icon or fax icon. Here we have, for example, a uh a little
Speaker 6: a picture of a dog, and we have the paragraph explaining uh the image And then we just want to very briefly describe the content of the images, which is which is the dog with a bell attached to its colour. And here the image Conveys an emotion or a sentiment. So instead of describing of this this is a picture of family outside smiling, we can say we're family friendly because the website tried to convey this permission to the user And lastly, if the image is not functional or is and doesn't have any content, then it's uh divert. We don't provide an alternative text, we just leave the out attribute empty. And this is back to what I was saying before that uh the If you don't provide the alt attribute at all, the screen reader is just going to announce the whole URL, and that's going to be a terrible experience for your uh screen
Speaker 6: reader users. You're just going to get a huge URL spelled out for them. And when you leave the alt-imper empty, the screen readers are going to skip the image completely. So in this sample, the ordered image, just leave it empty, and it's going to be skipped completely by the screen reader. Here uh the image is quite redundant, so we simply leave it out because the the text in the strong tag is already described in the link. And here we have a description of the image, so it's not really necessary in the paragraph, so we don't need to describe it again ourselves. Yeah, there's some extra steam because we don't have any time. Make it.
Add Rasterio to the requirements, configure the GDAL and GEOS library paths in settings, and use a spatial database such as PostGIS. For production, the speaker recommends environment variables and notes that manually packaging the dependencies may be necessary because of size limits.
Discussed at 0:17Annotate each database object with its distance from a specified point, then order the query by that distance. This supports location-based searches such as finding nearby stores or other places.
Discussed at 2:46An exoplanet is a planet orbiting a star other than the Sun. One detection method watches for the star's light to dim when the planet passes in front of it; scientists also study the spectra of exoplanets and model the radiation they emit.
Discussed at 5:57The speaker's brachiograph uses two arms, two joints, and three inexpensive servo motors controlled by a Raspberry Pi Zero. It can be built from low-cost materials such as sticks or stiff card, with a ruler and knife as the main tools.
Discussed at 9:50The backend and authenticator share a secret, then use that secret and the current time to generate the same one-time code for a short interval. The backend verifies the code supplied by the user, and a new code is generated after the interval expires.
Discussed at 15:51Create a provisioning URL containing the shared secret, username, and issuer, then turn that URL into a QR code. The user scans it with an authenticator app, which can then generate codes that the backend verifies.
Discussed at 18:10Define a key for your journal first, using distinct marks for tasks, notes, and events, then capture information as bullet lists. The system is intended to organize what you need to do while keeping you mindful of why it matters.
Discussed at 19:55The speaker says handwriting can improve memory, reduce the feeling of mental overload, and provide a clearer view of what really needs to be done. Paper also offers more freedom for creative layouts than a keyboard or mouse.
Discussed at 21:26Local bulletin-board systems synchronized with nearby nodes, allowing messages to be passed through a network rather than requiring a direct long-distance call. The system began this approach in 1983 and later grew to roughly 40,000 nodes worldwide.
Discussed at 25:34Use a documented regular expression that accounts for the files' changing formats, including flags, phone numbers, node names, inconsistent punctuation, and special cases such as English numbers. The parsed records can then be modeled to study how the network changed over time.
Discussed at 27:57The speaker highlights Portugal's relatively low cost, spring weather, food, wine, welcoming people, and Porto's riverside city-center venue. The conference location is described as being in a garden with river views and attractions nearby.
Discussed at 29:29Python gives a subclass's comparison method priority, and if the first comparison returns `NotImplemented`, it tries the reflected comparison. Implementations should return `NotImplemented` for unsupported comparisons rather than `False`, allowing Python to apply its comparison rules consistently.
Discussed at 33:42When a class cannot compare itself to the other object, its `__eq__` method should return `NotImplemented`, not `False`. Python can then try the other operand's comparison method and ultimately apply identity-based behavior where appropriate.
Discussed at 35:16First determine whether the image is interactive, informative, or decorative. Describe an interactive image's action or destination, describe the meaningful content of an informative image, and use an empty `alt` attribute for purely decorative images.
Discussed at 38:06An empty `alt` attribute tells screen readers to skip the image. Omitting the attribute entirely can cause a screen reader to announce the image's entire URL, creating a poor experience.
Discussed at 41:00Note: We understand that names change, people change, and bodies change. We respect each individual's journey and privacy. If you have any concerns about a video or need us to remove content, please don't hesitate to contact us. We will handle your request with care and promptly address any issues.
Published September 6, 2017
Published July 11, 2024
Published July 10, 2024
Published March 11, 2024
Published June 7, 2023
Published September 30, 2020
Published September 30, 2020
Published November 3, 2017
Published September 1, 2017
Published August 12, 2016
Published November 8, 2018
Published October 23, 2025
Published December 6, 2024
Published November 22, 2023
Published October 25, 2019
Published July 15, 2026
Published July 15, 2026
Published July 15, 2026
Published July 15, 2026
Published July 15, 2026
Published July 14, 2026