#72: Fashion-driven open source software at Zalando Transcript
00:00 happens when you take a tech-driven online fashion company that is experiencing explosive growth and infuse it with a deep open-source mission? You'll find out on this episode of Talk Python To Me.
00:00 meet Lauri Apple and Rafael Caricio from Zalando where developers there have published almost 200 open source projects on Github.
00:00 to Talk Python To Me, a weekly podcast on Python- the language, the libraries, the ecosystem and the personalities.
00:00 is your host, Michael Kennedy, follow me on Twitter where I am at @mkennedy, keep up with the show and listen to past episodes at talkpython.fm and follow the show on Twitter via @talkpython.
00:00 is episode is brought to you by Hired and SnapCI. Thank them both for supporting the show on Twitter via @hired_hq and @snap_ci.
00:00 everyone. Last episode I told you about my crazy student award for the Kickstarter. Well, it turns out that Kickstarter is not super keen on us doing that. I don't think we were violating the spirit of the rules, but we were actually violating the letter of the Kickstarter rules of conduct. So sadly, we will have to pull back that cool offer. However, I am replacing it with something that might even be better. Instead of funding some of the businesses that successfully launch out of the course, we'll have a special Talk Python To Me episode featuring and looking inside a couple of them. Keep an eye up for that for six months or so. Now, let's talk about fashionable open source code.
01:45 Michael: Lauri, Rafael, welcome to the show.
01:47 Lauri: Thanks. It's good to be here.
01:48 Rafael: Thanks.
01:50 Michael: Yeah, I'm really excited to talk to you guys about what's going on in Zalando. It seems like you are doing a lot of cool Python things and I think it will be a fun story for our audience.
01:58 Lauri: Yeah. I hope so.
02:00 Rafael: Sure.
02:00 Michael: Yeah, definitely. All right, so both of you guys are in show, so let's get started by talking about your background a little bit- how did you get into software, Lauri do you want to go first?
02:11 Lauri: Sure. My name is Lauri Apple and I am the open source evangelist at Zalando, and I came into technology after law school, so my background is not really in programming, it's more in journalism, I did some PR, I also like studied law and so right after law school I started working in tech companies on and off, and then in 2012 I started working at Gilt and became their technology evangelist, so I was going to lots of meetups, and running the tech blog and social media and working with developers, to talk about what we were doing, with engineering, with product, and then I came to Zalando 2015, so last February and first I was doing technology evangelism and then my job kind of morphed into just focusing on the open source evangelism because we have so much work going on in open source scene, if you look at our dash board, we have almost 200 projects and so there is lots to maintain. And I am also project managing a team, so I guess I have two jobs here.
03:19 Michael: Yeah, that sounds really fun. And you guys do have a lot going on, we'll talk about some of your open source projects, but yeah, you pulled that up and it's quite a list of stuff there.
03:29 Lauri: Yeah, and it used to be lot more, but I will talk about why there isn't that much.
03:34 Michael: Oh, interesting, ok. Yeah, cool. And, I think software developer, evangelist or even more specialized open source evangelist, I think that's such a fun sounding job, it's never been a job I've had, I've known some people done it and it seems like you get some of the best part of the tech community, right, you get to bring people together, to have fun, to talk about cool exciting stuff they are doing, that's great.
03:57 Lauri: Yeah. I mean, you link people together, and what I like about open source evangelism is I get to focus on code and working with engineers, I love product and ux and even like other aspects of technology evangelism that are really working with the engineers, and getting them to think of their code and their projects as products, it's really fun.
04:21 Michael: Yeah, that's awesome. Rafael, how about you, what is your story?
04:24 Rafael: So, I started playing with computers like around 2000, but I only started like real programming in 2005, when I started university, I don't know why I didn't do programming before because I was playing with Linux since 2002, but I was mostly like fascinated about web and I discovered that everything was HTML so I started like learning about that, but I don't count that as programming but I started programming like programming things that were really fun, in 2005; maybe because I thought before that programming was some kind of magic thing that you needed to have some wand that like to teach you, dedicated to that-
05:12 Michael: That's really interesting. I always felt like before I got into programming, that programming was like this special art that you have to have four years of university or six years of university to really be able to- it just seemed so unattainable to me at the beginning; but then it turns out it wasn't, right?
05:32 Rafael: Yeah.
05:32 Michael: Yeah, so go on with your story.
05:35 Rafael: I needed someone and I didn't have anyone in my family or I didn't have any friends that were like into programming or into computers as much as I was, so I just was doing myself, reading blogs online and things. But when I started programming I got really excited and like in the first two weeks I was learning Pascal at the time, and the first two weeks I just wrote these pong in the console, my professor was really impressed, and it was really cool. Since then I just got crazy and I really liked everything that I was learning and then I had to find a job quickly because my parents didn't have money to pay for my university in Brazil so yeah, I am from Brazil. And then, I found a job in the first year of university, and I was working with Java at that time because in my home town, it's not a big city, so I had only like job positions in Java, and then in 2007 I discovered Python, I was just looking for like a easier or more like concised way of writing code, and then I found Python and I was really happy like, I really liked it. I found it strange, the spacing and like indentation, but then I just got over it and I really liked Python and I am still loving it but I couldn't work with that professionally at the time, and then in 2009 I had opportunity to create my own company someone just contacted me and said hey, I have this idea, do you want to work with me and then I said ok, yeah, and I decided to work with Python for web development using Django, and it was really cool. And since then, I just mostly have been working with Python, I worked with Ruby for like two years, but it was just an adventure, like you know, the language, to get to know more about the different communities, but I really like Python and I decided to get back to Python and this year I joined Zalando and I started working with Python again and I really like it.
08:34 Rafael: Yeah, I think I started understanding more when I started like getting to parsers and trying to write compilers, and things I really liked, like language, like creation things, and I then after I got some experience, I studied that in the university and I started doing some work myself, and I discovered like, ok, you can just like space to define blocks and it's not that hard, and then I understood fully this Python this, and it's actually better now, I feel like it's good that you can just write less and have more power when you are writing something.
09:13 Lauri: That's why I like it too, I mean, I've done coding in Python especially with Django girls, they have got great workshops.
09:20 Michael: Yeah, Django girls are great, yeah.
09:23 Lauri: Yeah, so I did their weekends, make a blog, from scratch and it was really quite fun, but I think for somebody who likes to be sparse with language it's great. And also, I don't know if anybody has ever done a talk or paper on like the white space of Python, like what it means philosophically because there is nothing there but there is everything there.
09:53 Michael: Yeah, that would be a cool like philosophy language philosophy talk, yeah, that's awesome.
10:00 Lauri: Yes, free conference talk idea for anyone who wants to-
10:05 Michael: There you go.
10:06 Rafael: I think there is a lot of things online about that, I am not sure, but I read things a lot about that. Many people have the same practice.
10:16 Michael: They have the same experience, that's cool. I think you said Django girls, and I think one of the things that's special about Python in open source is the community which is just so supportive, and enthusiastic.
10:31 Lauri: It's huge. I remember I had a PC once, and I had to download all of these little components, like cygwin and it was just, on Mac it's so simple and then, my computer was old and screwed up, and I brought it to this meetup and some support guy, he sat there for like half an hour, 45 minutes, and basically he was just trying to help me download every little crumb to get as closer to home; we didn't actually get there, but-
11:03 Michael: That's too bad.
11:02 Lauri: It was a piece of crap, my computer, but-
11:08 Michael: It's been really hard on Windows to do Python but it's getting better actually, the guys, one of the Python core developers Steve Dower works at Microsoft and he is reworking, he reworked- I think it's probably continuing project, the installer, so things install will work better and so, it's a better story these days but yeah, it's still a tough. So, let's talk about Zalando, a little bit. Just the background of it, so a lot of people probably haven't heard of it, what is Zalando?
11:37 Lauri: Yes, so a lot of people in Europe have heard of it, but as an American, you are an American too, yeah, I didn't know about the company until my former colleague has started working here as the vp of engineering, so he's been the head of engineering for the company. Zalando is Europe's leading fashion platform, and so it's in 15 countries in Europe. Just today we got new figures, so we have now more than 19 million active users, more than 11 thousand employees so about 1300+ tech and we're based in Berlin. We have tech cubs, this is just for tech, not just the whole company, but for the department, we have tech cubs in Dublin, Helsinki, a couple of German cities so the company has been growing like crazy. When I got here the tech team was maybe 650, so that was just 18 months ago.
12:37 Michael: Wow, so it's almost doubled, huh?
12:39 Michael: Yeah, and we didn't have a Dublin office, we were Helsinki office, we have acquired a couple of companies to serve us as a platform for real so we have tech happening now and lots of contents, features coming up, I mean it's quite a-
13:00 Michael: That's really cool, yeah, that's quite a power house. So you guys, your major product is sort of online fashion stuff, right, so if I want to buy clothes or a cool suit, or something like that?
13:15 Lauri: Right, so we work with all of the major brands you are familiar with, any household fashion brand you are probably going to find it on our website. And we went public two years ago too, so that was a nice success.
13:30 Michael: Yeah, that's cool, that's really cool. So, is it technical challenge, both the software development side and carrying this open source message when you guys are growing so fast and acquiring other companies that maybe have different approaches?
13:44 Lauri: oh sure, and if you think about, we are very international and our tech team as well, so you have lots of different interpretations of how a tech team should work and what agile is and some of our engineers have never really worked in an agile environment and so when you are growing that fast and you are trying to scale so quickly and work in an agile way, it's very interesting. This company was not always agile, there was a shift last spring, so spring 2015 towards this radical agility and this is where we officially introduced autonomous teams and mastery and purpose, so the pillars are based on Daniel Pink's drive, which is where autonomy mastery and purpose comes from.
14:34 Michael: Daniel Pink has a really cool look and the way of thinking.
14:37 Lauri: Yeah. So we basically adopted that, and we 14:43 the tech organizations I mean some teams had already been working in this fashion but not department wide and so we said ok teams are autonomous, and then now you are also going to have twice as many teams within 18 months and we are still growing. So yeah, there is all kinds of interesting learnings and experiences that you get when you subject yourself to something so courageous, it really is courageous for like the tech leadership to take such a change on because you just don't do it over night, you know.
15:15 Rafael: When I heard the first time about Zalando, it was just a website where you could buy clothes and stuff, and many people here have this idea that Zalando is just a shop online, or a website. But, when I got here, I discovered that there is much more than just a website where you can buy things, like Zalando have the warehouse like where they store out the clothing, take pictures of every article, like every piece of clothing and to put in the website to pick photos, so there is a lot of things that happens behind the scenes to this website to work, and our is develop in house, like the technology for all these levels let's say and then when I started here I discovered that it was like wow, yeah, there is a lot to do here. It's not just a website.
16:06 Michael: Yeah, it's really cool, you guys have the whole sort of web property of a bunch of API things going on, you have some machine learning, we are going to dig into all those things in time, but yeah, there is definitely a bunch of cool stuff happening there. Lauri, you talked about what you do at Zalando with open source evangelists and project management and stuff like that- Rafael, how about you, what are you working on there?
16:29 Rafael: Yes, so I work at continuous delivery team, so my team there is like three subteams in the team I work but basically we maintain the continuous deployment for the team like 16:44 and Jankins, so each team have Jenkins instance to run tests and like deployments jobs, so currently I am working like creating these tools to enable teams to deploy easier like an automatic so they don't need to manually go to the machine like SSH machine to make a deployment or anything like that, just use some tools, so we have some open source tools like Sensor and like all the things that we use to deploy. And, I also work in some open source projects, at Zalando that we use to create those tools, so connection is one of those projects, yeah, and basically that's all I do, develop software here and I also support team doing like helping them, like they come to me, they sit next to me and they say hey, how can I deploy, like there is a problem here, and I see if it's a bug or if he just misused the tools...
17:50 Michael: Yeah, sure. That's really cool. And I saw that you guys are using a lot of interesting container technologies, so are you using Docker?
17:58 Lauri: Yes.
18:02 Rafel: Yes, basically all applications that we deployed, production, like we use AWS cloud formation API, and we have infrastructure around AWS which is called STUPS platform, which is completely open source, there is many applications that work together for deployment, and yeah, we use Docker as a packaging formats for the applications that we have. And then, we have our one Docker repository which is pier one, so we push the image there and you cannot delete so everything is immutable stacks and we use AWS cloud formation API to like create the whole stack of the application, like the whole stack when we release a new version of the application, and then we just switch the traffic to these new stuff, so yeah, and there is all the tools to access the machine and everything is logged so you know like who accessed which machine for what and what time and this is very important for traceability and for compliance here in Europe.
19:19 Michael: Yeah, of course, how many different systems do you have running in AWS, it must be a ton, right?
19:26 Rafael: Yeah, there is a lot, I don't even know.
19:30 Michael: Yeah, how do you guys keep track of that?
19:32 Rafael: Each team have their own AWS account, and we have one service that in this, in STUPS platform, we have one service that crawl, like all the APIs that we have, because our applications they are registered in one application, one of the application of the STUPS that manage the other applications let's say, is called Kio-
19:57 Michael: Yeah, you've got like an app to manage your apps?
20:00 Rafael: Yeah,
20:00 Michael: Ok. That seems pretty standard in Docker though, right, because it's hard to know what is where.
20:04 Rafael: Yeah. So here we have a central point where we register all applications, so from that, you get, your application can get credentials to access Amazon and to access all the applications end points using oauth 2 and out of these application manage the versions, for like the new versions of the application, and there is another tool that crawl all the end points that are registering these Kio as a name of the application what we register. So basically you can make API call to this crawler, and yeah, if you list like all end points that we have-
20:49 Michael: I see, so it does kind of like a service discovery thing for you, so you might start by saying I want to talk to the credit card service, where is it- oh, it's over here, ok, and then you go make a secondary call to that, something like this?
21:01 Rafael: Yeah, and we make extensive use of Swagger, open API definitions for every application we create like every application that we have APIs for that and how the definitions like the Swagger definitions they are like in an open end point so we can describe like and know what API is waiting like call or like what are the parameters and everything. And we have also a bunch of tools that are swagger and connection, it's one of these tools.
21:36 Michael: Yeah.
21:37 Lauri: Yeah, this thing STUPS, if you go S-T-U-P-S.io and while the components there are made out of Python like Rafael's team is currently working on Senza which is part of the STUPS ecosystem, then we have this project called Lizzy that also works with STUPS, Rafael can explain it better for you but, a lot of that is Python but also Java...
22:07 Rafael: Yeah, everything that we are talking about here is in this STUPS.io and everything is open source. You can just find it online, the documentation is online and so...
22:17 Michael: Oh that's really cool, yeah, and it's really well documented and it looks like it's really built to manage this type of set of applications within AWS. Right, it's built on cloud formation and cloud trail and all those different types of things, right.
22:34 Lauri: Yeah, and they are based around making, so the idea of autonomy right is factored into the way that STUPS is architected, so if you have every team with their own AWS account then STUPS helps its teams.
22:51 Michael: Ok, yeah.
22:52 Lauri: Look autonomously. That also helps us to consolidate a lot of this information flying around with all the different applications and then if there is some sort of violation STUPS has a mechanism for helping us like report those and track them so that teams can fix and-
23:11 Rafael: It's a way of managing what the teams are doing, like we have this Fullstop application that checks the cloud trail or the AWS accounts, and then verify if each team is following the rules, we have rules of play here at Zalando, we have to follow these rules like basically rules of software development, like some best practices, and some of these practices are verified using this tool, Fullstop automatically and it generated violations for the team so is like alert and the team knows like oh, I forgot to create a new version for this application, or I forgot to like enable the Swagger definition in any point in my application or something, so it's really useful.
23:53 Lauri: And then it gets reported to Yourturn which is like this front end and you can go and search for you violations by your team.
24:05 Michael: I see, wow, this is really fascinating! That's quite a system that you guys have in place there. The integration with Swagger which, we can talk about in a little bit is also really nice so you can discover it in a meaningful way, not just know that it exists, right. Ok, awesome, I'll definitely link to that in the show notes, because that's a cool project.
24:05 ERROR: [music]
24:05 portion of Talk Python To Me is brought to you by Hired. Hired is the platform for top Python developer jobs. Create your profile and instantly get access to 3500 companies who will work to compete with you.
24:05 it from one of Hired users who recently got a job and said, "I had my first offer on Thursday, after going live on Monday and I ended up getting eight offers in total. I've worked with recruiters in the past but they've always been pretty hit and miss, I've tried LinkedIn but I found Hired to be the best. I really like knowing the salary upfront, privacy was also a huge seller for me."
24:05 awesome, doesn't it? Wait until you hear about the signing bonus- everyone who accepts a job from Hired gets a $1000 signing bonus, and as Talk Python listeners it gets way sweeter. Use the link hired.com/talkpythontome and hired will double the signing bonus to $2000. Opportunity is knocking, visit hired.com/talkpythontome and answer the door.
24:05 ERROR: [music]
25:34 Michael: Lauri, go first on this question- what are some of the real technical challenges that you guys have at Zalando?
25:38 Lauri: I think we talked about the scaleability, so that's one. You know, when you grow a team so quickly and how do you get everybody on board and also, how do make sure that the team ingredients are right when you are moving so fast, so that you have your balance, within team, so senior, junior, front end, back end, I mean, when you are coming from man controlled background like a lot of the teams were, when radical agility went live, you are talking about engineers doing lot of functional tasks and seeing themselves as the backender, so why would I want to talk about front end, what do I know about that, or again, how would I do the opposite; I am a frontender, what do I know about API calls, and oauth you know.
26:30 So one of the challenges is really getting teams to be cross functional and so that's something that we are actually working on more recently. We are starting to, we wrote out an innersource pilot so not just doing open source for the world, but also internally because we have services and libraries, and other stuff that we can't really release publicly, it's too embrionic or it's just really tightly connected to what we are doing. And it wouldn't provide much value to the world. We used to just kind of release a lot of that stuff online too, which hardly explains why we have less open source on our dash board than we did because we were kind of releasing stuff, because radical agility was just we get exciting for a lot of engineers, they got to finally like do open source, so they just went to town and now it's sort of like ok what is the purpose, bringing that idea of purpose back into the work and so it's a purpose, we probably should just keep it on github enterprise and work on it ourselves, but you know, ourselves isn't just our own team, it's the other team down the hall, and the team in Dublin and a team in Helsinki.
27:46 So we are really pushing this idea of innersource so that we can foster more collaboration internally and over time, like if you see, like we have some repos where we are like one engineer making 600 commits and then the next engineer makes maybe a 100, right, so there is this team balance with innersource if you have more eyes on your work, more people asking questions, maybe making contributions and hopefully over time you start to see the workload balancing how the knowledge that comes with making a service or library components starting to get more distributed around the teams. So this is a challenge, because some teams are more ready for it than others, right, like some people don't want anyone to look at their code because maybe they are afraid that it's bad, right, so another challenge in all of this growth is making sure that you are reinforcing to your developers that they have the right to make mistakes, and that they are here to learn, and also to learn from their mistakes and get better at coding, get better at reviewing code and all those other parts of the engineers' job.
28:57 Michael: Yeah, ok, that's really cool.
28:59 Lauri: I malfuncion.
29:04 Michael: Yes, I work on the database connection part, or whatever, yeah.
29:06 Lauri: Yeah, exactly.
29:07 Michael: Yeah, so one of the primary goals of the whole agile thing from, in its origin was about this creating cross functional teams and learning more vertical slices of the app, than just being stuck on your little part and you talked about switching to radical agility and that's based on Daniel Pink's work which is his own motivation thing is amazing, but, can you talk a little bit about what are some, like what makes radical agility different than say scrum, like what is it like to actually do radical agility?
29:43 Lauri: Sure, so with Scrum it's sort of your ceremonies, right, you have the Scrum process, and you have the sprint and you have the certain number of meetings and it's pretty straight forward, you know, your checkins you are in, and you retrospective. The team I am working with has more of a can ban approach, so I let them choose the back log, so they order the tasks that they want to work on, they rate their priorities and we do a daily standup but we don't have fixed periods of time, like we are not doing a month long we are just checking in regularly, to make sure that the work gets done and keeps flowing. But there is also scrum elements in that, so that's just with my team, but if you go down the hall, they maybe working in a Srcum setup to the book, you may go down the other hall and you may see a team that is doing some kind of Scrum waterfall kanban mixture, I mean, every team is sort of at liberty to figure out what works best for them, because there is just really no cut-and-dried, Scrum works for everyone, or a kanban works for everyone, teams have different personalities they bring different ingredients to the table and really what autonomy means is you find something what works and helps you deliver and you iterate on that. And it doesn't have to be any sort of fixed thing, I mean, you start typing about fixed systems and then you are counter agile, you know, so that's- it's abstract, and it's hard to, it doesn't happen overnight thing.
31:29 Michael: Of course, it seems to me like one of the things that's sort of core to Daniel Pink's work is about autonomy, and he's done some really interesting experiments and brought together other experiments around sort of when you are doing knowledge work what makes you the happiest and the most productive and it's not the biggest pay increase or anything like that, it's about autonomy, right, like you get a control of your features. So, it sounds to me like these different teams kind of get to have a lot of say in how they work day to day. Ok. Cool.
32:10 Rafael: Yeah, I think if you go to each team here at Zalando, they work differently, and I really like to work in my team because we don't have a lot of bureaucracy, like we have stand ups every day, it's just like to check in and see what if you need some help or if you are stuck with something that someone can help you, but we work kind of I would say like open source, we really work with github enterprise, and github is where our projects are and we have clients, like users of our applications so they open issues there in the repos and then we just have this meetings every Friday that where you say like ok this week more or less next week we will work on those issues and then we just assign the tickets and work on it and there is no overhead or what meeting and, we just sit do our work, send a pull request,s end a link to people say hey can you please review this, and we just basically work in this git flow thing and it's really good, actually really comfortable to work this way.
33:19 Michael: Yeah, that's cool, the whole git flow style is really quite fantastic. So let me put the question to you Rafael, like from what you are doing and where you live in the whole technical space, what are the biggest challenges you see, technically?
33:32 Rafael: Yeah, like, right now, I would say that is making the teams understand how our architecture works, like how our tools work, like this stuff and how to use it properly to make them work faster, so right now, I have like, the biggest challenge now I would say is spreading the idea, and how to use and making the documentation better and making the applications work, because I think we develop really good tools and we need to improve them because like we are changing and there is a lot that we did before that could improve now and I am just like refactoring some call like some old call that we had and make it work faster or work better and give better feedback to the users and yeah, I think making this open source idea more internal like Lauri said 34:40 sourcing like is more about like spreading how our projects work and make people use and be autonomous to just read the documentation. So we really work developing tools for all the teams so I think this is very important from my team specifically and making, yeah, make the tools easy to use for the teams and make them be able to work autonomously.
35:08 Lauri: One of the challenges too, is just when you have a team of the size and teams are really, encourage people to use the tools that they want to use to get the job done but when you start to have too many tools, too many languages, too many things then it becomes hard to innersource, because you may have a great project but one team is in Java the project is in Python and the Java folks are going to have to ramp up a little but to learn Python and they may not have the time to do that. So, we have actually created a tech radar taking a node from Thoughworks who have their tech radar, so we implemented that idea for our own team and so we have certain languages that are- it's all organized and concentric circles, so we have our approved list, you know, we wanted to use this things and sort of like on hold so that were flexible enough to start working with new technologies as they become more useful and more popular and so we have certain collection of languages, we really encourage teams to use and Python is being of them but yeah.
36:22 Michael: That's a really smart idea, the whole tech radar thing, that's cool.
36:24 Lauri: Yeah, Thoughtworks, their thoughts work. [laugh] I don't know if they use that but maybe they should.
36:33 Michael: You just gave them a new tagline.
36:35 Lauri: [laugh] Yes. It's really cheesy but yeah, they probably would not want that.
36:46 Michael: Yeah, cool. So you said that you started out with sort of Java monolith app, and you are kind of moving more to this microservice architecture where there is more different technologies, smaller building blocks, it's all supported by STUPS; can you talk a bit about that?
36:59 Lauri: Sure. So when Zalando was founded, it was like Magento, it was PHP, and that was fine for a little while, and then the company grew and so we moved to the JVM in about three and a half months, so you can imagine what that was like, lots of work. And that worked pretty well for about 4 years, but then you have a monolith, such a huge company, such a huge team, it just made fixing bugs working really slow and difficult, pretty much to featured technology and that's not very exciting if you want to play around with different languages, different technologies.
37:49 Michael: Yeah, and as an open source evangelist's view right, like you can easily release that as a thing to the world and to participate right, because it's just one giant java app.
38:00 Lauri: Yeah, I mean there were Python projects coming up, this whole time, right, so we have a suite of postgres tools that were created in Python and some of them are about three years old, so there was a little bit of room more on the platform infosight to develop Python, there was a lot of Python developers there, but on a whole, yeah, it was pretty monolith. So then, now, with radical agility there is the shift that Rafael mentioned, rules of play, one of the rules is microserives supporting and building up this kind of architecture. So that's where you start seeing a lot of this diversity in languages and flexibility, and you can just rewrite stuff if you want to do it differently, you know, and it shouldn't take that long because it's a lot smaller.
38:55 Michael: Yeah, that's cool and you can make those things work if you have systems like STUPS in place to sort of bring together smoothly.
39:05 Lauri: And APIs.
39:06 Michael: Yeah, and APIs, absolutely. One of the big questions, decisions people are making and it's sort of transitioning these days but are you guys using Python 2 or Python 3?
39:18 Rafael: So we are like recommending new teams, that are creating new projects to use Python 3, Python 3.5 specifically like the latest version, and yeah, most of the teams use Python 3. But, we have some old projects that use Python 2.7 and some projects, some applications that are developing Python running our data center and our data center we can just deploy applications with Python 2.7, but the idea is that we want to shut down the data center very soon, and migrate everything to AWS and then the teams will be able to migrate fully to Python 3. But yeah, mostly we recommend and our new projects are in Python 3.
40:07 Michael: Yeah, that's really cool to hear. Do you think that the microservice architecture and the API architecture made that more possible, like there is not some huge million line Python 2.4 version?
40:21 Rafael: Yeah, like having microservices instead of a big monolith application makes easier to just replace the old applications, just fix or update the code we had before and to be compatible to Python 3. And take advantage of the new libraries and integrations in the standard library of Python 3, so we can just even like reduce the dependencies and just have a more concise code.
40:51 Michael: Yeah, that's cool.
40:51 ERROR: [music]
40:51 all want to ship our software faster, respond to user request quicker and build an edge on the competition. But the faster you go,t he more likely a bug or issue will slip by and cause your users' grief. I have the same trade-offs with my Talk Python websites and infrastructure, that's why I use Snap CI. Every time I check in on github, Snap CI springs into action. A clean copy of code on github, a Python 3 virtual environment is created, all the packages and dependencies are installed, the unit tests run. Finally, I am notified in Slack and a menu bar on my Mac about the outcome. That way, I know it's safe to ship a shiny new version of my web app. Ship your software faster with a 30 day free trial at Snap.ci/talkpython
40:51 ERROR: [music]
41:51 Michael: So let's talk about some of the open source projects you guys have going. You have your own github pages section so zalando.github.io and in there you have a really cool, you call it a dashboard I guess, really cool dashboard of all of your open source projects broken down to repositories by language and there is a bunch of cool stuff. So first of all, like how did you create that page, do you guys know?
42:22 Lauri: in house, it started as an onboarding projects, so onboarding is pretty intense, because every month we are adding dozens of new folks to the tech team, and so we had a system of program for a while where the newbies would work on something for part of their onboarding and so the dashboard came about as that and then in May we made some fixes with our ux designers and there is a different team just redesigned it and added the search feature and they changed the formula a little bit to reward activity and external contributors and stars, so like you'll see connection which is Rafael's main project that he is working on, it's the top project.
43:13 Michael: Yeah, way to go, that's awesome. This is really nice way to showcase what you are doing, there is a lot of companies that, if you set up an organization on github then you automatically get some kind of like this a little bit like but just as a github profile page, but this is really nice, so I was thinking oh, where is the automatic generator of this thing, because this is cool.
43:35 Lauri: Yeah, we have some really talented ux designers here. 43:42 Shout out Gloria Rupprecht who is one of the ux designers that did this in her spare time. A lot of the engineers happen to be on her team and she pulled into this a little, but yeah, she and another ux designer, Gabrial Lovato.
43:56 Michael: Yeah, nice work. So, Rafael, let's talk about your project a little bit; let's talk about Connexions. C-O-N-N-E-X-I-O-N. What is that?
44:06 Rafael: Yeah, so Connexio started as, we were developing this tool, like this API for Python, for deploying applications and actually we started even before I joined Zalando, and he realized that not only in this API in this microservice, we would need to have like this swagger handling and creating our API based on swagger file because yeah, here at Zalando we have this process of creating microservices, it just feels like you don't like you stared coding directly the microservice, we have the API guilt that we review, the API definition like the swagger file, so if you want to create a new microservice, here at Zalando, you go to the, you create the API definition, the swagger file and then you go to the API guild and you show them there is some guidelines and there is some rules you should follow when you are creating new API. And then, they give you suggestions and they give you insights how to make your API look better and better for all the people that are going to use it, and then you have a definition of your whole API, even before you write the first line of code.
45:25 Michael: Yeah, that is awesome, yeah, let me just ask you for everyone's sake, because not everybody knows what swagger is or how Swagger defines documentation or how it can be used to actually build an API itself, so what's Swagger?
45:40 Rafael: Yes, what Swagger is like a specification, a standard, there is mainly standard that is popping up around specification of APIs like how http request should be made, and which end points are available, which environments you're waiting, which like validations are- like which formats should be and I would say the swagger like is the one that is winning now and this is recently supported by the linux foundation and it's changing the name from Swagger to open API. So that's why sometimes I was saying Swagger open API because it's changing the name, the official name now is the open API, so it's the question too, is the latest version they are working the version 3, but yeah, currently we use the version 2. And, yeah, it's just a way to define your API in a pretty good details, like you can define the end points the parameters, what are the http style tools that shall be expected by the clients, and from these specifications you can generate code like there is a swagger codegen there is a tool that you can generate coding many different languages including Python and if you use the swagger code gen you can generate actually connection Python code that use connection out of your swagger definition and you can just write the code that already have dictionary validated and the way you expect it, the way you define swagger definition.
47:17 Michael: Yeah, so Connextion basically is built on top of Flask you give it one of these swagger files which is a Yaml file format that talks about the various end points and the type of data that is passed to them and so on, and it will basically automatically set up the routing and the data passing and you just write the functions to actually do the processing, is that the right summary?
47:43 Rafael: Yes, exactly, int he swagger file there is like a property , like operation ID and we use this property to assign which function should be called for each end point. But yeah, exactly.
47:56 Michael: That's really cool, so if I created an API this way, can I go to it and like ask it for help if I don't know what it is I just find the base in point and will it show me like some kind of documentation of what the operations are available?
48:09 Rafael: Yes, by default, like Connexion enables the swagger.json and point where it returns the swagger definition, so if you have an API like created using Connexion you can, this is enabled by default but you can of course like hide this if you don't want it to be available to anyone. At Zalando we have this by default enabled so you can inspect new APIs and see how you should call it.
48:40 Michael: Ok, nice. And is there a way to get like a friendly human readable format?
48:43 Rafael: Yes, Connexion also provides like ui for that, there is a Swagger ui that is like a standard in Swagger projects, and Connexion provide this as well in the UI like you have API, Connexion -UI and you can see this dashboard. You can also disable it if you want, but there is this console that you can just have like an interface, the http page that html page where you can just make requests.
49:21 Michael: Yeah, that's really cool. And so this plays like a central role in describing and building a lot of the APIs that are deployed into STUPS?
49:31 Rafael: Yes, we have also the same idea of Connexion, like you create first the definition and then write the code that handles the end points defined in the swagger definition, we have also similar projects for different programming languages like Closure and Java and yeah, so you can just see, you know Zalando github page.
49:56 Michael: Right, that's really cool. One of the challenges of these http services or restful services is they are really nice to work with, but they are very opaque, you have almost no way to understand what they do and how they do it unless you just go and read the docs or something, right, so having these somewhat self documenting is really cool.
50:19 Rafael: Yeah, it is definitely. It's very important to tell the clients how they should call the end points. And, have this documented is very important and you can just use these documentation which is parseable with a json file to generate the code and generate clients that are up to date with your API so, like the idea of using Connexion to have these your server, your microservice using the definition of your end points to handle and validate their requests make it guarantees that the clients are going to call it properly, like that the specification, the documentation of the APIs is up to date, with your call.
51:09 Michael: Yeah, it's cool, you just change the documentation and you can regenerate the clients as well, it's pretty awesome. Very nice, very nice. So it seems like open source is something that you guys care more than most companies I would say, I mean you have like a special page showcasing all your github work, you have trimmed it down to 200 repositories, so why the focus on open source there?
51:31 Lauri: I think one reason is our vp of engineering is still a developer, he loves to code, introduced Scala to three different companies, and so he comes to his leadership style and has helped create a culture where we really value the actual work of coding, so open source is probably the best way be able to learn quickly, make new projects that work, you iterate, you innovate; there is also the fun community aspect and how amazing it is when a little idea can turn into something so huge like you might have seen Linus Torvalds Ted talk or Ted like discussion, I think it was a Ted conversation where he talks about how Linux and git grew, I mean he is just a guy in the room. And then we come with this project that is used around the world, and there is this something pretty magical in my opinion. It's also really great way to solve your technical challenges if something you are working with doesn't do the job then if you are clever you can make your own library or component and get your job done, so I think that it's really, it's the most fun, take on capitalism I can think of, I mean, this idea that huge extremely successful tech companies with billions of dollars can provide this for creative, smart people, it's work for the love of it.
53:13 Michael: Yeah, it's really amazing. I've tried this showcase companies that are actually building their business on open source in a way that the thing that is the foundation of their business, they are actually giving away, it's on github, you can go get it, and yet there are these great vibrant companies. I think it's a really amazing and it's really cool that you guys are giving away and make it public so much of what you are doing.
53:35 Lauri: yeah, and it's a great conversation s tarter, like I did on onboarding presentation to the new hires yesterday and the day before about our open source culture and just asking who in the room has already brought made something get this people really excited to talk about their work, they contributed to another project, ok, what was that like, what did you learn...? I mean, it's just really all organic and fun.
54:00 Michael: Yeah, I am sure it is, and speaking of fun to work in these environments, you guys have quite a few interesting tech jobs available, right, at tech.zalando.de/jobs. You had something like 17 software jobs and 12 data science jobs with machine learning and all sorts of cool stuff going on so a lot of people who are out there listening are asking me and send me messages like hey, can you recommend a cool place to work or something- check this out, that is a good option, right?
54:31 Lauri: Yeah, we have all levels, all backgrounds, it's such a diverse team, when you think about where everybody comes from, and geographically companies they worked for previously or if it's their first job, how did they get here...
54:47 Rafael: Yeah, I really like the idea to work with people from everywhere on the world, like I am from Brasil, but in my team there is people from Poland, from Portugal, from Netherlands and from US, there is people from everywhere and it's really cool. Like, it's really nice, you have very interesting conversations like at the lunch time or like about different cultures and backgrounds and it's really cool.
55:09 Michael: Yeah, that's really cool. Awesome, so people check that out if you are interested in working on these types of projects. So I just have a few moments left, let me ask you guys two questions that I normally ask everyone at the end of the show; so, on the Python package index there are over 80 000 packages that do so many amazing things, do you guys have one that you recommend or that you think is pretty cool?
55:37 Rafael: Yeah, like we use a lot requests, it's pretty known package but yeah, we use it a lot and it's really good. I would really recommend if you don't use it- you should.
55:53 Michael: Yeah, requests is pretty awesome.
55:54 Lauri: And we have an engineer on our team Henning, who was largely responsible for our Python work early on, when we were the Java monolith and didn't have too much happening was open source so he's got a fair number of packages up there so I'll give a plug for ns enter so it's a Python package it lets you enter linux kernel name spaces with a single sys call. He puts a lot of code in lots of projects.
56:21 Michael: Ok, awesome. It's amazing how prolific some people are, right. And then the other question is when you write Python code, what editor do you use?
56:39 Rafael: I personally use Emacs, but there is not many people here at Zalando that use Emacs, most of the people that work at Python here they use PyCharm.
56:52 Michael: Yeah, ok, PyCharm is definitely a good one. Emacs I would say is quite popular, out there from the people I have interviewed.
57:01 Lauri: I like Atom.
57:02 Michael: Yeah.
57:04 Rafael: Yeah, I think like Emacs is like if you really want to sharp your tool, I really like to spend time just configuring my editor and making it work better and having new key bindings that will do much cool things for me.
57:21 Michael: Ok, that's cool, Emacs is great for that. And Atom, I like Atom as well, it's a good one.
57:26 Lauri: Yeah, Sublime text also does the job, I am not too picky on features it's like bare minimum but I think both are so very loved by people who are picky about things.
57:40 Michael: Nice. All right, final call to action, if people want to get started with your open source stuff and learn more about it, what do they do?
57:45 Lauri: You should go Zalando.github.io look at what we have, poke around, see if there is something that looks interesting, definitely try out connexion, check it out, see if there is some feature or a bug you want to fix, ping Rafael he will probably be the one responding to you, if it's not Joel.
58:13 Rafael: We have a bunch of issues there, you can just pick one and work on it.
58:16 Lauri: And another project too that is pretty exciting called Patroni that's also coded in Python, and we are actually trying to get more folks that use kubernetes with google cloud engine to try that one out, but it's, we have a lot of postgres fans, we have couple experts even in postrgres we've been using it for several years and so Patroni is a template for postgres high availability and you can use it with zoo keeper, or console and we've developed it, we have Josh at Red Hat he has made a couple, maybe I should say he's made quite a number of contributions and he also talked about it at 58:54 so we are really trying to get more users of it for especially in the kubernetes community.
59:01 Michael: Yeah, that sounds like great projects, yeah, you guys have a ton of open source things available on your github pages, so I'll be sure to link to all those things. Lauri, Rafael, it's been great to talk to you, thanks for being on the show.
59:14 Lauri: Yes, thank you.
59:14 Rafael: Thank you.
59:13 Michael: Yeah, bye.
59:13 has been another episode of Talk Python To Me.
59:13 guests have been Lauri Apple and Rafael Caricio and this episode has been sponsored by Hired and Snap CI. Thank you both for supporting the show!
59:13 takes the pain out of errors. They give you the context and insight you need to quickly locate and fix errors that might have gone unnoticed until your users complained. As Talk Python To Me listeners, track a ridiculous number of errors for free at rollbar.com/talkpythontome
59:13 CI is modern continuous integration and delivery. Build, test, and deploy your code directly from github, all in your browser with debugging, docker, and parallelism included. Try them for free at snap.ci/talkpython
59:13 you or a colleague trying to learn Python? Have you tried books and videos that left you bored by just covering topics point-by-point? Check out my onlne course Python Jumpstart by Building 10 Apps at talkpython.fm/course to experience a more engaging way to learn Python. If you're looking for something a little more advanced, try my write pythonic code course at talkpython.fm/pythonic.
59:13 can find the links from the show at talkpython.fm/episodes/show/72
59:13 sure to subscribe to the show. Open your favorite podcatcher and search for Python. We should be right at the top. You can also find the iTunes feed at /itunes, Google Play feed at /play and direct RSS feed at /rss on talkpython.fm.
59:13 theme music is Developers Developers Developers by Cory Smith, who goes by Smixx. Cory just recently started selling his music on iTunes so I recommend you check it out at talkpython.fm/music. You can browse his music there and listen to the full-length version of Developers Developers Developers.
59:13 is your host, Michael Kennedy. Thanks for listening!
59:13 take us out of here.