 So this video is really going to confuse people. The title alone should be confusing enough because I run a programming channel on YouTube. So why would I not call myself a programmer? This is a video I had planned. I didn't know when I wanted to do it. And I had received some private messages. I'm not going to get into them in any specific detail. I'll have a few quotes, but it's not going to be the majority of the message just by any means. I'm also not going to say who because it's not important. I don't really have any type of rebuttal I want to say to the person that hasn't already been said. What I want to do, it just got me thinking about this video that I had planned. And I decided to do it now using a few little quotes as a buildup segue of sorts into this discussion. So the other day I had started when this conversation had started. I had received a message that started roughly like this. Hi Patrick. I hope this message reaches you well. I just discovered you're out of videos and I think they're absolutely amazing. I would like to spread the knowledge of your videos in my network. Maybe other people are naive or maybe I'm just a cynical bitter piece of human trash, but I get weirded out when people are very nice like that. That's just weird. It makes me uncomfortable. It feels like there's some type of ulterior motive going on. So I'm not rushing off like, yeah, this is amazing. Somebody likes my videos. It's weird. And the big thing that's weird is why would such a nice thing be said in a private message? As I kept reading. But that's when it was like, yeah, here it comes. So you got the typical nice person. There's a catch. What's the catch this time? And I'm just running with it. I'm just running with it. I am just... And he says, before I do that, I kindly ask you to remove the rebuttal of Luke guest videos. This, this is not okay. This needs to stop now. This is cancer. This, this is so much cancer that I can feel the tumors growing on my back. And it's weighing down heavy on me and it's not okay. So let's get something straight. Somebody wants to promote my channel. Something that when I reach the eligibility requirements will be monetized and will be considered commercial activity in my country. The United States has a law that dictates many commercial things. We've not mentioned numerous regulations. We have the UCC, the Uniform Commercial Code, and numerous stuff that the FTC deals with, and tons of other smaller, smaller things. Because this is commercial activity or will be commercial activity, essentially it is. I'm operating on a loss right now, but it's commercial activity. That makes this a commercial bribe. And I don't accept bribes, or I'm from, that's a pretty disgraceful thing, and I will not have any part of that. You see, I believe very strongly in integrity. Even if I'm not a nice person, according to some people, I take integrity very seriously. So now it's very obvious why this originally nice message was a private message. Then he goes on to say, please consider that he has done a lot for the IDA community. You and him are on the same side in popularizing the IDA programming language. And no, we're really not. Luke Guest, also known as Lucretia on GitHub, has absolutely produced some great stuff. Do not get me wrong. The guy is not incompetent. Maybe a little misinformed or cocky about certain things, but the guy is not by any means incompetent. But us being on the same side of this. No, his YouTube channel can't find any instructionals on learning the basics of programming, learning the basics of Vata, learning moderate level stuff about either. It has some showcases that are definitely interesting and worth watching, but him and I very clearly, very plainly have different goals. He's trying to advance IDA among programmers. I'm trying to get non-programmers into programming, reducing a lot of the fears, doing a better job teaching this than is often done. Or at least I'm trying to. These are the goals I'm describing. I hope I'm accomplishing that. But we're not on the same side of this. And something I pointed out to this fellow is that I have made videos correcting myself. In fact, one of the ironic things about his statement asking the videos plural taken down is I have a correction to something I had said that was absolutely incorrect. Nobody pressured me into it. It was literally just, hey, I was wrong. Here's how. This video was uploaded right after the first rebuttal and would be placed in between the two rebuttals I made to Luke. We're not always the most observant. I've definitely had some problems, but this video was plainly between the two rebuttals and, like I said, was immediately after, uploaded not even an hour after the first rebuttal. It would be very difficult to look at the list of my videos and see the first rebuttal, but not see me correcting myself. So after pointing this out, he says, sorry, I didn't see it sooner. I really have no problem with this. Like I said, it happens. I do find it a little unlikely, a little odd. The guy seems rushed to form an opinion based on me, but I do understand this. This happens. He says, as for the self-humiliating videos you've made, I haven't seen them. I just discovered your videos last night and the ones I saw I really liked and were educational. I was just about to share the link to your videos when I saw your videos on Luke and I thought, why is Patrick making these videos? Just stop. Just stop it. No. Yeah, that's lovely. Somebody you literally just found on the internet you're going to play armchair psychologist with. No almost nothing about me, almost nothing about my motivations, credentials, past history, even personality. You see a video's list and you're confident enough to start playing armchair psychologist with my motivations. Believing these to be attack videos and not simply rebuttals on the code itself. But then also, he doesn't want anybody to tear post comments? I got a news flash, guys. I am a YouTube channel with absolutely no comment filters. And if anybody's interested, I can absolutely... Actually, you know what? I'll add it into this video. I will go into my YouTube settings and show that all the comment stuff, any type of filter that they have is turned off. I'm not into using those kinds of things. If you want to post trash, just be aware that people may respond to that in very unpleasant ways. But I'm not going to restrict what people can say on this channel. I have no problem with people commenting. At least, I don't know if it's where I grew up, who I grew up around, or what, but... So many of us were raised on this principle. Good in, good out. You treat people well. They will generally treat you well. I had some pretty authoritarian and condescending things said to me. Not like I'm trying to do a pity party. I can totally take care of myself. I responded to them in kind. But if you're going to introduce yourself to somebody in that way, do not expect to get pleasantries back. I prefer things to be quite peaceful and cordial. I'm known for it at work, in fact. Because I treat people well from the get-go. But it should be obvious. I don't do nice. Kind? Sure. Helpful? Sure. I hope I am being helpful with the majority of these videos. But nice? I don't do nice. You criticize my code, be prepared to present something and have it potentially ripped apart, potentially I'm wrong, you're right. Good to know. The correction video that I did that same day, two kind gentlemen pointed out that what I was observing and what I was saying was a deficient feature was a bug causing something that I wanted to have present not show up in that specific case. The bug had been resolved. I made some assessments that were not fair. Simple as that. Simple as that. Just kindly pointing out that it's a bug. We got this fixed. I sent a later message. He goes and says this. Let me paint to a worst-case scenario. When you apply for a developer job, the employer will do a background check and might come to the conclusion. It's that guy that makes the tag videos. Let's go with another candidate. This is obviously where I really got to meet Gummy thinking about doing this video. But also, when Luke applies for a developer job and the employer finds your videos, the employer might come to the conclusion. It's that incompetent guy. Let's go with another candidate. Yeah! This is the shit! Kill me now! That's where... I'm almost ashamed to say it took me this long to realize what the guy was doing, because I... We're talking like six, seven messages in, and... I'm normally a little quicker to pick up on these things. But... I'm being told how I should behave, how I should live my life, and without actually providing any evidence, it's just this yet again random person with authoritarian attitudes about how I am supposed to be. So I... I see what's going on here. That's what brings us to this point. I am not a programmer as... I generally see them as they are seemingly generally perceived outside of programming fields. The comments managers have about them, the comments people who contract out to them have about them. The comments programmers have about other programmers. I... I do not fit into the circle. Now, yes, given the strict definition of a programmer, I program. Therefore, I am a programmer. We all, for better or worse, we stereotype. I am saying that I do not comfortably fit into the stereotype of a programmer. I've nearly forgotten something. I was supposed to talk about this in a previous slide, so let me just go back to that. Well, cover this one first. Quite frankly, if you are the type of employer, regardless of your field, who thinks it's appropriate to dictate to another person what they do in their time off work, go fuck yourself. I do not understand how anyone can think they have the authority to tell another person what they are supposed to do in their own personal life. This is the kind of just abhorrent shit we see out of politicians on a regular basis, and for some reason certain bosses, managers think it's appropriate to do this to their employees as well, as if they own their employees rather than if they're being some type of collaborative environment between the two. You might be saying I'm being a bit brash here. My opinion on this matter is quite easy to find. I've never hid any of these posts on Facebook or Twitter or anything else. I've had managers in the past who absolutely know I feel this way and who even agree with me. Despite a lot of the trash I post all over the internet, I don't have problems getting jobs. I actually fare considerably better than most of my peers. So, I really don't give a fuck. And as for this one, I'm not really sure why it's supposed to be okay for somebody to come to some random other person and begin to criticize things that do not actually have to do with what is essentially the job. Because that's how he's framing it here, we need to be concerned about how this reflects on employers in the workplace. So, keeping that framing, if I am one employee and he is another and he came to me and said these kinds of things. Granted, they're not particularly bad. They're not anything I would personally ever consider or something like workplace harassment. They're just annoying. That's really not a good person to work with, though. And yes, there's always these annoyances, but I think I am a firm believer in transparency, in informed decisions, and that, of course, includes the personality of the person you're hiring, of the person you're working with. Just like with my own example here, I do not actually see anything wrong with this. There are all sorts of different people with different ideologies. Not everybody sees things the same way I do. There's plenty of C people that will see the things the way Luke does. If a prospective employer sees the videos between us and agrees with Luke, disagrees with me, they're going to be more likely to hire Luke because they agree with his approach. They think he was the better person there. How are these videos then doing harm? They're confirming that the business and Luke are going to get along better because you have a little window into how he handles things. And if the business finds them agreeable and let's face it, there's so many different people that there will be those businesses. That's not causing harm. That's helping identify better matches. But I would expect nothing less from somebody who has to resort to bribery via private message. And if we skip back to where I was. Why I say I am not a programmer is that unlike what I see from the majority of programmers, my attitude is just to solve problems and then get on with my life because working people, working class people, can't afford to waste time. Basically, I grew up in the second poorest county of New York State. Just barely wealthier than the Bronx. A lot of people struggling here. A lot of people... not a whole lot of extra spending money, if you know what I mean. Often not a lot of actual bill money. There usually wasn't a whole lot of time to fuck around, jump from job to job. And by that I don't mean once I won job, three months at another job. I mean, a lot of people around here work for themselves. Now they might do this while we're also working for somebody else, but a little more than half the money of the revenue in this county is from self-employment. And or at least was last time I looked at the records. It's like six years ago now, but I doubt it's changed very much. It's not like we didn't enjoy ourselves. It's not like we didn't spend plenty of time with family and friends and everything, but work's taken very seriously here to the point where quite a lot of my friends growing up who left the country, left the state, I mean, and traveled elsewhere could land jobs on construction sites in factories or whatever. Literally just by naming where they're from they'd be hired on the spot. Because they got a reputation for this and it's unfortunate that kind of reputation would have such a such a big poverty problem, but that's a delightful matter. Not something for this. But I developed a tremendous amount of respect for these people. I look up to many of these people. The ones who really tried to make something of themselves fall to drug use and rampant partying, blaming the system, instead of actually trying to make something of their lives. Because you could absolutely make something of your life. I saw others dead and I did myself. But I I identify considerably stronger with these people than with academics. Actually when I went off to college it was one of the absolute worst experiences of my life. How bad I didn't fit in and how wrong my perceptions of things were, how little anybody cares about evidence and things like that. Because this this shit this is the kind of thing you see in white-collar jobs which I absolutely will not consider working-class jobs. Now I say that having done them I've done high-end sales positions. I've done contract stuff for white-collar programming things. It was considerably more about playing the field. Power politics, office politics. Who you know there's very little about the actual work. It's not working-class as I've seen it. And that's a huge part of why I cannot identify myself as a programmer. Given that I also do carpentry I so I non-ferrous metal work I need to learn how to use an oxy acetylene and the welder and a TIG and MIG but I'm comfortable welding non-ferrous metals. Brazing is easy soldering is easy but yeah carpentry I did I'll do some videos on that stuff some useful things I've learned over the years that I don't see much people talking about just like with the programming and sewing videos. It's cold as fuck here I got a long winter ahead like where I live is basically frozen wasteland my shop isn't very well heated but when it's not deathly cold you'll see some videos in the shop from me too. I I really identify myself better as some combination of tradesmen and salesmen. Programming to me is just a tool. Computers are just a tool as I see them. Writing code is the same as making, you know, rigging for your table saw to cut things a specific thing more efficiently. It's modification of a tool I I don't share the same attitude other programmers have. Somebody implements a complex thing using, you know, tons of monads and other shit like that. I don't care the only thing I'm concerned with is did you do the job efficiently? I don't care how fancy you made it. I don't care how many, you know, computer science theories you utilized while doing it. It's how the job turned out. I think that's the huge difference between working class and white color. You should be able to tell I'm getting into a bit of differences and we should talk about that. This is sort of an easy target but functional programming it's great for math and so understandably a lot of very mathematics oriented people get into functional programming and vice-versa. Functional programming is appropriate for math and you see a lot of overlap. If you remember in school, the way math professors often explain things is really hard to grasp. You probably had to go in for tutoring or whatever to actually get it and when somebody else had to explain it who's not a math major would be like oh you explained it so simply and now I get it. I um, I'll say real quick, I essentially started these videos because of an experience I had at Clarkson University. Now I did not ever attend there. I was working there and quite a few students very, very obviously had problems in their computer science courses. They'd be asking things and I happened over here a few of them one day and just kindly explained what they were trying to get very simply as I understood it. They had aced those questions on the tests I don't know, I heard from them like three weeks later but I don't know when the test was maybe that's just the soonest they actually ran into me again but they um, pushed me a bit to see if I was willing to tutor them and what wound up happening was actually to the extent of me leasing out I say leasing signing out on a little time slot one of the lecture halls to tutor eventually wound up being about 30 students. What was rather funny is the the week long courses they had could usually be summarized in about 30 minutes and they'd go ace all the tests but you've seen some of the presentations some of the other ones I either haven't done up yet or I won't do up because they're not relevant or whatever or I've done through another means that seems to be better that's basically why I'm doing this that was my first real foray into how bad we're teaching this stuff and I have two quotes here from something that are going to make that really painfully obvious the functor type class represents the mathematical functor a mapping between categories in the context of category theory and this is from the haskell wiki now haskell is a great language but being one of the most pure and developed functional programming languages it goes really hardcore with the math style description of things and this is not so obvious and what the hell they're talking about the a functor is basically just a structure with a map method map function associated with it we're talking about a group of data that can have a function applied to it where that function will be applied to every single value within it producing a new value new new um well yeah each one of those will produce a new value will be grouped up into another structure, container whatever it was originally just with the new values that's it that like what the hell are you talking about definition is literally just that it's this structure with the map function monads in haskell can be thought of as composable computation descriptions the essence of a monad is thus separation of composition timeline from the composed computations execution timeline as well as the ability of computation to implicitly carry extra data as pertaining to the computation itself in addition to its one hence the name output that it will produce when run or queried or called upon now again this is from the haskell wiki I'm not trying to bash haskell in any way it's actually a great programming language if you want to do functional programming it's like absolutely pure functional programming it's a great language to use I've done some stuff in it it's a good language I think they just have a serious teaching problem a monad is a monad is essentially just a specific instance of the functor it's a functor whose values inside of it represent the state and then just whatever is also getting passed through to perform the computation because you know in functional programming especially something like haskell or currying is involved you have you know call from function to function to function to function and some data needs to be passed through those so the monad is the state of the environment and then the computational data and being a functor it has a map function a monad will also have what they call a flat map function which I'm not going to worry about it flat map and map are almost the same thing there's a slight little difference but they're almost the same thing and I think at least explaining this it's enough to say that a monad is literally just a specific type of a functor in pure programming languages you ideally don't want to have any state if you even go to the extent of function level programming there should be no values at all and so monads are a way of keeping functional purity without violating the idea that you shouldn't have any state because the state is wrapped up into something that is essentially just a snapshot actually a great way of describing a monad I built a bookcase recently unlike the typical bookcase where you'd cut values through the little slots that you can you know slide a shelf into and because they're little slots it doesn't fall it's supported instead of that and gluing them in place and all that I made a flat pack bookcase now it's out of real wood not that particle or bullshit but it's flat pack it's done with screws you undo the screws and the entire thing will lay flat for easy transport makes moving so much easier at least for that it's pretty simple I built it so I know how to do it if I were to make something like that for somebody else and they were disassembling it or like alright how to put this back together you would hopefully because at least for most people it's a highly effective way of doing it take pictures of the various steps as you're disassembling it so that you can just do it in the opposite order and put it back together again those pictures are monads that's it like that's a monad is the state of something that's it I don't know what this is this freaking definition it took me forever to figure out what a monad was I'm not even kidding I think it took me about 3 years to figure out what a monad was because I kept getting definitions that were equally ridiculous as that but a monad is just a snapshot of the state that's it well that's jarring I forgot to put it in a transition so we also have an obsession with theory application and this one drives me absolutely baddie it's where and you'll hear this regularly a specific theory will explain a cluster of things really well object orientation has absolutely great uses functional programming has absolutely great uses imperative programming has absolutely great uses but there is no silver bullet none of these should be applied unilaterally or universally I think the reason why I am so averse to these things and why I think so much as in a tool based almost utilitarian way what utility does each thing have is because of the large amount of trade experience and thinking in terms of getting the job done and not how do I write a paper on this in carpentry there is lots of ways to join things together you can use a mortise and tenon or you can nail it together or you can use screws or bolts or you can glue it together you can cut a dovetail and join it that way each one of these has unique benefits and detriments they have their favorite based on what they usually wind up making how much effort they are willing to put in and all of that they will regularly understand that each one of these has its benefits and detriments that none of these are outright the best just that they've got their one they think is they've got their one they use most of the time based on what they make house framer is not going to cut dovetails into all of the all of the different joinery for a roof a box maker picture framer they might absolutely do that the roof framer on the other hand probably going to use nails or bolts and there's reasons for these I think a lot of a lot of programmers just lose sight of this they somehow think that they're uh the theory that is most descriptive of their problem domain is right for everything and I can't identify with that I can't agree with that I don't think these things should be applied everywhere but then I had somewhat commented on this before the aversion of evidence based advocacy I don't know how many times I've heard shit like this where using X theory like using functional programming result in less bugs in your code but there's no source using object-oriented programming result in less bugs in your code but there's no source using the agile development model result in less bugs and faster development time and tons of other things but there's no primary source using X tool like like jetbrains idea idea whatever whatever their IDE is called or visual studio or get or fossil will whatever will improve your development process with no citation of primary source and from my experiences programmers are all too often cultists with faith in their tools development models and programming theories not evidence in their approach faith in these things because I'm sure as hell not seeing much in terms of primary sources I'm not even seeing much in secondary sources it's overwhelmingly anecdotes that's faith and then we have code complexity finishing this up and this just has to do with job security over any sense of reasonable code this would be like your HVAC guy coming in and doing this insanely convoluted duct work so that you could get him to regularly come in again and everywhere I've ever seen would fire his ass and get another guy in there to do the duct work right in a sane way that can be maintained same for plumbing and electrical and everything else in programming people get away with it all the time making their stuff obscure in various ways so that they can keep their job and not be replaced because let's face it programmers are expensive and wage is one of the biggest places profits go I get it I'm just not okay with it because like I said my focus is on getting the job done not on ensuring I have a continuing paycheck I will find another job when I need to I don't need to melk it for everything it's worth and these types of people are often focused on a semblance of simplicity like I said it's an easy target often monads are used as a simple way of implementing state within stateless programs simple to anyone who regularly uses them maybe but how they're simpler than a state machine is beyond me you see like I said earlier there are tools for the job there are theories that explain specific things well but everything outside of their problem domain, terribly if you have to work a lot with state you should probably look into a state machine functional programming is great for functions is great for math but being good for state is well also like I said I'd like to see a primary source showing monads are a better approach to state than a state machine this wraps it up I'm not a programmer and I don't foresee myself ever identifying as one I just see myself as a person who uses computers as a tool no different than picking up a machinist's hammer dead blow hammer a chisel they're just tools