This week on the podcast, we talk about Jack Rusher, an underground cage fighter turned above-ground code teacher, who bestowed on Paul the gift of Lisp and is now tutoring Ben on the basics of Clojure.
You can find some of Jack's art and other projects here.
Ben breaks through and answers his first SO question—by copy/pasting from the comments, of course.
Sara finds the relevant XKCD.
Later, we check out Darling.hq, a MacOS translation layer for Linux
If you are in the mood to learn programming with colors and shapes, check out the website that Jack built: Maria.cloud
Paul Ford It's hard because you want to empower people as soon as possible to do the real work. But then again, you're going to hit a wall, no matter what, sooner or later. That's adult life. And you're either going to hit the like 'making a real wall' or the 'how does it work?' wall.
Ben Popper Hello, everybody! Good morning, Paul. Good morning, Sara.
Sara Chipps Hiii! Good morning, Ben. Good morning, Paul.
PF Good morning, Ben! Good morning, Sara! Here we are! [Sara laughs]
SC Look at that!
BP Welcome to the Stack Overflow Podcast y'all, here we are! So I reached out on Twitter saying I needed a tutor. I'm getting back to trying to learn some programmings, some software skills.
PF Some programmings! Yeah, definitely.
BP Some programmings. Yeah. Start reading Ben Popper's The Worst Coder in the World again. And Paul, one of your friends Jack Rusher reached out which sounds like the name of a superhero.
BP His Twitter avatar also looks like somebody out of the matrix. It's like a man with a perfectly Q-Ball shaved head, sunglasses wearing a big fur coat with like a thick fur neck. And I just thought who--
PF I'm not surprised.
BP Who is this totally amazing guy? And then I went to his website, and it was doubly intimidating, it was like ''this is the machine, machine learning art I make. And this is my four software startups that I did.'' I was like, what? This guy wants to tutor me?
PF Jack is a joy. He's one of the people--he moved to Berlin, I miss him terribly. And I'm really glad that he's going to educate you, because he educated me! A lot of the things I learned about 5, 6, 7 years ago, that got me thinking straight about code came from him on Google Chat, just saying ''nope, not like that!'' And he made me learn Closure. He's like, you need to understand lisps. And you need to understand Map and I would ask him really dumb questions, and he would answer them. Sometimes he'd be like, that question makes no sense. That's an incredibly useful thing. By the way, I think when you're teaching other people, god, it's just good to just say like, ''okay, everything you just asked me just as a category error.'' Like you just, you've missed the entire boat. And so really a lot of what I learned and a lot of the thinking that I've done about code over the last three or four years comes from him and he loves to educate people. So, that is great.
BP Right, well, yes, when there's a genius whose hobby is tutoring people who know nothing, that's always a good things.
PF What a good thing!
BP Apparently he loves MMA and Jiu Jitsu. So I think that's why he was willing to reach out, we chatted a lot about his days as an underground MMA fighter in New York before it was legalized.
PF We gotta get Jack on here, we have to stop talking about jack. Let's get, let's get him on the show.
BP Yeah, we need to bring him on show. But then he brought me to Maria.cloud/intro, which is closure with shapes. So if you want to check that out, it's pretty fun. I've been playing with it. I showed it to my kids, and they loved it. That was fun. Like, if you change this shape, or this color, or this size, like, ''Look, the computer does something different.'' So that was really fun. And I think something about my time with Jack helped me make a little breakthrough. I solved a problem in Twilioquest I was stuck on and then I answered my first ever question on Stack Overflow!
SC Oh that's great!
BP Air horn!!
PF Wow, you're, it's like a new Ben. It's pretty exciting.
BP I was excited. By answering the question. I mean, I went to the question, I looked at the comments and saw somebody had left the correct answer. And I copy pasted that into the empty answer section. But hey.
PF That's fine. That's fine.
BP You know, the knowledge is out there. [Ben laughs]
PF Look, if you go to Maria.cloud, what you see is kind of how it's supposed to work. Like, there's a very nice little editor that is reused throughout the page, where you can actually go in and mess with the code and see what it does.
SC I love that.
PF It's a repple! It's a live repple in the browser. And it's kind of, we keep coming back to this and I just like, it always makes me happy when I see it.
BP It definitely made me happy and my kids too to just be able to like press and see this stuff executed live. And Twilioquest is a little bit different too. It's one of the first things Jack said is like I want to teach you without any of the excess tools. And so Twilioquest like made me download, you know, Visual Studio code, and node.js and all these other things, I had to have like six windows open at one time, just to get through the problems. And that could be frustrating sometimes. So it's nice to have it all just in one.
PF This is what's hard about teaching people anything related to technology right now is that it's literally like, download these 450 things, is where you start. [Ben laughs]
SC Yeah! And I feel like, I feel like when they, there's like two worlds, right? There's like this world, which is like the in-browser repple. And what people end up learning in this case are things like, you know, here's how you do a variable. Here's how you add two numbers together, that kind of thing. And then there's like another jump, which is here's how you download all the things and here's what to do when some of them aren't working. And I think for people to know when that jump is important, is tough when you're first learning.
PF It's so complicated, right? The thing is, is the fundamentals will never steer you wrong. It starting with them is good, but it can be really hard to connect. I'm going to make the circle bigger to I want to make a webpage that when I click on it, five things happen. Like your brain, can't really, so if you're not motivated, just by learning for itself, which Ben sort of put himself on a path, it can be really tricky. I learned backwards, I learned by kind of copying and pasting everything I saw around me to get certain things I wanted. And then, over time, I was like, wait, what the hell is happening in there, I need to figure it out, and then keep going lower and lower down the stack as my life proceeds. And eventually, you know, right before death, I think I'll know a lot about the C programming language. That's, that's the last thing you see, you understand em map, right before you head into into the tunnel.
BP I think for me, I have the advantage that, you know, this is something that I kind of get to learn as, like a tangent or a corollary to my job. It's not like I'm looking for a job, we had a piece up on the blog, Play the Long game and Learning to Code, it was just talking about, like, a lot of people early on and Paul, maybe this is sort of similar what you're doing, you know, they're just trying to learn syntax, and they're copy pasting a lot because they want to be able to build something, show they can build something get in there, and you know, figure out how to muck about so that, you know, if they can get a job, they can be productive. And that's very different from the long tail, you know the long path of like, oh, conceptually, how does all this work and like, let me understand this from you know, a basic level and then build up from there. So sometimes you don't have the time.
PF Everything I did at the beginning of my career can be done 100 times better with like Squarespace now. [Ben laughs] Or, you know, so for real, like, my, my job existed, I got into this industry, because Microsoft Word didn't support HTML at that time. So yeah, it's the on ramps are so different. And the web is so big. And I think we get a lot of complaining, right? Like, people are like, ''ah, we've lost the web.'' And I'm like, it's still the same webinar, you can make the same HTML that you used to make.
BP Sara, you you were homeschooled. But then did you go to college for computer science? Or did you have a tutor? Like, did you have any mentors along the way? Who kind of helped you?
SC I did. I did go to school for computer science. And then tutors. No, not really. I had mentors. But tutors it sounds tutor sounds like a little bougie to me.
BP Yes, maybe you're right. Mentor is a better word, somebody who helped you along. I mean, you said that you spent a lot of time on blackboards and you know, forums and stuff like that maybe people who were helping you before Stack Overflow, over the internet? Did you make friends and mentors online?
SC Yeah, one thing I always talk to people about who are trying to learn is there just comes a point where you're like, Okay, I know how to make all the variables I, I know how to write a function. I know how to do all these things. What does it even mean? And so I always encourage new folks to start with a project. Because then you, like you have a goal. Otherwise, you're just going to sit there. I mean, there's all kinds of learners. But I think most people just can't sit there learning the definitions of these things and a syntax, and then walk away and say ''I'm a programmer!''
PF So there's the thing that happened, that came out that's very relevant to Stack Overflow, which is the first documentation for the oldest surviving computer in the world was uncovered. Finally!
PF Yeah. So we can create a Stack Overflow section for the Zeus Z Four, which was manufactured first in 1945. I don't think there's a tag.
BP Wow, this is the Dead Sea Scrolls of computer manuals right here. This is the OG text, huh. Can you put this on retro computing stack? You have to come up with a question and then answer it. But yeah.
PF So it's one of the pictures of the manual are just if you like computer history, it's some good stuff, because it's when it's typewritten, but then they have little rectangle and arrow diagrams, you're like, Ah, here we go. And also, everything in German about computing sounds really good. Like it's, it's the [says German word] and things like they just come in here, just all the computer words sound good. There's a little I mean, World War II is in there. It's a little complicated the whole history of this, but nonetheless, the other one that's really good, if you like old manuscripts about computers is go find John von Neumann's initial definition of the Von Neumann machine, which of course, everybody gets upset, because everybody gets upset. But he actually didn't purely come up with it. It was a sort of codified it, but it's another one with really good rectangles pointing to each other explaining how computers kinda still work.
BP Okay, so an excellent visual, sort of that that aesthetic buzz plus a little bit of Computer History. Plus, yeah, maybe something you've actually learned here.
SC Yeah, I feel like I've seen this. These look like a lot of the software diagrams I've seen. But without the German words.
PF That's right. Well, if we were in Germany, I would hope we'd be seeing these. [Paul says German words] Is what we got here. And actually, the first section is [Paul says German words], which you know, I don't know what that means. But context clues, let me know that it might be about the organization of the Z four machine. So that's that's pretty exciting. All right, so we can learn code with Maria.cloud. We can travel back into the 40s and study the Z four. I have one thing I really want to talk about that I was up late at night, thinking about. So we're talking about 10x programmers or 100x programmers etc. And I just like, the thing about that conversation that drives me bananas is, is that there are a few people who are unbelievably skilled, who get a lot more work done in a lot of different disciplines, including including programming. But so little of what it takes to actually launch and ship a product in the year 2020 and soon to be 2021, if we're lucky, has anything to do with programming, it has to do with all kinds of other things. I feel like every time we have that conversation, everybody immediately starts to have the exact same fight about like, ''wow, you know, you favor one kind of person over another and this and that.'' And the other thing, and it's just like, it's actually utterly irrelevant. For the most part, if there are 10x programmers, they're working on the SDK at Apple, that you're gonna copy and paste, like the pile of vegetable matter that you are, when you do this job every day.
SC There is a big conversation on Twitter this weekend, because someone said, ''if you code with a mouse, you're definitely a junior developer.'' [Ben laughs] [Paul sighs] And I feel like that's like a that's like a that's like a similar sentiment, right of like, ''here's the thing, you need to be the best coder or the 10x coder. One that's like delivering the most.'' And I think, you know, there's a percentage of your job that's about code, there's a percentage of your job that is about working with your teammates, and influencing the change you want to see and empowering your team and doing research and that kind of thing that we don't really talk about when we talk about like the 10x coder, or we think of, you know, some guy in a basement doing coding competitions.
PF So we were talking earlier about my friend Jack. Jack has taught me a lot. He's an incredibly efficient, smart programmer. And when he shows me code, it's this like, flash of recognition, where you're like, Oh, that's what it's supposed to look like, I go, oh, my goodness, I really didn't know what I was doing. And that to me, right, that efficiency, in how you order your thoughts, getting expressed as code because you are operating a piece of machinery, that is pretty joyful. And it's not, it's not somebody holed up in a corner just being smarter and making some some dude 10 times more money. It's a discipline and you see people really have talent and really craft their work in the discipline. There's always this in group, out group dynamic, right, which is just whoever is best at shaping in groups often succeeds. In the short term. [Paul & Sara chuckle]
SC Yeah, that's the true talent.
BP The thing nobody talks about is like the one 10th coder like me, who makes everybody else on the team feel great. [Paul laughs] And doesn't mind getting passed over for promotion, it's just happy to be there, you know, just happy to be part of the group. I haven't seen any articles on the one 10th coder.
PF Sometimes the one 10th coder is the 10x Product Manager, right? [Ben laughs]
SC Yeah, exactly. The one that I also like, identifies new technologies or figures out how to solve that thing, because someone on the team is mad at someone on another team.
PF One of the things I really like your work is we built a culture and this our engineers built the culture, I didn't do this, that advocates for product management on any project. So if engineers are left to their own devices, they will create engineering solutions to user problems as opposed to product.
SC Oh, yeah, we've seen these.
PF Exactly. And so like, what you want is a culture where engineers and designers advocate for product to do its thing and product advocates for you know, design, engineering, and sort of all the way around. And it's, it's surprising how engineers think they can solve problems by coding. If someone is building a transactional database at a low level, this there is a little truth in this, like, you're down to the computer science algorithm layer. But after that, when you're when there's people involved. It's not all about 10x programmers.
BP I love that. What was the story, Sara, you told about like the science lab that went offline. And people were suggesting all of these like incredible tools for them. And they were like, ''well, the real problem is we have to take pictures of all the wasps that forced us on our lab.'' [Paul laughs]
SC So yeah. Yeah, this is my favorite thing. This is the that's the role I play in this podcast is thinking of XKCD. [Paul & Ben laugh]
BP Have you ever seen this thing, darlinghq.org that I just put in here, I know you're, you're a Linux guy.
PF I saw this today, when I was looking at some website, maybe it was Y Combinator. So this is a class. So they're trying to do essentially Wine for Linux. Let's assume people don't know what Wine is. Wine is a layer for Linux, that lets you run Windows apps inside of Linux. And it's gotten surprisingly good. Like you can run the hell out of a lot of Windows software, including games, inside Linux, 3d software, all kinds of stuff. And it's like this weird crypto Windows machine. So they're trying to do the same thing for the Mac. And it doesn't quite it doesn't really, it's not like he can run omnigraffle today.
BP So the advantage here is you want Linux if you're like a programmer, and you want to have a lot of control and a lot of flexibility in your OS, but then you don't want to be you know, losing out on all the great programming and games that are on the big operating system. So that's what you get this for?
PF Let me let me ask here, like it feels to me like the absolute nature of all technology is to just blur together into one in undifferentiated mass unless somebody is fiercely defending. Like, now we have Ubuntu runs inside of windows, right? And you're in a leadership role in open source foundation sponsored by Microsoft, right? These are just kind of every big concept where you're like, ''Huh, wow, that's they'll never work together, that'll never happen.'' It's just the computer is a bunch of little elves that go.
SC What I've observed is also like something new will come out. And people are like, well, this is the next future, right? Like, this is a perfect example of something came out. We'll say Mac OS here, because Mac OS happened after Linux. And people are like, this is a great solution. This is the only thing that we'll need. And then someone out there just building it to run on Linux or running an emulator in order to run Mac OS programs on Linux, because someone wants to do that. So it all kind of like you said, it kind of all melts together.
BP It does seem like there were some legal concerns here, Paul, like you were saying, like this doesn't violate Apple's Terms of Service. So they had to think a little bit about that.
PF Sure. Why not? You would have you do the, you know, you poured over the system calls. And then you poured over the calls for the various you know, widgets and libraries. And this is the thing, it's just, it's little elves yelling, the names of other little elves is all it is. And so like, if it's an ogre, but it kind of sounds like an elf, they don't know.
BP The chain of elf translators, right? Playing telephone.
PF The computer just doesn't know the computer doesn't know that Apple exists. It doesn't know that Microsoft didn't exist, it just knows that that electricity means go, go, go go. That's it.
BP Mmm. Yeah you know, I really experienced this when I was trying to answer that Stack Overflow question. I was looking at sort and slice and I didn't know that they had these inherent properties that, for example, they will sort it automatically in alphabetical order. And so I was looking for a logic, I was looking for something mathematical, I was trying to figure out how I could make it work. But really what I needed to do was look up these vocab words and then memorize their meaning. So, there's a magic elf language, and you think, as you're learning to program ''hey, I've just got to think this through logically'' but sometimes, no, what you need to do is just study your vocab.
PF Yes, there is a logic there. But it turns out that your intuition will lead you to all sorts of intermediary logics that are not accurate. [Ben chuckles] And it turns and then the actual logic is both really, really simple, but gets very complicated really quickly. So it's hard. It's just actually, all the work we do to make it easy. It's kind of hard.
BP Alright, so it's that time of the episode, our lifeboat of the week goes to kevin ternet. ''JS - get top five max elements from array.'' This was asked four years ago, active within the last month and viewed 16,000 times. So thank you to Kevin for that answer. And I will link it in the show notes. If you want to see how to solve it. The code is right there.
PF We love you, Kevin.
SC Thanks Kevin!
PF You're an angel.
BP I feel like this will come up in my in my Twilioquest, so thank you, Kevin. Yeah, this seems like a puzzle I'm gonna have to solve in the near future. I'm Ben Popper, Director of content here at Stack Overflow. You can find my one Stack Overflow answer ever in the show notes and give it an upvote. And you can find me on Twitter @BenPopper.
SC You're not supposed to do that, Ben.
PF Ah! Ah! [Sara laughs]
SC I'm Sara Chipps, Director of Community here at Stack Overflow. You can find me at GitHub @SaraJo.
PF I'm Paul Ford friend of Stack Overflow, check out my company Postlight.