skip to content
Podcast cover art for Open Source Education with Monica Powell
Podcast

Open Source Education with Monica Powell

Monica Powell discusses React frameworks, open source contributions to Redwood, building inclusive tech communities, and creating free educational content.

Open .md

Episode Description

Monica Powell discusses React frameworks, open source contributions to Redwood, building inclusive tech communities, and creating free educational content.

Episode Summary

In this episode, software engineer Monica Powell joins the FSJam podcast to share her journey across the React ecosystem, from Gatsby to Next.js to Redwood. The conversation opens with a comparison of these frameworks, touching on the strengths and trade-offs of Gatsby's plugin system, Next.js's flexibility with data fetching and server-side generation, and Redwood's streamlined full-stack development experience. Monica discusses her work at Newsela, an edtech company that tailors reading content to individual student levels, which leads into a broader conversation about algorithmic bias and web accessibility. The episode shifts to community building, where Monica describes founding React Ladies, a meetup for women and non-binary React developers in New York City, and explores practical strategies for making tech events and hiring more inclusive, including the use of speaker riders and targeted outreach to underrepresented communities. Monica also walks through her contributions to Redwood's structure package, explaining how she navigated the codebase's abstract syntax tree to add route diagnostics and VS Code integration features. The episode closes with her philosophy on creating free, open source educational content and the importance of providing full code context alongside tutorials.

Chapters

00:00:00 - Introductions and Framework Favorites

Monica Powell introduces herself as a software engineer, open source contributor, community organizer behind React Ladies, and educator who writes tutorials and teaches on egghead.io. She sets the stage for a wide-ranging conversation about her work across multiple areas of the React ecosystem.

The hosts quickly dive into Monica's experience with different React frameworks. She shares her history with Gatsby, crediting it with teaching her GraphQL, while expressing excitement about Next.js's server-side capabilities and Redwood's approach to simplifying full-stack development. The discussion reveals how her framework preferences evolved as she explored what each tool does best.

00:04:19 - Gatsby Plugins and Framework Philosophies

Monica evaluates the Gatsby plugin ecosystem, noting how plugins accelerate development but can introduce friction when they conflict or aren't designed for broad use cases. She distinguishes between community-maintained and officially maintained plugins and highlights how the plugin system fosters open source participation around Gatsby.

The conversation broadens into how different frameworks handle data sourcing, comparing Gatsby's unified plugin approach with Next.js's more flexible, framework-agnostic patterns. Monica explains why she values Next.js's transferable patterns, since the skills carry over to any React application rather than being locked into one framework's conventions. The hosts also briefly touch on Vue and Svelte, with Monica sharing her dabbling experiences.

00:10:50 - Exploring Other Ecosystems and Edtech at Newsela

Monica describes her brief explorations of Svelte and Vue, including attending a Svelte meetup and building a small site with Gridsome, a Vue-based Gatsby equivalent. The conversation then turns to her work at Newsela, an edtech platform that adjusts article reading levels for individual students within the same classroom, making content more accessible regardless of background.

Anthony's background in education sparks a discussion about the promise and pitfalls of using algorithms in education, particularly around bias. Monica references the "Awesome Falsehoods" GitHub repository to illustrate how developer assumptions about names, geography, and cultural norms can unintentionally introduce bias into software. The group also touches on accessibility in web development and Redwood's ongoing efforts to improve it.

00:19:16 - Content Creation and the Egghead Experience

Monica traces her path into content creation, from early conference and meetup talks to writing tutorials and eventually producing screencasts for egghead.io. She explains how Egghead's structured onboarding and bite-sized video format, with a roughly three-minute cap, shaped her approach to teaching and complemented the skills she had built through writing and presenting.

She also recalls her very first meetup talk, a lightning presentation about time-traveling in Git after discovering that GitHub uses server time from local Git commits. This leads into a fun exchange about lesser-known Git features like bisect, with all three hosts bonding over the universal experience of Git-related mishaps during live demos.

00:24:59 - React Ladies and Building Inclusive Communities

Monica shares the origin story of React Ladies, describing how hundreds of people joined the meetup group shortly after she created it and how the community quickly found its first venue through member outreach. She also discusses connecting with React.js Girls in London and Berlin, and eventually speaking at their first conference.

The conversation shifts to practical strategies for fostering inclusion in tech, from establishing codes of conduct to adopting speaker riders like the one open sourced by The Pudding. Monica discusses how speakers can use their platform to push for equitable compensation, diverse lineups, and reduced financial barriers at conferences, emphasizing that these requirements can drive meaningful structural change.

00:34:18 - Hiring for Diversity and Open Source Contributions

Christopher asks how entrepreneurs can move beyond good intentions to actually build diverse teams. Monica recommends targeted outreach to organizations like /dev/color and women-in-tech meetups, noting that word of mouth heavily influences who learns about job opportunities. She also references studies showing that women tend to self-select out of roles when they don't meet every listed requirement.

The discussion then moves to Monica's open source work, including contributing to the New York Public Library's e-reader technology and her deeper involvement with Redwood's structure package. She recounts attending a Redwood meetup to learn the local development workflow and describes contributing route diagnostics and VS Code integration features by working with the project's abstract syntax tree.

00:41:45 - Redwood Internals, Sponsorship, and Closing Thoughts

Monica reflects on the value of welcoming open source communities, crediting Redwood's contributors for being available and enthusiastic about helping newcomers navigate the codebase. Anthony confirms that the structure package is complex enough that even core team members find it challenging, making Monica's contributions all the more impressive.

The episode wraps up with a discussion of GitHub sponsorship and why free educational content matters. Monica explains that sponsorship allows her to dedicate more time to open source work and creating tutorials with full code repos, which she considers essential for giving learners proper context. The hosts close with a lighthearted debate about which framework has the best brand color, with Next.js's black aesthetic winning out over Gatsby purple and Redwood red.

Transcript

00:00:00 - Monica Powell

Yeah, I wanted to join early, but then I was in the whole world of writing unit tests.

00:00:15 - Anthony Campolo

Monica Powell, welcome to FSJam podcast. Really happy to have you.

00:00:20 - Monica Powell

Thank you. I'm excited to be here.

00:00:22 - Anthony Campolo

Yeah. Why don't you just let our listeners know who you are, what you do, what sort of stuff you're working on. You've got a whole bunch of projects that we're going to get into.

00:00:29 - Monica Powell

Okay. Sounds great. Hi everyone. I'm Monica Powell. I'm a software engineer who is involved in the open source community, and during normal times I run in-person events.

I run a meetup called React Ladies for women and non-binary React developers, and have collaborated with a lot of different tech organizations based in New York City and beyond in community organizing.

I also write educational articles on my blog tailored to other web developers, specifically in the JavaScript ecosystem, and have taught some lessons on egghead.io.

00:01:10 - Anthony Campolo

Yeah, it's amazing. Anytime I hear someone is a teacher for Egghead, I'm like, all right, cool. You know what you're doing.

00:01:15 - Christopher Burns

One of the first things I noticed is you are very framework agnostic. Your website is sneakily built in Gatsby. You've put work out there in Next.js. And obviously we know you through Redwood. So the first question, spicy or not, is what's your favorite framework and your least favorite?

00:01:42 - Monica Powell

Oh, wow. That's a tough question. I think the different frameworks definitely have their own strengths and weaknesses. For a long time I was a huge fan of Gatsby. It's open source software, so I built my website and I was really invested in that.

I previously worked at a company where we were migrating over to Gatsby, so I also had some experience working with Gatsby on a larger website. My initial introduction to using GraphQL on the client side was thanks to Gatsby and getting a sense of how to interact with the data from my website within GraphQL Playground. So I definitely have a sweet spot for Gatsby.

I think there's a lot of excitement about the new approaches, or the reinvented approaches, maybe depending on who you ask, that Next.js is bringing to the table in terms of server-side capabilities and having more dynamic support for API routes and such. And then I'm also super excited about Redwood, just in terms of it being a newer framework.

00:02:49 - Monica Powell

They've put in a lot of work to make the experience of creating a full-stack application more effortless. I really enjoyed going through the tutorial last time. I'm sure some things have changed since then, but being able to get up and running with a basic application, with all these different routes and some server-side logic, was super fun.

It also has a lot of potential for people who are newer to full-stack development, or maybe are trying to get up and running more quickly with an application. So I'm most excited about the potential of Next.js and Redwood, and I have a sweet spot for Gatsby because I learned a lot from using that technology, even though I started to migrate and explore other options within the React ecosystem.

00:03:36 - Anthony Campolo

That's like Chris's exact answer to that question is the answer you just gave.

00:03:40 - Christopher Burns

Yeah, I started with Gatsby; it was my first jam. My second jam was Redwood, and my third was actually Next.js. I've seen the board now, as you might say, and all the different approaches.

Something that is obviously controversial, and I would love to hear your opinion on it, is the Gatsby plugin system. I personally think it's super beneficial, but I've seen a lot of other people think it's very opaque and it loses a lot of value really fast by having it.

00:04:19 - Monica Powell

I really enjoy knowing that there are all these different Gatsby plugins for different functionality. Usually, if I'm wanting to create something and it needs to be styled, I'll look to see if a plugin already exists for that functionality so I can use it as inspiration or use it directly.

In terms of developer speed, I've appreciated the plugins. They can be a source of friction if they're not exactly designed for your use case, because sometimes someone is just trying to solve their one problem when they create these plugins versus trying to solve everyone's problem in a more robust way.

There are community plugins, and there are some that the official Gatsby org maintains, so there can be differences in the quality of the plugins that are out there.

00:05:16 - Monica Powell

But I would say I have benefited greatly from being able to leverage different Gatsby plugins. I also think that encourages a more active open source community around Gatsby, which is something that attracted me to it. There seemed to be a lot of involvement from the community in terms of whether that's making sure the documentation is up to date and robust or creating these plugins.

That's something I've seen in some other communities where they're still getting their footing, in terms of how you connect all these different parts of the ecosystem together. I think Gatsby does a good job of showing you all the things that exist in the Gatsby universe. They may be well maintained or not, and it depends on which plugins you use and how you vet them, etc.

00:06:13 - Anthony Campolo

Yeah, I've only ever used a Gatsby plugin once, so I don't really have a strong opinion one way or the other. The one time I tried to use it, it was just to add syntax highlighting for Markdown. I found a plugin and there was a two-line snippet to add a config. I added it and then nothing happened. And it's like, okay, where do I go from here? I don't know.

00:06:37 - Christopher Burns

The reason I bring it up, and I think it's so interesting to speak to as someone who's used Gatsby a lot, is we're pretty much seeing two ways the Jamstack can go right now. Redwood is saying, oh, you want to add TypeScript or Tailwind? Here's some generator code to do it, and then it's just installed. But then Blitz and Gatsby, and obviously anyone else that's using these plugin systems, are saying it's isolated.

It's isolated, but then it connects into your system. To me, the best thing about Gatsby plugins is the isolation, but then the worst thing is also the isolation.

00:07:29 - Monica Powell

Yes, when I was migrating my website from using just Markdown to actually supporting MDX so that I could write JSX within my Markdown files, I did run into some issues with plugins conflicting in terms of how they were parsing the AST.

So there are definitely some gotchas that come into play when it comes to installing all these plugins from different places. There could probably be more insight into how to solve those issues. I'm pretty sure I googled it and got an inkling, but the combination of plugins that I use is different than the combination of plugins that somebody else is using. So there are some unique issues that can come up when you have different plugins that aren't necessarily designed in a way that anticipates other plugins being installed.

00:08:30 - Christopher Burns

I guess my next point to discuss is very much a Next versus Gatsby thing, but I think it's still so relevant to things like Redwood. Let's take the example of pulling Instagram into your website.

Next is a lot more agnostic on the approach. You could use a REST API, or as you did in one of your tutorials, you used an npm package. Gatsby does it completely differently and says we're going to give you the same syntax for every single Gatsby source. That means it's all laid out the same way and you can pass it through things like Gatsby Image. Which method do you think is better?

00:09:35 - Monica Powell

I think I like the flexibility that comes with Next.js. I feel like it's more about writing JavaScript as opposed to writing JavaScript specifically in the way that Gatsby says it should be written. So I have appreciated that.

I had put up a small Next site where I use GraphQL. I've had some where I've used a normal REST API setup. So I have appreciated having that flexibility and being able to choose the underlying technology that makes more sense for me or whatever I'm most interested in using at that time.

And I think there are potentially more examples, since the way Next is using it can be abstracted to any React application. So it's not specific to one JavaScript application.

00:10:31 - Monica Powell

It's not specific to one framework. There are some specific things, but the overall patterns are more transferable, which is definitely valuable, especially seeing how quickly there are shifts in terms of which frameworks people are most excited about in our growing ecosystem.

00:10:50 - Anthony Campolo

Curious if you have had any experience with Vue or Svelte, or if you're totally in the React world?

00:10:58 - Monica Powell

Yeah. I would say I am fully into the React ecosystem. I have attended a Svelte meetup. This was before the pandemic. I attended a meetup in New York City, so it was cool seeing the capabilities of Svelte.

I've participated in some Vue communities. I had tried, I think it was Gridsome. There was a Vue framework that's supposed to be like Gatsby. So I thought it was cool being able to transfer the knowledge that I knew about Gatsby to building. I built a very MVP website, and there was some Vue-specific syntax that I had to look up.

So I've just dabbled in those enough to put up a very basic, "I spent a couple hours working on this" type of website. But I haven't had the opportunity to use those technologies in production yet.

00:11:53 - Anthony Campolo

Yeah, very much in the vein of talk-driven development. I signed up for a talk for Nuxt, for the Composition API, and for Elder, which is a Svelte one. So I ended up giving talks about all those. I learned a decent amount of Vue and Svelte. I really enjoy it, and I think there's a lot of interesting places to go with it.

00:12:11 - Monica Powell

Mm-hmm. Definitely.

00:12:13 - Christopher Burns

If Redwood could take anything from Next.js or Gatsby, what would it be?

00:12:23 - Monica Powell

I'm trying to remember what it's called. I like how, in Next.js, you can do server-side generation on demand. I know when there was a huge Next.js conference, they had it set up so you would register by logging in with GitHub, and then they would generate a ticket URL for you.

As soon as you share that on social media, it would have your GitHub image, your ticket number, and things like that. So I feel like there are a lot of very cool SEO and other things you can do with that on-demand generation they're doing, or sorry, not static, but yeah.

00:13:08 - Christopher Burns

So what Monica just said was for Next Conf 2020. What they also did for that conference was make the software they used to host the conference open source. So if you go to Vercel's GitHub, you can literally boot up their conference software and run your own conference.

It's really cool, and it's got that code to do that image system thing. It's in there. It's open source.

00:13:49 - Monica Powell

That reminds me, though. I need to check that out, because I was excited when I saw the open source day, but I haven't had a chance to actually look at the code because I was super excited about it before it was officially open source. So I need to check that out.

00:14:02 - Christopher Burns

It's called Virtual Event Starter Kit. I will put it in the chat.

00:14:08 - Anthony Campolo

I'd like to get into some of the work you're doing for Newsela. This is a passionate topic for me. Having been a previous teacher, it says that you're building educational technology, so I'll be curious what that means.

00:14:21 - Monica Powell

Yes. So I joined Newsela near the end of last year, so I'm still relatively new. I feel like I'm onboarding, learning all of the things.

In terms of what Newsela does, they're an edtech platform. They produce different news articles or primary sources for students to read in classrooms. The really cool thing is that we have technology that makes sure students are reading content at the most appropriate reading level for them. Different students within the same classroom can get the same content, but it'll be more tailored to where they're at.

So it's a really great way to make learning more accessible to students regardless of where they're from. We've also been doing a lot of great work to make sure what we're providing in classrooms really shows a breadth of different experiences so that every student is represented in the type of content they're reading.

00:15:23 - Monica Powell

And in terms of the work that I'm doing, I'm working on enhancing the homepage experience when you're logged in and seeing all of the different content that's available for you to consume.

I'm still learning tons of stuff, but I'm really excited about the mission and the product.

00:15:44 - Anthony Campolo

Yeah, that's super cool. And that's really interesting, what you said about how it tailors the specific reading level to the students, because this is something I was getting into back when I was still in education. It was the idea of how we're able to use computers and data and hopefully get somewhere.

Do we have an education system that works slightly better than what we have now? It was something I was really passionate about and then became kind of jaded about for a while, just because of the problems that come along with algorithmic stuff in general. So I'm curious how you protect against bias in that sort of stuff.

00:16:18 - Monica Powell

Definitely. I can't really speak to the framework itself. A lot of that stuff was put into place before I joined the company, and the team that controls how the different reading levels are generated is outside of my team.

But that is definitely a huge concern, making sure that we're not inadvertently introducing different biases. Working in software, we know that any product or technology we create is going to have some of the biases that different developers have. Everyone has their biases.

I was just sharing with someone that there's a GitHub repo called Awesome Falsehoods, and it's all different types of topics in terms of what assumptions developers make when they're building technology. So it could be about names or geographical locations.

00:17:13 - Monica Powell

And there are just so many cultural things that come into play. You can't assume that someone has only one full name, or even what a full name is; that varies based on context.

In general you have to be very aware when working with people and real data. There are so many different edge cases to keep in mind and to try not to enforce or reinforce different biases as we build things.

00:17:40 - Christopher Burns

I just hope there's a dyslexic mode.

00:17:43 - Monica Powell

Yeah, definitely. I know a lot of people who have needed accommodations for dyslexia. I'm hoping to see more of a shift in web development toward being more aware of accessibility, because it can sometimes be an afterthought.

There's definitely a lot of great automation tools and such to get a baseline level of accessibility. But as a web developer, I'm still learning things all the time about accessibility that I wish I had known sooner. So I'm hoping to see that continue to get better.

00:18:14 - Anthony Campolo

Yeah, I'm actually trying to lead that charge in Redwood right now. We had a live stream with an accessibility expert, Ben, who went through our docs with me and made some comments about it.

It's one of those things where there's the level within the framework itself making whatever it's doing accessible, and then also giving guidance to people building Redwood apps on how their apps are accessible. We were focusing more on the latter. There's still ongoing work, like the router, to make that accessible.

And then DTT actually brought up the idea of how we make the Redwood organization accessible. So then things like the website: do we have alt text, stuff like that. There's so many different levels to think about, and I'm trying to wrap my mind around that, get more people in this space thinking about that kind of stuff, and hopefully get Ben on the show.

00:19:04 - Christopher Burns

You know what I love about being a developer and being dyslexic? It doesn't matter if the variable is spelt wrong, as long as it's consistently spelt wrong, it's no problem.

00:19:15 - Monica Powell

Yeah, that is true.

00:19:16 - Anthony Campolo

When you started doing Egghead, had you already been making content before, or was that your first foray into it? How did you get into the content creation game?

00:19:25 - Monica Powell

So when I started with Egghead, that was my first time creating video content. The types of content I had made prior to that were conference talks and presenting at meetup events. So I was already going through that whole process of creating a small curriculum and presenting it to an audience of different experience levels, which is a very different format than Egghead.

And then I had also been writing articles, more like tutorials and such. So I would say it was mostly more similar to the tutorials, but with the opportunity to walk through what you're actually doing. I think that's cool because with tutorials I always want to show as much code as possible. I always try to show a full example at the end of the article so you have the context, but it's hard when you're showing step by step to also show that context.

00:20:18 - Monica Powell

So I think it's great with screencasts that you can really show the whole breadth of what the application looks like. It's easier to emphasize certain things. When I signed up to be an Egghead instructor, they actually have very robust onboarding.

So as I was making my first video, I was able to have someone at Egghead who I could work closely with and bounce ideas off of. It helped me get a feel for how to edit videos and all of that stuff. So it was a combination of leaning on my experience creating content in different formats and leaning on the expertise of the folks at Egghead for additional support to create the actual video content and tailor it to how Egghead creates content.

They have a guide called How to Egghead, which is open source, and they walk through their approaches.

00:21:13 - Anthony Campolo

Can't be longer than three minutes, three minutes too long.

00:21:20 - Monica Powell

Yes. They want to be bite-sized because it makes sense if you want to learn a very specific thing. If you can find a video where the title tells you exactly what's happening, you watch the video for three minutes and then you can move on to the next thing. I think that's great.

I haven't created YouTube videos, but I know it seems like every YouTube video is a minimum of ten minutes. So it's definitely a different audience, or the same audience but at a different time. So I do appreciate the bite-sized videos.

00:21:53 - Anthony Campolo

You also mentioned you did meetup talks. I'm just kind of curious. I've done a ton of meetup talks. Do you remember what your first meetup talk was like? What the topic was?

00:22:00 - Monica Powell

Yes. If I recall correctly, my first meetup talk was about time-traveling in Git. So I talked about the differences between Git and GitHub, and how GitHub uses the server time from your Git commits, which use your computer's local time, which you can set to whatever you want.

I was debugging an issue with certain dates that were appearing in production. I had to manually adjust the clock on my computer, made my fix, pushed my changes, and then I was like, oh, you committed this two weeks in the future. And I was like, what? What happened?

So it was just a fun lightning talk where I could share something that I learned at work, as well as giving people a deeper understanding of how Git and GitHub work and how you can manipulate Git data if you want to.

00:23:06 - Anthony Campolo

Yeah. I think everyone should have to give a Git talk at least once in their life because it's going to force you to learn more about Git than you probably already do. All of us only know like 5% of Git, I feel like.

00:23:16 - Monica Powell

Yes, I'm always learning more things about Git. I know over the summer I learned about Git bisect. If you want to determine exactly when a regression was introduced, it's kind of like a binary search, eliminating half of your Git history every time you go down, and checking to see, did this commit have the problem? Did this have the bug?

If not, you figure out, okay, I need to look more in the future. I need to look more in the past, and you identify where the bug was introduced. I think that could be a huge time saver if you aren't really sure what's going on and you want to drill into that.

But yeah, I feel like Git has so many things under the hood and features that a lot of people aren't aware of, but it could make their lives easier and more productive.

00:24:10 - Christopher Burns

Git is one of those things that when my commit doesn't commit, I just want to cry in the corner and be like, leave me alone. Just work. Or when two branches don't merge and you're like, okay, I got two out of three files down, and then the last file is your yarn lock file and you're like, I'm done. Just delete the file and remake it.

00:24:33 - Anthony Campolo

Yeah. Every mistake I've ever made in live presentations was based around the Git part of whatever I was demonstrating. It's always where the margin of error would come in.

Cool. Let's get into it. You mentioned React Ladies, but I'd like to hear a little bit more about that. Where was it used to be based, and obviously now I'm sure it's remote. It's about React, but is there any more specific kind of areas you're into, or is it just all React?

00:24:59 - Monica Powell

So we are focused on React. We've had events where someone will talk about React Native, which is a subset of React but a different API. We've also had events about accessibility, internationalization, etc.

A lot of what drove me to want to create this community was that I attended a lot of meetups, a lot of women in tech meetups, which I found very welcoming environments, especially as I was just getting started with technology, to learn more and connect with other folks. So when I was learning React, I really wanted to create a community and meet people who were also learning React or maybe who are more seasoned and excited about it.

So that is what led me to create the meetup. I created the meetup group, and when you create a group, they announce it to a region of people.

00:26:01 - Monica Powell

As I created it, I had a few hundred people join the group shortly after its creation, which was really cool. And then I did have a little bit of a chicken-and-egg problem: I want to have my first event, but I don't know what date because I don't have a location, and I don't have a location because I don't have a date.

I believe I put out a message to the group like, hey, we're looking for an event venue for an upcoming event, and then someone pretty shortly after reached out. They were a member of the group, and they said their company would love to host us. So there was definitely a lot of enthusiasm from the beginning about people coming together and learning more about React, which was really cool.

And then I also had the opportunity to connect with React.js Girls, which is based in London and Berlin.

00:26:55 - Monica Powell

They saw the work that I was doing in New York, and there was obviously some overlap. I had the opportunity to speak at their first conference in, I believe it was, 2019. So, yeah, I'm trying to remember what your initial question was.

00:27:13 - Anthony Campolo

I was gonna ask, actually, what year did you first start learning React?

00:27:16 - Monica Powell

So I started learning React maybe around 2017. In terms of actually diving into it, 2018 is when the job I had required me to write React full time, so I had to quickly get up to speed with a lot of the React things.

But I remember still being relatively new to React around the time they announced React Hooks. I had the opportunity to attend React Conf that year, so I was there when the announcement happened, which was cool. It seems to me like people are still, you know, hooks, hooks, everything hooks, so there's a lot of excitement about that.

I feel like I've only been in the React community for a short time, but I've seen a lot of shifts as Suspense is becoming a thing.

00:28:07 - Monica Powell

And the shift to more hooks-based development, which is good because I felt like the previous way with all the different lifecycle methods was a bit more confusing. So I liked the whole switch to hooks.

00:28:23 - Anthony Campolo

Yeah, I like hooks. I never really learned classes in the first place because we started learning around the same time. But I spent a year on Python machine learning before eventually switching to React, so that's why I'm kind of a year behind in the React stuff.

I got to basically learn hooks first. They had class components, but it was like the second week after we already learned hooks. It was like, here's this other thing that isn't going to make sense to you.

00:28:47 - Christopher Burns

When we talk about inclusivity, it's quite easy to not in a bad way, but to be a man and to be white and to say, I'm doing everything I need to do. What would you say is the easiest step to be more inclusive every day in your developer life?

00:29:07 - Monica Powell

That's a good question. I think in general the number one thing is treating people how you want to be treated. Maybe being mindful of, if you're in a meeting, how much space you're taking up. Overall, just being more aware.

From what I've seen as a community organizer, there's a lot of opportunity for community organizers to set the tone as to what inclusion looks like. I would say a base level is having a code of conduct, but there's so much more to actually creating an inclusive community where people feel safe and welcome and everyone feels like they can contribute to the community.

So those are the base-level things for fostering inclusion and being mindful of how you treat other people. Also being aware of your identities; everyone has their privileges.

00:30:00 - Monica Powell

And I think some of that is being aware of what you're bringing into the room, the conversation. And if there are opportunities to lift up other people, how can you do that to promote other people in your work? What ways can you do that?

00:30:15 - Christopher Burns

I guess my next question is there's a massive push to get more women into STEM subjects. How do you encourage it without it being forced, if that makes sense?

00:30:30 - Monica Powell

That's a good question. I think there are plenty of women who are interested in STEM. So really creating those communities where people can feel welcome, even if it's like, okay, well, I'm in the minority, but I know that this community is intentional about the type of space they're creating.

Something I'm starting to see more is people who speak at conferences creating a speaker rider. There's a company called The Pudding, which does these cool, interactive journalism pieces. They recently open sourced a speaker rider for Meaningful and Inclusive Events. Some of the things you'll see people include in their rider are the things you're telling them.

00:31:24 - Monica Powell

If someone asks you to speak at an event, you're sharing with them that there are requirements that need to be met for you to speak at an event.

Some things I've seen, especially pre-pandemic, were speakers making sure that they're getting paid some type of honorarium and that accommodations are being provided. I've seen speakers request that all speakers are compensated. Similarly, just in terms of wanting to improve the diversity of who has access to speak at these types of events, I know someone who's had to fundraise to get the funds in order to speak at different tech conferences, which I think is unacceptable.

This person brings a lot of great things based on their background, but because of their financial situation, they don't have a company that is going to financially back them to attend these events. There are different levels of access. So I know there are some speakers who are intentional about making it a requirement, if they're going to speak at an event, that there's no financial barrier for people to actually speak at the event, as well as wanting there to be a certain amount of scholarships available for people to attend the event, or for the event to be free or low cost.

00:32:35 - Monica Powell

Those are some things I've seen, or speakers wanting there to be some level of diversity in the speaker lineup or making sure there's no panels where everyone has the same identity, or you only see people of a certain identity on panels that are about their identity.

So those are some of the things I've seen people outline in their speaker rider. And I'm hoping as more people are either adopting speaker riders or just bringing more awareness to them, that will shift what different conferences and spaces look like, so that the people attending those have access to a wider range of the types of people that can contribute to or be a part of those events.

So that's something that I've seen. From what I've seen, it seems like a great way for people to try to introduce change. If someone wants you to speak at an event, there is some, I don't know if power is the right word, but there is some ability to effect change.

00:33:36 - Monica Powell

If this event really wants you to speak, they're hopefully going to meet your requirements.

00:33:41 - Anthony Campolo

Have a happy path. You want to have a happy path for them, right?

00:33:44 - Monica Powell

Yes. Or compromise on some things. I also know having a code of conduct is usually a base-level thing. That's in a lot of the speaker riders.

But I definitely recommend checking out what The Pudding open sourced. It's called Speaker Rider for Meaningful and Inclusive Events, and it kind of covers why they wrote out the requirements they did. They're not necessarily saying every event needs to meet all the requirements, but they want a breadth of things they can use to determine whether or not an event is a good fit for them.

00:34:16 - Anthony Campolo

Yeah. We'll include a link to that in the show notes.

00:34:18 - Christopher Burns

My last question on inclusivity. I'm an entrepreneur and I'm slowly building my company of developers and people. And I can say I want it to be inclusive. I want to hire people who are bringing different opinions. But how do I do that if everybody that applies for the role is white males?

How do I go further to make sure that I am doing what I say I want to be done, if that makes sense? Because it's quite easy to just think, oh, you look at the ten people that applied and you pick one. When should you also be going further and trying to help other people apply?

00:35:07 - Monica Powell

I definitely think there's a lot of potential outreach you can do. I am a member of an organization called /dev/color, which is for Black software engineers. It's a professional network. So there definitely are, for different companies, opportunities to collaborate with organizations like /dev/color. I know there's a lot of different meetups for women in tech.

There are groups that have a lot of software engineers who may not know about the opportunity you have available. Try to connect with those organizations. I've also seen people share on Twitter that they're hiring, or they know someone who's hiring and they're looking for a diverse range of applicants, encouraging people to apply.

I know there have been studies that show men are more likely to apply to jobs even if they don't meet all the requirements, but a lot of times women tend to say, like, oh, I don't meet 100% of the requirements.

00:36:03 - Monica Powell

I'm not qualified. I have no idea what that looks like for other identities. But I definitely think there are opportunities to further engage with specific communities if you want to encourage more people to apply.

In my experience, a lot of looking for jobs has come from word of mouth. So if someone's not in your network, they're probably less likely to hear about the opportunity. So I think having some level of outreach is definitely important to try to bring in more new perspectives and such.

00:36:37 - Christopher Burns

It's awesome to hear and to know about because you can say, oh yeah, I support whoever working with me. But then if everybody around you looks exactly like you, you're not necessarily contradicting yourself, but you're not supporting other people to come in. That was really all my questions.

00:36:57 - Anthony Campolo

Are there other projects that you like to talk about, other things you're working on that you're excited about?

00:37:01 - Monica Powell

I'm trying to think.

00:37:03 - Anthony Campolo

And I'll be curious to talk about the Redwood structure stuff as well, if you want to get into that.

00:37:07 - Monica Powell

Yeah, I would say 2020 is when I got more involved in open source.

I had the opportunity to work with the New York Public Library on their book technology, and that is, for the most part, open source. It was really cool being able to contribute to this open source project in a meaningful way. I had the experience of doing that and working within an organization that was really invested in open source.

And then I had the opportunity to start working on Redwood and getting some exposure to the underlying structure of Redwood. That was cool, but also a very different experience than working with the book reader. That technology was also different than other contributions I've made to open source, where I'm working on something and I'm like, I want to improve this thing.

00:38:06 - Monica Powell

With Redwood, I got to see, okay, this issue has been reported by someone else. I haven't run into it yet, but I'd love to jump in and figure out how to make this better or ready for 1.0, which was a huge milestone that Redwood was working toward when I started contributing.

00:38:25 - Anthony Campolo

Yeah. Let's set the context also for our listeners of what the structure package is, because the comment you made about it being very different from an e-reader is a massive understatement.

The structure package is basically this huge code base that is aware of your entire Redwood project. I think it makes a giant AST that is essentially your whole Redwood project. The idea is that once you have something like this, you can have better error handling and better knowledge of your whole thing with better tooling around it.

This is what Aldo has spent a lot of time working on, and we're going to get him on the podcast and have a long, probably two-hour, talk about all this stuff. What kind of issues did you run into when you were using it?

00:39:06 - Monica Powell

When I started contributing to the Redwood structure package, I had only used Redwood as, oh, this seems interesting, let me see how it's working under the hood. One of the first things I needed to figure out when I was contributing to Redwood was how you actually test these changes.

So I attended a Redwood meetup. At the meetup, which was online, there was a demo walking through how you develop Redwood locally. You need to have the Redwood repository open. I think that's the one where they're like, if you're at this repo, you're probably in the wrong place.

00:39:45 - Anthony Campolo

Yeah, I was like...

00:39:47 - Monica Powell

That's the underlying API for Redwood. And then you also have to have, separately, an instance of the Redwood app running and point that to the local instance you have of the Redwood API.

So for me, just being able to attend that meetup, hearing from people who had already contributed to Redwood or who maybe even wrote the first few lines of code for Redwood, and getting a sense of how to actually run the package or develop the package was super helpful and got me to a place where I felt comfortable contributing.

In terms of the things that I was contributing to, you were saying that there was the abstract syntax tree. One of the things I worked on was making sure that, with the structure package, there are some diagnostics you can run to understand if there's something funny going on with your application that's Redwood-specific.

00:40:39 - Monica Powell

So one of the things is there are these different diagnostics that run. I updated it so that if you create a Not Found route, but you try to wrap it in a private tag, which would require the user to be authenticated as a certain user to view it, it throws an error. If you have a 404 component, you don't want that to be in a private tag; that needs to be a public page.

So I was able to go in and see how the other diagnostics were parsing the abstract syntax tree and create my approach and solution for that. Some of that involved back and forth with other contributors to get a sense of the best way to approach it.

And then also, something that everyone has is the VS Code integration that works for Redwood. Running VS Code, you can know, okay, if this is a private file or a private route, how can we make that file look different in VS Code to indicate it's a different type of route than another type of file?

00:41:41 - Monica Powell

So that was something that I was also able to contribute to.

00:41:45 - Anthony Campolo

Yeah, that's super cool because I can say, as someone on the Redwood core team, there are people on the core team who look at the structure package and we have no idea what this thing is doing. Aldo is a mad genius, and the type of stuff he writes is, as David said, the largest commits that ever happen are always Aldo commits.

So yeah, it's super cool that you're able to get in there and get your hands on it and actually start to contribute, because I can only imagine you probably know more about the internals of Redwood than I do.

00:42:11 - Monica Powell

Yeah, it was definitely a learning experience because I had no idea what I was walking into. But like you said, there were a lot of people within the Redwood community who are willing to share what they've learned as they've worked on Redwood.

So I found that super beneficial as someone who was new to contributing to Redwood, because I think that's the biggest thing with open source software. If you are going to contribute, finding a project that is open to new contributors matters. Not all projects are welcoming of new contributors, just because different maintainers have different bandwidth. Or maybe they have a certain vision for the product that doesn't necessarily align with outside contributors.

So I think it definitely made a big difference, knowing that the community was excited about me contributing and that people were available to help me as I was contributing and to help me get more knowledge about how the underlying structure works.

00:43:08 - Monica Powell

I have heard, though, that a lot of things may have shifted and changed since I last contributed, so I definitely need to check that out and probably get caught up. But yeah, that was definitely my experience with Redwood.

00:43:20 - Anthony Campolo

That's cool. Yeah, it's really good to hear that because we put a lot of thought and a lot of effort into that, and we always hope that it actually comes across. So that's always good for us to hear, that we're practicing what we preach.

00:43:33 - Anthony Campolo

Anything else that you'd like to talk about before we close it out here?

00:43:37 - Monica Powell

I think that's all I had. Is there anything else that you all wanted to chat about?

00:43:42 - Anthony Campolo

I think it's cool. You're in so many different areas, doing so many different things. I feel like I'm someone who is always trying to do a million things at once. So seeing someone who's able to balance that successfully is always inspiring.

00:43:54 - Monica Powell

Thank you.

00:43:55 - Christopher Burns

The one question I wanted to ask is if you're a listener and you want to help Monica, you can sponsor Monica on GitHub. And what does that allow you to do? That would be my final question.

00:44:11 - Monica Powell

The sponsorship I get on GitHub allows me to continue spending more time contributing to open source, as well as all of the content I create. The educational material I create is free for folks to use. So supporting that work — when I have the opportunity, I try to give free workshops for different organizations within the community.

Anyone who sponsors my work is allowing me to dedicate more time to doing the things I'm doing for free. I think it's important to have as much learning material be free and accessible. There are a lot of great resources within the web space, but continuing to contribute to that matters because things change so quickly that they become out of date, or something that I write may resonate with people in a way that other material doesn't.

I have this article on the JavaScript reduce method.

00:45:10 - Monica Powell

And it's one of those articles that is pretty much a basic overview of how this thing works. But I definitely have revisited that article since I've written it and been like, okay, I just need a quick refresher.

I try to create things that other people can revisit in the future as a reference. And whenever I write articles, I'll open source the code. So that also lives as a learning resource for people to benefit from.

00:45:39 - Anthony Campolo

Yeah. Code article without a repo is useless. It's 100% useless.

00:45:45 - Monica Powell

It's like, how does this work? I need context. Code context is just so important. I've had times when I'm reading a tutorial or documentation where I'm like, I don't really understand how this line of code fits into the bigger picture.

And there's this website called grep.app, which allows you to search GitHub repos. I found it's a better search than the default GitHub search, and I found that super helpful. Just copy-pasting this code from a tutorial or docs and then getting a full application that's using this gives you a better sense of how it all connects.

Sometimes I think that is missing because when someone writes something, they may be in a certain frame of mind, but if I'm completely new to this technology or I've never done this particular type of thing, being able to see that bigger picture for me has been super helpful.

00:46:40 - Monica Powell

So I just try to give back because I feel like I've gained a lot from all of the things that other developers have put out there in the world for people to learn from or use. So yeah.

00:46:54 - Christopher Burns

I think that's about it.

00:46:55 - Anthony Campolo

Then go ahead and give the listeners your contact information. How would be the best way to get in touch with you or follow your stuff?

00:47:01 - Monica Powell

So in terms of my contact information, my website is AboutMonica.com.

00:47:09 - Anthony Campolo

Amazing.

00:47:11 - Monica Powell

That's pretty much my homepage on the internet. And then I'm on Twitter. My handle is indigitalcolor, which is actually a new handle for me.

I started exploring digital art, and in that transition, I decided to update my handle. I would say my website or Twitter are the best ways to connect with me. My website has more contact information if you want to send me a message.

00:48:10 - Christopher Burns

My only after party question would be, what's a better color? Gatsby purple or Redwood red? Or is it Next black?

00:48:21 - Monica Powell

I think black. The black, because I like purple. My website is purple, but the Gatsby purple is a very strong purple, I think.

00:48:36 - Anthony Campolo

Next is clean. I really like Next and Vercel's whole visual. Yeah, totally ripped it off. That's the aesthetic.

00:48:45 - Monica Powell

Basically, yeah, I do like that they've made it really clean with it. Surprisingly, because black could also be a harsh color, but they made it work.

00:48:57 - Christopher Burns

There we go. Next. Black is the best framework color, original. All they had to do was pick black, any shade of it.

On this pageJump to section