Ep. #103, Visualizing Codebases with Nahrin Jalal of CodeSee
In episode 103 of JAMstack Radio, Brian Douglas chats with Nahrin Jalal of CodeSee. Together they explore tools and actionable tactics for helping developers improve the ways they navigate and understand today's increasingly complex codebases.
Nahrin Jalal is a software developer, educator, and community builder. Nahrin has taken a non-traditional route to software engineering, and ensuring that technical education is accessible to all is especially important to her. To this end, she has taught software development to students of varying demographics as an educator at U For Change and Canada Learning Code, built a STEM learning management system, organized and mentored at hackathons, and coordinated numerous technical workshops and events as Director of Women Who Code Toronto. By day, Nahrin works at CodeSee as Head of Developer Relations—a role that blends her passions for cutting-edge technology, education, and community.
In episode 103 of JAMstack Radio, Brian Douglas chats with Nahrin Jalal of CodeSee. Together they explore tools and actionable tactics for helping developers improve the ways they navigate and understand today's increasingly complex codebases.
transcript
Brian Douglas: Welcome to another installment of JAMStack Radio. On the line we've got Nahrin Jalal.
Nahrin Jalal: Hey, Brian. Happy to be here.
Brian: Welcome, welcome, welcome. Yeah, I guess we could start with who are you and why are you here?
Nahrin: Absolutely. I'm a software developer, educator and community builder based out of Canada. I've taken this nontraditional route to software engineering, ensuring technical education is accessible to all is especially important to me. So I do a lot of teaching on the side outside of developer relations, I teach students over at U for a Change, and Canada Learning Code, I built a learning management system, I do a lot of organizing of hackathons and coordinating workshops of women who code.
By day I work at CodeSee as the head of developer relations there. In terms of why I'm here, I was excited to receive an invite to chat about CodeTeam and what we're doing with the open source community.
Brian: Yeah, open source is near and dear to my heart as listeners are already aware of, and I've got an open source project on the side, and I wanted to know what is CodeSee for the listeners who maybe have not heard of it?
Nahrin: Absolutely. So at a high level, CodeSee helps you visualize codebases. Our tool maps, they're interactive software architecture diagrams designed to make cross codebase understanding a reality. So once you connect to CodeSee, to our repository, a map autogenerates in minutes, syncs to your codebase as you work and displays dependencies and other insights that teams have found really helpful for code review, onboarding, planning, documentation and more.
In terms of the problem that CodeSee is trying to solve for, we're on this mission to help developers improve how they navigate and understand today's increasingly complex codebases.
I want to pause there for a minute because codebases truly have grown dramatically more complex over the years, and documentation is often lacking or behind. There's a lot of potentially confusing interdependencies and the people who wrote the code may no longer work there, that's often the case in tech. So trying to grasp the big picture is incredibly difficult, and at CodeSee we're just trying to make the developer experience better by visualizing codebases and presenting key information a developer needs to know to confidently make those changes and get work done. It's in a way that's scalable and doesn't actually rely on having to build mental models.
Brian: Cool, yeah. A contributor mentioned CodeSee while I was livestreaming as an alternative to what we were doing, so I did a whole stream where I explained my codebase to everybody who was watching because I would get a lot of questions of, "Hey, what's this? Why is this here? How do I connect this to that? Do we have something that answers this question?" So I basically just went through the entire codebase, folder to folder, it was just like, "Hey, this is here, this is why this is there."
The project's been built since 2017 so there's some older code that maybe people aren't familiar with. So I just walk through it verbally and then edited it down, threw it up on YouTube so if anybody has questions, they're like, "Hey, what is Open Sauce? How does this work?" I just walk through the entire thing, but in my mind I probably could've used CodeSee for that, right?
Nahrin: I think so, that would've been an excellent use case, for sure.
Brian: Yeah. And I've done that too, I played around in CodeSee and I was able to tinker with it. I haven't actually installed it in a project permanently or anything like that. I probably should, there's nothing really holding me back which I guess is the next question. How do you add CodeSee to your project?
Nahrin: Yeah, so you just sync it up to your GitHub repository and a map is generated automatically in minutes. That will show you all of the dependencies, it will automatically present you with different insights, we also have this awesome feature called Review Maps. Every time you push changes to a codebase, it'll actually show you a visualization of what is changing, so files that have been removed or added or dependencies that are linked to anything that you've touched. It's all displayed there so you can be really confident in the changes that you're pushing, making sure that you're not breaking things down the line or introducing new bugs into your codebase.
It also just presents a new way of doing code reviews. Historically it's always been done alphabetically, in GitHub that's just how it's done, right? You'll review code alphabetically and you can't really review code in a way that makes sense to you. So maybe just seeing all the files that have actually been touched, and then being able to decide through a review map tour where the author of the PR will actually share, "This is where you get started, this is what I'm changing here, this is why I've done it this way." Being able to receive that context as you do a review is super helpful, we've found, for both the authors and the reviewers.
Brian: Yeah, that's interesting, you bring up an interesting point around code review where it is alphabetical and there's not a lot of rhyme or reason as to why things are showing up in specific use cases. But easily what happens when you walk into a new codebase as a new engineer on a team, it's either you just get thrown into the mix or maybe you do get some sort of onboarding. But I've never been onboarded to a team or a company where someone actually gave me all the secret sauce right there when I started. It's more of like a last person in is the one who improves the documentation, is the rule of thumb, which could be a really poor way of doing onboarding for the next person.
Because imagine this person, maybe they came inexperienced, they had no questions, no changes, or maybe they just felt Imposter Syndrome, basically just prevented themselves from asking the right questions or any questions, for the matter. So with CodeSee it sounds like I can look at what's happening. You can look at what dependencies are as well, so if there's something... I'm curious, does it catch dependencies that are no longer being leveraged or things that get derelict in the project? What's the secret sauce for CodeSee? If I install in a project, what are the things that I would end up looking at first?
Nahrin: Well, it really depends on how you like to approach a codebase. Typically what I'll do is I'll get a very general overview of what's happening and I'll maybe build up this explore and learn map for myself where I'm exploring different parts of the codebase, making notes for myself on any questions that I have, or just making notes on how things work. That makes sense to me, how I think things are working in that moment.
I get confirmation of whether or not that's actually the case, and then I'll actually go ahead and start contributing or making changes, I'll use review maps to make sure the changes I'm making are actually breaking things or all the dependencies that are being touched are intentional. Because oftentimes you'll make changes and you actually don't have the entire view of what impact that's having in the codebase, and so just having that visibility every step of the way with CodeSee maps or review maps just brings you a lot of confidence in what you're doing. At least that's what I've found.
Brian: Yeah. There's a term that I got from the landing page, which is Continuous Code Understanding. Can you explain what that means?
Nahrin: Yeah. It's all about constant shared awareness and having a single source of truth for your entire development team. That's what it boils down to. To compensate for its absence, to compensate for the absence of having that code understanding with you, developers have resorted to this just in time cognizance. We're combing through codebases manually, generally line by line, to learn the minimum required to go forward, it's what they do with their fingers crossed that nothing then breaks.
With a continuous way of understanding code, regardless of whether you're onboarding to a new codebase, or it's just been a while since you've worked on a specific area of the codebase, you have this single source of truth that can be brought up to speed. You can be brought up to speed immediately, be confident in knowing that you aren't missing any important context, and that's really valuable, and that's what we're really trying to show can be a big improvement to the whole developer experience.
So we at CodeSee believe the eight phases of dev ops; plan, code, build, test, release, deploy, all of them. They need an addition, and that's codebase understanding, so that's the concept and that's why we think it's important.
Brian: Nice, nice. So if you're using CodeSee, can you leverage CodeSee as a third party user? So when I'm thinking of open source, if I find a project in open source, I want some understanding on what's happening in there. Can I add CodeSee to a project that I am not a maintainer of?
Nahrin: You can add it to the main branch. You could fork it and add CodeSee on a personal branch at the moment. But you can also share CodeSee with the maintainer or the person who owns a project and we try and make the process pretty seamless for folks to get started. But yeah, that's how it'd work right now but we also do have OSS Port, which we'll probably chat about it later on too, which is this open source platform that we've built that has CodeSee at its core, CodeSee maps at its core, so all the projects that are there, are available already have CodeSee maps integrated into it. So if there's any projects on there that you want to contribute to, they have it ready to go and you can get that understanding of the codebase immediately.
Brian: Yeah, that's awesome. Let's talk about OSS Port because I did discover this too as well from doing some research and I think it's a great idea. I think it'd be very helpful during Hacktober Fest. Can you explain what OSS Port is?
Nahrin: Yeah, it's essentially a platform connecting over 100,000 contributors with open source projects across the globe. I love that you mentioned Hacktober Fest because that's how it came to be, 2021 Hacktober Fest is when we first came up with and launched OSS Port. Just prior to that, a couple months prior to that, we released CodeSee Maps to the world. Because we really value the open source community and really want to make tools that serve the open source community as well as just private teams, we wanted to come up with a way that we'd be able to do that in time for Hacktober Fest.
So OSS Port is this platform where maintainers and contributors can find each other, with the idea that the open source onboarding aspect of things is vastly improved.
Because we can agree that contributing to open source projects is unnecessarily difficult, and I'm talking beyond the challenges of just finding a project that speaks to you, or finding a project that you feel you have the skillset to meaningfully contribute to. Even after finding an open source project that checks those boxes, you need to be able to dive into this unfamiliar codebase and understand enough to contribute.
From an open source maintainer standpoint, being able to onboard and guide contributors takes a lot of time. You mentioned having recorded a video to help contributors contribute to Open Sauced. Not everyone can do that, and I mean not everyone can find that. There's just so many challenges there, right? It's just a lot of things that could not be optimal and could discourage contributors from actually being able to contribute to that project. So with OSS Port, we've built in our core product, CodeSee Maps, target that to really hone into that issue of open source onboarding and being able to offer Maps as a free tool to use for any of the projects there.
You get in, you visualize your entire codebase, you can see, you can get that context immediately. Then we do want to encourage contributors and maintainers chat to each other, they mentor each other, guide them through contributions. But we just want to make sure we can support them as much as we can with the tools that we provide, so codebase maps and then review map tours as well, to guide folks through the review process which an be another challenge in open source contributions.
Brian: Yeah. And I like that the one thing you had mentioned, that OSS Port is leveraging folks who are using CodeSee because there's now a base understanding. So if you know how to use CodeSee and you know these projects are using CodeSee, you know you actually have a step. At least a platform to stand on if you're going to be onboarding into a project, and I think that's one thing that's missing in open source, especially in onboarding. Every project is different, so if you have a Java project or a JavaScript project or a Ruby project or a Python, they're all approaching onboarding and structure and testing slightly different when you go to contribute, and that's the same thing from company to company.
But if you have that consistent layer of CodeSee, which I don't have to preach to you, you're preaching to us about CodeSee. But I love the idea of starting Hacktober Fest and seeing a list of projects that they can get understanding on, because I think the miss is, yes, you can contribute to open source for good, first issues but how do you know how to solve those issues? How do you know where in the codebase to actually make these changes? It sounds like we have this continuous code understanding together.
Nahrin: Absolutely, absolutely.
Brian: Excellent. I wanted to know who is using CodeSee? We talked about continuous code understanding, we talked about onboarding for open source. But yeah, curious of what sort of companies, projects, individuals are using CodeSee today?
Nahrin: Yeah, so outside of open source projects, we're happy to report that CodeSee Maps are actually used by thousands of developers across the globe, which is super exciting for the team. Developers from companies like Sneak, Salesforce, Telnex, Discovery, they all use them to create that single source of truth for codebase architecture and dependencies, capture a key code, change artifacts and gain that critical insight prior to launch. So that's been really exciting for the team to see that growth.
Brian: Yeah, that's awesome. I mean, I'm rooting for y'all at CodeSee and continuing to make that expansion into open source because I think, honestly, it's needed in the open source side, for sure. And I think even for, I imagine, private repos, companies are all going to get a lot value out of this because if I'm not onboarded as an engineer to your company, I would love some onboarding guides and contexts. It sounds like if you don't have that today in your company, you could have it tomorrow. Right after, right now. It seems like the onboarding is pretty straightforward.
Nahrin: Absolutely. I mean, I love that as a sales pitch.
Brian: Yeah. Well, Always Be Closing. Thanks so much for chatting about CodeSee. I look forward to actually adding it to one project right now, as we were talking. Good job with the onboarding, because I can do that while talking to you. But I'll transition us to picks, these are things that we're jamming on. Could be music, food, a game, entertainment, code related, everything is on the table for this. So if you don't mind, I'll go first, and I want to talk about two things. First is, do you have an Apple TV subscription?
Nahrin: I do not.
Brian: You do not? Well, you're one of the few. So Apple, when you buy a new phone or if you get an iPad or a watch or something, they'll give you a free Apple TV for like six months or something like that, so I got hooked. I watched whatever that morning show is, well, it's called The Morning Show and that's on Apple TV. Basically it's a streaming service, so if you think of Hulu or Netflix, so I watched that. That was good. But I just started watching this show called Severance, I think it's only been out, at the time of this recording, about a month.
By the time this recording is done, everyone will have probably seen it at this point. But I don't know how to explain it, but it's basically if The Office and Lost, if they made a show together, the creators of both shows. That's basically what this is. I did not get the first episode. Honestly, I watched the first episode for maybe 20 minutes and then had to go put the kids to bed so I never got back into it. Then weeks later, I see people tweeting about it and I'm like, "Oh, let me watch it." So the entire show had been basically published because they do a weekly upload, it's literally an upload.
But they basically release a show every week, so by then the entire show was live, so I was like, "Maybe I'll just binge this." So during spring break for my kids, I ended up taking the week off and I watched the entire, 10 episode series. Absolutely amazing. It's one of those shows that I can't explain it to you because you've just got to watch it, and I do recommend get to the first episode. It's not bad, it's just you don't know what's going on. Then by the time you get to the second episode, you're like, "Okay, I'm hooked." It's very, very interesting.
Nahrin: I mean, that's pretty high praise, right? You said The Office meets Lost. Those are both stellar shows, so I'm definitely going to have to check it. It's kind of like Game Of Thrones then, because for the first episode there I was not getting into it. I think the first five minutes, it's just footage of barren wastelands or something. So I'll definitely stick it through, unlike what I did with Game Of Thrones and give it a try.
Brian: Yeah, Game Of Thrones is an interesting one where I definitely caught that after the fact. It was the last couple of seasons, like the half seasons or whatever. That's when I started watching it, and I did binge it, but I did watch while also doing other things, like writing code or stuff like that. So I thought it was a great show, but this one you can't... I definitely cannot write code while watching Severance, for sure. I've got to pick up all the pieces, yeah. But highly recommend it.
I did have another pick, which it's where I'm adding CodeSee to, so if anybody wants to go through this open source repo, CodeSee will be there eventually. But it's called Social Carding, Social Carding.com is the URL, and it is a site. I've spent a lot of time working on a similar project, actually. How we got connected is because I was working on Hot.OpenSauce.Pizza, which on the surface looks like OSS Port but it's a little different. But we don't have to go into details, because everyone else who listens to this show, they already know the details.
But Hot.OpenSauce.Pizza, we're using social cards from GitHub to be able to display different GitHub repos. So rather than just logos, we're just using the built in social cards that they provide in the open graph, and I wanted a way to test these social cards to see what would show up because I didn't work at this problem at GitHub, but I worked with the team that worked on this problem and was able to test it for them as well. So I know how they work, they generate stars and issues on demand every time you refresh the page, and I just wanted to see what it would look like.
So I created this site called SocialCarding.com, and that's the URL, SocialCarding is the repo under my Bdougie domain, and literally that's what it is. I would always go to Twitter Card Preview or drop a link into Slack, like a DM to myself in Slack to see what the social card is. I got really tired of trying to figure out how to see my social cards and see if they were broken, so I built a site that literally just drop the URL and it gives you the social card preview. I would love to clean this up and polish it and write a blog post on how I built it, but until then, enjoy the repo, enjoy the URL. If it's useful, open up an issue or contribute a PR. That would be super helpful.
Nahrin: That's awesome. I can definitely think of multiple times where I would've wanted to use that, so I'll definitely check it out.
Brian: I've spent years not really adding social cards to my site because it was a thing that happened like four years ago, it became very easy to add a social card. And I just wasn't writing code as... I wasn't doing web code very often in the last four years, so I finally went through all my sites, added social cards, and now I'm on the kick. Every site has to have a social card, which ironically, I think this site doesn't have on. I should definitely add one to it. So yeah, now I'm always adding them to sites and now I have a place where I can just test it out. But yeah, it's just sitting there, waiting for me to talk about it, so congratulations, I talked about it.
Nahrin: That's awesome. I'm kind of jealous that you actually did something with the domain that you purchased, because so many folks in tech, right? We just collect them, and you actually made it happen. And who knows? Soon there's going to be a blog post hopefully on how you built it.
Brian: Hopefully. I'm not committing to anything right now. The irony is that I just paid for the renewal, so I bought this domain a year ago, a year ago last week. But the site only went up two months ago, so I won't pat on my back too hard right now.
Nahrin: Okay, so I guess it's my turn then. All right, so my first pick will be more of a topic, I guess, and it's a discussion we were having right before we started recording on folks in tech having pretty nontechnical interests. It's almost funny how nontechnical they can be. For myself, I recently moved to a new property, just on the coast of Nova Scotia, and I made sure there were a few acres here so I could really start up that hobby farm I've been dreaming about doing for just years and years and years, and start up this animal sanctuary.
Once I started telling folks this, I just realized how many other folks in tech also seem to have a similar goal or a similar lifestyle they want to lead. Someone else at GitHub, like Martin Woodward, he has that same thing going for him in Ireland. It was just funny to me how I was starting to meet all these folks that also wanted to lead this life that was so far away from everything else and just very sustainable and very rooted in nature and whatnot. So it's been interesting, learning a lot about soil acidity and plants and the various predators and the diseases that can afflict them. Just all these things, and it's been really nice. It's been a really refreshing change to actually have something not rooted in work to focus on.
Brian: Yeah, I'm excited for your adventure too as well, because you had mentioned it in passing and I didn't hear the details of the property you have. Do you have a goal for types of animals you want to care for, and what gardening you're looking to do? Are you still in the beginning phases?
Nahrin: Oh gosh, I've been working my Pinterest boarding for like a decade now so it's really just coming together now. I've been meeting with different landscapers and different companies that can come in and help you best position areas of the land for different animals or different plants, so I'm open to all. I already have a flock of chickens, and I know a lot of folks have chickens, but I really love mine and I really want to add to that and bring in Alpacas and various other animals. I really want it to be like an animal sanctuary, so just open to everything.
In terms of the farming aspect, just want to grow enough food to feed the family and feed the community hopefully, because there's a lot of just amazing programs in the area that actually accept food donations and things like that. In the city where I lived in Toronto, they didn't really do that. It was more they had to know exactly where the food was coming from. Here you can grow something and give it to folks and they'll actually share it with the community, which is really awesome. It combines my passion for actually being able to grow things and live that sustainable life and also give back, so I'm really excited to do that.
Brian: Yeah. What's the size of Nova Scotia's population?
Nahrin: You're going to laugh. I think they just hit the one million milestone last year, so it is minuscule in comparison to Toronto.
Brian: Yeah. And you mentioned around the community gardening and stuff like that, I'm curious to pick your brain. I know we're at the end of the episode, but when it comes to even dev rail and community dev rail, developer communities, there has been a shift to folks looking for that. Especially as we move to online, and I think as folks have shifted away from the bigger cities to get property or buy their first home and stuff like that, there is that need to have that collocation of folks. So I was curious, have you seen the trend?
Because especially where, what you said as far as CodeSee goes, you get to look at a bunch of communities and a bunch of projects. One thing I did in 2020 is I started streaming, I started streaming Open Sauced, and the reason for that is because I wanted just to work on this one project and not do my day job. It sounds really weird. But basically, have time within the day job to work on something that was mine, my thing. And while I did that, I noticed warmer people joining me in that effort, and not only the streaming but just joining my streams and joining my community, where it became super valuable to me during 2020 to have a small core of community.
I had like 10 people that would show up to my streams and show up on my Discord, and I enjoyed that way better than when I walked into the React Discord, because the React Discord, it's a busy place, there's always conversation. Sometimes people hear you, sometimes people don't hear you. But when I went to my own community, I always had people like, "Hey, yeah. Cool idea." And I'd get feedback on things. I think sometimes, especially during the pandemic, it'd be lonely and missing that sort of connection.
Nahrin: Yeah. Even with Women Who Code having to shift to just fully digital events and workshops and everything, we've really expanded the type of events and workshops and meetups we were having to move beyond just technical things. I think it's because even when you attend a meetup you don't really think about it, but there's like an hour prior, half an hour afterwards where you're just chatting with folks and having conversations about real world things that aren't just work related. So to fill that gap we started having these coffee hangouts or these lunch meetups and whatnot, where folks are just getting together and chatting about these other passions, or just sharing what they've learned that month.
Being able to create those community spaces online has been amazing in that regard, and being able to share that. Especially now that a lot of us have actually just moved to more remote locations, being able to have those places to go to and still find that connection had been awesome. Yeah, and I'm with you, I really value those conversations and those types of communities more than just a large event or something that doesn't feel quite as personal, or doesn't feel like you're putting in as much as you're getting from it.
Brian: I enjoy the future of what tech looks like, and connecting to more communities, but also continuing to strengthen my small community I have right now. So Nahrin, thank you so much for joining me and chatting about CodeSee. Thanks for sharing the picks as well. Good luck with the farm and the land up in Nova Scotia.
Nahrin: Thanks so much, Brian.
Brian: And listeners, keep spreading the Jam.
Subscribe to Heavybit Updates
You don’t have to build on your own. We help you stay ahead with the hottest resources, latest product updates, and top job opportunities from the community. Don’t miss out—subscribe now.
Content from the Library
Jamstack Radio Ep. #109, Less Context Switching with Esteban Vargas of Watermelon
EnterpriseReady Ep. #42, Elevating Code Search with Quinn Slack of Sourcegraph
In episode 42 of EnterpriseReady, Grant is joined by Quinn Slack of Sourcegraph. They explore Quinn’s self-taught development...
How to Start an Open-Source Project
How to Start an Open-Source Project Why is Heavybit posting a first-principles guide on how to create an open-source project?...