84. Volunteering as a Software Engineer

Welcome back to the podcast everyone! Today we will be talking about the idea of volunteering as a software engineer and the jumping off point for this discussion is our producer extraordinaire’s recent travels to Mozambique. That’s right, William has just come back from volunteering in a project in East Africa where he and a team were collecting data on shark sightings. For William this meant brushing up on his R skills and putting some of that scuba diving training to use! We will be talking all about this and unpacking the idea of volunteering and civic tech in more depth too. We finish off the episode with a few interesting teach and learns, so be sure to tune in!


Key Points From This Episode:

  • William’s travels and the work he was doing with sharks in East Africa.
  • The non-profit sector’s under-servicing from the tech world.
  • Why William decided to go volunteer in Mozambique.
  • The interesting side of learning to code in R.
  • The civic tech movement, volunteering in your city and contributing to its betterment.
  • What is unique about civic tech in New York City.
  • A GraphQL teach and learn from Dave.
  • Oversampling as a technique to overcome sparse data.
  • And much more!

Transcript for Episode 84. Volunteering as a Software Engineer

[0:00:01.9] DA: Hello and welcome to The Rabbit Hole, the definitive developer’s podcast in fantabulous Chelsey, Manhattan. I’m your host, Dave Anderson. With me today, we have our illustrious producer, William Jeffries.

[0:00:14.7] WJ: It’s great to be here.

[0:00:15.9] DA: Hey, welcome back man.

[0:00:17.3] WJ: Yeah, it’s good to be back, I just got back from a lengthy trip abroad.

[0:00:22.0] DA: Nice, yeah. We’ve traded because our regular host, Michael Nunez, is out abroad, swapped over to Europe, I think he’s in Italy right now.

[0:00:35.2] WJ: This is baby moon, right? This is like.

[0:00:37.5] DA: It’s a baby moon, yeah, that is a thing that people do now.

[0:00:41.4] WJ: Once he’s back from vacation, he’s off on paternity leave, right?

[0:00:46.2] DA: No, the baby is not coming immediately but it’s happening eventually. Watch out people.

[0:00:54.4] WJ: Watch out, baby Nunez.

[0:00:57.6] DA: Baby Nunez. Yeah, it sounds like you have like a really interesting adventure while you're abroad like all over the place.

[0:01:06.1] WJ: Yeah, there was a lot of stuff, I was gone for a while. I think probably the most interesting thing was the volunteer work in East Africa.

[0:01:14.8] DA: Yeah, something about programming an R in Sharks or something.

[0:01:19.3] WJ: Yeah. It was like a marine conservation volunteer program. I had actually kind of done it to get away from programming.

[0:01:30.7] DA: You can’t quit the game though.

[0:01:32.5] WJ: I know, right?

[0:01:33.5] DA: Pull you back in.

[0:01:34.6] WJ: Yeah, we were monitoring sharks and whales and giant turtles and manta rays and all kinds of marine life and coral. So there was a lot of scuba diving and then logging what we measured.

[0:01:46.1] DA: Like manually logging?

[0:01:48.2] WJ: Yeah, well, there was a Google form so I’d fed into a massive spreadsheet.

[0:01:52.6] DA: There’s always a spreadsheet.

[0:01:53.8] WJ: Yeah. They’ve been collecting that data for like three years now. It’s pretty substantial.

[0:01:59.2] DA: That is a big spreadsheet. I guess that’s why they needed R.

[0:02:02.4] WJ: Yeah, well yeah. They were trying to do data analysis and trying to draw conclusions. One of the things that they were hoping to do was to start predicting when there were going to be sharks around.

[0:02:14.6] DA: Good to know.

[0:02:15.8] WJ: Right.

[0:02:16.6] DA: Sharks are pretty freaky, don’t really want to be swimming with them too much.

[0:02:20.3] WJ: Well, most of them are harmless, there are really only a couple of species that are dangerous but bull sharks a serious issue and in Mozambique where we were you know, like a dozen deaths every year from shark attacks.

[0:02:35.0] DA: Yeah. Like, hearing that story like kind of got me thinking about like how software engineers has very in demand skill and no matter what area or industry it is, like people need that health and more than most, you know, there are nonprofits and scientists with spreadsheets that need help.

[0:02:59.6] WJ: Yeah. I thought that I was escaping programming but it turns out actually, the most useful that I could do for these scientists was to make models in R.

[0:03:12.2] DA: Yeah, I mean, a lot of things that we talked about in the past like for volunteering is kind of for the good of the tech community like doing open source work, that’s a really good example of a volunteering effort that - it isn’t labeled as volunteering, I guess directly because you’re a contributor, you’re doing something probono.

[0:03:32.5] WJ: Yeah, but it’s definitely volunteering, it’s super not paid.

[0:03:37.2] DA: Yeah. Unless you’re raising money, the guy who does API star.

[0:03:42.0] WJ: Yeah, I guess some people do get paid to do open source, that’s the dream right there.

[0:03:46.0] DA: Yeah, but then there’s this whole other avenue like volunteering for social good that is also available to people.

[0:03:52.7] WJ: Yeah, it really does seem like the nonprofit world is tremendously under-serviced by technology. The private sector is just so much further ahead in terms of the software that’s been developed in order to help them and the amount of proficiency with software.

[0:04:11.9] DA: Why did you volunteer? Being you know, highly in demand software engineer, like why did you decide to spend two weeks counting sharks and –

[0:04:23.0] WJ: Well, so, Mozambique is a Portuguese speaking country and these sharks are mostly and the other marine mega fauna, that we were monitoring, mostly found at depth and so they were looking for people who had scuba diving and you know, Portuguese fluency in their background. Which was a pretty weird combination and something that I actually had and I thought, this is like sort of a unique opportunity that I’m well suited to and in a surprising way and that was what sucked me in.

[0:04:53.4] DA: It’s like kind of the experience like of being there and contributing to it in that way?

[0:04:58.8] WJ: Well, I wanted to do some volunteer work because you know, I wanted to go do Africa and I didn’t like the idea of going and doing - not particularly sustainable tourism and so volunteering seemed like a good alternative.

[0:05:15.7] DA: Yeah, I’m thinking about like other times that I’ve volunteered and I think there’s almost always like an experiential or social aspect to it for me at least where I think the people who tend to volunteer are just really interesting people who are pretty driven and very engaged with what they’re volunteering in. And so I always find it like really satisfying to meet those people and talk with them.

[0:05:43.1] WJ: Yeah, it’s true, it does seem to attract a really interesting crowd. I definitely noticed that while I was volunteering on this most recent trip. A lot of high caliber people who had a lot of talent.

[0:05:54.9] DA: Yeah, it is also an opportunity to like, maybe get some experience in something that you might not normally have a chance to work on.

[0:06:05.0] WJ: Right, I’m not that good of a scuba diver, nobody’s paying me to do that.

[0:06:08.0] DA: Yeah.

[0:06:08.5] WJ: That’s the thing I have to do for free.

[0:06:10.2] DA: Also, data models like data science, like masters in ARPHD and data science as far as I’m aware.

[0:06:18.7] WJ: Definitely not. This was the first time I had worked with R. I had to rent myself up.

[0:06:23.6] DA: It’s a bit awkward of a language for my understanding.

[0:06:26.5] WJ: Yeah, well actually, it feels really natural if you’re doing one and only one thing and that’s stats. If you’re doing stats with R, it’s like okay, yeah, actually this makes a lot of sense.

[0:06:38.2] DA: TDD, not today.

[0:06:40.4] WJ: Definitely not today. Not really you need to assess. Very swiftly.

[0:06:49.3] DA: That’s for a future podcast, TDDNR. Okay. Doing Sandi Metz proud.

[0:06:56.7] WJ: Yeah, but they have their own patterns, one thing that I thought was really interesting about it was the way that they had structured notebooks, this is a thing that no, never occurred to any app developer today. The idea of having structuring your code in the form of a notebook. You write some code to generate something interesting and then immediately below that, you have some kind of explainer of like what it is that you're doing, sort of like comments and code, except that when you run it, it renders into something that looks like you know, a scientist’s journal.

[0:07:35.7] DA: Cool, yeah, I’ve used Jupyter Notebook with Python before and that’s –

[0:07:39.0] WJ: Yeah, just like that.

[0:07:40.0] DA: Super helpful, yeah.

[0:07:41.4] WJ: It’s like, I mean, you definitely wouldn’t want that for your web server. There’s no reason. Maybe if you were making a blog about programming.

[0:07:52.3] DA: Yeah, I think they do have some pretty intense like static blog generators that you can generate from Jupiter notebooks but that’s only for the hardcore I think.

[0:08:05.0] WJ: If you look at my bet there probably mostly scientists who are using python or R to generate data and draw conclusions from it. For that, it’s perfect, I mean, it’s a much better way of working than trying to come up with like a model to like an object, a class to represent whatever the thing is.

[0:08:25.2] DA: Right, just get it done. Yeah, it sounds like this was also maybe an experience that one might fail to put on a resume, generator model to find some sharks.

[0:08:34.9] WJ: That’s a great point actually, that did not occur to me to put this on my resume but –

[0:08:38.7] DA: William Jeffries, shark finder extraordinaire.

[0:08:44.3] WJ: Makes it sound a lot cooler than it was.

[0:08:49.7] DA: You know, that’s totally part of it, I mean like, different volunteering opportunities I’ve had, I volunteered with data client a while back and they’re like this organization that’s like international right now. They try to pair people with data analysis and programming skills with organizations that have data that don’t know what to do with it. Very similar to the thing that you’re talking about here with a lot less Portuguese and scuba diving involved.

But through that, I went to a data drive which was kind of a hackathon and ended up working on a project with the mayor’s office of data analytics which is like wow, sounds super.

[0:09:29.7] WJ: The mayor’s office has a lot of cool stuff in it.

[0:09:31.6] DA: Right. It’s just like wow, these are people like helping the city, really important data analytics but it actually was a lot less glamorous than I thought it would be. It’s like very scrappy actually because they’re just trying to get things done.

They have like a command line tool that they wanted to make more approachable to other people in their department who weren’t like very tech savvy so they want to put a GUI on top of it.

[0:09:56.4] WJ: Right, not a lot of budget for the data analytics department in the mayor’s office.

[0:10:00.9] DA: Right, yeah. Everyone’s like super engaged and wanting to get things done.

[0:10:06.6] WJ: Well you want to make your city better and you’re doing it in your spare time.

[0:10:10.2] DA: Yeah. I mean, that really like charged me up and I’m like, I’m going to make the best dang Java swing GUI you can ever make for a utility – it felt really good. I enjoyed working with those people.

[0:10:25.4] WJ: That’s very rewarding.

[0:10:26.4] DA: Yeah, definitely.

[0:10:28.0] WJ: Yeah, cities have amazing opportunities for volunteer work. The civic tech movement seems to really attract passionate people who want to do good.

[0:10:38.8] DA: Yeah, like especially with like open data and I know you’ve worked in that space in the past with like Heat Seek.

[0:10:47.2] WJ: Yeah, that’s right, I started a nonprofit, I think maybe like five years ago that monitors the temperature in low income housing and make sure that people get adequate heat in the winter time and for that project, we ended up generating our own data sets and working a lot with the civic tech community here.

We were based out of Civic Hall which is sort of a mecca for civic tech and we worked a lot with BetaNYC which is you know, a civic tech organization, civic tech meetup.

[0:11:20.6] DA: Yeah, if you’re in New York City, I would definitely recommend checking that out. I’ve been to several other events and there is really engaging and cool things like the kinds of data that people work on like is very interesting like counting trees and 311 requests and all kinds of neat things.

[0:11:38.8] WJ: Yeah, I don’t think there’s really anywhere better that I’ve ever heard of for a civic tech than New York City. Like even San Francisco where there is a lot of tech talent, doesn’t have the kinds of interesting challenges that New York City has that needs solving. Because they just don’t have as big and diverse population and is all to the city with this many problems.

[0:12:02.2] DA: Yeah, I guess like they also have a lot of tech community, you know, open source kind of opportunities.

[0:12:10.1] WJ: Yeah, although I think you could go to pretty much any city and they would gladly take your volunteer time.

[0:12:16.3] DA: Yeah.

[0:12:16.8] WJ: There are definitely other cities that have great civic tech. When I was doing in Philly, I remember there was – the Code for America Brigade there was working on some really interesting stuff. Code for America, another great go to resource for this.

[0:12:31.0] DA: yeah, code for America, I think I’ve heard of this before. Basically you sign up, it’s kind of like Teach for America capacity where you work for a period of time for them.

[0:12:44.8] WJ: I don’t know if they have paid positions the way that Teach for America does or if it’s exclusively volunteer driven. It’s grown so much and been so successful that I wouldn’t’ be surprised if there were grants available so that you could work on that full time. They open chapters in cities all around the country and try and get software developers to help build things to make the city better.

[0:13:08.1] DA: Yeah, there’s also a lot of programs out there for like teaching people who were interested, young people or people are looking to do a career change in software engineering.

[0:13:19.9] WJ: Scripted, yeah.

[0:13:21.0] DA: Ask Ted Jenks or RailsBridge. We actually even recorded an episode about RailsBridge episode 20, building bridges.

[0:13:30.1] WJ: Yeah, with Rachel Ober, I remember that one.

[0:13:32.8] DA: Yeah, way back. 60 odd episodes ago.

[0:13:35.7] WJ: Yeah, she was the local chapter founder I think, right?

[0:13:40.1] DA: Yeah founder of RailsBridge.

[0:13:43.3] WJ: Or the RailsBridge chapter I guess, yeah?

[0:13:46.1] DA: Yeah there are so many good opportunities for volunteering and teaching the next generation of people. Building up the community.

[0:13:54.7] WJ: Yeah, it is a really in demand skill and there is a real shortage of teachers and it does a lot for the community when people know how to do this stuff.

[0:14:03.6] DA: Well, there you have it. Plenty of opportunities to volunteer, create feelings, great community.

[0:14:09.2] WJ: Great impact.

[0:14:10.3] DA: Great impact.

[0:14:10.8] WJ: You got any teach and learns for us?

[0:14:12.4] DA: Go get done. So recently I have been looking a lot more closely at how to manage like the client side cache with the following GraphQL. I am preparing to give a second version of my choose your own adventure of GraphQL talk at PyCon in a couple of weeks and so I was looking really closely at caching and how you can better structure your mutation responses to not have to write unwieldy update functions. So basically like through good API design you can update local cache pretty seamlessly.

[0:14:55.5] WJ: That’s a good one.

[0:14:56.4] DA: Basically the thing that really helped me out was just thinking about how you need to – if you are adding something to a list, you need to re-fetch at least the ID of everything on the list and it a parent record that contains the list with that ID and with fellows like de-normalizing the cache, putting that all into the local storage and it just kinda works.

What about you William? I am sure you’ve learned many things out in the world.

[0:15:27.2] WJ: Well when I was messing around with R I learned there is a technique for dealing with really sparse data called over-sampling.

[0:15:34.0] DA: Interesting.

[0:15:34.8] WJ: Yeah, one of the issues that we found was when we’re trying to predict when sharks would be around, we had way more samples where no shark was sighted than samples where sharks were sighted.

[0:15:47.2] DA: That sounds about right.

[0:15:48.3] WJ: Yeah, at first we were doing a terrible job. We were treating it like a quantitative variable. The number of sharks sighted, which makes the data even more sparse because there was that one time where you saw seven sharks and that’s like happened once ever.

[0:16:05.8] DA: They were just all hanging out together.

[0:16:07.5] WJ: Yeah and then two times where you saw four and three times where you saw two. So instead, we switched it to either there were sharks there or there weren’t which meant there were way more samples where a shark was sighted at all because we got to group all of the items they were all of the numbers that are greater than zero and then we used over sampling to essentially duplicate the samples where a shark was sighted to get that number higher.

So that it would be more balanced with the number of sightings or the number of samples where no shark was sighted and then we were able to train the model and have it be better in scenarios where sharks are sighted which is the important part, right? Nobody wants a tool to predict when sharks won’t be sighted.

[0:17:03.1] DA: I mean it’s kind of like –

[0:17:03.7] WJ: That’s just almost always.

[0:17:05.2] DA: It’s like predicting the weather like if there were no sharks yesterday then there are probably be a sharks today.

[0:17:12.0] WJ: Right, yeah. So you can get it if you do it poorly, you can train a model that is 99% accurate but I guess there is not sharks which is always guess is no.

[0:17:21.6] DA: Exactly. Yeah that is like the baseline crappy weatherman model where it’s like, “What will be the weather today? Pretty much what it was yesterday.” Still no sharks. Cool so you just double the data.

[0:17:41.0] WJ: Yeah it feels like cheating.

[0:17:42.5] DA: Yeah but if statisticians are into it then I think –

[0:17:46.7] WJ: It is a balance statistical technique that they teach in schools.

[0:17:51.3] DA: Awesome.

[0:17:52.4] WJ: Over sampling.

[0:17:53.7] DA: Cool, we’ll look at that.

[0:17:55.0] WJ: Follow us now on Twitter @radiofreerabbit so we can keep the conversation going and if you like what you hear, give us a five star review and help developers just like you find their way into The Rabbit Hole. And never miss an episode, subscribe now however you listen to your favorite podcast.

[0:18:10.6] DA: I will do that.

[0:18:12.8] WJ: Thank you Dave, much appreciated and thank you for listening to The Rabbit Hole.


[0:18:17.5] MN: Follow us now on Twitter @radiofreerabbit so we can keep the conversation going. Like what you hear? Give us a five star review and help developers just like you find their way into The Rabbit Hole and never miss an episode, subscribe now however you listen to your favorite podcast. On behalf of our producer extraordinaire, William Jeffries and my amazing co-host, Dave Anderson and me, your host, Michael Nunez, thanks for listening to The Rabbit Hole.

Links and Resources:

The Rabbit Hole on Twitter


Sandi Metz

Jupyter Notebook


Heat Seek


Code for America

Teach for America


Episode 20

Rachel Ober