The Stack Overflow Podcast

Covid vaccine websites are frustrating. This developer built a better one.

Episode Summary

Olivia Adams is a Massachusetts based full stack developer and engineering manager at electronic health record company Athenahealth. After seeing older family members struggle with complex and unreliable vaccine sites, she decided to build one herself. It has exploded in popularity and may serve as a model for other regions.

Episode Notes

It was a pandemic, Olivia was on maternity leave after giving birth, and she also had a toddler to take care of. Somehow she still managed to build a website, macovidvaccines.com, that provided far better service than what was available through government and private industry.

You can find out more about Olivia on the sites below. 

Twitter

Website

LinkedIn

Episode Transcription

Sara Chipps I was gonna ask you how you built it, like, how did you find that information? And how you decided to display it?

Olivia Adams Yeah, so for some of the websites, you could just, the Network tab on Chrome is my best, best friend, we go out on dates every Saturday.

SC That's a great best friend.

PF Ah, you hacked the matrix! You got in there! [Olivia laughs]

[INTRO MUSIC]

Ben Popper This episode is sponsored by CircleCI. Designed for modern software teams, CircleCI's continuous integration and delivery platform helps developers push code with confidence. Trusted by 1000s of companies from 4 person startups to Fortune 500 businesses, CircleCI helps teams take their software from idea to delivery quickly, safely and at scale. Visit circleci.com/overflow to learn why high performing DevOps teams use CircleCI to automate and accelerate their CI/CD pipelines.

BP Hello everybody! Welcome to the Stack Overflow Podcast, a place to talk about software coding all thanks, technology. I'm Ben Popper, Director of Content here at Stack Overflow. And I'm joined as usual by my wonderful co-hosts, Paul and Sara. Good morning y'all.

SC Good morning!

PF Good day! Good day! Who knows when we're listening?

BP Oh, crap. I did it. Sorry. Sorry. Sorry. Whatever global time it is, morning to you. Good. I realized I introduced myself now with the title and I don't give you to the chance to plug. So if you want to do a personal plug right up front instead of just at the end. Now's your chance.

PF I'm Sara Chipps and... buy Jewelbots! 

BP Yeah, great.

SC I'm Paul Ford. And I have a lot of minions.

PF There we go. Minions? No! We're peers.

BP At the beginning of the COVID-19, we had a few things that we discussed. The big one was COBOL and how the unemployment systems had shut down. And sort of the second wave of that 'the websites can't handle it' was when the vaccine came online and people were able to sign up. So there are many stories for many states, just people in intense frustration. I think my boss ended up getting on the news after he tried to help his dad through like Eventbrite or something. Someone was just like, go on Eventbrite and sign up. You know, it was like really a mishmash of stuff.

SC What? Wow! Crazy. Worst party! [Ben laughs]

PF No, you know, Evenbrite's good, its got that, it is a scalable platform for, you know, events where there are, where the events are a rare commodity. And ticketing has to be prioritized, right? All that queuing system stuff is really, really hard to pull off. 

BP Here in America, we do vaccines through Eventbrite, and you pay for it through a GoFundMe, that's just what we do. But I heard a great story on I think it was on public radio. And I want to introduce our guest today, Olivia Adams. Hello, Olivia! Welcome to the show.

OA Hi, thanks so much for having me on.

BP So the story as I heard it, and feel free to correct this, was sort of along the lines of frustrated developer at home during the pandemic, taking care of two kids while also juggling with other stuff you got on the vaccine site, you thought it was a mess. And so you made your own. And it has become very popular in your state of Massachusetts. Tell me a little bit. Tell me in your words, what happened? 

OA Well, I think that you had probably the best summary that anyone has ever given for that I just sound like really, like typing very fast and angry, just like, "I'll fix this myself!" I wasn't quite that upset. But yeah, so my mother in law is a dental hygienist. And she became eligible, I guess, like, maybe like a month and a half ago now. And she was telling me that it was like kind of a pain to figure out how to sign up for an appointment. And then she had to do the same thing when her father became eligible, like a week later. And so I looked online, I was like, well, what's this that everybody's freaking out about? And I saw what a lot of states have, which is just like a list of all of these different websites, you can go to, one for Walgreens, one for CVS, one for this health center, one for that health center. And all these websites, make you fill out like four forms, with all of your personal information. And then when you're finally done, they say, "nothing available, have fun, try somewhere else." And it's just a huge time sink, not to mention, like you have to know where to go and how to navigate that complicated system. And so I was like, there must be something that we can do like as software developers to make this a lot easier. And so that's why I started working on it.

PF You know, we've been actually, my wife is literally downstairs right now, we've been calling and helping older and more vulnerable folks in the community, just kind of fill out the website. And then we print out their Vax tickets and mail them to them. Right. Like, it's, these systems are so hard for people. Right? So you made the decision to do this, like, where do you start? Who are you helping? And what? How are you kind of making decisions? And what did you start to build?

OA Yeah. So when I saw this, like, the immediate problem at hand was that people were having trouble figuring out how to navigate the system. They didn't know where to go to sign up, they couldn't tell what places had availability, and they were spending hours just to find out that there was none. So I thought, how can I solve this, like, there must be a way that we can figure out like in real time, what places have availability and just like put it in one website. So that's what I did. And that helps with some of the accessibility issues that we're seeing just broadly because especially older citizens who don't know how, older residents rather, that don't know how to navigate all these different websites, like it's much easier for them to say, okay, let me scroll down this list, find somewhere that's close to me and click "sign up" and then I can figure out how to fill out this form and things like that. Or I can get a family member or trusted neighbor or friend to do this for me. But now, like, my website is a lot less useful because there's so much competition right now, at least in Massachusetts for these for these slots. And so I'm what I'm trying to do now is partner with an organization that's doing basically what you're doing, Paul, and helping book appointments for people and sending them their confirmation information, because there's just there's still so much work that needs to be done.

PF No, I think this is real. Like it's we're in this funny world where a website is not actually, even a good accessible website is actually not the peak of accessibility, right? 

OA Absolutely. 

PF And this is this is where government is good, like government can mail a card to every citizen if it so chooses, or, or make phone calls or things like that. 

SC I was gonna ask you how you built it, like, how did you find that information? And how you decided to display it?

OA Yeah, so for some of the websites, you could just, the Network tab on Chrome is my best best friend, we go out on dates every Saturday.

PF Ah, you hacked the matrix! You got in there! [Olivia laughs]

OA Yeah, so we, you know, I just check and see like, how are the websites themselves displaying availability, quite a few have API's that if they're not public, you can at least like, navigate to the website, and then you know, and then ping the API. So that's how we do a lot of it. And some of the websites are not so great. So I don't know if y'all have heard of the company PrepMod, they do a lot of the like state sponsored locations, both in Massachusetts and other states across the country. And they do not have an API, everything's rendered on the server side, and they just spit out some HTML. So I have to use an actual like scraper, we're using node and puppeteer to grab information from those kinds of websites. And so of course, you know, they change a class name or like a div to a paragraph, and then everything breaks. And you have to like, hurry up and try to fix it again, it's fantastic.

PF xml was supposed to solve this, but everyone had to do their JSON, and then their class names, we could have semantic data flying around being styled in the browser. But anyway, that's not really what this is about.

OA Yeah, people seem to not be prioritizing--

BP Semantic web the dream will never die! 

PF Just some, you know, nice semantic structure in our in our documents would have saved--you know, again, not what this is about. 

OA Kind of is though.

PF It is a little bit, right. So, so actually taking them like healthcare systems, big platforms, sometimes you can go inspect the elements, see the API and actually see the JSON that's output and back it out. So this became a you know, this happened and it was public. Did you get any feedback from people because you're scraping you're going in and kind of helping yourself to the data that they kind of didn't want you to go get right, like, how did you negotiate that?

OA My mantra is ask forgiveness, not permission. So I mean, data itself, like that is public. So so there's not much that's kind of shady or dangerous and that way. And the other thing is, of course, we have public good on our side, right? Nobody's going to be upset with you like, CVS isn't going to come after me and be like, "You're making it easier for people to book appointments! Like don't do that!"

PF Well you're not creating a private booking system, right? 

OA Oh, yeah, absolutely. 

PF You're creating, you're trying to improve and create a public utility. So that, yes. I mean, I think everybody's gonna be like, okay, benefit of the doubt here, right? It's interesting, though, because you can, like, you're right, and I feel that the platform's are open, but it gets, it stays gray for too long, right. Like this is open data, it should be possible. The fact that I'm even asking this question is, is sort of ridiculous. But, here we are.

OA Yeah, and some of these websites do have like, bot detection and things like that. And you just kind of wonder why? But, but yeah, but those big companies don't want to talk to little me. 

PF So you know, why? Cuz it's, it's because there was a governance meeting, and there's the security audit. And they're like, well, we can't allow unlimited usage of this API, and people will throttle it. And you know, just like you've been in those meetings, right. And then they spackle that on and and now Olivia has a whole afternoon of unpacking it ahead of her.

OA Yeah, pretty much.

BP So Olivia, let's back up just a little bit. Can you tell us about how you got into computers and software development? Like what brought you to the place you are now?

OA Yeah, a bunch of like, kind of happenstance events brought me to web development. When I was applying for college. I looked at a list of majors and I thought that computer engineering sounded fun, even though I had no idea what it meant. 

PF I mean, who does? When are we gonna figure that one?

SC Like, if I didn't know what it meant, I kind of like I think of it the maybe it's like the Shining Time Station engineer, you know, or you get to like be on the train. And be friends with all the trains.

OA Yeah, but I picked that out. And then when I went to school, I, you know, started taking actual like hardware classes and doing some like embedded software. And I really, really liked it. I just like love doing that kind of like low level problem solving. And then it came time to look for a job. And I ended up having to decide between two companies one was doing what I majored in, and the other was where I work now at Athenahealth, which is all web development for health software IT and the only reason that I had applied to Athena because a friend of mine, who was in college choir with me, worked there and convinced me to apply even though they didn't have like a position that I was interested in. But I fell in love with the company and I decided I'd give it a shot and I'm still there six years later, and the skills I've learned obviously has allowed me to do a ton of really cool stuff, like make this website so I love it. 

PF You still singing? Wait, wait, wait, we're not done with college choir yet. Cause I know college choir is one of those things, it doesn't always stop when college stops.

BP Paul, this is your chance to tell us about your acapella group.

PF No, no. We're talking we're talking about Olivia.

OA Now we could about my acapella group. You're right, it doesn't stop. I actually I actually helped started my acapella group at Athena, which is had a short life. But it was fun while it lasted.

PF See, I know nerd culture. 

BP Once you get the bug, you get the bug.

PF Sara and Olivia are actually actually real engineers who know how microchips work. And I spackle together documents, but nonetheless, like I know my nerds. Okay, good. So we're still singing.

SC Yeah. How did you work respond to this? I mean, it's healthcare related. It seems like a neat thing to work on. 

OA Yeah, they've been incredible. So I'm on Week Four of paid leave after maternity leave. So right before I supposed to come back. We all hopped on a call my manager, my managers, manager and some other important people, and they're like, you're doing great work. We want to support you, like, take a little bit of time to continue working on this if that makes sense.

SC Cool! Oh that's the best!

PF Oh my God, it's the opposite story of all other stories.

SC That's the best reaction possible!

OA I mean, I'm sure they're happy like that they're getting like a little publicity out of this too. And like, it's a good story. And everybody's very, like excited that I worked there and that I'm doing this work. And now, starting next week, I'm going to take four weeks unpaid leave, I got some money from the GoFundMe. So I'm going to pay myself so I can try to like, get this running on its own and let a lot of volunteers help out. So I can go back to work. 

BP Very cool. Yeah, this, this brings us to the next phase of every podcast where we talk about the challenges of maintaining a successful open source project.

PF Well what's your stack?

SC Yeah! What's your stack?

BP Handing it off to the public.

OA My stack is, so I'm using an s3 bucket for JSON no database currently. 

SC Yeah, my favorite!

OA Yeah, yeah, we need to get a database soon. So we're working on that currently. And then I'm using node, puppeteer for scraping and then a react front end. So all in AWS, I'm liking it a lot.

PF This is for me, the most confusing thing when I talk to people who are doing engineering at scale these days were these days. Where it cuz it's like, yeah, I gotta get a database someday. gotta figure and I'm like, What? Why? Like, that's how--

SC Where's this magic information? Just living? 

PF Talk about that for a minute, right? Yeah, exactly. Right. Like, okay, you just said something that actually kind of blew my mind, which is now I know what we need to figure out what to do with our data, like months in, successful launch. People use this. It's working and scraping, gathering lots of data. Talk a little bit about your data layer, because I bet a lot of our listeners are also going like, huh...

OA Sure, I think that it's a great way to get things started if you have data like mine. So every time we run a scrape, we do that every minute, we just output a giant JSON file with all the data that we grabbed in a semi structured format, we try to keep things consistent. And initially, what I had was just one JSON file in an s3 bucket. And every minute it will just get overwritten with the most up to date data. And then the developers that were working with me were like, Olivia, this is not sustainable. This is kind of a bad idea. In the long term, we should at least store the data as well. So not only now, are we rewriting the same JSON file every minute, we're also storing snapshots. Each time it runs with a timestamped JSON file is well.

PF You have structured data that can be readily interpreted by your app. And, you know, shared with the its audience. I mean, it's not that is kind of a database. It just doesn't allow queries. It's just, you know, okay, everyone can relax. I can relax. Okay, good. 

SC Sometimes you don't need a query.

PF Yeah, sometimes sometimes, but not. Now. When you talk to most developers, most are like we're going to need to make sure we have BigQuery up there in front. Alright, so that is good and hacky and has worked really well talk a little bit to just about the GoFundMe. So like you brought together and you just mentioned other developers, right? How did a community cohere? Like, where do people show up from to help? Because I think when people take that first step, they wonder, like, who's going to help me? What am I going to do?

OA Yeah, so my story is unique in that everybody came to me, and I was not initially looking for help. You know, I started this as one of the many side projects that I start for a weekend, don't intend on ever going anywhere with it, and it blew up. And so, you know, by the time like, the media got hold of it, which was like 12 hours after I posted about it on Twitter or something, which was like my first time using Twitter, by the way, so now I'm in love. 

PF Oh, yeah, give it time.

OA I was just getting emails left and right, though, like everybody wants to help out with this, right? Like, who wouldn't want to help out with a project like this if they had any spare time. So not only that, I received emails from, like over 50 developers in Massachusetts, like within like 48 hours, I also heard from so many people who didn't have tech skills, so I wasn't able to leverage them at least immediately. But they just wanted to help out however they could everybody's sitting at home twiddling their thumbs thinking, what can I do to make this make this hell? Like a little easier and faster?

PF How did you coordinate them? Because suddenly, you're organizing, you have a you have a company on the side that doesn't have any revenue and fulfills a necessary Public Health Service, and a large group of volunteers. So that's a fun position to be in. 

OA Yeah, it's great.

PF What, what, how did you organize that, because that's a lot of work.

OA Well, one of my strengths that I play on a lot at Athena, so I've gotten a lot of practice with it is team leading. So I've been like a scrum master and tech lead for many years, many years. For me, it's like three or four. But I've done it for a while. And so I'm used to corralling developers, and like kind of putting my product management hat on a little bit. And managing lots of opinions, putting pins in discussions that go on too long, as happens a lot when you have a lot of developers in one room. And, you know, they also helped me organize as well. So like, I think a few of us had like a Zoom call. And they're like, Oh, we should set up a Slack workspace. And so we did. And we should use these tools and things like that. And so, you know, by collaborating just quickly, with a few of them, we were able to set up a nice structure for everyone to work under.

PF You know, that is critical. Sounds like you had a group of people who instead of saying 'we should' said 'I will', and that that is unbelievably important, right? 'We should' is dangerous, 'we should' is like--

SC Or 'you know what you should do'?

PF Yeah. 'What about if we--' 'Well, have we really considered...'

OA I'm all about action items and assigning them to people. So like, Oh, you think we should do that? Great. Who wants to do it? And I'll wait.

PF Take your Stack a little bit meta, right? Like, I'm guessing. So Slack is a tool you were using. Any other tools that were really that stood out? I'm guessing GitHub.

OA Yes, absolutely. GitHub is is, you know, I'm using the project board to help with prioritization and trying to keep track of things that's working alright. Most of our conversations are done in Slack. But I'm trying to keep all of our decision makings in GitHub and the GitHub repos as well. CI/CD has been key, just because you don't know what other people's setup is. So like making sure that the code is formatted correctly, and that all of the linting rules are passing. Like you just can't trust anyone to be running that locally, obviously. So making sure that that's all set up. And continuous deployment has been clutch as well, because I'm busy working on a lot of stuff. And letting things deploy whenever they're ready, instead of waiting for me is really important.

PF What do you use for CI/CD?

OA I use a bunch of random GitHub actions that other people implemented for me. [Olivia laughs]

SC That's great!

OA I just started getting pull requests, like, Oh, I added this thing. I'm like, great. We need that. Thank you. 

PF The whatever works here is also like whatever people are getting to vaccine appointment. Did you hear from the state? Did anyone reach out?

OA A few days after I went live, it was brought up in one of the governor's press conferences. One of the news reporters asked him about it and he was like, "We'll talk to her, give us her information." And so I had a meeting with a couple members of the state's Coronavirus Command Center Task Force. And they were like, "Oh, we're making a website almost exactly like yours. And it's going to go live this Friday. And maybe we'll talk to you after!" and I didn't hear anything after. The good news is that like it's nice to have a site like mine that's like state sponsored and like on the official website. The bad news is that it's doesn't seem to be as robust and it's not hooked into as many locations as mine, so, but I'm glad that they did it. 

SC Wow! You're like, "Oh, adorable, you guys tried this."

PF No, no, no.

OA I don't want to like push it by the wayside. I know that they like paid a lot of money for it.

PF I mean, it's two different worlds right?

SC Yeah, it is two different worlds.

PF It's not just that, it's one thing I think we've all learned from the vaccine, you know, you know what I remember I remember hearing like, well, there's gonna be two vaccines or you know, there's what do we need two? Shouldn't we just have one that we make more of? And then you start to realize that unlike the principle of don't repeat yourself in computing in programming where you're supposed to do everything exactly one, and there's one API and one market leader, this is a situation where lots of redundancy is really good. 

SC Yeah. Yeah, I think I've signed up for four sites in New York City that will help me. Yeah, like, and they all have helped me in a different way. One, one will tell me when there's appointments, one will help, you know, like, and even some of them are redundant. And that's so helpful, because I know they all have different info.

PF You know, it's like, it's not competition. It's like they're there. If they're getting people to vaccines, and you're getting people to vaccines, then something's working.

OA Exactly. We're all fighting this fight together. So I mean, collaboration is certainly key. But like, second best is just everybody doing whatever they can, like just throwing all of their stuff out.

PF I mean, you're looking at two totally different cultures of getting stuff out. Right? Like there's one, which is it's not just governance, it's government, and a set of rules and principles and policies and relationships that are that people are following. And then there's you, right, and like, you found some folks on Twitter, and it's like, let's go, let's get this done. Let's get this out. We're not going to bring those two cultures together in the middle of the pandemic and figure this out.

OA It's too bad, though. 

PF Yeah, it is too bad.

BP I like what you said, though, that that people aren't trying to stand in your way that there's a sense of a shared mission and like a collective need to do this right now. And so that, you know, even if you're not working together the way you want, there's not too many roadblocks. 

OA Exactly.

SC Well, I want to know, I want to know, has your mom got vaccinated?

OA My mother-in-law, yeah, yeah, she did get vaccinated, and so did her father. And so they're all set. And my mom, actually in Florida, they're getting their first shot next week. So that's very exciting.

SC Oh, awesome!

BP Hooray!

OA I'll be the last one to use my own website. So that'll be fun.

SC This is very developer where, like,you build something that helps everyone and it works for your family, too. That's really nice. 

OA Yeah, it's awesome.

BP Yeah. Very developper. Works for everyone but you.

[MUSIC]

BP Thank you so much for coming on, Olivia. It is that time of the episode, I'm going to read out a lifeboat. Shout out to somebody who took a question with a score of negative three and got it up to an answer of 20 or more, but I don't see any new lifeboats today. The last one was awarded March 4th. Yeah. So if you're listening to the podcast, we need a few lifeboats. Get on there. Otherwise, we'll have to find some other badges to read.

PF We literally have someone on here just helping the community and then--

BP That's right. Instead, I'll point out that Beeple's NFT art just sold for $69 million.

SC Maybe we'll do an episode on my NFT art.

BP Yeah, how's your NFT game going? No? Okay.

SC Good, I just bought a Deadmau5 NFT.

BP Sweet. Sweet. 

PF Well, can I share a really annoying world building question from Stack Exchange?

SC Yes.

BP Definitely.

PF I like when people ask me, "How can the intelligence of a super intelligent person be assessed?"

BP Hmm. 

SC Is it touching their nose with their eyes closed? [Paul laughs]

PF I just feel anyone who asked that question is like, kind of hinting a little bit like, you can tell? Can you? How could you? Can you tell? It's like, whenever you're on Hacker News, and they start talking about, you know, like gifted and talented programs, and you're like, ugh, no, no, stay away.

BP Have you seen my philosophy degree? 

PF Exactly. 

BP I am Ben popper, Director of Content here at Stack Overflow. You can always find me on Twitter @BenPopper. And you can always email us podcast@stackoverflow.com

OA My name is Olivia Adams. I'm a software developer at Athenahealth. And I'm the creator of macovidvaccines.com. If you want to reach out macovidvaccines@gmail.com or my Twitter is @livgust.

PF You did everybody a favor by not making them spell Massachusetts. I feel that was your first good user experience decision.

SC I'm Sara Chipps, our Director of Community here at Stack Overflow and you can find me on the blockchain at @SaraJo.eth

PF Oh God, we're doing that now?

BP Yes, go buy some of Sara's digital art.

PF I'm not ready. I'm not ready. My name is Paul Ford. I'm a friend of Stack Overflow. I'm the cofounder of a company called Postlight. Check us out online and come work for us. We're growing.

BP Paul, where can people find your boring index funds if they want to invest with basically no return?

PF Yeah, just type Vanguard into Google. I'm not even, no one's even paying me except for my index fund which pays me reliably over time.

[OUTRO MUSIC]