Mapping out Berlin's female history with Django and Leaflet.js

This video features Rosamund Mather at Django Day Copenhagen 2024 in Copenhagen, Denmark.

Mapping out Berlin's female history with Django and Leaflet.js
0:31:17
Published October 13, 2024
145 views

Django Day Copenhagen 2024 talk descriptions: https://2024.djangoday.dk/

Summary

Rosamund Mather built Named After Women, a website mapping Berlin streets named for women and sharing the stories behind them, including figures whose histories are often available mainly in German. The project responds to a sharp recognition gap—about 12,000 Berlin streets are named after men versus up to 600 after women—and grew from her walks around the city during lockdown. She described using Django and a REST API for the backend, React and Leaflet for the interactive map, and Django admin tools to track research and photo progress; she also explained how she handles German umlauts in slugs. She sees the project as an ongoing digital-humanities effort and may rebuild its frontend or add geospatial features later, while emphasizing purposeful exploration and setting deadlines to finish side projects.

Key takeaways

  • Named After Women maps Berlin streets named for women and provides information about the people they commemorate.
  • The project highlights the imbalance between roughly 12,000 streets named for men and up to 600 named for women.
  • Its stack combines Django and a REST API with React and Leaflet, while Django admin tracks entries, photographs, and completion by district.
  • The project handles German umlauts with transliterations such as ä to ae rather than simply stripping non-ASCII characters.
  • Mather recommends pursuing side projects that hold personal interest, setting a deadline, and telling others when you plan to release them.

Summarised automatically from the transcript.

Transcript

4,806 words · auto-generated Show

Automatically transcribed, so expect mistakes in names and technical terms.

0:10

Speaker 1: Welcome back from the lunch. I hope it was good and uh welcome on stage Rosamund. We made a little grouping here for the next two talks they will be about sort of the theme of maps um and we're very excited to to have you here um keep forgetting to thank people for their traveling efforts as well you have made a travel traveling effort and the four speakers from the uh before the launch have also made huge traveling efforts. So thank you for the that. And really excited about the talk here. I think we should start by giving Rosamund a big hand.

0:57

Speaker 2: Thank you everyone. Thank you so much for being here. I'm very excited because this is not only my first talk, but also my first time in Denmark. Um so yeah this is really cool. And um yeah today I'm gonna be talking to you about um a passion project of mine and how I am mapping out Berlin's female history with Django and Leaflet JS. So just to walk you through a few of the topics or a few of the kind of Headings of today. First, I'm going to introduce myself and how that sort of relates to the project. Then I'm going to talk about what my project is about and why I made it,

1:44

Speaker 2: how did I build it, so like what frameworks and stuff did I use, and then I'm going to show a couple of snippets from the project And then sort of flash forward and talk about what I might do with it in the future. So just to introduce myself, my name is Rosamond Maver I am a developer. I'm from the UK originally, but I've been living in Berlin for the past 10 years. And my path into programming is quite unusual. So I studied modern languages um including German, hence Berlin. And I started off my career as a translator, copywriter, editor, sort of anything to do with the written word. And I did that for about five years.

2:29

Speaker 2: And then I guess sort of fate stepped in and I randomly decided to attend the Django Girls workshop in Berlin, which, hmm. was very challenging, but I sort of stuck at it. And I ended up actually getting a non-developer job with one of the companies that was sponsoring the workshop. And if we flash forward two years later, I started my first junior developer role at that same company. And that may seem like quite a jump, and I guess it is. I don't really want to dwell on the details for now because just for the sake of time, but if you are interested in how I did that, we can chat at the end. And so what do I do now? I work at Ambient, which is a software development agency based in Cologne, Germany.

3:21

Speaker 2: And um yeah, thanks to them um for making it possible for me to travel here and give my talk. And one of the cool things they do is they host the Django meetup in Cologne. Yeah, so there I work in an agile-ish team, working mainly with Django and React. And yeah, we're pretty cool, so you should check us out. So now for my project. It is a website called Named After Women, and as you might guess, it shows a map of all the streets in Berlin that are named after women. So it has like this interactive map and if you click a marker on the map, it opens like a popover which then leads to a page. um kind of dedicated to that street

4:07

Speaker 2: or the person named it's named after and describes like the key info and their kind of story. So The streets are named after like quite a wide range of people, so that's like writers, politicians, artists There are quite a few members of the resistance during World War II as well. So, yeah, needless to say, some of the stories are quite tragic and sad. But I think that's all the more reason that they need to be remembered and not sort of disappear into oblivion. And so I'm doing this project all on my own. It was kind of my idea and I want to have like full control over it. So I'm not only doing like sort of the planning and the development and everything, but also like

4:52

Speaker 2: the content. So I'm kind of really letting my like translation and writing skills come in there. And it's something I thought of during the lockdowns. when I really wanted like a reason to get out of the house and go for a walk and be like, oh, I need a goal. And then I started noticing like the patterns of like the street signs and being like, oh, it'd be nice to like go there and take a picture for my website. So I did that for like a couple of years maybe, and then I finally deployed it last year. So who is the project actually for apart from myself? So the goal, as I said, is to catalogue all the streets named in Berlin, named after women in Berlin.

5:41

Speaker 2: Why do I want to do that? It's because the gender gap in the streets is quite big. It's said that something like 12,000 streets in Berlin are named after men, compared to up to 600 that are named after women. And, you know, obviously this doesn't mean that women's contributions are less worthy of recognition, it just means they've been recognized less. And so what I also want to do is provide this maybe relatively unknown history and context about Berlin and its past residents. That's accessible in a way to English speakers because some of the names that are like on the signs might be quite familiar to Germans, like maybe they learned about it in school or something.

6:27

Speaker 2: But um Some of the information about them is only like available in German. So that's one thing. And not only is Berlin like a pretty international city with a lot of people who might not have such a good command of German But kind of I would say worldwide there is quite an interest in Berlin and its history. And this is an example of one of the signs um of my I am. She was a black German poet and she coined the Afro-deutsche movement, so like this movement of like black Germans and kind of creating this a name for this culture. And sort of the section that my project falls under is

7:12

Speaker 2: digital humanities, which is this massive umbrella of sort of This massive discipline, let's say. And as you might guess, it is the intersection of technology and humanities, so history, languages, and so on. And Yeah, it's like you can do masters and PhD programs about it. So some of the things you can do with it is like a digital archive for like cultural artifacts in a museum maybe, or you might be able to apply AI techniques to analyze insights from primary and secondary sources. Just a sec. I hope you didn't all hear me slurping my drink.

8:03

Speaker 2: So moving on from kind of the thesis of the project to the technical part. I don't think I'm going to have to work very hard to convince you about why I chose Django. It was just like a very natural and familiar choice. As I said, I got my start with Django Girls, and it's kind of accompanied me on my career ever since At the point when I was kind of ideating about the project though, I hadn't ever built my own API from scratch with the REST framework. So that was sort of a goal, like a good practice. And then for the front end, I'm using React. Um yeah, again, I was pretty new to this when I started the project, and I was kind of like, oh, I should probably learn some frontend.

8:50

Speaker 2: I definitely didn't think I would be using it professionally like a year later. And so kind of since I've been in my current job, I've been learning some new things about React. My aim is to rebuild the front end at some point with what I've learned. And I should probably mention that the back end and the front end are on two different repositories. primarily because A they're deployed separately, B because I was very much working on them separately, as I'll kind of get into. And then onto the maybe more novel part of this talk, which is Leaflet. And that's basically a JavaScript library that lets developers integrate like interactive maps into their applications.

9:36

Speaker 2: without having to fiddle around with GIS. And yeah, it was the first library I came across and I like it. So you're probably wondering how am I specifically using Django in this project? So at the core of every Django project, or at least every app, is models. And I pretty much only have two models, which is district and street. So There are 12 districts in Berlin and each one has so many streets or people the streets were named after. So that is linked by a foreign key relationship. And then with each street, you have like the name, date of birth, death, place of birth, death, description, and some other stuff.

10:24

Speaker 2: So when we're talking street, we're talking not just Let's say Rosa Luxemburg StraĂźe. We're also talking about Rosa Luxemburg the person. And then one of the other things that's included in the street model is a Google Maps link to the streets location, which is actually not directly used in the application with Leaflet. It was more something that was kind of during my information gathering process but I do kind of take that information and process it in order to get the information that is used with leaflet it. So like I made a serializer method where I partitioned the string to get the coordinates from it and then use that and I'll just show you how I do that.

11:11

Speaker 2: So we have this serializer method, get geocode, where the string is here, and we use the partition method to sort of grab the last part after the at. And then we split that into a list of two strings and then split that into a list of floats. So it's the coordinates. And then because I'm the only person working on the project, I actually also need to think about my user experience, so as editor. And I also want to know how I'm doing in terms of sort of meeting my goals because otherwise this task gets quite Sisyphian because there are, after all, 600 or something to do.

11:59

Speaker 2: And so I defined three metrics for this, or KPIs, I guess, that you um for my reference in the Django admin CMS. Whether it's really a CMS is a whole other topic, I guess. And those three are entries completed, so how many overall or per district? How many entries have already had the pictures taken for them? So how many of available entries can be completed? And then how many of them are actually complete of the ones I have photos for? And so how I have like an overview of these properties is with admin methods. So kind of at the base of these admin methods is the getPentage

12:46

Speaker 2: method So pretty straightforward. We have a dividend at a divisor and yeah, get our percentage. And then if we take entries completed, let's say, we have our dividend, which is number of completed streets, and then the divisor, which is number of added streets, and then Yeah, we pass that into get percentage and we get our number. And then if there's nothing, then we get unknown, but I'll explain that in a second. This is kind of what it looks like for me in the admin. So on the left we have a list of the 12 districts of Berlin And as you can see, some are

13:32

Speaker 2: way more complete than others. There are two reasons for this. One, like Friedrichshain, Kreuzberg and Mitte are easier to get to from where I live. Secondly, they actually have more content , so more street signs that I can take pictures of and add to the project. And you might notice that for Lichtenberg, which is third on the list, there's 0%, and then for Matzad-Hellersdorf, which is underneath, there's unknown. And that's because um That must mean for Lichtenberg I've added some entries, but they're kind of marked as invisible right now, and I haven't taken any pictures. Whereas for Madsen, there is no data at all. I mean, I think there actually are some streets, but it's not really like

14:20

Speaker 2: high on my priority list because it's A, very far from where I live. B, I don't think there's that much Uh that many streets that are relevant. And then another thing that is sort of specific to being a project that's like set in Germany is the German language. And in order to get um so I don't know if how many of you know this, but German has like Umlaut, which is you know, the letters with two dots. I guess Danish has similar ones. Um and so what we need to do is make these kind of slug suitable. And you may be looking at this and wondering, why don't you just use a method that converts non-ASCII characters to ASCII?

15:08

Speaker 2: And the reason for this is that in German these are not the same letter at all. So let's take the letter E, which is the A with two dots, the Umlaut on top. If you were German, you would and you were like went to the US and you wanted to write something in German on a English keyboard. You wouldn't be able to just write the letter A because that could A make it into a completely different word. B it could make it into a rude word. Um so that's like Really not okay in German. The good news is what you would do is you would use so each umlaut letter has like an analogue. So A, you would just write the letters A and E. So this is what this method is basically doing, and

15:55

Speaker 2: I call it in the save method. So let's take a closer look at the return So the ord function is a native Python function, and it takes um a Unicode character that's passed in as a string. and then it returns its integer representation. And then if you have a string, in this case the slug If you call the translate method on it and pass in this map you've created, it will then convert whatever characters in the string to the ones that the value in the map. So here's an example.

16:40

Speaker 2: So we have Else Brennströmstraße. I think she was actually Swedish in case we have any Swedes in the house. And so an incorrect example would be just removing the umlauts and like it's not okay. And then what we have in the bottom example is the correct example. Yeah, so where am I going with this project? As I mentioned, I would like to redesign and rebuild the front end. And then another thing I've come across is that there's a thing called Geojo, which is an integral Django module. It's not like a third-party library or anything. And it's basically for the purpose of what I'm doing.

17:26

Speaker 2: And some of its special features include a point field, which is like a special database field for recording coordinates. You can also get a map in the Django admin. For whatever purpose that might serve you. However, there are a few drawbacks to it, at least from my standpoint. which is that it does require a spatial database, which is a special kind of database for recording geographic data. And for that you need, well first of all it assumes you are using a Postgres database with your project. Secondly, you need to add this post-GIS extension, which then transforms your database into a spatial database. And yeah, for now, I already kind of have a lot on my plate

18:14

Speaker 2: and I don't want to add much more overhead. But that might be a nice thing to add in the future if I want to do something like uh calculate the distance between two points. Points. So I just want to close my talk with a quote. As I mentioned, this very much started off as a walking project. And yeah, this writer and filmmaker Ian Sinclair says, walking is the best way to explore the city. The changes, shifts, breaks in the cloud helmet, movement of light on water. So far, so poetic. And then drifting purposefully is the recommended mode, allowing the fiction of an underlying pattern to assert itself.

19:01

Speaker 2: And I really like this concept of drifting purposefully. It sort of is what I strive towards in software development in that you have a goal, you have a purpose. But you're also kind of open to new ideas, and inevitably things are going to come up that you weren't expecting, that you might have to contend with, and you know, you should be open to them. And yeah, I think drifting purposefully is a good thing to keep in mind in the software development sort of solution finding process and then the implementation process. So we have now reached the end of my talk. You can check out the project by scanning the QR code.

19:49

Speaker 2: You can also find me on LinkedIn and a couple other things I wanted to mention or plug. I do have a blog where I sort of share snippets of like things I've found out in my day-to-day work. And I was also a guest on the Django Girls podcast a few months back and the episode is dedicated specifically to my career journey and my career change. So if we don't get to chat at the end, you can check that out and listen if you're interested. Thank you.

20:33

Speaker 1: Thank you. Um we have time for uh questions. Um and um thanks for showing uh everything in uh uh in a way that I was surprised to have this thought that like Django admin is also a CMS. It's like some kind of headless CMS, isn't it? Do you think that too? Question. Yes.

21:07

Speaker 3: Hi, uh thank you for your talk. I liked it. Um

21:10

Speaker 2: Thanks.

21:11

Speaker 3: Um uh do you plan to open your system for other cities

21:20

Speaker 2: Um I mean it's an idea, but to be honest, I don't know any city really as well as I do Berlin and I'm not sure I mean yeah, like honestly I hadn't really thought about it, but um Maybe if I sort of do some work to kind of spread the word about this project, maybe there might be people in other cities who um want to do something similar and we can connect and they can contribute. Yeah, I I hadn't actually thought of that, so thanks.

21:53

Speaker 4: Hello there. Welcome. Or greetings from the UK as well. I wanted to ask it's Have you considered maybe and this might also start a bit of a war, um, about uh integrating AI or anything like that to automate some of the processes in um you know the content that you've generated or

22:19

Speaker 2: um in a word no um so i've actually sort of I mean it's kind of water under the bridge now because I have found all the streets. I sort of I have them on my private Google map and then it's just a matter of like adding them to the admin. I'm not really sure. Um if I could use like a Google Maps API. I as far as I know you have to pay for it. So that wasn't really something that ever came to mind. I mean, unless you have any.

22:50

Speaker 4: It was more about the uh unfinished content that you mentioned, you know, there were there were some things that can happen. Um it was more to do with the content of you know like the text because if I understood correctly there's some parts that are missing that you uh had. You said, you know, I've logged all of the road names, but maybe the description and things like that isn't Finished. It was just uh but I for the record everyone am not the advocate for AI that you think I am. Okay. I am also, you know, against it, but I was hoping to hear some more, you know, like uh uh opinion about you know uh why um because I'm building something similar with uh escape rooms and it's more about the uh connection between people that matters most, you know, and I think this is a great example of that and why it would not be used in that case.

23:38

Speaker 4: But it was just in case you thought about it.

23:41

Speaker 2: Yeah.

23:42

Speaker 1: Thank you.

23:44

Speaker 4: Oh

23:45

Speaker 1: Question.

23:46

Speaker 5: Hey, thanks a lot. It looks very nice. How do you recognize the gender? Like do you just go based on what the name tip is

23:59

Speaker 2: Yeah, so if I see a name, um sometimes the the names are ambiguous. And then like I look them up sort of later and basically if the person is described on so I would say most of them, maybe eighty to ninety percent have uh Wikipedia entries at least if in German that if they're described as she or sie, I assume it's a woman. Um but honestly I haven't come across any um big ambiguities So that's what I assume. And another thing I should mention is that the person has to have been dead for five years in order to to be on a street name that became a whole thing when um when david bowie

24:44

Speaker 2: died um so he used to live in schoeneberg in berlin and then people were like oh we should rename it to david bowie And the people were like, no, we have to wait five years. I mean, and it's been way over five years. I don't know if that's ever gonna happen. But yeah. Um Another thing is, yeah, I just remembered is that there's also I don't know if it's like a law or maybe some kind of guideline that any news streets that are b built in Berlin um and they're like, oh we should c name this after a person should be named after a woman I have a source for that, I think, on my repo. But yeah.

25:25

Speaker 6: Hi, really really interesting. It's also one of those have you thought about this extensive thing that's gonna take you too much time and uh uh type of question. But have you thought about in involving other people in collecting data and sort of doing kind of a citizen science of this

25:40

Speaker 2: yeah I have thought about it but I honestly have no idea how to go about that.

25:44

Speaker 6: So there there's a cool like street art project uh that's called the space invaders. I don't know if you ran into that. There's some in Berlin. There's a it's a French guy who put this sort of space invader tile mosaics all over the world.

25:57

Speaker 2: Oh yeah I think I've seen them.

25:58

Speaker 6: So there is an app that you can flash them and it encourages people to sort of go and take photos of them, their websites that track it. So there there is kind of like a collecting them is a thing. So that I could see the parallel between going like, oh I want to walk about around Berlin and collect this the uh female named streets

26:15

Speaker 2: yeah

26:15

Speaker 6: and to say oh I've been there I I checked in or I took a photo or I have some kind of a connection.

26:21

Speaker 2: Yeah that's a cool idea

26:26

Speaker 7: Thank you for your talk. It was very nice. I wanted also to uh uh acknowledge the fact that it's very nice that people from SSA and not necessarily from engineering background, join the developer community. And apparently in the career path, it's not that unusual that people who started their career uh as uh with a bachelor in social science then migrate to coding for um other reasons that goes with the bandwidth we are able to absorb through uh reading large books. I wanted to sho show uh point out that there is a project similar that has been conducted in Brussels by um you're familiar with it?

27:05

Speaker 5: Sorry?

27:06

Speaker 7: Uh I see you nodding so maybe you're familiar with it. uh there is a um uh data scientist who did the same project in uh the city of Brussels. Uh and later on maybe uh Uh you will see if it uh take you there. He in his visualization he shows that actually so there is a minority of uh streets named after a woman. And if you see in which district they are distributed, they are in uh dead end, not big avenues but small ones, confidential and often in not very uh bourgeois district, etc. Is it something you consider for your own project to see if there is some on top of all the bias we may identify, if that may reveal that

27:53

Speaker 2: That is not something I had actively considered, but it's more like something I had sort of noticed. Um, as I mentioned, like these new streets that are built, um, that are I guess supposed to be named after women, they tend to be um very small residential streets. They're not like these big boulevards that are like really well known. So I think that's also something to consider as well. So thank you for that. You're all giving um such cool insights and ideas Thanks.

28:25

Speaker 1: Yeah, there will be a whole conversation about this afterwards. Yeah. Any more questions? Um I think

28:33

Speaker 2: otherwise.

28:34

Speaker 1: Ah, sorry. Yeah, we do have time. Up here in the front. Sorry, I'm not zooming the output.

28:44

Speaker 8: Thank you so much for coming to Copenhagen and sharing your project. Um for those out there that want to explore their kind of uh interests with like side projects, um I think I think it uh it's fantastic that you're like you've you've released this uh and it's in the wild and it's it's a it's a really nice way that started with a walk and is is kind of Do you have any advice for people that are are really bad mostly myself, like finishing things, like getting stuff out there, like get side product projects that actually need something like what's your advice for for getting getting stuff done

29:21

Speaker 2: I mean look, I also have this GitHub graveyard of stuff I've started. Um but I guess I guess what really pushed me forward with this was um I I hate to be trout, but just passion, I guess, that I really wanted to like show that I could do it and show that I could deploy a full stack project. project because um up until that point I'd only really worked with backend. So it was kind of challenging but also very it's also very soothing to me to like gather the information and look up things and also, you know, learn new things So for me it's not just about um sort of the code but also like the content as well. Um yeah, I love history and things like that. like that

30:07

Speaker 2: so but I think definitely I think you need to set yourself a deadline. That's the main thing. And that can be really hard especially if you work full time as well. But I mean, I think it's unavoidable that you just need to like lock some weekends and just get it done. And also tell people. Tell people you're doing it. be like, oh in one week I'm gonna release this. Built up anticipation. That's kind of what I did with my friends. Yeah.

30:41

Speaker 1: Super cool. Named after women. berlin.

30:45

Speaker 2: Yes.

30:46

Speaker 1: I hope it scales to the Django Copenhagen uh effect.

30:53

Speaker 2: I hope it can withstand that.

30:57

Speaker 1: Berlin

30:59

Speaker 2: Yeah.

31:00

Speaker 1: Loggy to have that top level domain.

31:02

Speaker 2: Yeah, oh don't ask me how much it cost.

31:07

Speaker 1: All right. Uh so next Speaker Andrea, please come up here and let's give Rosamund a speak we can thank you so much

Questions this talk answers

What is the Named After Women project in Berlin?

It’s a website with an interactive map of Berlin streets named after women. Selecting a street leads to information about the street and the person it commemorates.

Discussed at 3:21

Why map Berlin streets named after women?

The project documents a history that is less visible: roughly 12,000 Berlin streets are named after men, compared with up to 600 named after women. It also makes stories about Berlin’s past residents accessible to English speakers.

Discussed at 5:41

What technologies were used to build the Berlin street-history map?

The project uses Django for the backend and API, React for the frontend, and Leaflet.js for the interactive map. The speaker chose Django because it was familiar and used the project as a chance to practise building an API.

Discussed at 8:03

How does the project handle German umlauts in street-name slugs?

It transliterates each umlaut to its German letter equivalent—for example, ä becomes ae—instead of simply removing the diacritic. That avoids changing the word’s meaning or producing an inappropriate word.

Discussed at 14:20

How does the speaker decide whether a street is named after a woman?

When a name is ambiguous, she looks the person up; usually, a German or English Wikipedia entry describing the person as “she” is enough. She also notes that people must have been dead for five years before a street can be named after them.

Discussed at 23:59

What advice does the speaker give for finishing a side project?

Choose a deadline, reserve time to work on it, and tell people when you plan to release it. Her own motivation also came from caring about the subject and wanting to deploy a full-stack project.

Discussed at 29:21

Note: 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.

More videos from Django Day Copenhagen