You Got This!

Maintaining The Joy Of Programming

Transcript

Oh, hi. My name is Colby Sites. I'm here to do a talk with a very strange title. Maintaining The Joy Of Programming With Help From Bob Ross. What does that mean? We're gonna get into it. This is the -- this is the rough journey that you and I are gonna go on. First, we're gonna introduce Bob. I know that Bob is like a very large cultural figure within American culture. But internationally, some people may not know him. Then we're gonna go through some of the lessons that we've -- or I guess I have learned from the Joy of Painting. Including, you know, how long it takes to do a painting. What are the tools? What are some of the tips and tricks of like making a good painting? And then I imagine bit end of it, the old clock on the wall will be telling me that it's time to go. And everybody will be panicking because maybe I went too long. I can talk about Bob Ross for hours, days, years.

And here he is. This is Bob -- that's Bob's arm, I guess. Bob Ross, an American painter who was the host of The Joy of Painting that ran for a little over 10 years, 1983 to 1994. In that time, it was over 4 hundred episodes, 409, I think? He was known for his calm demeanor, calm attitude, a really good guy. You could put him on, a lot of people liked to listen to him to fall asleep. He talks very low, it's okay to make mistakes. Everything is okay. He made painting approachable. Typically you see a painting in a museum, wow, it takes a lot of skill. And Bob is here to say, no. No. In fact, if you do painting the way Bob will teach you, you can crank out a painting in a small amount of time and it's easy. He's here to teach you the method and let grow and do your own thing. And he also became a large part of pop culture as a result, right? Sort of an interesting guy in a number of respects. This is one of his signature things on the left is he would do a very nice landscape and then he slams a big tree in the front of it. And I know what you're saying, Bob messed up this time. Well, maybe.

He -- he was on the Phil Donahue show at one point. I don't really know what that means. I'm told it's kind of a big deal. I think and it's kind of like going on Ellen if it was like 2011. So, like that's the level of pop culture that we're talking about.

But as time goes on, basically everyone's notoriety sort of starts to fall off. And then October of 2015 happens and the bobross channel goes live on Twitch. It's a 24-hour marathon for a month. 24 hours a day, every episode of the Joy of Painting is streaming for free on Twitch with a live chat that everyone can interact with. It was one of those Internet cultural Zeitgeist things where you're not quite sure why a culture popped up around it, but it did and it did in a really big way. You can see clips here, people are flooding the chat with Bob Ross emotes. It had its own jokes, ah, Bob never reads chat. And he -- you know, what's he gonna do today? You think we're gonna get a mountain in this one? Maybe a stream? I don't know.

And that whole month hit me at just the right time. You ever have like a song that you listen to and you're like, wow, this is emblematic of what I'm going through right now? Bob Ross hit me at the right time in my career. I was a young web developer. I had been doing it for 2 years and I had maybe went a little too hard into some projects that I was working on and starting to experience the beginnings of burnout. And my whole day switched overnight. I started watching Bob. This is something that I like. So, Bob Ross was on all day at work. On the second monitor, just listen to him painting. When I came home, turn Bob Ross on, turn the lights on, take a nap. When I woke up, turn Bob Ross on the computer, play games, do projects. I was in, so much so that Christmas I got a Bob Ross paint set. And by the time the next Bob Ross marathon came around, I had done over a dozen oil paintings. And they continue to do this marathon every year. In fact, the first one was to launch Twitch Creative which is what the programming category is under. Which is why we can stream programming on Twitch. Which is pretty sick, I think.

After I started doing oil -- that's my first oil painting. This is a little bit like, you know, ah, I wrote Tic Tac toe in high school. Here is my code for it. But here is my first painting. This is actually -- it's called Mountain Summit, this is from season 13, episode 10. And you'll see this is like a lot of people's first painting with the Bob Ross method because this comes bundled in a DVD with your Bob Ross kit. So, you'll see this a lot. And, you know, for a first painting it's not too bad, from the mountain, you can tell there's trees and a mountain and a sky and it's not too bad. If you take a look on the right, you can see what should be bushes, but just kind of a green blob. Definitely first painting. You know, we can only go upward from here. The first lesson here is this painting took me 3 hours. It took Bob 30 minutes.

Bob started with nothing in almost every episode and finished with a painting at the end of the episode. There were no part 2s, no to be continueds, it was start with a painting, end with a painting. With his technique, you could crank these out quickly. I got to the point where using this technique alone, I could do a painting in about an hour. That just means that each painting is so quick, if it fails you can do another one. If I'm going to paint tonight, spend an hour and a half, that didn't turn out how I wanted, you can just put that painting down, pick up another painting and do another one. You've still got a couple of hours and then you can watch Jimmy Fallon and whatever it is you can do when you go to bed.

And yeah. It's -- as a result, you know, Bob also shows you that with this technique you can just scrape it off and do it again as well. Here he is in episode 11, or, sorry, episode 13 from season 11. It's titled "Happy Accident." He starts in the middle of a painting, Bob, what are you cheating with me? No, not happy with the way it's going, scrape this paint off, do another painting. What can we take from that? New projects, small commitments. They're easy to start when the commitments are low. The smaller the scope of the project, the more opportunity you have to do it. You wouldn't pull out like a thousand piece puzzle like this and expect to do it in one shot. Most of the time, pull out the puzzle. Do it for a half hour or an hour. And you know you sit down, I'm hungry, you do dinner. You come back every so often. And that's because the commitment for starting a puzzle is pretty low. It's the same thing with these paintings he's doing. If you can jam out a painting in an hour, there's not an incentive to do it. All that have has to do with narrow scope. If you know the time commitment is only a few hours, it's only gonna be X amount of days, and easy to put down and pick back up, you can start those projects really easily.

And this also means that you could fit multiple small sessions. For me, I rarely watch movies at home. But I watch like 3 hours of YouTube a day. And it's just because I'm like, well, I could watch this 20 minute one-piece Lor YouTube video. That's fine. And then all of a sudden 3 hours later here I am watching a guy clear out some drains and culverts. Oops, I totally could have watched that whole movie. But it's because of the smaller commitments of each of these videos, right? And no project is too dumb to work on either. Because the commitment is small, because the project is small, it's really easy to feel like you're not wasting your time. Bob is always good to point out, hey, if you're not good at mountains, make a whole painting with just mountains. If nobody sees it, it doesn't matter. It takes an hour to do a painting like that. So, get better at mountains. It will only take an hour. If your bushes are bad, paint a whole kingdom of bushes. Just go for it. Because the commitment and the time are low, right? It's easy to get up in there.

So, how did I apply this to my personal life. I grew up in a small town. A small farming community, or near as small as half an hour away and my friend that I grew up with said, we're getting a Cheesecake Factory at the mall. He had never been, never heard of it. Some of these businesses, they just like to put stuff in their names. How many cheesecakes do they have, and I open up the cheesecake menu, and my immediate gut feeling, and this tells you, because I'm a programmer, I could spend 20 seconds counting all these cheesecakes, or -- or I could write a bot to do it for me and then it could count the cheesecakes forever. And so, that's how the Cheesecake Factory bot was born. I wanted to know when the fire new cheesecakes were dropping. And I sat down and just wrote a solution. So, about 3 hours. And I got to the point, the project was done. I was able to successfully grab the menu and found a much easier way to do it, lower memory and ran a lot faster. And I just said, I mean, I only spent 3 hours on this. I'll just throw it -- I'll scrape it off and do it again. After about an hour, I refactored the whole thing with this new method. The whole reason I felt I could do that, I didn't spend a month doing this. I wrote this over the course of a couple of Twitch streams. Very low pressure. It was so low time, added Twitter and a menu detection. I can read cheesecakes, why not the whole menu? Tell you when something shows up. It's mostly broken, and I mostly don't care. The most recent Tweet was July 6th, 2022, and the creeky basque cheesecake is coming. I imagine more things have come, but look how good that cheesecake looks. This wasn't the most important on my plate, I finished it, it was neat. And I if ever have the need -- if I have a visceral burning to get more cheesecake updates, I can go back and take a look at it.

Here is my next painting -- I guess not next -- maybe the fifty. But this is the first painting based on no sources. Up until this point, copying Bob Ross and YouTube artists. You know, I think I have a tool set that's built up enough that I can do what I want to do, video game paintings. I wanted to do landscapes of video game scenes. This is a landscape from Halo. You can tell because in the background, there's a Halo. Not a good one, but it is there. A little power up out the left, to show the invisibility power up. And I was able to do this, and again after five paintings, the contrast is getting better. The bushes are separated on the right. Didn't have the mistake in the first painting. Still a long way to go. There's a bunch of things that I would change about this. But I was able to do this with, you know, just a few paints, a few tools. But there's endless combinations here. With Bob Ross' method, you've got these 11 colors. I would say that I'm very tempted to say them, but I won't. They're on the screen if you want to read them, two base layer, liquid white, liquid clear, three core brushes and one knife. This is what you have to reproduce any paintings that Bob Ross has. A couple of nice to haves, a blend bush, Filbert brush for rocks, you don't need them, 1 inch brush, 2 inch, and knife. And in some episodes, you don't need those. In one, Rob was doing an episode where he was painting with a palette knife. One in black and white. He said somebody came up to him and said, I don't think I can paint. I'm color blind. Bob said, I'll do a painting in black and white. Doesn't matter what color you can't see, it's always interesting. Most of his winter stuff is just white, black, and blue.

With a small amount of tools, 400 plus episodes, never once repeated a painting. So, what can we extract from that, right? If you have a small set of core tools that limits your decision making, that means that like there are less choices to make because you have a smaller toolbox. You can say, like, I -- in this project I need a relational database. I know how to use MySQL. That's the relational database I'm gonna work with, right? And if you decide that like, you know, learning the sort of best tool for the job is like really daunting and it feels like it's gonna be time consuming, maybe it is the best tool for that job, but it's not the best tool for this project, right? So, a good -- a good example of this is if you're writing some like server software, right? You want it to be like really performant. People are saying Rust is like that. That's the language you got to write stuff in. But Rust can be hard to learn. And Rust has a bunch of advantages to it. But if you're gonna take 6 months to get good at Rust and then write your good piece of software, it's probably not worth it to do that. You should just use the language that you know. And start to slowly improve. If that's a vector you want to improve in, go for it. The most important lesson I learned at my first web Dev job was the concept of a complexity token. Any new job you're going into, you're allotted one complexity token. For your project, once you scope it, you should only have one thing that is gonna did -- ope -- that is gonna be really complex and really, uh, one new thing you're gonna try. One thing that's gonna exhaust your brain to think about. The rest of the stuff should be things you're familiar with. So, if you decide I need to have this interesting piece of software that has this database component to it and I'm really interested in learning this new database technology, that's your complexity token. The rest of it should be tools you already know how to do. Reason being, even if it doesn't take all of your time or even the majority of your time to interact with that new thing, that is what your brain is gonna be spending the most effort on. And you want that effort to be toward learning a implementing a new thing and being able to integrate it and get these small wins under your belt with the stuff you already know how to do, rather than juggling and context switching between what if I actually did five things that are new? And this could be applied to other stuff as well. If you decide, I'm really good at landscapes and I want to do portraits and specifically in water colors. I have never done that before. Do water colors -- but don't switch them both. The way I implemented this on stream, I wanted to a custom bot to interact with the audience. If you program on Twitch. That's a rite of passage. The bots don't do what I want, I guess I'll write my own. I don't know why. That's a thing we do. I chose technology I have used before. For both my frontend and backend. All I used on previous projects and all things I knew I could get up quickly. The only new thing was Twitch integration. How do I interact with Twitch chat? Get now point redemptions? All of that was my complexity token. Twitch was my token. I used that to interact with Twitch. Only took a few weeks to get it off the ground. Twitch was the thing I spent most of the time in the documents, oh, that's how that works. This notification schema is weird. I didn't think about it. Only took a few weeks, I still have it. And you can order a coffee. I have a cafe motif, and you can order coffee and have a coffee mate that shows up on stream. It's sick. All of that because I kept the scope of this low. I could have done this with a game engine. I could have done this dynamically and made it available to the public. But like, keep it small, keep it small. Keep it small.

This is probably my 12th painting. This is good -- I was gonna say this is a good painting. It's not -- I enjoy this painting a lot. It's Totoro in a sunny forest, and it's in the shape which is nice. This is also fun fact, my first acrylic painting. First time I ever experimented with new mediums. And I think I did a good job. Especially with my bushes. You can see, I've got a lot of contrast in those bushes. You could see shadows going. You could see the leaves are looking pretty nice. But you need dark in order to show light. Right? The contrast in this picture is kind of nice because you can see that there are shadows and there are highlights. You need dark in order to show light is actually a quote from Bob Ross. It's a rather famous one. He said if you have all light, you have nothing. If you have all dark, you have nothing. You need dark in order to show light. You need those bad times in order to make those good times shine. I'm waiting on the good times now. That's a rough paraphrasing of what he said. That quote was actually shortly after his wife passed away.

So, you know, Bob has painted hundreds, thousands, maybe, of paintings. And contrast is really a core thing that you have to know about. And you have to keep in mind. And Bob applied this lesson from his craft into -- into his real life. And he's -- and you could tell he's good at it, right? Like if you take a look at his mountain summit painting on the left and my mountain summit painting on the right, you could see Bob's got these bushes, right? Like they're -- a lot of them are the same color. But you could tell -- you could tell they're different. You look at mine and, yeah, well, I'm not quite sure what that is. And it's because he's left enough dark. He's left enough contrast and color to suggest the shape of a bush. And I beat it into the Earth never to be seen again. And it's really important to have that contrast in order to have an interesting and clear image. The closer that you bring to colors, the less your eye is drawn to it and sort of the more difficult you make it on the viewer to differentiate the two. Which is why it's important to have more accessibility stuff inside of your talks were front-facing websites, having a contrast makes them easier to read. You don't want people straining their eyes to be able to get your message across. It's the exact same with painting.

But for me, like Bob extrapolated that lesson to be, you know, in my life, things are gonna be hard. But they will get better. And that makes the better -- the good times better. And it's very similar for your hobbies, right? Not just programming, but any hobby. Coding isn't always easy. And in fact, no matter how long you have been doing it, there's always gonna be something you find difficult about programming. You could be a senior staff, vice president software engineer, code samurai, whatever they're putting on job description these days, you could be that and there are still things about coding that you're not a fan of or struggle with. And there's always more to learn. As soon as you get around a paradigm and wrap your head around a new technology, there's something new. For me, the feeling of overcoming, like solving that problem and going through the struggle of I just need this to work. And then, oh, it worked. Ah... that exhale is like the best feeling in the world. Second -- second best feeling in the world. The first best feeling in the world is hearing my child laugh. So, go ahead and clip this. That way I can show it to my child when he grows up.

This also happens in any painting, right? This isn't just programming, woodworking, programming, any hobby. Sometimes your word works, you've got plane it. Sometimes the shape you want doesn't come out right. You got to try it again, right? But overcoming feels so good. In my personal life, I wanted a chill website vibe. I wanted to listen to lo-fi music and I wanted to have it be like immersive audio. Live capture the audio. Do some manipulations to it to make it seem that the audio is coming out of the scene. Here you're looking at a town, I've got ambient noises of birds playing, wind through the trees. The audio has bass turned down and reverb turned up to mimic it coming out of a boom box or a phone and bouncing it off the walls. President thing is, getting this to work in Firefox and Chrome was a struggle. It was a 2-year off and on battle just to get this to work. And I cannot tell you how joyous and free I felt whenever I could successfully open up this website in both Firefox and Chrome and it just worked. And especially like the rewards afterward, right? Now I can put this on the Internet, so, anyone can go to Lazy Day Cafe and listen to and the audio just worked. It feels so nice to do that. Especially after, again, 2 years. That exhale was one of the biggest exhales of my life.

But yet, predictably, the old clock on the wall is telling me it's about time to wrap up my time with you. This is my most recent painting. Acrylic under painting, and oil over painting to Final Fantasy 7. I sent this to auction off for charity to the Present Cancer Foundation. It's not really nice contrast, suggestions of object use can't see, some interesting perspective stuff. This has nothing to do with any lesson, I just wanted to brag because I like this painting.

But it's time for me to say bye. The -- if you -- if I said Bob Ross and you tuned out of this to go watch can have the Joy of Painting, we're at about 24 minutes now, you should be done with the episode and now you're back, don't worry, I'll catch you up on that stuff. If you enrich yourself with hobbies that are wide and diverse and low pressure, you can learn things in those that you can apply to your in the full-time job, to other hobbies, to being a human being in society. And you shouldn't be afraid to try new things to keep your spark alive for coding. It sounds really daunting to try new stuff. But if you keep the context, like in mind, of like this is the thing I'm doing for fun, you keep your scope low, you keep your toolbox small, it's really possible to try new fun stuff and not have if be a chore. And it doesn't matter what your project is, silly, useful, innovative, derivative, as long as you're having fun, it's all worthwhile. If you heard my Cheesecake Factory bot and you said you know what? I need to write a bot that tells me when the shamrock shake is back at McDonald's, do it. You can do it right now. And if you need inspiration, Bob Ross still streams on Twitch to an audience of thousands. Every October, that stream is back and at the end of the every episode, he feels happy painting and God bless, which doesn't feel right to me, so happy programming. And now we're on to Q&A. Thank you all for listening.