Today, we have a special episode with some special guests. We welcome our Rabbit Hole Veteran, Emmanuel Genard and our previous guest and friend, Meredith Edwards. Today we are shedding some light on a secret new podcast that aims to take over the entire podcasting empire. Founders of the podcast, Emmanuel and Meredith, have been working on this secret new software development podcast (whose name will be revealed at the end of the episode) for quite some time and they are here to tell us all about it. In this episode, we find out how the idea for the podcast emerged from the depths of a dark underbelly. We discover how the episodes are structured, who inspired the podcast, what topics will be covered and most importantly – why the podcast only looks at real code. So what is real code? Online code tests often don’t really equip you for real world code and this gap in the information system is what this new podcast aims to address. The podcast works to create different ways to solve problems you normally wouldn’t see – real problems that happen in the workplace – and uses interesting tools to foster listener engagement and practical exercises. If you’ve been looking for an evil genius to help you solve real world evil problems, then take a listen to this episode.
Key Points From This Episode:
- Find out how the new secret podcast came about.
- Discover why William wanted to take down the entire podcast empire.
- Is trying to talk about code like trying to dance about architecture?
- Why the new secret podcast only talks about real code.
- Are online code tests going to help you in the real world of code?
- Learn why scrimmages are better than drills when it comes to code.
- The challenge of refactoring code that you didn’t write.
- Find out why the secret podcast was inspired by Sandy Metz’ 99 Bottles.
- Learn more about the structure of the secret podcast episodes.
- How the secret podcast uses poll requests for listener engagement.
- Finally the big reveal: The name of the secret podcast.
- How the name for the podcast was derived from a dark underbelly.
- Evil devs + Evil problems + Evil code = Evil Genius.
- How the podcast aims to tackle problems with diabolical solutions.
- The future topics that the Evil Genius will be covering.
- Where you can find and contribute to the Evil Genius podcast.
- And much more!
Transcript for Episode 85. Introducing a new podcast - Evil Geniuses
[0:00:01.9] MN: Hello and welcome to The Rabbit Hole, the definitive developer’s podcast. Recording live from the Boogey Down Bronx. I’m Michael Nunez. I have our co-host today.
[0:00:10.3] DA: Dave Anderson.
[0:00:11.4] MN: Today, we have special episode with some special guests. Introducing our Rabbit Hole Veteran, Emmanuel Genard and Meredith Edwards. How’s it going guys?
[0:00:23.5] ME: Going great.
[0:00:24.7] EG: It is going great, it feels good to be back in the Rabbit hole.
[0:00:27.8] DA: Yeah, good to have our once featured regular back in the show.
[0:00:31.6] ME: Yeah, I missed you guys.
[0:00:33.1] MN: Yeah, I think the last episode we had the both you on was the episode on role models and that was like a really awesome and amazing experience to talk about some of the people we aspire to be and some people we follow and who we want to be when we grow up.
[0:00:48.6] DA: Yeah, that’s right. Actually, a discussion from that evening kind of germinated the podcast that you guys have been working on, right?
[0:00:57.0] ME: That is correct.
[0:00:59.0] MN: That was a special night, yes. It all comes full circle because today we are shedding some light on a new podcast that Emmanuel Genard and Meredith Edwards will introduce under the umbrella we currently have of software development podcast. After that episode, after the recording, what was the conversation that led to the amazing podcast we’re going to be elaborating later on in this episode?
[0:01:28.1] DA: What is the podcast called? Or just not talk about it until the very end?
[0:01:32.8] MN: Yeah, I just want to build the conversation and then we’re going to say the name and then it’s going to be amazing.
[0:01:38.3] DA: Okay.
[0:01:39.1] MN: Yeah, what caused the conversation?
[0:01:41.9] ME: Yeah, Emmanuel, from what I remember, we were sitting a table, having dinner together and both you and I were really interested in doing a podcast where we talk about code.
[0:01:54.8] EG: Yeah, that was it, right? It was, I think William was revealing his masterplan, our producer William, to have a podcast network, a podcast empire, take over all of podcasting and we offered ourselves to the emperor. We offered our services to the emperor so that his greatness might even be heightened.
[0:02:24.4] DA: Man, wherever William is, he’s turning red right now. Yeah, that’s awesome. It’s really not easy to talk about code in audio format too. It’s like – what’s that phrase like dancing about architecture or something?
[0:02:40.9] EG: I’ve never heard that phrase but yeah, dancing about architecture. You know what? That’s probably something you can do. I took some pretty geeky dance classes in college and I majored in theater and dance and so I’m going to say that’s probably easier than you think.
[0:02:58.0] DA: I mean, I just don’t have the expertise of it. I guess you guys have the expertise to talk about code. Maybe anything’s possible.
[0:03:07.2] ME: Yeah, I think it is really hard and we are getting better at it for sure.
[0:03:14.8] DA: Cool, what kind of code do you guys like talking about on the podcast?
[0:03:19.3] ME: We like talking about real code.
[0:03:21.1] MN: Okay. Elaborate on what it is that’s real code. Is the code I’ve been writing not real? Is that what you're telling me?
[0:03:30.7] ME: Yeah.
[0:03:31.3] DA: It’s a lie.
[0:03:32.5] ME: Well, here’s the thing. Is that, so much of the code that you can practice online, these are puzzles that you solve that don’t resemble the code that you write day to day and we didn’t want to play around with that.
[0:03:47.6] MN: That’s true.
[0:03:48.8] DA: There’s so many problems on like Exercism or HackerRank or all those really focused examples of optimizing a really specific problem that’s like completely out of context.
[0:04:04.3] EG: Yeah, it’s also, I think they generally reward cleverness that is not really all that useful in actual software development that’s going to be – that’s running a business because other people will have to come and understand what you're doing to be able to extend it, maintain it and thus, the cleverness that you get, up votes for plus one’s or whatever it is.
Something like HackerRank or, there’s something called like, Code of a Ninja or something like that, I remember when I was first in for a job that people would recommend I do and they were just like, “How do you win this game?” With like five characters instead of explaining it in a way that another human being can understand.
[0:04:50.9] ME: That’s horrible.
[0:04:51.8] EG: You can understand, right?
[0:04:53.6] MN: Yeah.
[0:04:54.6] DA: Is that in the job description for Ninja?
[0:04:59.7] ME: Variable names can be only one character long, that sounds like –
[0:05:03.8] DA: Oh no.
[0:05:05.2] ME: That sounds like a paradigm to choose –
[0:05:06.4] EG: You're not a real ninja.
[0:05:07.5] DA: A true ninja.
[0:05:09.8] EG: A true ninja, unless your code is a series of characters but no real meaning around them.
[0:05:17.3] DA: Yeah, was it Brain Fuck or something? Yeah, that’s cool, I totally feel that, especially with whenever you processes too, right? These problems are like a whole separate thing that you kind of train for before you actually have to train for the thing that is your job. You have to level up and do these ninja exercises and then eventually you get to the point where you can do a white boarding problem or a live coding challenge. I guess as many things with interviewing, it’s challenging to get a read for the skillset and it’s like an artificial contract to a degree.
[0:05:53.8] ME: Yeah, absolutely. It reminds me a little bit of the way that you know, we put high schoolers through the SAT and ACT and while those are indicators of verbal and math skills, they are a little deceptive in terms of “If you do really well on that, it means you're directly going to succeed in college.”
[0:06:16.9] EG: Or even in life, right?
[0:06:19.5] ME: Yeah.
[0:06:20.8] EG: They’re pretty much useless. I think it’s pretty much useless for life for the most part.
[0:06:26.6] DA: Eliminating two answers, that’s not going to help me in the multiple choice exam of life.
[0:06:35.0] EG: Yeah.
[0:06:37.6] ME: Imagine a test that would be – you know, a test for life or a successful projector of that, that would be kind of crazy.
[0:06:48.1] MN: Let’s not have that.
[0:06:50.9] DA: We’re going Black Mirror. Cool, yeah. What’s an example of a problem that you would take to do this real code from the street? What was it? The bouncing Bronx or –
[0:07:10.3] MN: No, the boogey down, it’s the boogey down. What is a problem that you would take from the boogey down on to this podcast? What are some – how do you, I guess, the question I have is in parallel of what Dave was asking, what questions do you think are meaty and like, worthy of the exercises and how do you gauge into a problem that you want to do?
[0:07:38.6] EG: I would say, one of the things that we definitely look for is something that feels like, I don’t know if this is going to be a dark in page, feels like to us, something that we would face in a day to day basis. Give me ideas of like – you have to figure out how to validate something, you have to refactor something someone else wrote or you wrote. To be able to add functionality to it and so then, they become practices, though, I would say they’re also kind of constructs we’re using but they’re constructs that are –
Kind of like scrimmages. This is a sports reference but if you scrimmage in football or basketball, you kind of play a simulated game essentially but you play with your team mates and you could practice a specific skill while you’re scrimmaging. It still feels like a game whereas if you were just doing drills, a lot of the times, it doesn’t feel like a game and it may not help you as much because when you're doing a drill, you don’t have someone in your face trying to block a shot.
[0:08:39.2] DA: Right. It’s like kind of one of the building blocks of getting there, you might do a pushup and then you’re doing an exercise or a drill and then a scrimmage above that.
[0:08:52.8] EG: Yeah, I guess we want the scrimmages.
[0:08:55.1] MN: yeah, I imagine, I think you mentioned before, it is – there are different experiences to taking a particular puzzle and trying to solve that programmatically versus like something that could potentially be a code test that you may have to solve. Or like, maybe a particular thing you would run in to that you normally won’t get in a puzzle or a code test.
These are the problems that you guys are trying to solve.
[0:09:24.2] ME: Yeah, absolutely. Especially with refactoring. One thing that I did not anticipate is that, in my own experience, refactoring my code is fun. Because if you have a test to support your code, you‘re just tinkering around with the code and you know the way that it works so there’s a lot of freedom there.
However, when Emmanuel and I took a refactoring problem for a code that we hadn’t written and I had to refactor it, it felt so much more like a day to day challenge because, as a developer, you are refactoring code that you didn’t write or you’re refactoring code that you wrote but maybe you wrote it a couple of weeks ago and you don’t remember your code.
And discover or rediscovering the logic behind that code and familiarizing yourself with the naming. Yeah, it’s a lot harder when the code is not fresh, you know? In your mind.
[0:10:30.1] DA: Yeah, that’s true. Are you guys starting from basically like an existing set of code that then you will always like build on top of and extend for each of these topics or does it vary case by case?
[0:10:45.7] EG: Yeah, I’d say it varies as well case by case. It’s going to be kind of a surprise I think each problem and –
[0:10:53.4] ME: Yeah, absolutely. I think it depends on the nature of the problem, it depends on how we source the problem and then, do we want to try out a couple of, well, more than a couple – a few different approaches and just to make things up, keep it interesting but also see what works best.
[0:11:11.5] MN: I see, you guys had the idea sparked soon after the conversation, William wanted the two of you to fall under the empire of the podcast. You guys thought about the problem?
[0:11:24.4] MN: I feel like there’s also like, we joke about that but then, you guys also had a very earnest discussion about like refactoring and like the 99 Bottles problem, you guys are getting in deep on that.
[0:11:39.0] ME: Yeah, no, I remember that so well because Emmanuel is the first developer I talked to who had also read 99 Bottles and Sandi Metz is huge, right? She’s very famous in the Ruby community but at that point, most people had really only read Poodr: Practices Of Object Oriented Design In Ruby.
For me, I got so much out of both books but my favorite is 99 Bottles because of the way that it teaches you a strategy to refactor your code to make it good but yeah, Sandi Metz’ 99 Bottles, The Flocking Rules, that was a huge inspiration for our podcast.
[0:12:25.6] MN: Yeah, you guys have the structure and the idea of the podcast, you figured out a way to pick problems that resemble more like scrimmages rather than drills. I guess the last piece is the name of it. What is the name of the podcast?
[0:12:46.5] DA: We forgot to talk about it.
[0:12:47.8] MN: We can go full circle or before we get there –
[0:12:50.2] EG: Before we get there, I want to mention the structure of our podcast episode, they’re going to be one person interviewing another person. I’ll interview Meredith about how she approached things and also, we want to say that we will definitely give links to the code that we’ve written through GitHub, we will give you links to specific commits that we talk about as well as you can see the changes.
Although it will be hard to follow by just listening, we will try to make that as easy as possible where you can also find a way to just read along with the code as we talk about it.
[0:13:27.7] DA: That’s awesome, I guess like, maybe even take the problem from commit zero and carry it forward on their own terms.
[0:13:35.9] EG: Yes, that would be great.
[0:13:37.3] ME: Yeah, absolutely. We also put that there because we’re really interested in hearing from our listeners if they want to comment on our code. If they want to submit a poll request with another solution for the problem that we talk about. Yeah, we definitely want to have a conversation with our listeners about code.
[0:13:57.8] DA: That’s cool, that’s an interesting idea to use like a poll request as a community engagement kind of thing, where I guess it is like for open source.
[0:14:08.0] ME: Yeah.
[0:14:11.0] DA: I guess there are some GitHub repos that are not really for the purposes of building software, they’re just for building consensus or like building a joke together.
[0:14:22.6] ME: Yeah.
[0:14:23.5] DA: That one that’s like – PR is about the best software for security purposes, there’s just no software at all and everyone just trying to optimize for this non-existent piece of software.
[0:14:36.1] EG: Software. I remember hearing about that, yeah, that’s cool. Yes. Getting to the name. The name was one of the most difficult things I’ve had to do in my life I think.
[0:14:48.3] MN: Yes, drum roll, when we get the drum roll, you guys have been holding out on giving the name of the podcast, we got the – where the thoughts came from, the particular questions you guys had to use, the structure of the podcast and now we – the name, you guys have named the podcast. Where did the name come from and before we introduce the name, how did you guys derive of that name itself?
[0:15:11.5] ME: Well, both Emmanuel and I are a little bit sinister.
[0:15:16.9] DA: Is there a sinister side of you? My gosh, there it is. Wasn’t aware of that.
[0:15:21.6] ME: There’s a darkness about us. Emmanuel’s last name is Genard. My last name is Edwards. If you take those two letters, they form the two-letter combination EG.
[0:15:37.9] MN: Okay, we have EG.
[0:15:40.6] EG: We thought about Edward and Genard but that sounds like a lawyer firm, right?
[0:15:48.2] ME: I forgot that we considered Edward and Genard, the EG affair, that sounds really cool actually.
[0:15:57.7] DA: It could be like kind of detective firm too.
[0:16:03.9] EG: Detectives.
[0:16:05.0] DA: Genard and Edwards, 888-8888. Yeah.
[0:16:10.4] ME: We need to get a subway ad.
[0:16:14.1] DA: You're not detectives or lawyers, this is not a primetime drama television show.
[0:16:20.9] EG: We’ll try not to be procedural about it.
[0:16:23.9] MN: Okay.
[0:16:28.6] EG: Then, something – we went to the bottom of the rabbit hole, we went to that – out of that darkness, that dark underbelly, we were born out of it.
[0:16:46.5] ME: We rose from the darkness.
[0:16:48.2] MN: Okay.
[0:16:48.8] EG: We arose as evil geniuses.
[0:16:52.7] MN: Snap, okay. Going down to the bottom of the rabbit hole, getting things done and coming back out alive, you become the Evil Geniuses.
[0:17:06.1] ME: Evil Geniuses.
[0:17:11.1] MN: Yeah.
[0:17:11.6] EG: Evil devs.
[0:17:14.5] ME: Evil problems.
[0:17:14.8] EG: Evil code.
[0:17:17.4] DA: I feel that, I guess the hook is that you’re cooking up these problems that you’re going to take over the world and then solve diabolical solutions.
[0:17:29.8] ME: Yeah, diabolical is the right word to use.
[0:17:35.4] MN: Yes. That’s the kind of code I want to see, diabolical. The kind that has the ability to take over the world and do evil things to it. You leave the fluffy stuff elsewhere. Yeah, I mean, Evil Genius is a really awesome name. I think that it goes very well with what you guys are trying to create with this podcast, with creating different ways to solve problems you normally wouldn’t see, right? We want these diabolical problems or these diabolical situations that you don’t see every day as someone who is trying to learn how to code. But you see them all the time if you work in a software company.
Because that’s like the really big thing too, right? Yeah, you’ve got a couple of these problems from the websites you’ve mentioned earlier but it’s the ones that you see at work that are probably the most diabolical.
[0:18:39.9] ME: Absolutely. Yeah, have you ever come across the 600 Mind Function?
[0:18:45.6] MN: God, yes.
[0:18:48.8] DA: That’s it? Yeah, we’ve seen 600, 6,000 maybe. Have you seen the 600 line code? No test.
[0:18:59.4] MN: That’s difficult, how do you do that? How do you implement test to that?
[0:19:03.2] DA: Gilbert Rose has got nothing on that.
[0:19:05.3] MN: Yeah. I mean, I think what your podcast will solve is the space that shows what real code looks and feels like and how do you make it better and how do you refactor and how do you make it more efficient. I guess I fully understand the idea of real code, not like boogie down Bronx code but like, you know, real problems that happen in the workplace.
[0:19:30.9] ME: Yeah. We want this to be useful, we want this to be practical, we want this to help people during nine to five.
[0:19:40.9] MN: Awesome, what are some of the future topics you guys will be discussing on the Evil Genius podcast?
[0:19:46.6] ME: You’ll hear us talk about validations.
[0:19:49.5] EG: Yup, we will refactor something that needs refactoring and we’ll also be – I remember, we’re going to keep the focus on things that feel like, the kind of things the working developer faces, not the puzzle, not the hoop someone has to go through I should say, when they’re interviewing for a job which are often really just unrealistic.
[0:20:11.7] ME: Yeah, real code is super important to us.
[0:20:15.8] MN: Awesome, I’m definitely looking forward to subscribing to the Evil Genius podcast to see your takes on these problems that we have as software developers on our day to day lives.
[0:20:27.6] DA: Yeah, I’d like to try some of the problems along with you guys. Looking forward to seeing them.
[0:20:33.7] ME: We can’t wait Dave.
[0:20:34.6] MN: Meredith, how can people contact you?
[0:20:37.1] ME: You can get in touch with me on twitter. My handle is @meredith_marg.
[0:20:49.2] MN: Awesome. Emmanuel, how can people reach out to you?
[0:20:52.2] EG: You can hit me up on Twitter as well, I’m @edgenard. Yeah, on Twitter.
[0:21:01.1] MN: Awesome. How can people contact the Evil Genius podcast?
[0:21:06.4] EG: You can contact us in several ways, we have a twitter account, it’s @evil_devs and our website is going to be evilgeniuspodcast.com.
[0:21:20.4] ME: Yeah, get in touch.
[0:21:22.3] MN: Awesome, sounds good. This was a very special recording. I’d like to thank both Emmanuel and Meredith to jump on the internet to do this recording and Dave, to you as well, always a pleasure having you, recording alongside me in the rabbit hole.
[0:21:38.9] ME: It’s been great, it’s been real.
[0:21:40.9] EG: It’s been real, yes.
[0:21:42.9] MN: Let’s keep the conversation going on twitter. Follow us now @radiofreerabbit. Like what you hear? Give us a five star review, it helps 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 cohost, Dave Anderson and me, your host, Michael Nunez.
Thanks for listening to the Rabbit Hole.
Links and Resources:
99 Bottles of Oop by Sandi Metz
Poodr: Practices Of Object Oriented Design In Ruby
Our seasoned cross-functional agilists work with you to develop technology, ship product and deliver value. We leverage our diverse expertise across industries and throughout the organizational growth cycle to your benefit. We bring best practices, emergent practices and creative solutions to your problems.