Code with Jason

246 - John Gallagher

Jason Swett

Join us for a conversation with John Gallagher, founder of Joyful Programming, as he shares insights on making programming enjoyable through Ruby, design, and object-oriented practices. We’ll explore the Unison programming language, designed to simplify distributed computing, and discuss the role of AI tools like ChatGPT in adopting new technologies. The episode includes stories about human forgetfulness and the growth opportunities podcasting offers, along with resources from Joyful Programming

Speaker 1:

Life hasn't been the same since the pandemic. Instead of working at an office around people all day, like we used to, most of us now work remotely from home, in isolation and solitude. We sit and we stare at the cold blue light of our computer screens toiling away at our meaningless work, hour after hour, day after day, month after month, year after year. Sometimes you wonder how you made it this far without blowing your fucking brains out. If only there were something happening out there, something in the real world that you could be a part of, something fun, something exciting, something borderline, illegal, something that gives you a sense of belonging and companionship, something that helps you get back that zest for life that you have forgotten how to feel because you haven't felt it in so long. Well, ladies and gentlemen, hold on to your fucking asses. What I'm about to share with you is going to change your life. So listen up.

Speaker 1:

I, jason Sweat, host of the Code with Jason podcast. I'm putting on a very special event. What makes this event special? Perhaps the most special thing about this event is its small size. It's a tiny conference, strictly limited to 100 attendees, including speakers. This means you'll have a chance to meet pretty much all the other attendees at the conference, including the speakers. The other special thing about this conference is that it's held in Las Vegas. This year it's going to be at the MGM Grand, and you'll be right in the middle of everything on the Las Vegas strip.

Speaker 1:

You got bars, restaurants, guys dressed up like Michael Jackson. What other conference do you think you can go to, dear listener? Or you can waltz into a fancy restaurant wearing shorts and a t-shirt, order a quadruple cheeseburger and a strawberry daiquiri at 7 30 am and light up a cigarette right at your table. Well, good luck, because there isn't one Now. As if all that isn't enough, the last thing I want to share with you is the speakers. And remember, dear listener, at this conference, you won't just see the speakers up on the stage, you'll be in the same room with them, breathing the same air. Here's who's coming Irina Nazarova. Oh yeah, here's who's coming For Freedom Dumlao Prathmasiva, fido Von Zastrow, ellen Rydal, hoover and me. There you have it, dear listener, to get tickets to Sin City Ruby 2025, which takes place April 10th and 11th at the MGM Grand in Las Vegas, go to sincityrubycom.

Speaker 1:

Now on to the episode. Hey, today I'm here with John Gallagher. John, welcome, hi there. So John is a senior software engineer at BiggerPockets and the owner of something called Joyful Programming. So, john, let's talk about a few things. First, what is Joyful Programming?

Speaker 2:

First of all, thanks for having me on um. It's a pleasure to be here. Um, joyful programming is my attempt, uh, to bring more joy into the world of programming. Unsurprisingly, uh, given the name and um it's it's a company that that I run on the side as well as having a day job, and, um, basically I I was truly a bit of a polymath, so I'm interested in a lot of different things, and one thing I'm really interested in is design, object-oriented design, encapsulation, coupling, making changes easy, and I'm also interested in monitoring and observability.

Speaker 2:

I'm also interested in user interfaces and UI components, and I just started to wonder what ties all of these separate threads together. What is it that gets me really excited about each one of these things? I realized it's bringing more joy to the world of programming and, of course, we both work in Ruby, so Ruby is already a relatively joyful language in lots of ways, but there are still lots of ways to improve and make the experience of programming more joyful, and I find myself constantly getting extremely frustrated by the amount of grunt work and the amount of non-brain powered work that engineers like myself do and we're highly paid people and it just increasingly has made no sense to me why it's like that, and I've been obsessed with this idea of making programming more joyful for a long time now can you tell me more about that?

Speaker 1:

like uh, do you mean that like programmers are maybe doing too much like low-level grunt work and they should be doing high level, high level things like? What do you mean by that?

Speaker 2:

yeah for sure. So, um, there was a language that I've been really looking into called unison, and this was the thing that really caused me to question. There's been throughout my career. There've been maybe 10, maybe 15 things that I've seen that have really like, wow, stop the press. This changes everything, and I'm sure there's lots of other engineers who can say that, but for me, ruby was one of those things, unison is one of those things, so is HTMX. So I remember the first time I saw this is a website, that website that's just styled with no CSS, no JavaScript, just plain old HTML, and the whole point was we, we overcomplicated the web and that was a huge like wow, okay, and that still sticks with me today.

Speaker 2:

And Unison is a similar kind of thing. So Unison is a language where you write everything in Unison. So there's no Compose, there's no Kubernetes, there's no deployment scripts, there's no CI, there's no pipeline, there's no builds, there's literally no builds. It's just a language, it's a typed, functional language that allows you to write your entire application in unison. And when I saw that and their pictures kind of you know, remove all the complexity, and I know, of course, it's complex in its own way and it's a really steep learning curve and it's for distributed computing, basically. So they like they've, they've shown a way of doing Spark like data structures and Spark-like Apache Spark data structures and data manipulation with like three lines of code and all the infrastructure stuff just goes away.

Speaker 1:

It's a really interesting coincidence that you mentioned this, because I saw a tweet earlier today. I might even still have it up on my phone. It was from Nick Schwaderer and he said something like you know, when you spin up a Rails app, you still have to involve like five different languages, and it's like still not that easy, and he said he was working on something in that area and I've actually had a similar idea myself.

Speaker 1:

It's like, does a hello world of a web application have to be as complicated as it is? I was thinking about in the context of teaching an absolute beginner. It's like there's still a lot of stuff and is there any way to make that simpler? And it seems like this unison thing might be something in that direction yeah, 100.

Speaker 2:

So some of the examples, um, it's kind of again what. It's one of these things where, once you use it and you see the simplicity, everything else you see in a very, very different light, including rub Ruby, including Rails. So the Hello World app that is on the Unison homepage is, I think, six lines of Unison. It does routing. It's essentially a function. It's a typed function that you can call and that function determines it is passed in a request and delivers a response back to the browser and there's nothing else to it.

Speaker 2:

And the really mind blowing thing about Unison is you can deploy a typed data storage thing it's essentially backed by a database and just say I want to store it's kind of a key value store, but the keys and values are typed and you can do that in two lines with no Terraform, no AWS. Obviously it's all running on AWS under the hood. But it means also that it has huge implications for the simplicity of testing, because everything is just a function and if every endpoint is just a function, you can very easily pull that out of the app and do an in-out test, just like pass some arguments in, make sure you get something out. And there is no database. There's none of this kind of tear down the database. Oh, there's a flaky test, because the data is still there and it uses this incredible thing called abilities to have these side effects. But you can then swap out those side effects for in-memory side effects, for example.

Speaker 1:

Interesting. I'm going to go to chat gpt right now and I'm going to say give me a hello world unison example. I'm curious how much it knows about unison. Um, because you know, these days, if I want to like, uh, dig a little bit into some new thing, um chat, chat gpt, is always how I do it now. Um, yeah, and chat gpt gives me a hello world in unison. Interesting, this is something I definitely want to mess around with because it sounds compelling yeah, it's um the.

Speaker 2:

There's always trade-offs with everything, and the trade-off with Unison is it's a very unfamiliar programming model and it's a real. It's very. I've found it really quite difficult to get my head around it, but once you get your head around it and learn to code in this very, very different way again, it's not like I'm going to build everything in unison from now on, because it's still very, very early days. It's been going for about six years but it's still very, very clearly. I mean, it's doing some really groundbreaking stuff. So it's going to take another 10 to get any traction. In fact, dave Thomas spoke about it at Yuriko recently. Dave Thomas is quite into it and he's got a few videos on it. So yeah, but yeah it's. It's one of those things that just changes the way you look at things forever and now you think something that seemed to me to be quite simple before is now okay, that's not not so simple. How can we get it even simpler and even more compressed and even less cognitive load and even more joyful?

Speaker 1:

yeah, interesting, um, like, speaking of ai, it seems to me that like, okay, so like I don't think it's a good idea to like ask chat gpt for some code and then just drop it into your code base and call it good. But I do think it's a good idea to like ask ChatGPT to write like a throwaway program. Like, for example, I've talked about my snail mail programming newsletter on the podcast before and I wrote a program to take my CSV of recipients and make PDF labels out of it so I can print them. And that was just like a ChatGPT generated program with a few tweaks. And I think that's a great use case for ChatGPT because I can be fairly certain that that program is never going to grow much. I can be fairly certain that that program is never going to grow much and so I can afford for it to be crappy and it's small enough where I can understand everything.

Speaker 1:

Chat GPT gave me Um and so like for really small web applications, um, that are kind of just I don't want to say throw away, because like my my mailing label thing isn't throw away, I'm going to use it forever um, but like these things that don't need to grow. I could see unison being great because you can say like hey, give me a web app to do such and such, deploy it. Blah, blah, blah, and it's just one single file. So mechanically it would be very easy to get that from, uh, from the response from the, the ai agent, into a production environment interesting lots of thoughts on that, so I used to think exactly along these lines.

Speaker 2:

Well, you know, we want to build stable, solid, dependable, changeable systems that are easy to work with and performant.

Speaker 1:

Et cetera, et cetera.

Speaker 2:

And the thing I think is really interesting and also, of course, wildly problematic about AI is nobody understands how it works. And I remember recently I talked to one of my family members about this and I said nobody understands how it works. You get that right. And they just looked at me like I was from planet Mars.

Speaker 1:

They're like no, but somebody understands.

Speaker 2:

And I'm like no, that's the whole point. We don't understand how it works.

Speaker 2:

So if you're pushing complexity into this black hole that you don't understand, we all know how that's going to turn out and I suspect there is a tidal wave of legacy code coming towards us in the next five to ten years oh yeah, it's already here once it's already here, once we get on the other side of that even now, uh, but once we get on the other side of that even now, but once we get on the other side of startups that have grown wildly over the course of two or three years, there's going to be an awful, awful mess to sort out. There. I mean awful, appealing mess, depending on how you want to look at it. So I'm really, really cautious about not writing any code that I don't understand.

Speaker 2:

Having said that, I've been using Cursor for the last couple of weeks and, yeah, it's pretty incredible.

Speaker 2:

I don't think it's an exaggeration to say it's changed my life in a very meaningful way. So, as an example, I think we were chatting before this podcast started about this, but in my day job right now, they've got a really urgent problem that needs to be solved be it's a component-based cms that can be changed by non-technical people, which I think we are still further away from than some people would like to claim anyway. So I've had all of these primitives and design ideas for two or three years to kind of to to do something that ticks all my boxes, and I've never really pushed it too hard because a lot of the technology still isn't there, but with Cursor I've been able to pull all these ideas together, pull together this kind of ideal architecture and with latest developments in Netlify and a new web components framework called Web C in 11. It turns out that I've managed to build an entire enterprise modular, component-based CMS that hooks into existing components that we have in Rails and build the whole thing and get it production ready within three days.

Speaker 1:

Okay, wow.

Speaker 2:

And so, and every chunk that I'm creating is relatively small. So I'm not talking about creating hundreds of thousands of lines that you don't understand, that's a recipe for disaster but because I'm wiring together existing tools and technologies, that all I'm doing really is adapting from one piece to another, from adapting from one technology to another, from adapt adapting from static site builder into rails, um, and it works. And I mean it would have taken me at least two weeks, three weeks, possibly even more at this point, and being a heck of a lot of work and frustration and time and energy. And I now just say, to cursor, here's what I'm trying to do. Can you give me a prototype?

Speaker 2:

And it gives me and I give it very, very small chunks of things to work and, as I've said, but it works ridiculously well.

Speaker 1:

Interesting. So I've had cursor on my computer for a very long time and this is another coincidence. Yesterday I was talking with somebody who was really big on AI assisted development, on AI-assisted development, and you know, I've said on the show before like kind of what I just said like I don't think it's a good idea to use AI to generate code and then just drop it into your code base. It'll often write code that well. First of all, it's not compatible with TDD and I always say I'm a TDD bigot. I think it's the only way to go. And so, like anybody who's using like GitHub Copilot or something like that, like you're almost certainly not doing TDD because GitHub Copilot is helping you write the code. You could have it write the test and that's that's great, and then you fill it, but that's not how most people are using it. But I was talking with somebody who had a different view of it and he said that he uses cursor and he just it's. It's so good now that he doesn't even check the code before he deploys it to production. He just asks cursor to write the code and then he sends it off.

Speaker 1:

Um, and I'm starting to think just within the last couple days, including this conversation is like maybe there's a different way to think about these things. Like there's a certain way of coding, of like writing a bit of code and checking it into version control and maintaining it over over time, Um. But maybe there's another idea of like having um programs that are like immutable where it's. It's kind of like an extension of that uh cattle, not pets idea, where instead of having like one large single program, you have a bunch of smaller programs and you say, hey, ai, give me this thing and it does it. And then if it no longer meets your needs someday and you need to change something, you don't modify the existing program, you just blow it away and make a new one.

Speaker 2:

That's really interesting and that is exactly what unison does. Every time you create, every time you change the code, it adds it to your code base as a new function interesting.

Speaker 1:

um, yeah, I definitely have to mess with this more. By the way, I opened Cursor as we're talking because I'm going to try to mess with something as we're recording here, but I'm immediately confused and so I'm not going to do that. There was a Python file I was going to open, but it's not letting me open it for some reason, so I'll figure that out later. But yeah, twice in two days I've heard about like how much better Cursor is now than it was like six months ago.

Speaker 2:

Yeah, I kind of came to it quite late. I tend to be quite laggard because I'm really skeptical about a lot of these claims and a lot of these over the course of my career. There's a lot of technologies that have propped up and they kind of open the web page, take one, look at it and like no new language, are you allowed to have undefined or nulls in it? Yeah, you can well close a web page like it. It's like a reflex now, um. So yeah, there's lots and lots of hoops for anything to jump through to get my attention.

Speaker 1:

Yeah, I'm similar and the cost of that is I tend to be a late adopter of a lot of things, including Rails. I started Rails in 2011, which I thought was so late. I thought it was like too late at the time, which is funny because now that was 13 years ago. A totally different question on a different topic. Um, a totally different question on a different topic. Um, you said at the top of the show that you're maybe a bit of a polymath and you have interests in lots of different things. What kinds of other things do you have interests in?

Speaker 2:

other than programming or within programming oh, both whatever yeah, so, um, I'm really interested in typography and visual design. Um. I'm really interested in um psychology and music and art and self-development. Um, and how the mind works. Really interested in therapy and emdr. Um.

Speaker 1:

What's.

Speaker 2:

EMDR. I can't remember what it stands for, eye Movement Desensitization, and I can't remember what the R stands for. It's a way of. I've had some EMDR, so I've gone through the experience of having it, and it's a very unusual and really interesting technique. I learned about it from a book called the Body Keeps the Score, and it talks about how trauma is held in the body. I had a. I mean, it's all relative, isn't it? But I had a relatively traumatic childhood nothing incredibly hardcore, but there was difficulties that we had in our family, and I've spent a lot of my life trying to get over that and trying to deal with it in various ways, and emdr has really helped me, and so the concept is surprisingly simple. There is this idea that trauma rewires our brains, and so we know that there are certain traumatic experiences that people have had and their brains are 3% to 5% smaller than people who have not had trauma so that brain in a physical, biological way.

Speaker 2:

It's not just a few thoughts floating around your mind which, when I learned about that, really kind of blew my mind, but yeah, so, um, there's this kind of idea that trauma is almost like hard-coded into us. If we experience it as children, it's very, very difficult to get away from those repeating patterns. So in mdr, the principle is that you put yourself back in the traumatic experience. This, of course, is very, very distressing. So you need a certain amount of emotional regulation to do this and you need to be with trained therapist who really knows what they're doing and they can make a safe space for this. But you're you.

Speaker 2:

They say to you essentially, go back in your mind and re-experience what you experienced. And you, you do that and you put yourself back in that position and the question they ask you is what comes up for you? And so when you do that, what comes up for you is for me it was images, sounds. I'm quite a visual person, so there's all these almost not quite hallucinations, but images that just immediately came to my mind. And as you think about those images, they the old school way of doing it was with a finger. They move finger sideways, left and right across your field of vision, and they ask you to follow the thing with your eyes. And the combination of reliving the trauma and the eye movement processes. The trauma is the theory.

Speaker 1:

Interesting and you felt like this has been helpful for you.

Speaker 2:

Definitely. Now a lot of my old behaviors are still there, but what really changed was when I thought back to some of traumatic experiences. One example would be I would be bullied at school, and that's something a lot of people have gone through to various different severities, and so I would usually think about the bullying at school and I would just. Every time I thought about it which wasn't very often as an adult, you know I would just push it to the back of my mind because it's just too painful to think about. Now. When I think about it, it's just some stuff that happened to me, but pain, the emotional impact of that is gone interesting.

Speaker 1:

Um, yeah, that makes me think like there's a lot of people, um, maybe around my age I'm 40, who are discovering in adulthood that they have ADHD or autism or something like that. I myself found out a few years ago that I have ASD level 1, autism spectrum disorder, level 1. I'm sure that I have ADHD also, but I haven't been diagnosed with that like I have with ASD and my wife was diagnosed with.

Speaker 1:

If I'm not mistaken diagnosed with ADHD and it just like explains so much. And actually for me, like when I got diagnosed with asd, people were like is it helpful? And I'm like, no, like it's uh, it's not, like nothing has changed at all. Um, but I think now that I've like lived with that for a few years, it actually does feel helpful. Um, and I've been learning certain things like. Just one example that comes to mind is like autistic people need more sleep than non-autistic people. I had no idea and my wife is like wow, I just thought you were like lazy, but apparently you actually need more sleep. I need like 10 hours of sleep at night, which I usually don't get, but it's like I can sleep for so long and then still feel like I can sleep more.

Speaker 1:

I just need a lot of sleep, and this like led me to to want to learn some certain things. Um, a challenge that I've had for a long time is just like making myself sit in the chair and do the work that I need to do. It doesn't matter whether it's remote work or work in an office or something like that. Like it's just really hard to to, frankly, do this work that I don't really care about.

Speaker 1:

It's like you know, you got to write the TPS reports. It's like who gives a shit? Like I'm great, I'm going to get a paycheck, but like it's kind of meaningless. You know, and I've addressed that problem partly by changing, but by taking certain paths in my career and trying to pursue work that is more meaningful and I've been successful in that to a meaningful degree and that's been great and that has helped a lot. But still, it's often quite difficult to find the motivation if you want to use that word to just sit there and work all day, among other things. It just feels unhealthy to do that. I think it is unhealthy to do that, but you have to do it anyway.

Speaker 1:

I read this book recently. It was one of the most mind-blowing books I've ever read, called the Molecule of More. Because I sought this book out, not this one specifically, but I was just looking for a book on dopamine, because I'm like, I have a suspicion that there's something going on with me to do with dopamine. I have these. There's this well-known vice that I have well-known in my household. I have these very specific Ghirardelli chocolates, these 92 percent gira deli chocolate squares, and I'm just like eating these things all day, every day, because it like I feel like it gives me a little boost, um, and it's just like something, something to do to to keep me going. So I'm not just bored out of my mind and I'm like maybe I have some kind of dopamine deficiency or something. I don't know how this stuff works. So I read this book about dopamine and it just okay.

Speaker 1:

There is so much more in the book than I expected. It talked about romantic relationships, sex politics, like what makes people a liberal or conservative, and it has a lot to do with dopamine. It talked about like high performing, like geniuses and stuff like that Just so many, oh. And it talked about like and stuff like that just so many, oh. And it talked about like, uh, genetic differences between americans and europeans, uh, due to the selection factor of the people who chose to emigrate to the united states. It's just like what the fuck? Like so much stuff in this book that just fundamentally blew my mind, that made me change the entire way that I look at the world. Like I was only seeking to like understand myself a little bit better. But not only did this do that, it like changed the way I look at like everything.

Speaker 2:

It was totally nuts wow, um, there's so many, so many threads I could pull on there. Um, again, as you were saying, odd coincidences abound, because I was away in Cardiff to visit one of my best friends about a week ago now and he works with neurodivergent people. That's his passion and he's neurotypical. But we were just wandering along and the street and we're going back and forth and he was like, well, of course you've got autism and adhd, don't you? I was like, excuse me, what? No, I can.

Speaker 2:

I know that I have some autistic tendencies. It's. People tell me jokes and I'm just like I don't, don't understand. Oh, I get it. It's like massive delay and always has been. And then obviously, all the technical stuff that I can do and all this kind of stuff. And it's not that surprising to me. I've not been diagnosed formally with any anything yet, but it's not surprising to me. I'm on the spectrum, but it's not surprising to me. I'm on the on, I'm on the spectrum. However, the adhd thing was a bit of a surprise and I started reading about it.

Speaker 1:

I was like just like, oh, my gosh, yes, yeah, I do that all the time did you read things and you're like, wow, this actually is like totally me just described my day, described my day almost to the letter.

Speaker 2:

Leaves thing is very forgetful about short-term things, like I recently went on a trip to london. I just bought this cable bag, kitted it out with all these cables, all these plugs, because I kept leaving cables everywhere and forgetting cables and forgetting power adapters. And my partner, who's very organized, said to me hey, john, why don't you get a cable bag? And I resisted it for ages and then finally, fine, okay, I'll get a cable bag, got this thing. I'm like this is awesome, everything in one place. I'm not going to forget it anymore. I went to London. I forgot the cable bag in London.

Speaker 1:

London, that's great. I? Um just a couple, just a couple of ones. I I've performed amazing feats of forgetfulness. Um, I, I drove to Detroit to teach a week long class. It's like a two and a half hour drive from here to Detroit. Um, um, and so I, I drove there. I was going to stay there for a week, and so I started unpacking my stuff, forgot my computer, so I just had to turn right back around and and drive back home um. One night, uh well, no. One afternoon I accidentally left my car running outside, um, and I was informed the next morning that it was still running. I left it running the entire night and guess what? I didn't do that just once. I did that twice, um, so yeah, I definitely have those forgetful tendencies too. I wasn't trying to one-up you, it's just those are. Those are very stark examples 100, and again, it's funny.

Speaker 2:

You should say that, um, we definitely have a lot to talk about here. Uh, because I came out one morning and our car is parked on the driveway and I, uh, I pressed the unlock key to the car and nothing happens. Like nothing happens, it usually. There's normally an unlocking sound and I looked through the window of the car and the rear driver's side door was open. I was like, did I what? I don't? And then suddenly it occurred to me last night, night before, uh, we'd gone to collect a printer. My partner and I I'd gone around the back, collected the printer from the seat, forgotten to close the door, went inside, locked the door, it rained overnight, oh no, it's like this car was there.

Speaker 1:

Thankfully, I'd taken the key with me into the house, but this car was there with this door wide open like 14 hours yeah, I've definitely done things like that, where it's like I've I'm do something forgetful and it causes a problem and people are mad at me, and it's like that's totally understandable, obviously, but like, please you could I think to myself at least, like you can only be so upset with me, because it's really uh, it's, it's tough. It's like, how much do you blame yourself, or not blame yourself for these things, because you could go down the path of never blaming yourself for anything, and that's not just irresponsible but also disempowering, because if nothing's your fault, then you have no power to to improve anything. Um, but it is a bit frustrating. I feel like betrayed by myself sometimes when I like forget something and cause a big problem.

Speaker 2:

Yeah, definitely, and I've had a few instances recently where I really have thought the exact phrase oh, not again.

Speaker 1:

Seriously, like that's my kind of oh man, all right, just one, just one more. Um, I I had a job in austin, texas. I was living in Austin and I decided to move back to Michigan and it was going to be my last day at work. I quit my job and broke up with my girlfriend at the same time, and I was going to move back to Michigan and start fresh, so it was going to be my last day at work. We were having a special lunch with a group of us and my girlfriend girlfriend, she and I worked together. We had like a an illicit relationship for a while. That was, of course, inevitably found out, uh, went public with it. But anyway, she was gonna come to this lunch on my last day of work, but I forgot to bring her. Last day of work, but I forgot to bring her. That's busy. I know she was so mad, um, but she's like, well, you're leaving anyway. And I'm like, yeah, um, but what a, what a, what a send-off. I I still feel bad about that I.

Speaker 2:

I like to think of it as taking responsibility but not blaming ourselves. But the two are not the same. So you can take responsibility without the element of blame. I think you can say I did that, it's my problem, I'm going to make it right, I'm really sorry.

Speaker 1:

That is a bit different, I think, to blaming yourself yeah, I think maybe that's true, um the more I so. There have been a lot of instances in the last, let's say, year where I have maybe you and I talked yeah, I think you and I talked about this offline. Um, I found out many things, not many a few things where it's like I don't want to believe this is true, but I can't avoid coming to the conclusion that it is true if I'm being intellectually honest. And one thing is that it doesn't seem like people really have free will, like we are robots. We're biological machines, not just metaphorically. We're literally machines. We're just biological machines and the way we behave is a product of our DNA and the experiences we've had. And that's it. Like I happen to talk about this on a different podcast episode.

Speaker 1:

I read the proposition, which I'm inclined to believe, that if you know the positions and velocities of every particle in the universe, then at any specific point in time in the future, you can predict where all those particles will be.

Speaker 1:

And it sounds absolutely nuts because, like you could have predicted at the big bang that you and I will be having this podcast conversation right now. But, like, if you think about it, like if you imagine a tiny box with just two balls bouncing around in the box and you have an absolutely complete understanding of the laws of physics and the velocities of these balls inside the box, like you can predict where they will be at any point in the future. And like, what if there's three balls? What if there's a hundred balls? The only obstacle to answering that question is your computational power, which of course we'll never have, because you'd have to have a computer that's somehow more powerful than everything in the universe combined, and that's just, I think that's physically impossible. Um, anyway, yeah, these things drew me to the conclusion that there's no free will and I don't know what to do with that information.

Speaker 2:

I don't want to believe that, but can't escape it, I think it's, uh, I would agree, and I think it's really for me at least, it's really empowering. I would agree, and I think it's really for me at least it's really empowering, because it means that I am coming to unpleasant conclusions. We could do a whole podcast on that probably many Welcome to the unpleasant conclusions podcast.

Speaker 2:

I'm your host, jason, and yeah, so there are so many times when I have to face up to the fact that I have let my ego completely run roughshod over whatever rationality I had. So, as an example of this, in this very podcast I said something along the lines of I've made an enterprise grade cms in three days. I'm just looking back that I'm kind of a little bit distracted by that, to be honest, because I'm like really, really have you I don't think yeah I don't think you have.

Speaker 2:

Have you? You like to claim you have, but that's a little bit different to the actual truth oh, yeah, yeah, well, I've recorded.

Speaker 1:

Well, I've recorded a lot of podcasts where I said something deeply embarrassing uh, I, I cannot listen to the, I cannot listen to my own show, because I'm like, wow, I, who is this guy? I can't believe this. Um, the only but, uh, I want to do the podcast. More than the benefit of doing the podcast exceeds the cost of the embarrassment that I incur on myself every single time I record an episode. So that's what drives me forward. Um, but, yeah, those, those moments are tough what do you get out of the podcast?

Speaker 2:

What are the main things that you get from it that counteract that embarrassment?

Speaker 1:

That's a great question. That's a really good question. So I work as a consultant, as you know, and so it's marketing for my consulting services work as a consultant, as you know, and so it's marketing for my consulting services. Also, I sell I'm not the hugest fan of this term, but I sell info products like books and stuff like that, and so it helps to market those things.

Speaker 1:

Um, and those were the two like primary motivations when I first started this podcast. Then, in addition to those, it's just like intrinsically rewarding and what the probably the biggest benefit of the podcast which I didn't even realize would be a benefit is the relationships that I get with the guests. For one, I get to have conversations with really interesting people and it's a bit different from just a regular casual conversation because there's an expectation that I'm going to ask the person questions and I can draw things out of people and like it's kind of understood that I'm going to ask questions and you're going to talk, which I'm. It's a format that I'm very comfortable with. Um, even though I often like blab a bunch on this podcast. Uh, I I really like the um format of I only have to ask questions and I can just let the other people. Let the other person do the talking if I want to. So I really enjoyed that and I like to think that I'm providing a valuable service by finding these people and saying, hey, here's this person I found I'm going to ask them questions that I think are interesting and hopefully you do too.

Speaker 1:

I guess the fact that people listen to this podcast is evidence that that is what's happening. The other thing is, you know, on the relationships thing, for example, when I wanted to select speakers for my conference in CityRuby, it was very easy to get speakers, even big-name speakers, because I had relationships with these big name people in the Ruby community. So, like one example, just to name drop a little bit, like Chris Oliver is going to be speaking at Sin City Ruby 2025, the Go Rails guy that's a pretty big name, I think able to. I was able to invite him largely because he's been on the podcast before, and then there's other stuff, like I've seen him around at conferences and stuff like that. But the podcast definitely goes a long way toward toward building those relationships. So that's something I never sought out, never expected, but it's probably been the biggest benefit of the podcast.

Speaker 2:

Interesting. It's a bit of a cliche, I suppose, but we're really not very well suited as human beings to knowing what's going to make us happy and knowing what benefits are going to come out of something right. There are things that seem incredibly hard and we avoid them. We I take ownership. There are things that are incredibly hard that I have traditionally avoided, and then there are things that I think I'll be quite easy and you get into it and it's like, actually this is a bit of a waste of my time, my time.

Speaker 2:

One example of that was, uh, when I did cold calling um for a previous uh business that I was, uh I was running and, um, I did you know not masses, maybe kind of 300, 350 of these cold calls, and it's only when you're kind of confronted with indifference that you it's not only, but when you're confronted with that level of either hostility or indifference, I think you do learn quite a few things about yourself and you find ways of adjusting your you know, uh, your mental frame around what you're doing to allow you to keep going are there any specific things you feel like you learned about yourself doing those cold calls?

Speaker 2:

yeah, definitely, and it was. It was the same when I was single and I set myself all these looking back, pretty, um, pretty silly challenges um, silly they. They were definitely a foundation of growth. But, um, cold calling was very much like talking to random women in bars. It was exactly the same thing. You have an interaction where the other person owes you absolutely nothing and nor should they, um, and you are. You are starting at really zero.

Speaker 2:

And what I really learned was the first few times I went up and talked to complete strangers in bars was like I nearly hadn't. I nearly had a meltdown. In fact, I did have a meltdown. I got kind of three or four conversations in and I was freaking out and I was hyperventilating and all this kind of stuff, and I was like, right, I'm not doing that ever again. And the same was true a few years ago. I tried cold calling and I had exactly the same kind of thing.

Speaker 2:

Fourth, fifth call, almost like panic attack, levels of anxiety. And then I took Mark Manson's course. This is way back before Mark Manson had written his books and he talked about progressive desensitization. So, instead of going into this incredibly intense environment, you just walk along the street and ask a stranger for the time, so you do, and then you get that, so that's kind of normalized. And then you go a little for the time, so you do, and then you get that, so that's kind of normalized. And then you go a little bit more intense. You're like, okay, I'm going to ask him for the time and then directions to somewhere, and you kind of do this at every stage. You're kind of getting comfortable.

Speaker 2:

And then a little bit more and a little bit more, and I learned that this, for me, was the secret to changing. And so once I'd worked my way up these different levels, what I found was there was actually then it was still hard, it was still difficult, but then there was this really clear choice, and the choice is be calm or freak out. And I got relatively good at just deciding to be calm, and it was a decision so, and it was like it illuminated a path that was not there before for me. So until then it was like, well, I have to be anxious, I just have to. There's no other way I can deal with this. And of course, it wasn't helping to deal with it at all. And once I've done this progressive desensitization, what I learned was there is the option to be calm here. You can take it. You just need to be aware it's there and want to be calm. And then, once I decided to be calm, everything was easy interesting.

Speaker 1:

Um, have you applied? Okay? So, first of all, with the cold calling, did that ever lead to? I've actually tried that myself also as, as I told you, I didn't go very far into it and the successes were very small. I wouldn't even really count it as a success. Did you have any success with your cold calling? Did you have any success?

Speaker 2:

with your cold calling. Yeah, I did. I did a whole bunch of cold calling to numbers in the US and, as you can hear from my accent, I'm not based in the US and it turned out I'd made it more difficult than it needed to be. So that was a really good trial by fire. And so when I started calling businesses in the UK wow, it was. So people like, oh yeah, let me hear your pitch. They didn't say that, but they were actually open to me and pitching them and telling them what I was about. So I didn't have any astronomical success, but I had maybe three or four clients out of those 350 who wanted to work with me, which I think is relatively good for cold calling for the first time. One percent conversion rate yeah, about what you get on a website, right, and you're not talking to them, you're not exposing yourself, you're just like putting up this artifice where there is no interaction. But yeah, um I, and the biggest success for me was the removal of fear, you know interesting.

Speaker 1:

Yeah, I um have tried so many different methods of sales and marketing for consulting and contracting and stuff like that. As I mentioned, I've tried cold calling. That was terrible. I spent a lot of time going to like Chamber of Commerce meetings and I ended up talking with a bunch of like insurance salesmen and real estate agents and stuff like that and it was. Those are terrible because these Chamber of commerce meetings are just a bunch of people who are trying to sell something and they're usually like low level people no offense to all them, but it's just low level salespeople and they're not the right people to try to reach.

Speaker 1:

And I like beat that horse for a long time Cause, like I had read advice that like this is what you're supposed to do, um, and I'm so like resentful at that advice Cause it caused me so much pain and wasted time and stuff like that. But on the bright side, it showed me what doesn't work and it showed me, okay, if you go and do these certain things, this is what that gets you and this is what that's like Now, like attending tech conferences and giving talks and doing this podcast and YouTube videos and writing books and blog posts and stuff like that that works so much better to where, like when I'm talking with people now, quite often they already know who I am by the time we're talking and quite often they're already sold. Like I don't have to try to persuade them and convince them or anything like that, it's just like uh, hey, jason. Um, you know well, there's kind of two ways it can go.

Speaker 1:

Uh, one is that they ask me for help and the other way is that I ask them if they would like my help, and certainly if they're asking for my help, then it's easy, because we just talk about like, okay, does this actually make sense to do? Okay, great, let's make sure the money's going to work out. Okay, it does, let's get it scheduled and work together. That's so much better than having coffee with like a bunch of different real estate agents and stuff like that. Um yeah, uh. So, uh, did you have any any? You know, know, you did cold calling for. By the way, what was it that you were doing, cold calling for?

Speaker 2:

I was actually selling lead generation services. So it was kind of I mean, I look back and I just think what on earth was I thinking Like I'm not a salesperson, I'm not into lead generation, I don't know anything about Google. I'm not a salesperson, I'm not into lead generation, I don't know anything about Google and I learned actually quite a lot about search engine results and optimization and PPC and all this kind of stuff. So I was selling leads. So I was selling leads for tree servicing and garage cleaning and house cleaning and all these kind of things, and one of the niches I got quite deep into was tree trimming interesting.

Speaker 1:

Um, um, yeah, uh, I would love to go so much deeper into all that um and so many other things too. When you, when you and I first met, we talked for like two hours or something like that, but I know we have to start wrapping up soon. Is there anywhere you would like to send people online to find out more about you, about Joyful Programming, any of that stuff?

Speaker 2:

Sure. So where I blog is at joyfulprogrammingcom. It's a sub-stack and I talk about observability and Rails on that. I've also got a book called Software Design Simplified at softwaredesignsimplifiedcom. That is essentially it's a design book that you can read in a weekend, with no wild examples about ducks and frogs and geese and various animals. Those are the two main ways that you can find me on the web, and I've got various workshops and so on organized coming up. But yeah, those are the two main ways that you can find me.

Speaker 1:

Awesome. Well, it's been a pleasure talking with you. I hope we can do it again sometime soon, and thanks so much for coming on the show.

Speaker 2:

Definitely. Thanks so much for having me. Jason, Really appreciate it. Thank you.