We interview pillars of the Business of WordPress space, luminaries from peripherally-related technologies and accomplished domain experts who can help teach you powerful ideas to get ahead in business and in life. Brought to you by Pagely, NorthStack, and PressNomics.

Ep 17: Carl Alexander. Self-publishing a book that made $11k in its first week and becoming a public speaker

Ep 17: Carl Alexander. Self-publishing a book that made $11k in its first week and becoming a public speaker

Host: Sean Tierney | Published: December 3, 2019

Carl Alexander found himself in a quarter-life crisis bouncing between software jobs unfulfilled and not sure how he would sustain his career for another forty years through to retirement. He transitioned into a freelance career and self-published a book to teach the basics of object oriented programming for WordPress and had over $11k in sales in his first week. He’s since become a public speaker and is focusing on honing a craft which he could have never foreseen enjoying. Hear about his journey and the lessons he’s learned along the way.

Watch

Show Notes

0:00:34   Welcome and context
0:02:20   Why are you so big on promoting OO programming principles?
0:04:10   “as an approach it’s just more like the way the world works.”
0:08:12   “once you bump up against the limitations of procedural programming, OO starts to make a lot of sense.”
0:10:59   “The syntax will change but the CS concepts transcend the language..”
0:12:27   Can you define and distinguish procedural, functional and object-oriented programming?
0:16:17   At what point does it make sense to refactor a procedurally-written piece of code and convert it to OO?
0:19:34   “It’s a lot easier to ensure quality control and reusability with OO code.”
0:21:26   What in your opinion is the litmus test for good code?
0:24:27   What should the business user be thinking about when considering proposals to build in OO vs. procedural style?
0:34:52   Can you explain what your “quarter-life crisis” was?
0:39:22   How at this point do you define success for yourself?
0:41:09   You wrote a book that made over $11k in its first week- can you talk about how you did that?
0:43:38   How did you choose the theme and did you already have an audience built up at that point?
0:50:16   What is one book that has profoundly affected your thinking?
0:51:59   What is one tool or hack that saves you time/money/headaches?
0:53:22   What is one piece of music that speaks to you lately?
0:54:33   What is one important truth that very few people agree with you on?

Show Transcript

Sean: 00:35 All right. Welcome everybody to the podcast. I’m your host, Sean Tierney, and I’m here today with Carl Alexander. Carl is author and web consultant. He has been coding since age eight and has been working with web technologies for the past decade. During that time, he’s grown in managed technical teams. He’s also helped deliver complex software projects and infrastructure solutions to enterprise clients. His primary focus is on full-stack development, Dev ops and systems administration. Carl is organizer of the Montreal WordPress group and WordCamp Montreal since 2010. He’s also author of the book discover object oriented programming and the companion online e-course by the same name. And he also happens to be one of the speakers at PressNomics six in Tucson. So welcome Karl to show. Hi Sean. I’m glad to be on. Awesome. Good to have you. So I’ve been reading your blog just to kind of stock you and get some background and catch up and uh, it’s really cool. Like I’ve, I was a program of eight years. Uh, I actually started programming basic games at age eight as well. Um, so I share your affinity for promoting object oriented methodologies. Uh, I went through a quarter life crisis as well as I see you did. So we’re gonna have a lot to talk about. So I’m excited for this conversation. That’s great. Cool. Well, so

Carl: 01:54 you’re like the soul. Yeah. You’re the, you’re the, you’re the soul mate. I didn’t know I had,

Sean: 02:00 yeah, we share some similar stories in our background. So where I want to start with this conversation is you are a huge proponent of applying object oriented principles specifically in WordPress but in all programming. And I read that post on your, on your blog and I just wanted to dig, like start there with that. Like why are you so big on object oriented design? I mean

Carl: 02:23 it’s not so much I, I try to be non, um, how do I say this? Uh, like dogmatic about things. When I try to teach the, the main kind of focus that I, I kind of stuck with object oriented programming, especially with WordPress is because for years, I mean, I’ve been in this community for over a decade and you always have these, uh, these people that would come and they’re like, oh, you can’t write good code with WordPress. You can’t do this. You can’t, you can’t, uh, do object oriented. Uh, programming, uh, is just like, it’s all code. You can’t do, you know, you can’t, can’t, can’t, can’t, can’t. And, and I was just in my mind, I was not, I wasn’t, I was thinking that, well, it’s not that you can’t, it’s just, it’s a lot harder. Um, and I just started teaching around that premise. Uh, especially considering a lot of the WordPress developers that you’ll, you’ll meet, um, don’t have like a formal, I don’t know if you have a formal kind of computer science or computer engineering background yourself, but I come from computer engineering.

Sean: 03:36 Yeah, I do not, I have no formal cs background. I was self taught and picked up a lot of the negative things that you do in procedural programming. Uh, I learned, uh, through a language called cold fusion, which is kind of an arcane. So I was early with that and then, but I mean, but to its credit, it helped me as someone not being computer science background, I could do a lot of interesting things and make dynamic websites and whatnot. So it was good for that. But it also let me pick up a lot of bad habits. And then once I discovered, oh, it just made so much more sense. Like just, it, it as a, as an approach. Like it’s just so much more robust and more like what the world is like. So it just immediately clicked for me. But I don’t know what your experience was with it. I’m curious to see.

Carl: 04:22 Yeah, I mean, your experience, although it’s cold fusion, uh, is very similar to a lot of what we’re pressed developers or are going true. It’s, they, they start off, they have no formal computer science background. And even to be honest, computer science doesn’t really, um, teach you like the advantages of object oriented programming. You just go to class and they’re like, you should do object oriented programming. It’s great. And they just teach you about like, you know, uh, you know, a class car extends a vehicle and then you’re like, this makes no sense. I don’t see why this is great. And so it’s really the computer science not really that useful, but I think coming from a lot of WordPress developers, they feel that because they don’t have that, that the, the disadvantage and really it’s just, it’s a different way of working. And obviously you learn bad habits simply way with WordPress.

Carl: 05:16 You’ll learn some bad habits along the way. But the really, uh, empowering thing to me is how accessible it is. It’s, it’s like you said with cold fusion, you can have no formal background and you can build websites, you can do things. And, and to be fair, procedural is a much more intuitive way of, of thinking about things when you’re starting off programming because you’re just going through steps. They’re just, okay, I want to do this. So I’m going to do that first, then this, then that, then this, and I’ll get the outcome that I want. And that’s one of the things that the book teaches you and some of my talks teach you as well. It’s just that when your thinking would object oriented programming. I really love the Lego analogy. So I talk a lot about legos. So really building with object oriented programming is kind of, it’s kind of like building with Legos, so you have to really think about your pieces and how they, how they go together and how you’re going to get that castle or that pirate ship built using all these different pieces, which is very different from just following a list of steps to get an outcome.

Carl: 06:24 It’s a lot more ease. It’s a lot easier to do that, especially when you’re starting off. So I think it’s great. But yeah, a lot of, a lot of more advanced developers that came from frameworks and things like that said you couldn’t do it with WordPress. And I just got tired of hearing that and I was, I just started writing. And low behold I have something like 40 articles now on the topic.

Sean: 06:47 Yeah, you have quite a few. I was skimming through your blog and everything that’s on there. You have a quite a library there of stuff. Um, what’s funny is I, uh, like I said, so I, I ha I had eight years as a programmer as well. I got into the object oriented and I, I learned to appreciate it. I was a terrible programmer in terms of detail oriented. So I was good enough to get things done but you know, always forgetting the dot the i’s and cross the t. So in, in terms of like a thorough programmer, I wasn’t very good. But what’s interesting is I was able to take a lot of those concepts and years later doing the marketing automation stuff, apply them in the realm of something totally different. But like all these ideas of inheritance and polymorphism and encapsulation came back once I was in a situation where the concepts belonged, you know, and we were doing things in, in active campaign specifically it was the tool, but things that were procedural, I was able to figure out more object oriented ways to do them.

Sean: 07:43 And now we have a far more robust set up. And it coincidentally, I just gave a Webinar, the very first open Kimono Webinar for Pagely on this topic last week. And so that’s, oh, that’s great. Yeah. But what I like about what you’re saying is people come to it through the procedural, it’s a, it’s an approachable way and everyone understands like a recipe, do this step then do that step, then that step that that makes it accessible to the mere mortal. And then once you kind of bumped into the problems that you see where the limitations bring you to, then you’re kind of seeking something more beyond that. And that’s where I think like, yeah. Oh, makes a lot of sense at that point.

Carl: 08:25 Yeah. It doesn’t scale that well. Um, yeah. You run into issues that are, again, they’re, they can be superficial to some, but important to me is like just things like code, organization. Um, it just becomes really messy that you just have these, you know, the, the code that I work on, on some websites are, are really, really old. Were were we build it oh now, but we can’t just like strip everything out. But you end up with like these files that are like 14,000 lines long that have like a mix of things in them and it’s, you never know why things were put there or like how they all fit together and things like that. And really I find those are some of the, the advantages as well to oh to object oriented programming. And obviously nowadays I, I explained to people that um, with the, you know, how important javascript is now a lot of what you’re going to do a Java script is very object oriented.

Carl: 09:30 Um, a lot of what’s changing with javascript is to just make it more like an object oriented language. Um, at least intact. Syntactically obviously like the, the language, um, how javascript works is, is very unique. But like a lot of the syntax and classes and things like that and extensions are all coming to two Java script slowly. So it’s everything kind of migrates. It’s kind of funny because PHP is taking a lot from Java script and bring it over and then Java scripts just taking stuff from the object oriented world and bringing it into, so there’s kind of a convergence going on.

Sean: 10:09 Yeah, it’s the way I think of it. It’s like you can learn Spanish and you’ll learn, you know, verbs and tenses and syntax and all that. And then when you go to learn like portrait use where I live now, that’s been, you start to realize that, you know, the syntax and the, the details are obviously different, but they’re structurally fundamentally some things that are the same. And so it, to me, object oriented principles are those concepts which are carry over from Java script to Java or whatever it is that you’re moving and walks in and wants to get your head around those. That’s, that’s what matters.

Carl: 10:45 Yeah. I think that’s super important. Um, that’s kind of why I, I spent so much time explaining kind of design, uh, computer science topics and things like that because those transcend like the language that you use, whether it’s like Ruby, python, you know, c Sharp Java script, you name it. Um, they obviously all have their differences, but, but the essence of, of computer science of, of these concepts, it applies to all languages as long as they, they support. Obviously there are some languages that aren’t object oriented so it won’t apply to them. But you know, I’ve done talks on, on functional programming and functional programming. There are languages that are just purely functional, but you know, PHP supports functional programming, um, javascript supports functional programming. So those are all concepts that transcend vendor’s super useful because I super relate to your, your example. So I speak my, my mother tongue is French and although a lot of people say, oh, well, French, the romance language, so you should know Spanish and Italian, all those things. Um, I didn’t, I didn’t understand most of those languages until I learned Spanish myself. And then I found that Portuguese and Italian made a lot more sense after that, that point. Um, but yeah, no, for sure. I think, I think that’s the importance of learning concepts, especially for computer stuff. Yeah.

Sean: 12:22 Can you [inaudible] those things that you just described, so procedural programming, functional and object oriented, can you define those and differentiate them so people understand that what we’re talking about? Absolutely.

Carl: 12:36 Yeah. So, so we’ve been, we’ve been talking about object oriented programming. So object oriented programming is the idea that you can solve problems, uh, using obviously objects. That’s why it’s called object, object oriented programming. But these objects are kind of akin to, uh, your two legos. So it’s kind of solving programming problems with Legos. You have different lego brick types. And then from these, you know, you can have squares, you have plates, you can have like the angle, the ones, and then those are your types. And then from those types you can have, uh, different bricks that those bricks could be. You know, you could have a two by two brick, you could have a four by six plate. They, they can be yellow. They can be blue. So that’s Kinda your object. And assembling those together is what object oriented programming is about. A procedural, I really liked your analogy earlier.

Carl: 13:33 I might start using it, but it’s a lot like following a recipe. So you know, you want to get a specific outcome and you’re going to go true, you know, steps. So first you’re going to do this and I’ll net you this outcome. And then from that outcome you’re going to do this next thing and then you’re just going to go through the steps. And once you’ve done all the steps in the recipe, you will have the outcome that you desired. Uh, and then functional programming, which often gets confused with procedural is a bit more complicated than explain. It comes from a, uh, from mathematics. So the idea with functional programming is that it’s you take, you take something and then you apply a function to it and then it’ll transform it. And then you can chain these functions together, um, to get your outcome.

Carl: 14:27 So, for example, you could be, you could have a string and you might want to make sure that that string is all lower case. So you’re going to transform it and uh, change it all to lower case. Then you might be okay, I want that strength, that’s all lower case. Now I want it to be broken down like all the words separated. So you’re going to break it all based on the spaces and then you just go through all these steps and then that’s what’s going to give you or your outcome. But the basics of that come from mathematics where you applied mathematical transformations to it. So that’s, that’s kind of the difference between all three of them.

Sean: 15:08 Got It. And WordPress is written in PHP and PHP is a procedural programming language, but you have the ability to write object oriented style in PHP.

Carl: 15:20 Yeah. So it started off as procedural only. Then they started adding slowly. A lot of object oriented features. Now I would say it’s more of an object oriented language. They’re they, they have almost every feature you would want at least core kind of object oriented features. Well supported, um, and mature. So it’s been like that for a little while, but it’s just WordPress is such an old, uh, piece of software that when WordPress started, um, those, those object oriented features weren’t available to the PHP language, so they just built it without them.

Speaker 3: 16:00 Okay.

Sean: 16:01 Right. And so you have a lot of this legacy code that is still procedural in nature, but when does it make sense? Like you alluded to some of the, uh, shortcomings of, of procedural programming, right? Like the, just readability and extensibility of it. But when does it make sense if you’re, if you have a plugin, let’s say that’s written in a procedural fashion, at what point does it make sense to consider a refactoring it and rewriting it in an object oriented style?

Carl: 16:31 Hmm. I mean, I would say it’s, it comes down more to like, this is kind of more of a refactoring question. So I would say like, this is my consulting side coming true, but I would be, if you never update the plugin, then I would not rewrite it obviously. Um, it, it comes down to how often you’re going to use this code. So if you’re gonna use this code, you have a lot of people working on this code and um, the code base is changing a lot. Um, expanding a lot and you’re, you’re seeing kind of those friction points that I was, I was talking about earlier, you know, you ride this new code and you’re like, okay, what but what function do I put it in? Or especially for me when I was an agency I back then the only example of of large plugins was buddy press and buddy price had all these files that were kind of decided randomly what, what code would go into them.

Carl: 17:38 And it started off great. I was like, aw, this makes total sense. And then at some point it just, it’s a scaling issue. You just work on this code all the time and you’re, you’re constantly wondering, where do I put this? Where did I put this? Um, I talk a lot about like thinking about being empathetic to your future self because it’s very easy in the moment to say, oh, this makes sense now, but it’s a different thing when you come back. You know, we’ve all had that moment when we come back, you know, it could be even a week later, but let’s do, let’s be a bit nicer to ourselves and just say like a month or two later. And you’re like, what was I thinking? Um, and it just saved those kinds of the problems. But to be, to be fair to the other way around, object oriented programming also has its challenges.

Carl: 18:31 Um, in terms of, you know, it, it creates a lot more f w files. I like having more files, but some people find that overwhelming. Uh, the design is harder and things like that. So there are challenges obviously too. And it, you know, you’re going a bit against the grain of, of how WordPress works to do it that way. But with my contacts and in the larger agencies in general, a lot of agencies and and more, um, serious developers kind of trend that way too because an under topic that we haven’t talked about is testability and it’s just object idea code is just without going into the nitty gritty details of it is just easier to test. So like when you’re, you’re an agency, um, you know, web Dev, studio, uh, tribe, you know, you name it, um, it, you, you want to be able to guarantee your client a certain quality. So it’s a lot easier to enforce that quality level, uh, and reusability as well, Trump projects, um, if you just have this object oriented code, but at the end of the day it’s a decision that you have to make and that’s always how I position it. Because in WordPress you’re not required into any sort of way to do that.

Sean: 19:53 Yeah. I mean it almost sounds like if the goal is just knocking something out just to solve it and move onto the next challenge, then maybe the procedural approach makes sense just to get something done. But if you’re having any sense of maintenance over time or extending it over time, then you want to be thinking more in like, hey, let’s take, let’s, let’s take a step back architect this properly and do it with an object oriented approach. Is that fair enough?

Carl: 20:19 Yeah, that’s how I feel about it. Um, especially if we want to reuse code between projects and things like that. You can develop libraries. You can obviously develop plugins that are procedural, but you know, you can, you can start, you can really start kinda leveraging, uh, some of the concepts like polymorphism, which is the idea that, um, you can, you can transform. It’s that in object oriented programming, there’s like the classic example, which is like a vehicle extends a car, extends its vehicle and uh, for that stuff it’s just easier to, um, work with object oriented programming because you can go between projects and you might have a custom post type but, or a media type. But some things are gonna change between projects, but most of the code is gonna stay the same. So you can just reuse that code that’s been tested, uh, gone through the grinder. Um, you, you just know that the quality is up there and then you can just get up and going really, really quickly that way. What in your opinion, is the litmus test for good code? You mentioned testability, but what if you like what qualities identify a code as being a good piece of code would you say?

Carl: 21:41 Um, for me personally, when I review code I look at, so you have a concept called complexity, which is just basically how complicated is that code to?

Speaker 4: 21:56 Uh Huh.

Carl: 21:58 Yeah. Like how mathematically complex is that code. So if you have a lot of, if statements and loops and things like that and it, it requires a lot of cognitive space to just even read through the code and figure out what it’s doing, it’s, that’s usually a sign of, um, things need to be reworked. Usually for me, I’m really quick and dirty. Um, trick is if, if the function that I’m working with or the method doesn’t fit in my screen, there needs to be a very good reason for it not fitting in my screen. Let me in general, uh, functions and methods should be small. At worst. You just break them all up, uh, into different parts because it just ends up overloading, you know, work processes like these methods or, and functions that sometimes are like 500 to a thousand lines long and nobody can just read through that and figure out what’s going on.

Carl: 23:02 Like at all points. It’s just, it takes a lot of mental capacity to do that in concentration. So to me, those are really important aspects of coding. Well, it’s, it, it’s readability. So how big is your function? Did you use good variable names? Like I don’t want to see, you know, I, you know, variable I variable a, uh, things like that. Just be somewhat expressive so that the person knows exactly, you know, what’s going on without having to think too much because we think that we spend most of our time coding. But what we do when we do spend most of our time doing is reading code. So I, I did a talk for WooConf at the loop pumps before they stopped running on complexity. And that’s like the major benefit of lower complexity is testability. Cause if you’re, if your method or function is a thousand lines long, you can’t test that. You can’t test all the outcomes. There’s probably, uh, just, yeah, I’m probably going to get it wrong, but there’s probably like hundreds of thousands of outcomes, different outcomes if a function is that long. Um, so it’s impossible to catch them all or, or catch the major ones. So it, it’s really, really hard to test in those scenarios.

Sean: 24:21 Okay. So we’re getting kind of into the weeds technical wise, but I’m going to zoom back out a bit for the business user who’s listening, uh, who this is going to be jibberish to them, but I think what’s important, what should they be thinking about? Like if they’re presented with two different freelancers and one is proposing to build it in an object oriented style and one’s proposing to build it in a procedural style. Uh, it sounds like the, again, going back to that, if it’s just knocking some quicken quick function out and we just, you know, we need to do this one thing and that’s not going to change. It doesn’t need to be maintained over time. It sounds like that’s the case for just like get it done brute force it, do procedural away. If this is something that’s going to be a piece of software that’s core to the business that needs to live and adapt over time, then that’s the scenario when you want to be thinking, okay, yeah, this likely needs to be object oriented. [inaudible]

Carl: 25:11 yeah, I mean from the business I’m, I did a lot of business analysis to too. I would say from the business owner’s perspective, I wouldn’t even worry too much about that yet because I would say what is your relationship with the person that’s going to build this code? Because again, object oriented code is, especially in WordPress is more technically the Mac, it’s more robust, but the technical level needed to do that is higher. So let’s say you bring a freelancer like myself, like I’ve done this like pro bono for, for some people and I write this beautiful code and then somebody else comes in to work on it and fix it and they don’t know how to do object oriented programming. They don’t know. They don’t know how my code works. It’s not as, it’s not intuitive to them, it’s not the WordPress way. So they just come in and just do things to WordPress way on top of my code.

Carl: 26:11 So now you end up with two different code bases or two different code styles living on top of each other. And I think longterm that’s probably more detrimental than then having it properly coded like in an object oriented way initially. But now on the other hand, if, let’s say you’re with me or with somebody else and you have a really good relationship with, with that developer and they’re, you know, that they’re going to be around and they’re not going to ghost you or all this stuff and [inaudible] they’ll be the ones working on it or the people that are going to work on it are all very technically competent, then there are definitely benefits to doing that. But it’s really about, like from a business standpoint, it’s really about what you’re going to, how that relationship with the developer, um, or the agency is going to continue, um, in the long run.

Carl: 27:07 Because otherwise you can end up with just a worse situation where you have this one code base that was built very well, but nobody understands. Like most of the contractors that you can get don’t understand it and it just becomes a waste, right? Osteo of, yeah, you have the trade off as it gets really a lot more messy in the long run. But if you’re, let’s say working in with, uh, you know, a human made, like all those, those big agencies that, that and you’re gonna be in the longterm relationships, uh, with, with those developers, then of course it’s, it’s worthwhile, but it’s, it’s really about thinking longterm. Um, uh, because they’ll just be, yeah, sorry, you don’t have this, this

Sean: 27:52 does, I, I was just going to say this speaks to that concept in software, which is called total cost of ownership. So you’re, you’re, you’re looking at future proofing it and realizing that, hey, whatever you spent today on this developer who’s writing it today, you gotta be thinking down the road in terms of, you know, what we’re going to be doing and what code debt are we incurring now that we were just going to have to then be paid down later. So really trying to take that into account as the total life cycle of that software application.

Carl: 28:20 Yeah. Yeah. I mean that’s kind of your job. Like when you’re at doing kind of the consulting that I’m trying to do, which is I’m, I often come in after the fact. So my goal is not to be, oh, this guy did it wrong or this agency did it wrong or, or whatnot is just, I can see, you can see the legacy of different people working on things and, and you have to work with that. So if I, at least all your, you know, if you’ve hired three developers and they all kind of did it procedurally, at least you’ll have all procedural code. But if you’re like you have a mix of people with different development styles, then that makes this even more challenging for anybody coming in. And that’s really what I’m concerned about when I’m talking with business owners because that’s really what they, they care about is, is what we called a development philosophy is, is like how fast can I ask for something and something gets done.

Carl: 29:24 And the more legacy and Croft and, and things in your code, the harder it is, which is hard to understand. But, uh, but just having these two different styles, cohabitating together can be detrimental because of that. So I would, if I was just coming in and just building it from scratch for someone, I would be asking those questions. I’d be like, who’s going to maintain this long term? Uh, is it us? Is it somebody else? And do I know this person, uh, are they on the project right now? Like I would be writing code for, for them and not for myself because again, it’s better to think about your future, the future of that code than it is to think about it just into present. Cause that quota has to live forever or not forever, but for a lot longer than you’re going to necessarily work on it.

Carl: 30:18 So it’s really important to just think about, obviously, you know, technical debt is a thing for sure. Um, but also just from a human perspective, who’s gonna work on this because that’s a debt as well. It’s, and it’s an important one because especially in the WordPress community where the skill sets are very different and the, the range is so large, you really want to be a business owner that has something built that somebody else can take over necessarily. If you, if you’re going to cycle through a lot of developers, you want something that somebody else can pick up and get going really easily. So documentation’s important. And I would sit, I would say document it. A lot of what I was talking about earlier is more important than object oriented or procedural. It’s just make sure things are small and not complicated. Make sure things are documented and well, like written well so that it’s easy to read so that the next person that can come in can just keep doing that and, and, and just pick it up much more quickly.

Sean: 31:20 Yup. Yeah. And yet when we talk about writing for the future, I guess to play devil’s advocate here, there to some extent, you don’t want to fall into the pre optimization trap of trying to make something so elegant and so future-proof that it takes you five times as long to get it done. So it seems like there’s a balance of just executing it to the minimal degree today so that you’re not painted in a corner for future. But you know, don’t worry too much about the future, but it set yourself up so you’re not putting yourself into a corner basically.

Carl: 31:52 Yeah. The premature optimization side is really from a design perspective, like proper coding styled, you know, like just, just writing readable code should be done is not premature optimization is just, it’s just pro. It’s just good because it doesn’t take that much longer to write a little bit of documentation after it just, it’s just a bit of a habit, you know, I’m not, you know, writing tests and things like that as much more of the mandate, but I’m just talking about like simple things like keeping functions small. Um, like it’s hygiene, like it’s coding hygiene. It’s much more about hygiene than it is about premature optimization there. But I agree. I on your devil’s advocate.

Sean: 32:41 Yeah. I guess what I’m speaking more towards is like that I’ve, I’ve seen developers who will overthink a problem and try to invent some solution, which is incredibly elegant and yet overkill for what we need. Like we just, we just needed to do the same one of those people. Sometimes I have to catch myself. Yeah. And I understand it because it’s like, in one sense it’s art and it’s poetry and it’s very cool to do that. But then from a business perspective, it’s like, no, let’s just knock out like, this is all we needed to do today. As long as we’re not, you know, ruining our future prospects, let’s just knock it out and move to the next problem.

Carl: 33:16 Yeah, I agree with that 100%. It’s just that it’s tricky for some, some developers because they’ll just like, oh, this is a waste of time. I shouldn’t be writing. Like I shouldn’t take like 30 seconds to write a like small block or, or just take the time to just write up slightly longer a variable name of, I’m just going to name this variable I and go on. But I think that’s really important for, for business owners, especially if you’re cycling through developers, um, because you really want that new developer that you’re going to hire to be able to jump in and know what’s going on. So it’s, it’s, it’s not so much premature optimization is just making sure that somebody can come in and get working really quickly. So the same thing if you run a business, you should have, you know, if you bring a new employee in, it’s useful to have like a new employee booklet, you know, you want them to get hit the ground running when they start working for you. So it’s kind of a bit the same idea.

Sean: 34:14 Yeah, yeah. No, I 100% advocate for documentation and not being so terse that it degrades the sensibility of the code. So now it’s like reading Chinese and you have to struggle to figure out what it does 100% on the same page there. Uh, and it’s, it’s just, it’s, it strikes me that there’s a balance of not overthinking it, but making sure you don’t paint yourself in the corner. So I think that’s what it comes down to. I wanted to shift gears at this point. Um, we’ve been talking a lot about the technical stuff, and I know your talk for PressNomics is about, uh, you know, about this concept of work life balance and, you know, going through a quarter life crisis. Can you explain what that quarter life crisis was?

Carl: 34:57 Uh, yeah, so, so I had a really transformative, uh, college experience. Um, so a bit of background. I come from Montreal and Canada, so we’re, I’m, I’m French Canadian. I ha, I basically did all school and French until college and, uh, for this, a bit of a long story, so I’m not gonna go too much into it, but for, for a reason, uh, I ended up going to college in English Canada, and that’s really, you know, in the u s it’s so common for people to just go out of town to and, and have these kind of meaningful kind of college campus experiences. But in, in Montreal, we have two world-class, um, universities, one in French, one in English, and we have four universities total. Most people don’t leave. So it was very difficult for me. I was like the typical kind of shy, uh, uh, teenager that played video games and watch anime and I was basically trust into this, this college life where one, I, I’d never gone to school in English, I didn’t know anybody and it was really, really transformative.

Carl: 36:18 And I kind of left and I left college with this expectation that at this point life would be, I would have a lot of personal growth, uh, like, like I had in college for the, basically the rest of my life. And then, and I started working and I realized that work life was very different from, um, college life. And it was a lot more about, um, you know, putting your roots down and, and, and finding someone and getting married and having kids and settling and a lot of, and, and working in the same place all the time and doing the same things. And I was just, I, my first, I just, it was not for me. I, if I realized I was not what I expected it and it wasn’t for me. And also I ran into a problem where I would just get bored at jobs really quickly so I couldn’t keep a job for a very long time.

Carl: 37:11 So all these things together made me realize that, oh my goodness, I, I don’t know how I’m going to last till retirement, uh, doing things to the way that kind of society wants me to do it. And from that point on, I kinda started experimenting and trying to figure out, figure myself out, figure out what I wanted and how I could get the, uh, life that I found fulfilling. Um, even though it was not necessarily a how society picture that at the time. And that’s kind of where I am today. I’m still figuring it out, but I’ve know more than I did back then. So you, you, but you’ve come to the determination like you’ve been freelancing for I think four years it looked like from your linkedin profile. Yeah, I mean, I, I basically, um, I, I, I graduated, I ended up doing not even programming.

Carl: 38:06 I graduated, I worked at a law firm, like one of the, it’s a defunct law firm now, but it was one of the largest law firms in Canada and I was just basically at an application now lists. So I did like a mix of cis and men work and things like that. I didn’t even do programming. I started programming for them to build them tools. But um, and then I got bored of that. I went backpacking again, uh, did an agency work where I started doing WordPress. And then while I was doing that I was like startups where all the crazy, I was like, okay, I’m going to do a startup now. So I did the startup, I tried to do two startups and that didn’t really work out and I realized that I didn’t really want to do startups. I just wanted to kind of figure a way to like balance out my life and, and find a, a balanced way of, of living a life where I could travel, work on, on software projects that I liked and that I wanted to work on and just figure out, just figure it all out.

Carl: 39:06 Um, just figure out a way to, to live a life that I wanted to. But it, the consulting side only came about a few years ago cause the first few years were just basically me being in a basement trying to do startup stuff and I was very unsuccessful

Sean: 39:21 that well, I mean, speaking of success, how at this point do you define success for yourself?

Carl: 39:29 Um, for me, for me, success is the ability to one, um, one wake up in the morning and be content. I bet you can be happy all the time. Um, the, that’s a bit of a larger discussion but, but be content with, with the direction that my life is going and what I’m working on. And then it’s the ability to travel, to meet people, to, uh, work on, on software that I find challenging to keep learning, learning super important for me. So I’m very self-taught as well. So just being able to put myself in these learning opportunities. Um, like for example, like I learned Spanish and now I do work camp talks in Spanish. So, uh, just having the opportunity to do that would be really hard if I had a regular nine to five job, uh, because a lot of it would be taken by that, just working on those projects and really I only spend

Speaker 5: 40:33 okay

Carl: 40:33 about 20 hours between 20 and 30 hours a month on billable work. So the rest of the time is all time that I spent either doing a lot of work for free. So just writing articles, building talks and things like that, or just, just finding ways to just improve myself because that’s kind of what I wanted to do with my life. I wanted to keep growing, I wanted to learn new things. Um, so I just wanted to build a life where I could be enabled to do that.

Sean: 41:05 Can you talk about, you wrote a book, this, the Abra Trinity Book and that book made over $11,000 in the first week of its launch, which is pretty impressive. Can you just talk about what was involved in that process and how, how you went about that?

Carl: 41:21 Yeah. Um, there’s also a larger article about, um, I’m kind of writing a few postmortems, uh, articles on it, but I mean the book started off, so I started writing a few articles on WordPress and object oriented design and they did really well and I was like, oh, cool, maybe I should just do, you know, I was following a lot of bootstrappers so if you’re not super familiar with bootstrap and it’s kind of a subset of, of startups, but it’s you just start a business with your own money, um, using your own funds, no external funding. And a lot of these, uh, bootstrappers that I, that I admired and followed all had these, these blogs and, and were writing consistently because it was a good marketing channel for them. So I was, I was Kinda, I started doing that and I was like, I was so desperate to get any subscribers that I could, but I just decided, okay, well I want to write a book at some point cause that’s a thing you do.

Carl: 42:24 I’m just going to put this book landing page and just have people sign up to the newsletter anyways. It didn’t do anything different at the time and just as a second channel two to funnel people into the newsletter. And I only started writing the book about two years ago once I had like a kind of critical mass of people. Usually if you self publish you didn’t mention it, but just for the listeners, um, the book itself is self-published. So I didn’t go true Amazon or any big publisher. I just published up to $16,000 a now. And that’s all true. Uh, my own marketing. There’s been no publishers. I picked it up, I just built the whole book myself and published it. So there’s a critical mass, a lot of people that I’ve read that I’ve done it. There seems to be a bit of a critical mass of, of newsletter subscribers that you want to have to have somewhat of a, uh, I mean, a good launch is for me, I would have been ecstatic if I made $3,000. Like you said, I made like $11,000 in the first week, which blew my mind.

Carl: 43:37 Like, oh, well, first off, my first question is how did you choose the theme of the book? And did you already at that point have an audience built up through your blog or through your newsletter going into it? Or did you go, I chose a book before I had an audience, which is not something you should do, but, uh, a lot of what I’ve done and that’ll be a bit of, that’ll probably be a recurring thing in the, in the Pressonomics talk as well as a lot of what I’ve done is very much against the grain of either a society or what, you know, people tell you to do about business. For example, my, my, my blog niche is tiny. Like I joke that it’s a niche within a niche, within a niche. Like object oriented programming with WordPress is of very specific topic to be talking about in the WordPress community.

Carl: 44:31 But [inaudible] I did all right doing that. But if you talk to anybody beforehand, they would tell you like, no, like that’s, you know, you want to be in a niche topic but not that niche, you know. Um, but I, I think there’s something to be talked about about being passionate about something. Again, that’s why that’s the topic of my PressNomics talk is I think passion. People feel passionate. Uh, it’s, it’s, you know, if you’re passionate about a topic or writing about it, it, it, you can feel it reading the person, you can feel it talking to that person. Um, and that can carry some weight. I’m, I don’t know if it’s a bulletproof way, but I, I like to think that the fact that I’m really passionate about things, uh, the things that I teach about were partially success. Part of the reason of its success, because I really did not do things the way you should have.

Carl: 45:27 Like, I should not have picked that niche of a topic I should not have chosen. What I was going to write about before having any readers more or less. But that’s Kinda what I did because I was just like, I want this book to exist. I’m really passionate about the topic. I’m gonna make sure that this book comes to light. It just took a long time because from a marketing standpoint, I just could not afford to just do a book and launch it when nobody knew I existed. So that took a while to, to happen. Uh, and it took a while to write the books. So it, you know, the, the, the landing page for the book was there forever, but the book writing process only started about two and a half years ago. Um, it took about two years to get it done when you’re writing it.

Carl: 46:20 And then one year of basically editing and, uh, building. But that’s very slow. Like, so some people just, you know, sit down and, and can do a book and like a couple of months. But for me it was, again, a lot of the way I work is just, I like to take my time and I’m trying to not rush through things. So it’s, it’s a joke. It’s a joke because whenever I say, well, I’m going to launch something there, you know, my friend taught me Farlan uh, is always like, Oh yeah, Eta 20, 25. And I’m like, yeah, maybe, you know, she just, because I’m, I’m very, I’m much slower about things. Um, but whether or not it’s the right way, I don’t know, but it worked for me. Sure. And I think passion can cure you for sure. Like passion needs to exist because you’re just not going to do it otherwise.

Carl: 47:11 Like it needs to be there. Exactly. No, that’s, that’s actually a very true also because you know, it’s not always gonna be like, that’s kind of ties to what I, I didn’t want to go too far into, but you’re not going to be happy all the time. Like, like happiness is, it comes from the contrast of being not happy and then being happy again. So, but you need something that’ll carry you. True. Like when it’s slower, you want to be something. Okay, well I really liked this so I’m going to keep doing it. Even if nobody reads me, even if you know, nobody buys my book, I’ll be happy I did it because I liked this topic and I’m happy that this thing exists anyways. Right?

Sean: 47:56 Yeah. And that’s what are the, the, the, the passion aspect is the go or no-go. It’s like whether it’s going to get done or not. So that is essential, but it is independent of things like market size and commerciality and motive of the readers and like what they’re willing to pay and you know, all that, all those variables. Just kind of more determine the amount of book sales and what you’re gonna [inaudible]

Carl: 48:19 yeah, exactly. That’s what I was going to say. Yeah. I mean, market matter is like I, I’m friends with a, um, a guy named Justin Jackson and he started a podcasting hosting, uh, by B’s bootstrapping up. It’s called transistor dot. Sm and he basically, it’s a hosting platform for podcasts and like, he talks a lot about it because he’s started, at least tried to start a few businesses and there’s something he goes back to is like, if the market is strong, ill pull the mar the product out of you. You know, like it’s a lot easier to do things and I think there’s truth to that. But if you don’t like what you’re doing, like I, I, at least me personally, I could never do work on something, even if the market was great, it was the heart hottest market. If I just didn’t like it, I could not do it.

Carl: 49:12 But that’s me, you know? And that’s a personal thing and that’s a lot of what, that defining success and following your passion is about is a lot about introspection because you have to be able to answer those questions, um, and then find a sustainable way to live while trying to hit those markers. Because, yeah, I mean, passion will carry you, but you know, if you can be passionate about, uh, you know, I can’t think of something ridiculous right now, but the idea is like you can be passionate about something and there’s no market and it’s not gonna work out.

Sean: 49:48 Yeah. And that’s not really a book for an audience of one. And maybe that was your goal. Maybe you just like that. Yeah, it was fulfilling. But if you’re, if your goal is exposure and readership and all that,

Carl: 50:00 then you’ve got to take those factors into account. Yeah, exactly.

Sean: 50:06 So we’re, we’re bumping right up into the one hour mark. Um, so I think we’ll probably wrap it up here, but I’ve got one little section of standard questions that I ask all the guests. And so we’ll go into this rapid fire section. So what is one book that has profoundly affected your thinking in some way?

Speaker 6: 50:22 Sure.

Carl: 50:23 I actually wanna, uh, talk an article, uh, because I read a lot on pocket, actually. I read about 40 books, word of things. Um, and there was this article that came out, um, I want to say I’m kind of googling it as we’re talking, but it was called, uh, why are you in such a rush? And it was by this, um, Dan shipper. It’s, it left a mark for me because it was like when I was like, I’m kind of this, this kind of startup craze. And I was like, Oh, you know, I remember saying like, when I quit my job, I was like, if I don’t make any money in like six months, I’m an idiot. And I just had to use like really weird timelines about things and after it made no sense because if I looked back at everything that I accomplished or done, they were all things that took a long time to do that.

Carl: 51:22 I gave myself a lot of time to, to do it. So it’s the same thing with this, this book, I’m only like, you know, this book came out, I made $16,000. You know, I did it two years. I started writing it two years ago, but I only started writing like really intensely for the WordPress community like four or five years ago, you know, so if you think about it like on a 10 year kind of window, it’s really, to me it was a high opening. Like that was like, that’s still the most important article I’ve read in the last decade. Um, because it really

Sean: 51:56 good. We’ll link to it in the show notes. Uh, for sure. What about, what is one tool or hack that saves you time, money, headaches, or all of the above.

Carl: 52:06 Okay. For me, the biggest life hack I have is just being a minimalist. Like I just figured out that most of the stuff that I own I don’t really need. So that, that’s been like the biggest life hack I’ve had really for like time and everything. I mean I’m, I’m, I joked that I’m time rich and money poor, so I have a lot of times, so I don’t mind spending time to do things. I just don’t have a lot of money to do it. So I’m very good at finding, you know, flight deal, like, you know, if you want to know about how to find good flight deals and things like that and how to travel cheaply, I’m your person. Um, but yeah, for hacks, for saving time, I’m not as good as that because part of the reason that I, the way I want to live is just I want to just enjoy life. So just taking my time and, and not always worrying about like shaving every second is really important to me.

Sean: 52:57 Okay. Uh, yeah, no, definitely. I should have the minimalist less is more told, you know, just cut out the crap. I think that that lesson is actually applicable in, in terms of code, just because we talked so much about absolutely necessary stuff.

Carl: 53:12 Yeah. There’s a principle for that. I forget. Uh, I think it’s like Yanni or something like that. There’s like a, there’s a coding principle that’s like less is more for sure. Yeah.

Sean: 53:22 What about, what is one piece of music that speaks to you lately?

Carl: 53:28 Ooh, uh,

Speaker 7: 53:30 yeah,

Carl: 53:32 there is one piece of music that I always go back to. It’s kind of somewhat obscure. Um, so you can find it on soundcloud and possibly on Youtube. So there’s a, you can get the Jurassic Park team music slowed down I think a hundred times and it’s, it lasts like an hour and it’s Kinda like this, not trancey but it’s, it’s, it, it, it’s more spacey, like it sounds like space music. And I, I always go back to it. Like I find it really suiting, um, like just, it just calms me. So I just find it, I always go back to it and I find it fascinating and it’s one of those things that a friend link to me like a long, long time ago and it just sticks around. I just keep going back to it like regularly. Uh, whenever I’d need like calming music. Yeah.

Sean: 54:29 Cool. Well, send me the link, I’ll put that in the show notes as well so people can check. What about, what is one important truth that very few people agree with you on?

Carl: 54:42 Oh, my. Um, alright. I mean, I, I argue that like my life so far has been a lot of that. Um, just going a lot of gains to grain of, um, I mean, the minimalistic stuff, I find people argue, I don’t know about you, like I don’t know when people asked you about, not necessarily about it, but they’re like, oh, I’m getting this thing. And I’m like, I don’t need it. Uh, like you, you don’t, you don’t really need that. And there’s always a lot of pushback with that. I don’t know if that’s been your experience, but I find like a lot of people find really are really creative at finding reasons why they need something right now. And they won’t use it for like a week later. I

Sean: 55:34 travel, I’m still nomadic. And so, yeah, I’m very anti stuff. Like, even to the point of like, you know, you give me a

Carl: 55:41 birthday card or something, I’m like, thanks, but what am I going to do with this stuff?

Sean: 55:46 I, well, last question. If you had a time machine to go back to your 20 year old self and give yourself one bit of advice, what would you say?

Speaker 7: 55:54 Sure.

Carl: 55:57 A 20 year old. So before college, uh, I would tell them that it’s gonna be actually, if I go even further back, I would be like, if I told my younger self that I would be doing so much public speaking in my life, he would, you would flat out laugh at me. He would laugh at me. I was, I was so of public speaking when I was a kid. W like shaking in my seat type thing. Um, and if you, even if even at 20, if I went back and they’re like, yeah, you’re going to be doing a lot of public speaking when you’re older, they’d be like, no way. Like you’re crazy.

Sean: 56:44 Cool. All right, well Carl, I think that’s, we’ll wrap it up there. How can people get ahold of you or read some of the stuff that you written? Where do you want to send people?

Carl: 56:53 Oh, so, um, the best place to find me is obviously it my website. So it’s Carl Alexander, uh, two first names at a dot. Ca. Um, and there I have like a contact page where you can like on the side you can like find me on get hub. Um, if you ping me on Twitter, uh, I’ll usually respond within 24 hours. Even with the newsletter, I try to be super responsive. Um, if you reply to them, because for me it’s really about the interactions with the reader. So those are really the two best places to get a hold of me, uh, outside the website, like in the comments section.

Sean: 57:35 Cool. Sounds good. And we’ll link all that up in the show notes for the people listening. You can find all this stuff on the website. So Carl, thank you so much for being on the show, man. It’s been a pleasure.

Carl: 57:44 Thank you. Thanks a lot, Sean. Cheers.

Recent Episodes

Copyright 2009-2019 Pagely, Inc. Pagely® and WordPress® are registered trademarks.