Summary
Whether we like it or not, advertising is a common and effective way to make money on the internet. In order to support the work being done at Read The Docs they decided to include advertisements on the documentation sites they were hosting, but they didn’t want to alienate their users or collect unnecessary information. In this episode David Fischer explains how they built the Ethical Ads network to solve their problem, the technical and business challenges that are involved, and the open source application that they built to power their network.
Announcements
- Hello and welcome to Podcast.__init__, the podcast about Python’s role in data and science.
- When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so take a look at our friends over at Linode. With the launch of their managed Kubernetes platform it’s easy to get started with the next generation of deployment and scaling, powered by the battle tested Linode platform, including simple pricing, node balancers, 40Gbit networking, dedicated CPU and GPU instances, and worldwide data centers. Go to pythonpodcast.com/linode and get a $100 credit to try out a Kubernetes cluster of your own. And don’t forget to thank them for their continued support of this show!
- Your host as usual is Tobias Macey and today I’m interviewing David Fischer about the Ethical Ads marketplace and the technology that runs
Interview
- Introductions
- How did you get introduced to Python?
- Can you describe what the Ethical Ads project is and the story behind it?
- What are the technical and organizational requirements involved in running an ad network?
- How have you approached the problem of kickstarting the flywheel for the two-sided marketplace?
- What are some of the challenges that you face in building an accurate profile of your audience without using detailed tracking methods?
- What are the benefits that you see in focusing exclusively on developers in your publisher relationships?
- Can you describe the design and implementation of the ad server?
- How has the architecture evolved since you first began working on it?
- If you were to start over today what might you do differently?
- How have you approached scaling for performance and geographic distribution?
- What mechanisms do you use for tracking impressions/measuring ad effectiveness?
- How can advertisers experiment with A/B testing of ad copy?
- If someone wants to run their own advertisements with the ethical ads server, what is involved in getting it deployed and integrated into their sites?
- What are the integration and extension points available for customizing the behavior of the platform?
- What are some of the most notable lessons that you have learned about online advertising since you first started working on the Ethical Ads project?
- What are the most interesting, innovative, or unexpected ways that you have seen Ethical Ads used?
- What are the most interesting, unexpected, or challenging lessons that you have learned while working on the Ethical Ads platform?
- What do you have planned for the future of the Ethical Ads platform?
Keep In Touch
- davidfischer on GitHub
- @djfische on Twitter
Picks
- Tobias
- Ship It! Podcast
- David
- Local Python Meetup
- Click CLI framework
- useragents library
- TLD for parsing internet domains
Closing Announcements
- Thank you for listening! Don’t forget to check out our other show, the Data Engineering Podcast for the latest on modern data management.
- Visit the site to subscribe to the show, sign up for the mailing list, and read the show notes.
- If you’ve learned something or tried out a project from the show then tell us about it! Email hosts@podcastinit.com) with your story.
- To help other people find the show please leave a review on iTunes and tell your friends and co-workers
Links
- Ethical Ads Network
- Ethical Ads Server
- San Diego Python
- Read The Docs
- CodeFund
- CPM == Cost Per Mille
The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA
Hello, and welcome to Podcast Dot in It, the podcast about Python and the people who make it great. When you're ready to launch your next app or want to try a project you hear about on the show, you'll need somewhere to deploy it. So take a look at our friends over at Linode. With the launch of their managed Kubernetes platform, it's easy to get started with the next generation of deployment and scaling powered by the battle tested Linode platform, including simple pricing, node balancers, 40 gigabit networking, dedicated CPU and GPU instances, and worldwide data centers.
Go to python podcast.com/linode, that's l I n o d e, today and get a $100 credit to try out a Kubernetes cluster of your own. And don't forget to thank them for their continued support of this show.
[00:00:57] Unknown:
Your host as usual is Tobias Macy. And today, I'm interviewing David Fisher about the ethical ads market Place and the technology that runs it. So, David, can you start by introducing yourself?
[00:01:06] Unknown:
I'm David Fisher. I live in San Diego where I'm 1 of the organizers of San Diego Python, which which is, like, our local meetup group. Shout out to all the other organizers. I work on ReadTheDocs full time, but now I'm I'm almost entirely focused on the advertising side of things at ReadTheDocs and sort of ethical ads that that sort of business grew out of ReadTheDocs. Advertising is the primary way that ReadTheDocs makes money and stays operational.
[00:01:30] Unknown:
And do you remember how you first got introduced to Python?
[00:01:32] Unknown:
Yeah. Totally. I first learned Python way back in college. I was in, like, an elective computer science course where we did a new programming language every 2 to 3 weeks. And the goal was sort of, like, compare and contrast programming languages and make it maybe easier to learn a new 1. As a result, I put Python on my resume when applying for internships. And my 1 of my interviewers at Qualcomm, where I interned, and that was my first job out of school, mentioned that that was 1 of the reasons they called me back, you know, because I had Python on my resume. They hired me, and naturally, I did no Python for years.
Mostly did PHP web stuff for a little while. And then a few years later, maybe 2, 008 or so, I ended up as a solo dev on, like, a debugging development project. It was sort of like a naive version of man in the middle proxy, if you've ever heard of that Python project. And it sort of let you man in the middle of connection and define rules and change data in transit and stuff like that based on rules. It was all for debugging. It wasn't for, you know, malicious anything. And regardless, I did it all in Python, and I really started to like Python, found Django shortly after that, and sort of the rest is history. It's been mostly Python ever since.
[00:02:38] Unknown:
And so as you mentioned, you're now spending a lot of your time focusing on the ethical ads project and the network that you're building out to support the Read the Docs business. And I'm wondering if you can just talk a bit about what it is that you're building there, some of the considerations that go into actually running this network, and some of the story behind how that came about, and why you decided to actually build your own ad network.
[00:03:00] Unknown:
Yeah. Ethical ads got its start as sort of the advertising arm of Read the Docs. We didn't brand it separately for a long time or anything like that. Read the Docs does a massive amount of traffic, you know, tens of millions of page views a month. And before about 5 years ago or so, it was basically on a complete shoestring budget. Like, literally, the goodwill of a few large benefactors like Rack Space and Microsoft and Sentry. Without these people basically giving infrastructure and compute and storage to read the docs for free, it would have had to shut down. There was just no money to keep it going. You know, it sort of required, you know, full time work, and there wasn't full time budget, basically, is the answer.
There was always a SaaS product, read the docs for business. Although, brand it wasn't called that before, and this wasn't making enough to sustain the community side of things. There was recurring donations. But even today, like, those bring in maybe, like, 15% of what it costs to run read the docs dot org. I should say when I started, I was, like, extremely surprised at how small the budget was too, how much it cost to run community. It was, like, way less than I thought. I worked at a start up before this. It did, you know, maybe 10% of the traffic optimistically of what Read the Docs does, and it spent about the same amount of money on on infra. So, like, it was, yeah, very, very shoestring budget. Fast forward to, like, 2017, I wrote a cold email to Eric Holscher about the ad side of things. It was clear to me that this is where Read the Docs' money was coming from. There wasn't a lot of money anyway that you look at it, but I was looking for my next job and project and was thinking, you know, privacy focused ads might be a thing. You know, I was naive, but this sounded interesting to me. I'd worked on ads a little bit at my last business, mostly as just the liaison to the marketing department, and I was kinda, like, horrified at what standard practices in advertising were. And Eric sort of talked me into building this at read the docs, and read the docs would be the first customer. So that's sort of how it got the start.
[00:04:51] Unknown:
In terms of the technical and organizational requirements for running an ad network, I'm wondering if you could just talk through some of the considerations that go into it and how the privacy focused aspect informs and influences the ways that you approach both of those arms of the business.
[00:05:09] Unknown:
I'll talk a little bit about our business and some general stuff that maybe applies to all ad networks. I read the docs. We didn't really wanna run our own ads. You know, we sort of knew that ads scaled with traffic, and we sorta wanted something that scaled with traffic. Donations generally don't scale with traffic that well, or they scale sort of, like, nonlinearly. It's weird. We knew we wanted something like if read the docs.org started doing double the traffic, we wanted to make double the money. Right? We knew we had to do something like that. And part of this happened before I got to read the docs. I I joined in sort of, like, late 2017. But Eric talked to a couple networks, and I talked to a couple ad networks after I started. And this was just to see if we could run ads, but we wanted to proxy the images and not serve any cookies. So we wanted to do, like, you know, some privacy features on top of it. They basically laughed at us, and they said, take it or leave it. This is less true today. There's actually, like, some of these networks are willing to do some of this now, but back then, they they basically laughed at us.
So that's literally the reason why we're in the ads business is because there sort of wasn't an alternative if you wanted to run privacy focused ads. It was either, like, sell out your users or build it yourself. So we built it ourselves. And, you know, an ad business is a little bit different than a SaaS business or anything that read the docs has done traditionally. It's basically like a sales and marketing business. You know, read the docs has not been good at this, sales and marketing that is. And I think actually, you know, a lot of developers have this hole in their skill set, myself included. You know, it's important.
We think we know how to do development. We think development's the most important part. But, really, like, every business needs some amount of product and some amount of sales and some amount of marketing. And so on the ad side, compared with read the docs, we've probably spent a little bit more on sales and marketing in terms of just working on stuff. And some of this is really simple stuff. Like, you know, we have, like, a simple, like, landing page platform. Read the docs has the landing pages for read the docs built into the read the docs repo. So changing it is hard and, you know, takes a while to roll out and all those kinds of things. It's sort of a pain compared with what we have at the ad side. So some of this is sort of rolling back from the ad side into read the docs as read the docs is seeing like, oh, man. If we could get some of these marketing and sales advantages, that would be good. There's still sort of a long way to go, I guess, on the on the technical side of things, but I think we're a team of almost all developers, so the technical side of things was never that big of a problem to begin with, I guess.
[00:07:34] Unknown:
And as you mentioned, because of the fact you are running an ad network, there's a decent amount of sales and marketing involved in actually onboarding advertisers, but it's also a 2 sided marketplace because you have to have somewhere to display the ads. And you have some of that built in and that you have read the docs as a platform for being able to publish to. I'm wondering if you can just talk to some of the strategies that you've gone to as far as being able to build up the both sides of that market place to make sure that you have a healthy ecosystem around the network and around the technical implementation of the project.
[00:08:06] Unknown:
I'm glad that you sort of, like, explained this for the listeners because, you know, it seems like you know a little bit about ads and I know a little bit about ads, but lots of people probably don't understand about this 2 sided marketplace. But you do sort of need 1 to get the other is the real answer. You know, like, advertisers don't wanna buy ads not knowing who the publishers are and vice versa. So we had a couple advantages here as read the docs. Firstly, you know, read the docs is a huge site. It does tons of traffic. So we, at first, already had traffic and just had to line up advertisers.
So we already had 1 side of the marketplace. I don't wanna say under control, but, like, it was alright. You know? We already had a bunch of traffic. We just needed to sell it. When we first launched things, it wasn't an ad network. It was basically, we're selling ad space on read the docs. And as we grew, we sort of knew we wanted to launch an ad network. It seems sort of like a logical extension. If this is working for us, like, if this helps Read the Docs stay sustainable, can we do something like this to help other open source projects or, you know, maybe, like, small indie projects even if they're not open source? Can we help them be sustainable? So building an ad network seemed like a logical next step. And there was another company called CodeFund run by a friend, Eric Berry.
He was doing something similar, you know, focusing on privacy. It was sort of, like, focused on the software code side of things, showing ads, privacy focus. It was doing really well. In sort of mid 2020, they had to shut down really abruptly due to funding issues. And when they did, they basically told their publishers and advertisers, hey. Talk to the guys that read the docs. This sort of, like, massively helped bootstrap things. Our ad network was pretty much ready, but we hadn't launched it yet. And so we sort of, like, launched it literally in 48 hours kind of from that. And we had a bunch of publishers and advertisers reaching out to us on day 1, so it sort of fell into our lap pretty quickly. We got lucky, and I definitely owe a debt to Eric Barry there. But, yeah, I guess that combined with sort of the advantages of already having a large publisher was really how that got started. And now we don't have as much of that problem because, you know, yeah, you have to scale 2 things in tandem, but we already have both of them going okay. So you just gotta scale them up incrementally to match each
[00:10:12] Unknown:
other. Once you have that 2 sided marketplace going, the advertisers will want to know, you know, how are their ads performing, who are they being served to, and this is where a lot of the privacy preservation aspect comes in and maybe introduces some challenge. And, also, when you're talking to potential advertisers, they want to know they want to have some information about the demographics and the quantities of the, you know, impressions and who they might be serving to so they know, you know, how to think about their ad copy, what they wanna focus on in terms of trying to sell to, whether or not their product is even a fit for the potential audience that they're gonna be put in front of. And I'm wondering if you can talk to some of the challenges that you face in being able to build up some of that profile of the audience and some of the signals that you're able to gain from the publishers of the sites that you're working with to be able to build up that profile to help with the sort of sales and reporting aspects of running the network? That's another really good question. Like, seriously, your advertising questions have been really good. So advertising at its most basic level is pretty straightforward.
[00:11:17] Unknown:
You get products and services in front of people who might buy them. It really is that simple. And for us, that means we target based on general geography and the content to the page where the ad appears. So we don't track people. We don't sort of know what people did in the past. I like to compare it to the offline world. If you were launching a new whiskey, you might take out an ad in whiskey advocate. If you're launching a service on top of Kubernetes, like, we'll show your ad on a Kubernetes related site. There's some things, like notably retargeting and remarketing, that we don't do because it involves tracking people.
But those methods, they really work. Like so we're at a bit of a competitive disadvantage there. But I also think that when people talk about creepy ads, following them around the web, like, that's what they're talking about. They're talking about retargeting. So not doing it also has its advantages. In terms of signal for publishers, which was sort of getting back to your question, there's a couple things that we look at. We think about, like, click through rates for publishers, and we sort of compare publishers in terms of, like, the type of publisher that it is. So, you know, like, documentation has, like, a, you know, we've done a lot of serving of ads on documentation, so we have a pretty good baseline. So when we see, like, you know, hey. This is much lower or much higher than than sort of the baseline, that we sort of look a little bit more carefully because we do have to be really careful about our publishers.
Advertisers do care. Advertisers give us feedback on the publishers, so we're transparent in a lot of ad networks and that will show advertisers exactly where their ad were shown. Like, this is how many times an ad was clicked on this publisher site. And we actually append, like, a little parameter when they click through to show, hey. Yep. This is a click through from this publisher site to this advertiser landing page. The advertisers can give us feedback on publishers, and, you you know, sometimes you do have to get rid of a publisher if they're, you know, drastically underperforming or they don't pass the smell test or something like this. So we definitely do get feedback like that. And we've definitely had publishers try to scam us too, so we definitely look at that too. All things, we have to look at all this stuff. Gotta be on your toes in this business. Definitely.
[00:13:18] Unknown:
And as you mentioned, you focus primarily on developers as an audience, and I'm wondering what the benefit has been to you just in terms of your own sanity and some of the ways that you're able to focus the implementation or the sales process for knowing the audience and being a developer yourself, how that maybe informs some of the ways that you think about some of the ways that you can work with advertisers about how to actually build their message in a way that will resonate with the target audience?
[00:13:47] Unknown:
I would say probably the biggest advantage here is making sure that the ads perform. You know? Like, if the ads don't perform, the advertisers will leave. And so focusing has really helped us, you know, in terms of making sure that the audience of a publisher is the right fit for an advertiser. You know, if we were a generic ad network that tried to serve for everything, like, we probably have to sacrifice this. And I actually think it's 1 of our biggest advantages. You know, literally, when we sign up a new publisher, I always ask myself, like, would a DigitalOcean or AWS ad work on this site? And if the answer is no, they probably aren't a fit for us right now. So, you know, I think that it's a huge advantage to focus. It lets us understand the sales process, and I think, actually, also it lets us talk to the marketers, you know, more coherently. I think a lot of these people sometimes don't know how to reach developers that well. Maybe they came from some other form of marketing.
I can't tell you how many times I've seen marketers try to promote yet another ebook or yet another webinar to developers. And, like, as a developer, I've never downloaded an ebook or looked you know, I've looked at a couple of webinars. I won't lie. But, like, you know, you just gotta make sure that the message is the right fit for the audience. Yeah. And on the publisher side, I think a lot of it comes down to getting the word out. You know? If people have heard of us because they see us on other sites, that's how the next publisher is gonna sign up. That's really how it works.
[00:15:05] Unknown:
Absolutely. And because of the fact that you are so closely linked to read the docs, it definitely gives you a very easy entrance to the developer marketplace because every developer has, at some point or other, ended up on a site powered by ReadTheDocs whether they know it, you know, inherently or not.
[00:15:20] Unknown:
Yeah. Exactly. Yeah. That literally is you know, we've hired people because they clicked on about this ad. Like, literally, that has happened. They tried to learn who are these ethical ads people, you know, or whatever. Right? Like, that's how we find
[00:15:34] Unknown:
employees for Read the Docs, not that our team's that big. That's how we find new advertisers too. In terms of the actual performance of the ads, as you mentioned, it's a very important aspect of running an effective network. You know, 1 of the ways that ads are generally sold is in the, you know, cost per meal or, you know, thousands of impressions. And, you know, while that is a measurable statistic, it's usually not the 1 that actually matters because what the marketers actually care about is how many people are actually going to click through and sign up for whatever it is that I'm trying to sell. And so I'm curious now digging into some of the technical aspects of it, you know, how you're able to work with the advertisers to help them understand when somebody does click through and land on their site and pay, like, being able to actually trace that flow of events to say, yes. This person landed because of this ad that you put there or, you know, some of the effective signals that you're able to maintain because you're not doing ad retargeting and tracking people around the web to see, okay. Okay. Well, they saw this ad, and then they went these other places, and then they went on this market or site, you know, being able to do that sort of attribution of ad to actual conversion.
[00:16:39] Unknown:
Yeah. It's hard. I don't think that we've mastered this by any stretch of the imagination, I think, is the real answer. Attribution sort of at that level, like, if they don't click on the ad and they later just type it into the URL bar, type the advertiser's name in, and then buy something, like, that's never gonna get attributed to us. And that's unfortunate, but that's just sort of the nature of the business. I'm not sure there's anything we can do about that too much, but what I will say is that, you know, sometimes these metrics you talked about sort of like, you know, CPMs, and we have prices that we publish, and other people have prices, and we have click through rates that we tell advertisers this is sort of what you can expect. And sometimes these click through rates don't translate perfectly from 1 ad network to another. You know, we have pretty robust, I think, fraud detection, and so, like, our click through rates look artificially low. But I can't tell you how many times I've heard from from an advertiser, like, yeah, you know, I was getting way fewer click throughs from you than from Google or whatever, something else. And yours are performing, like, much better even though there's fewer of them. So, you know, like, I get feedback like that all the time. I mean, of course, I've gotten the other side of that feedback too. But some of this stuff, advertising, they're still very much like silos, and it's very hard to compare
[00:17:54] Unknown:
1 network to another. And then, you know, you end up with sort of, like, an advertiser just sorta has to try things out and see if it works. Absolutely. Yeah. You know, as a podcaster and somebody who runs sponsorships for the shows that I manage, 1 of the pieces of feedback that I get consistently is that podcasts, as a marketing channel, drastically outperform any sort of cost per click advertising that they've tried. So doing things like, you know, double click with Google or Facebook ads or what have you because it is a just much more targeted audience. Because if somebody's listening to a podcast, they are there because they did it intentionally. It's you're not gonna accidentally listen to a podcast.
Whereas, you know, if you do just have ads being thrown at you from whatever site you happen to land on, you're much less likely to actually pay any attention to it. And so I think that that's another advantage that you have with the network that you're running is that you are much more targeted in terms of the publishers that you're working with. So it's not somebody's going to see an ad through your network on some random web page that they happen to be at trying to, you know, buy a new pair of shoes. I think that being able to tart you know, advertise to a specific niche audience is much more powerful and has a higher ROI and can demand higher, you know, per impression
[00:19:08] Unknown:
costs than if you were to just broadcast to whoever happens to come by? Pretty much a 100%. I think a lot of publisher sites are starting to figure this out. You know? Like, just throwing something like Google Ads on your site, like, that's gonna make x number of money, you know, some number of money. And if you did something that sort of gets closer to a sponsorship model, like, that's gonna make more money. You know? This hierarchy does continue going. There's even stuff that makes more money than that. Probably building a proper SaaS product would make even more money than that. You know? But in all these stages, there's sort of like, if you do something that is more aligned with exactly what you're, you know, exactly what you're doing, like, that's gonna work better.
[00:19:48] Unknown:
And as a result, it's gonna make more money. And so 1 of the other interesting aspects of what you're doing is that the actual software that powers your network is something you've released as open source. I know that that's in the DNA of read the docs and what you're doing, so it makes logical sense. But it's always great to be able to see the ways that people are actually running important services like this to be able to either see, okay. Oh, this is how they do it or to say, oh, that's something useful. I need to use it for, you know, slightly related purposes over on this other property. And so I'm wondering if you can dig into some of the technical implementation of actually being able to run and deliver these ads and some of the scalability challenges that come into play. Because as you mentioned, it's something that scales with traffic, but only if you're actually able to scale the software that powers it.
[00:20:33] Unknown:
Sure. Yeah. And, originally, this was literally like a a Django app built in to read the docs. So it was deployed as part of read the docs. It was actually stored in the same database alongside read the docs community, like, all that kind of stuff. It's really interesting. Eventually, we broke it all out. It's a separate service. It's a separate Django app. It used some of the original code. Some of it's totally new. It's got a ton of options. We sort of tried to make it generic in some ways. Like, we sort of knew, hey. You know, maybe we're gonna need to support more than just exactly what we, the docs, needs. A ton of it's driven by environment variables because if you publish exactly how your ad fraud algorithms work, you know, that's gonna get gamed pretty much. But, really, it's not that complicated in some respects.
It's basically an API that connects to a decision engine that decides what ad to show based on the publisher and the content and the geography and budgets and stuff like that. And then it's got a ton of reporting features on slicing and dicing that data.
[00:21:33] Unknown:
And in terms of the evolution of that architecture you mentioned, it started as just a plug in of a larger site, and now it's its own independently deployed system. Wondering if you can talk to some of the sort of migration challenges that you ran into as you were starting to extract this out into its own service, move the data over, manage being able to actually scale with traffic appropriately, and some of the complexities of being able to run a service that is accessed globally. But, you know, as I was reading through the documentation, noticed, you know, has a very localized footprint in terms of the actual infrastructure and data storage.
[00:22:09] Unknown:
That part's really tricky. We publish sort of like a blog post maybe or I publish a blog post maybe, like, a little maybe maybe 3 months ago or so. And it was about scaling to a 100 requests per second with with Django or something like that. The blog post got a little bit of traction and made it to the front page of Hacker News. It got us a decent amount of traffic, so that was pretty cool. And performance has always been a big focus. And leaving aside the people on Hacker News who were like, a 100 really isn't that many, which is, you know, sort of both true and probably unnecessary to say, you know, the same infrastructure is definitely gonna scale to 200 requests per second. We just only need about a 100 now. So, you know, I guess, how did we get there? Like, we relentlessly profiled everything, like, to shave down each millisecond.
You know? Literally, we have a test case to ensure that the number of database queries to show an ad doesn't increase, you know, that's run as part of our continuous integration. We're very serious about this. Now you talked a little bit about geographic performance, and that's a lot harder. And that's something we've only scratched the surface of. So interestingly, like, I did do some of the work there on some of the stuff we did to make read the docs itself faster, you know, on the geographic distribution side. Like, you know, if you're visiting, read the docs in Bangladesh. Like, how do we make this faster?
Long story short on read the docs, geographic performance is much better than when I started, but still has some of the same problems that the ad server has, which is, like, our source of truth is still like a database in US east. And so requesting an ad still hits that. And, hopefully, that'll change in the next year or so on the ad side. We'll have to move to something that sort of gets smarter, maybe, like, syncs up on, like, a couple minute basis or something like that. You know, everything is CDN for good geographic performance. Like, our ad client is CDN and ad images themselves are CDN. So everything's reasonably fast, but, like, if I could get to this sort of, like, multi master database situation, like, I could probably shave, you know, 50, 70 milliseconds off European ad times, which would be enormous. Like, that would be huge. I absolutely wanna do that, but I haven't quite gotten there. I I would say that that's probably, like, at least 6 months out though.
[00:24:19] Unknown:
And speaking about traffic in the European Union, that also brings up the specter of GDPR, which, because of the fact that you're not collecting all of the end users' information, I'm sure frees you from a lot of headache of having to actually do, you know, geographic distribution of data to ensure that that user's information is only stored in servers that are housed within, you know, certain section of the European Union and other countries having similar requirements. So I'm wondering if you can talk to some of the considerations that go into some of these privacy oriented regulations and how that factors into your strategy at Read the Docs.
[00:24:54] Unknown:
This has literally gotten us some publishers. Like, we had a publisher talk to us and they were, like, I talked to, you know, my ad network and asked them what they were doing for the GDPR. This was on GDPR day, which was whatever May 2018, I wanna say. I don't remember exactly when it was. The ad network was basically like, we're not gonna do anything. You know? We're just gonna keep doing what we're doing. And I think a lot of these people's tunes have changed as sort of fines started to mount up. Basically, our approach was we're just not gonna collect any personal data on anybody and not store anything like that for any amount of time. So, like, nothing that we commit to our database is something that, like, if it leaked, I would feel ashamed of or anything like that. Like, you can read our code and see exactly what we're storing on every impression, exactly what we're writing to our database. And, you know, basically, we don't store IP addresses, you know. Like, we don't store full user agents on people, you know, we'll store something like, oh, Chrome on Linux, but we're not gonna store somebody's full user agent because I know that this can sort of track people down, you know, depending on how common their user agent is, like, that can track people down to some, you know, relatively small group of people. So basically, not storing this I think is to some degree a competitive advantage, and not having any cookies is another 1. You know, like you don't have to have a cookie banner if you don't store any tracking cookies on people. Now there's a ton of, like, misconceptions about the GDPR too. I had to read a significant portion of it because I did some of the GDPR compliance for read the docs. And I'm not saying that it's perfect, but, like, the GDPR as a whole is probably a move in the right direction. And, you know, there's some of that move in the US, although it's probably gonna happen much, much, much slower and it'll be, like, way more watered down. But some of that is gonna come, I think, as people figure out, like, what actually is happening, what data is being stored on people. So I I think it is an important issue, and I think people are finally, like, waking up to this. You know? A couple scandals at Facebook or a couple scandals at Google. Fewer scandals at Google than Facebook probably. You know, this is sort of waking people up to this. You know. I mean, this is sort of DuckDuckGo has built an entire business around
[00:27:04] Unknown:
a search engine that doesn't track people. It's amazing. In terms of the actual end to end communication, you're mentioning having the CDN for the ad clients. And I'm wondering if you can talk to some of the integration process of publishers being able to start serving ads from your network on their websites and some of the ways that you think about the design of that code and making it as easy as to get up and running and maybe some of the pieces of information that the publishers can send back to you to inform which ads might perform best on their specific properties?
[00:27:36] Unknown:
So there's a couple things that we do, and then there's things that sort of the publisher can do. We sort of release an ad client, and this is just sort of a piece of JavaScript. You could put it on your website and, you know, you give it a div where you want an ad to appear and, you know, the magic will all happen. But if that happens, you know, we've sort of made all the decisions. What ad should be shown? You know, the publisher does have some decisions that they can make, and sort of the better they make these decisions, the better things will be for everybody. You know? In some cases, we have ads that are sold on a cost per click basis. So if the ads perform better, the publisher makes more money. So, like, having ads that perform well is a good incentive for the publishers too. Not all of our ads are sold that way, but some of them are. As a result, sort of the publisher does have some knobs that they can tweak. Some of these are, like, you know, they can send additional targeting keywords that maybe we wouldn't have figured out because we sort of try to figure out the content of pages and target the right ad to a page. But the publisher can send additional things and say, oh, you know, this page, you know, maybe it doesn't talk a lot about Kubernetes, but it's really about Kubernetes. So they can sort of send that to us. You know, sometimes, like, these publishers have content already tagged. Maybe, you know, they're running like a blog and it's got tags or something like that. These tags could be useful to us in terms of targeting things. And maybe they do, but maybe they don't appear on the page. There's also a bunch of other options that we have, like, do they wanna show a text only ad or a text and an image ad? You know, some other things that just make it integrate a little bit better with the site, like dark mode, stuff like that. So the ad client supports lots of these kinds of things. But all these things just sort of like having ads that look a little bit better, having ads that are a little bit better targeted, all these things sort of help everybody. It helps the advertiser and it helps the publisher.
[00:29:18] Unknown:
As far as the actual tracking that you do implement, you're being able to measure the ad impressions and, you know, being able to attribute the traffic to the different sites and which advertisers are actually being served on which sites. Wondering if you can talk to some of the technical details of how you're actually managing that and measuring that and some of the other signals that you're able to pull in to to inform the ways that you're actually building out the overall network aspect of the platform.
[00:29:50] Unknown:
For us, some of this is pretty straightforward. Right? When a publisher requests an ad, 1 of the questions that they have to send or 1 of the parameters they have to send with the request is, here's my publisher ID. You know? So we know, hey. This is a publisher. They're requesting an ad. It's this specific publisher. We do get some of this information already. We say, hey. We sent back this ad for them to show. There's a possibility that ads get shown. There's a possibility that ad doesn't get shown. You know, maybe the user has already closed their browser by the time things get back. Who knows? But we already have some of the information, like, typically, like, you know, we can geolocate the IP address. We don't store the IP address, but, like, if a request hits our server, we know the IP address. Otherwise, how would we be able to send it back?
So we have some of this data. We can turn that into a country and target an ad based on country. And we have the URL that the user is trying to show an ad on or that the publisher is trying to show an ad on. So we can look back at that URL after the fact, or we can try to get, like, a quick impression of what sort of the content to this page in terms of targeting. And so we can try to make a better decision there around targeting. We can try to do it, like, live on the fly. We can also try to do it after the fact, which is something we're working on right now to try to go back and learn more about pages and make a better decision in the future for serving an ad on that page. These all come back into something, you know, I talked a little bit about. We have this decision engine that sort of decides what ad to show.
And, basically, the 2 biggest things that it decides on is, like, what's the content of the page and what's the geography? You know? A lot of advertisers wanna focus on specific geographies, so, you know, they wanna show ads maybe just in the US or maybe just in the US and Canada or whatever it is. Like, if you're an advertiser, you don't wanna be buying unnecessary traffic in regions that you're not targeting. So that's a huge factor. But, basically, we run through I guess, it's sort of just a decision engine that decides based on, you know, does the targeting match? And then if if all the targeting matches, so that means, like, yes, this ad is eligible to be shown on this page, and it gets all the ads that are potentially eligible to be shown on this particular page, then we just sort of have to make a decision based on budgets and, you know, maybe rate limits or other things like that, and we just sort of pick an ad and show it there.
[00:32:09] Unknown:
Another element of marketing and advertising that's very popular is the idea of AB testing, either the images that you're using or the copy that you present to be able to see, you know, what messaging is most effective with this particular grouping of people. And I'm curious how you're able to support advertisers in that type of experimentation and some of the types of data that you're able to collect to feedback to them to say, you know, this was the version of the ad that was displayed. You know, this was the number of impressions that it got, and then, you know, be able to track back to them to say, you know, this was the version of the ad that was clicked on that got you that conversion so that they can feed that all the way through their tracking funnel as well. I wouldn't call our AB testing particularly advanced,
[00:32:52] Unknown:
but advertisers can absolutely run multiple variations of ads over a campaign. And while we report on the stats of these in aggregate, we can also report on them, like, ad by ad. So we can say, hey. You know, here was the performance of the campaign as a whole. You ran 3 ads over the campaign, maybe some of them only for part of the time. Here's exactly how each 1 performed. And so, you know, after a campaign's been running for a little bit, sometimes you have a winner. Sometimes you just have a loser. Sometimes they're all pretty equal, but, you know, sometimes you definitely have a clear winner in terms of performance. You know, as you mentioned, sometimes we're varying the image, sometimes just the text, sometimes it's, like, just the call to action part of the text. We totally measure this performance, but we only get the performance on our side of, like, this is how it performed from a click through rate perspective. And, again, we can sort of try to normalize that on a how should of this performed based on the publishers it was shown on and things like that. But sometimes you have a case where an ad performs worse in terms of click through rate, but the conversion performance is better once it gets to the advertiser's landing page. So, you know, you do have to sort of feed it back into the funnel. You know, advertisers can put sort of unique UTM parameters to sort of test these different ads and see which ones perform better. You know, even though we don't track users, we don't cookie users, like, if the user clicks on an ad, the link to the landing page, you know, it can contain a UTM parameter or something like that to try to inform the advertiser of this was the exact ad. And to some degree, we want this. We want advertisers to know this traffic came from us. And the publisher probably wants the advertiser to know, yeah, this traffic that somebody clicked on, that came from me. And so that sort of reflects well on the publisher too. So they're tracking, you know, it can mean a lot of different things to a lot of people. You know, you have to be very precise about what you mean by tracking. I got a little bit sidetracked there on tracking when we're talking about AB testing. But, basically, yes, we support AB testing. It's not super advanced, but it can feed back into what the advertiser's doing and sort of figure out exactly, like, you know, does 1 ad just strictly perform better? Or no. This ad, even though it performs worse in terms of click throughs, performs better in terms of conversions.
And, really, conversions are what the advertisers care about the most, mostly. Yeah.
[00:35:04] Unknown:
Yeah. And to your point about being careful about what you're discussing and how the words get used, You could definitely tell when you're talking to a developer because they start to split hairs about the semantics of how a particular phrase is being used in the context of a given sentence. Like, oh, okay. I get you.
[00:35:20] Unknown:
Yeah. Yeah. I mean, with tracking, you know, like, tracking can mean a lot of things. And so, like, I've had people tell me, like, if you do cross site request forgery cookies, like, that's tracking. And to be honest, like, cross site request forgery cookies look a lot like tracking. They sort of do. So, you know, I sorta get where they're coming from, but, like, you know, the real answer is how you can't do cross site request forgery protection without tracking in quotation marks. Exactly. You know, there is sort of like a very much like the intent of something versus, like, what it appears to.
[00:35:53] Unknown:
And so for people who want to run their own version of an ad network and use the ethical ad server property. I'm curious what's the process of actually getting it deployed and integrated into their own sites and some of the extension points and customizations that are available for them to be able to make it fit their particular use case?
[00:36:12] Unknown:
There aren't a lot of people who contribute to our GitHub repository for the ad server who aren't, you know, full time employees of ReadTheDocs. But there's 1 person who's, like, very involved in our repository, or at least somewhat involved. And they post on there pretty regularly, and that's exactly what they're doing. They're running their own version of our ad server. The docs are there. They're not the best, I'll be honest, because, you know, it just hasn't been, like, our top priority to make it easy to run your own ad server. But, you know, we rely on our own docs to run a to spin up our own ad server, so they do have to be there. But a lot of things like ad formats and, you know, what you wanna support, like, those are customizable, and we built that that way, you know, for that reason. So a lot of those things are customizable.
And there's a script to just sort of, like, build this into a Docker container, and everything you'd need to run it on Heroku is there as well. We sort of tested out Heroku in some of our early testing setup performance for us just wasn't quite there in terms of, like, the performance that we needed, at least for the price. You talked a little bit about some of the other extension points. You know? I know I told you this before the show, but I didn't really wanna build an ad server when I got to read the docs. Like, these things have to exist either open source or commercially, and it's probably better than anything I could do. And so I went out, I looked at some open source solutions, and I looked at some commercial solutions. I talked to salespeople literally, you know, and I didn't see any that could handle fraud in any reasonable way without just resorting to cookies. You know, like, literally, that was a question that I asked the salesperson.
Okay. So if we don't send you cookies and, you know, how are you gonna handle ad fraud? And there was basically, like, no response to that. And that's probably 1 of the main reasons we built our own, you know. There's a ton of fraud in advertising. Some of it's outright fraud, some of it is just like a very aggressive bot or scraper or scanner or something like that. We've had publishers who try to scam us. Literally, a new publisher, like, who signed up, who was a referral, I'll say that, they were 98% bought and tor traffic. And we can't sell tor traffic because you can't guarantee any geographic targeting.
So, like, if you don't have anything to protect you against this, like, you're gonna get a ton of nonsense. You know, the other option there is, like, you change the name of the game and sell it as a sponsorship or sell traffic on a weekly or daily basis or something like that. But if if you're running like a traditional ad network, you have to have a fraud solution because there's just a ton of it. Absolutely.
[00:38:37] Unknown:
In terms of the sort of publishing workflow for somebody who's running the ad server themselves, it looks like it's currently primarily just the Django admin with maybe a little bit of customization. I'm wondering what the opportunity is for being able to build a different UI on top of that. You may be using something like Wagtail as a more CMS style approach or some of the thoughts that you have as far as the overall user experience for people who might be considering running it themselves or some of the options for being able to make that more friendly to their own marketing people to manage the inventory of the advertisements that they're displaying.
[00:39:13] Unknown:
We've started to roll that out a little bit more to rely less on the Django admin ourselves. And a lot of that was just, you know, as we hire, like, a customer support person. Do you want your customer support person, like, digging around in the Django admin? Not really. You know, the Django admin is dangerous and things can go wrong. And so, like, we've started to do that ourselves and roll out more of these things into, like, dedicated UIs specific to, you know, setting up a new ad campaign or editing a new ad or all these kinds of things. It definitely started out almost entirely as you do that stuff in the Django admin, but now most of this is not in the Django admin.
[00:39:49] Unknown:
As you have been building the platform and building the network, what are some of the most notable lessons that you've learned about the overall space of online advertising since you started working on this project?
[00:40:01] Unknown:
Oh, man. I guess the first lesson is there's a huge disconnect between, like, what advertisers talk about and how developers understand advertising. And I think that sometimes developers, they both think advertising is magical and it will just work automatically, and that's totally not the case. Advertising is not magical and you do have to work and you have to get your targeting right and make sure that, like, the audience is the right fit and all these kinds of things. At the same time, like, sometimes I found and this was my experience, like, I as a developer was working with my marketing team at at a previous company and just sort of saw some of the standard practices in online marketing and was pretty horrified.
You know, you just, like, take your customer list of emails, upload that to Facebook, tell them, hey. Target a similar audience to this. Like, that is standard practice in online marketing, and it's kinda horrifying a little bit. I think there is a disconnect there, and I think people to some degree are waking up to that, but also, you know, the disconnect still exists because, you know, these are usually 2 different teams, you know, the marketing team and the development team. Another lesson is advertising, like, there are people out to cheat or scam you at every step of the way. And I get this from advertisers. They've tried a bunch of other platforms and a lot of these don't work, and so they're skeptical when they come to us. Right? Like, I get it. You know? I totally get it. And I mean every step of the way. I've had publishers try to scam me, you know, the day that Google banned a bunch of certain, like, not all cryptocurrency ads, but basically, like, the scum, the real scum of the earth cryptocurrency ads, the really bad guys.
You know, Google bans a bunch of them. Facebook banned them, like, this was maybe 2019 or something or maybe 2018. We had, like, 6 cryptocurrency inbound, you know, advertising requests that day. You know? Of course, we did not sign these people up. We have run cryptocurrency ads before, but, like, you know, like, if you got kicked off of Google, I'm not gonna run your ads. Right? Like, you're the bad guys. Anyway, I also think, like, advertisers, this isn't necessarily a bad thing, but they will always ask for more. You know? More data on users, more targeting options, more niche targeting. How can I target, you know, an even smaller audience, more tracking? And, like, we committed ourselves to exactly what we would do and what we wouldn't do, so that's really clear. At least, you know, I think it is. I still get asked to set up tracking pixels usually, like, sometimes not in those terms. They'll, like, have another term for it. Beacon or something like that. I get asked that at least monthly despite branding ourselves as privacy focused and all that. Like, I still get asked for it. Like, when are we gonna implement beacons for conversion tracking or for conversion attribution or something like that? And what they really mean is they want tracking pixels.
So I totally get how the slippery slope of listening to your customers, which in most businesses, like, you wanna listen to your customers. I totally get how, like, listening to your customers led to the current broader ads ecosystem. I don't wanna, like, talk negatively about these marketers or advertisers. Like, these are my customers. I like these people. I think in some cases, they just don't understand that some of these really powerful technologies can be used for evil.
[00:43:04] Unknown:
Evil in quotation marks. And the note that you made about the sort of specific advertisers and publishers that you're working with also brings in the broader question of ethics where in the immediate sense of ethical ads, it has to do with not collecting a bunch of personal data and respecting privacy. But then there's also the broader case of ethical ads in terms of what advertisements you're actually displaying, the advertisers that you're working with, the publishers that you're working with. And I'm wondering how that philosophy has played out and how you're able to kind of codify that more specifically for the network that you're running.
[00:43:39] Unknown:
Yeah. Right now, we're small enough where literally, you know, I can look at all of the ads that are running across our entire network. And for publishers, you know, the number is it's high. It's not so high that you can't just sort of, like, get a good grip on everything that's running. I do think, you know, maybe not when we're twice as big, maybe not when we're 3 times as big, but maybe when we're, like, 5 times as big, that's gonna stop being true. And we're gonna have to do a lot more in terms of automation to, like, make sure that the ads that get uploaded are good. You know? They're not scammy. There's not animated GIFs of, you know, craziness. Right? Like, this totally happens in the ad world, and we have to be cautious of it. You know? And that's not because our advertisers are bad people. You know? It's a scammy advertiser.
We usually don't even sign them up. You know? Like, that's okay. I've totally told advertisers, like, I don't think you're the right fit for us right now. You know, there's nice ways to say that in a way that, like, you know, I don't think we're gonna work for you. I don't think this is gonna be the right fit. You know, there's nice ways to sort of, like, steer an advertiser out or steer a publisher out of not being the right fit. But I think, you know, in the future as we scale up, you know, when we're about 5 times as big, I think that that's gonna be harder to do. But right now, I can totally get a grip on everything, and and everybody in the team can. You know? Everybody sorta knows, here's all the advertisers, here's all the publishers, here's what's running.
[00:45:03] Unknown:
And in terms of either the ad network itself or the technology that you're using to power it, what are some of the most interesting or innovative or unexpected ways that you've seen it all used?
[00:45:12] Unknown:
I wouldn't say that this was particularly novel, or it's not novel anymore, certainly. But when I first started, I sort of categorized our advertisers into buckets. You know? Are they, like, selling a SaaS product? Like, what are they selling? Are they selling infrastructure? And I was kinda surprised, but we were doing a lot of ads around hiring. And this was a surprise to me at least because I didn't sort of think of this. It made sense. Like, you know, if you're an individual contributor, somebody who's, you know, probably the most likely person to be browsing, read the docs, you're the decision maker in terms of where to work. And in advertising, like, getting your ad directly in front of the person who can make that decision, that's exactly what you wanna do. We did actually a fair amount of, like, customer development, talking to a bunch of hiring managers and recruiters to see if this would be, like, a direction that we should point the business in. You know, maybe build our message in terms of, like, where the right place to advertise to developers to hire them.
I think Stack Overflow kind of has a bit of a good message there. Like, I I've heard positives, I've heard negatives about Stack Overflow in terms of advertising, but that is 1 of their big niches. So we were thinking, oh, could that be something that we could do? And there's definitely, like, a disconnect between advertisers, how advertisers talk in terms of, like, CPC or CPM, and hiring managers are talking in terms of, like, how many qualified candidates did I get or how many, you know, maybe not qualified candidates, just total candidates or something like that. There's totally, like, a separation in terms of, like, what the products that hiring managers use to sort of measure these kinds of things and and what advertisers use. So there's a big disconnect, but I think there's something here. I'll be honest. I haven't figured it out. Like, it's not a huge part of our business today. And CodeFund, you know, I talked about them. They were sort of another business in a very similar space doing privacy focused ads. They were also looking at this too, and they couldn't make it work either, which is probably a good indication that it's harder than we thought it was. You know, it's probably not just some business that you bolt on to your existing business or something like that. But I do think that there's something here, you know, as a way to just reach people who can make the decision on, you know, where to work and learn about new jobs and things like that. You know? So, like,
[00:47:20] Unknown:
I do think that there's something innovative there, but, like, we haven't hit it yet. In your own experience of building the technology and building the network for ethical ads, what are some of the most interesting or unexpected or challenging lessons that you've learned in the process?
[00:47:33] Unknown:
A lot of these challenges are gonna be, like, marketing challenges. I do worry sometimes, like, I sound like this marketing and salesperson on your podcast when, you know, my background is all in development. Right? I'm a developer by trade, but I talk like a marketer even though I'm probably bad at it is the real answer. So 1 issue we've had and we continue to have is for a long time, we were advertiser limited. You know? We had a bit more traffic to sell than we were selling every month. We dialed in our sales, and we focused our message on getting everything right for advertisers. And literally this worked. You know? Like, now I could probably sell, you know, twice as much to advertisers as I am now. Maybe not quite that much. Maybe, like, 50% more. And I'm publisher limited, so it's sort of like a totally different situation.
How do I, like, revamp our marketing message to work for publishers and make it work for both somehow. And switching that and getting our message just right for publishers and just aligning things just right, it's hard. You know? Like, I know that that sounds like a real sales and marketing y type answer, but that's sort of the real answer. It's like, this is a sales and marketing kind of business in a lot of ways. Yeah. And developers
[00:48:40] Unknown:
are generally, you know, allergic to the idea of sales and marketing. And, you know, I just wanna dig into the code and it's purely technical. But without sales happening, there's nobody to pay your salary to actually spend time on the code. So it's an important problem.
[00:48:54] Unknown:
Yeah. Exactly. It's definitely underrated. Developers who know a little bit about sales or marketing, like, these are valuable.
[00:49:01] Unknown:
As you continue to iterate on the technical underpinnings of the system and grow the network, what are some of the things you have planned for the near to medium term future of the Ethical Ads platform?
[00:49:11] Unknown:
I think I talked a little bit about how we could have, like, a SaaS offering. That is in the works to some degree. I think I didn't mention it, but, like, the PSF, for example, they wanna run something for their sponsorship. They wanna just serve their sponsor logos. You know, they're not serving ads per se, but these are basically sponsors who are sponsoring the PSF. And they talked to us, and they were thinking about running the ad server, you know, on their own network. And we basically told them, we'll run this for you. If you go to PIPI and you scroll to the bottom of any particular project on the left side, like, you see a little thing from us about, you know, this is some sponsor who's, you know, we didn't upload this little sponsor graphic, this is something that the PSF did. And so, like, literally, we had a customer, the PSF in this case, customer in quotation marks. They were sort of like, yeah. We want what you're offering, but, like, we don't want your ads. We want basically the ability to serve images and all the, like, reporting around that and, you know, in the future, the targeting around that.
And that's something that we're working on. I think there's something interesting there. I also think there's a lot of like, a lot of things just have to be automated. Right now, a lot of things are just not automated. We talk to every advertiser before we sign them up. And I think over the next probably 6 months or so, I wanna get it where things are so automated that, you know, people can run a $50 campaign or a $20 campaign instead of, like, a $500 campaign being the minimum. I want people to do that, but there's a lot of things that have to change there. You know, you have to get not just your billing a 100% correctly, but you wanna sort of vet these advertisers a little bit. You don't want them to be uploading ads directly into live without any sort of, like, auditing or anything like that. So, you know, like, this is something that we have in place when we we talk to every advertiser. As you make this automated, you have to get this dialed in right because, you know, part of what we're selling is we're a premium ad network. You know, we handpick our publishers. We handpick our advertisers. You're not gonna see any nonsense ads. Your ads aren't gonna be shown on any nonsense sites.
So, like, we wanna get that just right, I guess, while also, like, lowering the barrier to entry for these advertisers so that they can run a very, very small campaign. Because as I said, a lot of these advertisers, like, they've never heard of us. Are we a scam? Like, they don't know.
[00:51:24] Unknown:
Literally, the only way to find out is try it out. Does it work? I wanna lower the burden on that as much as possible. Are there any other aspects of the overall work that you're doing on the Ethical Ads Network and the technology that powers it and the relationship with Read the Docs that we didn't discuss yet that you'd like to cover before we close out the show?
[00:51:43] Unknown:
Not as much right now. In the earlier days, there was probably a lot more, you know, because we had a lot of the same problems, you know, as the GDPR was rolling out. Like, I sort of worked on some of the GDPR stuff on read the docs as well. And, you know, read the docs for a long time didn't even have a privacy policy and getting all this stuff in place. So I worked a lot on that in the earlier days, like, right when I first got hired. I think read the docs, You know, as I mentioned, it was really shoestring. When I got hired, there were I think they just hired their 3rd person. So there was just really 2 people working full time on it, and then they just hired a 3rd right before I got hired. So it was, like, literally a really, really small team and just a bunch of things around security and privacy. They just weren't quite in place yet. Now I'm not saying read the docs was, like, massively insecure or anything like that, but it the stuff wasn't in place yet. And so a lot of that has been at least somewhat dialed in. I was responsible for some of it. I don't wanna take all the credit. And a lot of that rolled back into the ad server when we sort of built and launched that product. So that was really good. Now I think the things flowing back from read the docs or from the ad server towards read the docs are more on the sales and marketing side. You know? Like, how do we launch landing pages? How do we iterate quickly on landing pages? How do we position our pricing pages and things like that? Those are the kinds of things flowing back the other way now.
[00:53:02] Unknown:
Or maybe be a publisher that you're looking for, I'll have you add your preferred contact information to the show notes. And so with that, I'll move us into the picks. This week, I'm going to choose another podcast I started listening to recently. It's from the change log network called Ship It, and it's focused on the sort of DevOps and software delivery aspects of the job. So definitely worth checking out. It seems to have some pretty good guests and topics so far. So with that, I'll pass it to you, David. Do you have any picks this week? Cool. Other than, like, support your local Python meetup and stuff like that, you know, like, Python meetups have been they've been hurt by the pandemic because, you know, a lot of them were people getting together and that energy sort of, like, makes everybody,
[00:53:42] Unknown:
you know, feel better about being part of a group and everything like that. It hasn't translated very well to the Zoom world, so support your local meetup group. In terms of other picks, I'm just gonna shout out some random, like, Python projects that I think are cool, and we use them either on the ad server or on some other things that read the docs or unethical ads. I'm gonna talk about or just not talk about, but just briefly mention, like, Qlik, the CLI tool for building CLIs from the pallets project. I think that that's fantastic. There's a tool called user agents, which is for parsing user agents. This lets you take something that's a big long user agent string, and it you can get this to, oh, this is Chrome on Linux or, you know, something like that. 1 of the other ones that I just discovered, I thought this 1 was really cool. It's called TLD, and it's for parsing domains and separating them out into, like, subdomains. It actually validates the top level domain. You know, it can sort of figure out the dotco.uk is 1 as opposed to, you know, dotuk being the TLD and dotco being, I don't know, the domain, I guess, if you parse this wrong.
So, you know, that project was just really cool, and it validates all the TLDs and stuff like that. I'll shout out those projects this time. Alright. Well, thank you very much for taking the time today to join me and share the work
[00:54:54] Unknown:
that you're doing on ethical ads. It's definitely a very interesting project and an important piece of Python in the developer community. So appreciate all the time and energy you're putting into that, and I hope you enjoy the rest of your day. Thanks. You too.
[00:55:07] Unknown:
Thank you for listening. Don't forget to check out our other show, the Data Engineering Podcast at data engineering podcast dot com for the latest on modern data management. And visit the site of pythonpodcast.com to subscribe to the show, sign up for the mailing list, and read the show notes. And if you've learned something or tried out a project from the show, then tell us about it. Email host@podcastinit.com with your story. To help other people find the show, please leave a review on Itunes and tell your friends and coworkers.
Introduction and Guest Introduction
David Fisher's Background and Python Journey
Ethical Ads and Read the Docs
Technical and Organizational Requirements for Running an Ad Network
Building a Two-Sided Marketplace
Privacy-Focused Advertising and Challenges
Focusing on Developer Audience
Ad Performance and Attribution
Open Source Ad Server and Technical Implementation
GDPR and Privacy Regulations
Integration Process for Publishers
Tracking and Measuring Ad Performance
A/B Testing for Ads
Running Your Own Ad Network
Lessons Learned in Online Advertising
Ethics in Advertising
Innovative Uses of the Ad Network
Challenges and Lessons Learned
Future Plans for Ethical Ads
Closing Remarks and Picks