Raymond is a software engineering manager at Crayon.co. We discuss learning to program as an adult, his entrepreneurial journey, and making the switch from developer to team manager.
This podcast does not have any ads or sponsors. To support the show, please consider visiting LearnDjango.com, Button, or Django News.
Will Vincent 0:05
Hi, welcome to Django Chat a fortnightly podcast on the Django web framework. I'm Will Vincent joined by Carlton Gibson. Hi, Carlton.
Carlton Gibson 0:12
Hello again Will.
Will Vincent 0:13
And this episode, we are joined by Ray Traylor. Ray, welcome to the show.
Raymond Traylor 0:17
Thank you.
Carlton Gibson 0:18
Thanks for coming on.
Will Vincent 0:19
So we connected by email, I think you'd read some of my books and mentioned you're a little bit earlier in your programming career. So we really wanted to have you come on and talk about your journey, learning programming, learning Django, and where you are today, because I think that will resonate with a lot of listeners. So maybe, let's talk about programming. You know, before we get to Django, how did you get into tech in programming? What's your origin story as it were?
Raymond Traylor 0:45
Yeah, absolutely. When I first started emailing you, I don't think your books even came out yet. I think it was just on the blog.
Will Vincent 0:52
Yeah, you are your early days I was looking it was. It was like 2018. Or it was way, way back when? Yeah,
Raymond Traylor 1:00
exactly. And so back then it was just searching Google, going through the struggle of I mean, of course, you start with the polls tutorial. And early on in programming. Reading the docs is pretty difficult. So you have to find tutorials from people, right? So I came across your site. And it really helped me a ton. So I started just emailing to ask questions, I think going through, like got stuck at a couple places. And that's when sometimes just reach out. And someone who's willing to put their workout on a blog often will reply back. So that helped a ton. And talking to you about just the site and everything that you were building towards including going to the books, I know you're talking about doing video. Ultimately, we have this podcast, so it kind of comes full circle. But yeah, the journey definitely started from just asking questions and working through my bugs. And believe it or not, you really got me over the hump for Django, I don't think I would have been able to grok it without you.
Will Vincent 2:11
I appreciate that. I, you know, when I wrote the site and the blog posts, it's because I was just a couple years before you in that journey. And so, you know, when I finally had some understanding, I thought, well, how could I have saved myself time? And what were the sticking points. And that's one of the things I love, emailing with people who read my books or blog posts is because it's different for everyone. There's always new things, you know that there's some things that trip people up and then there's new things, and it's all getting to the same place. Have some understanding of Django, you know, we can't all be Django fellows like Carlton, but
Carlton Gibson 2:49
I'm just the janitor.
Will Vincent 2:52
Do you? So I'm trying to think so why were you so why Django? You know what? Why did you? You know, why web programming and why Django in particular? How'd you get to that point?
Raymond Traylor 3:04
I should actually start way back. Okay. Yeah, please. I was super late to programming. I actually didn't know what it was. I think I, well, age wise, maybe not. I think I started like, 2425. Yeah, yeah. Yeah. But I didn't know what it was, like, I just had no concept of what programming was, of course, I knew what computers were, what the internet was, even websites, but a website to me was just, you know, HTML and some pictures. I mean, it's just another. Yeah, it's just another form of like a Word document or PDF is how I saw it. But to actually make applications I never even thought of it, right. But like a lot of people, I think the social network movie was like, Oh, that's what coding is, you know, that's what you use to make Facebook. So I was working as a salesperson at the time for Comcast business and sales pays a lot. But that industry, it's up and down, like you have great months. And then even if you're having a great month, they change the comp plan, or it's really not a stable career. So then it's good for a couple years, and then you go to the next company, the next company. We do that in programming, but at least you don't have the ups and downs. And it's more our choice than the company's choice, right? So I picked up learn Python the hard way. It's one of those you just Google. How do you learn how to Yeah.
Will Vincent 4:39
Yeah, I think it was still free back when you were looking through.
Raymond Traylor 4:43
Yeah, and it was free. So starting that way, it was really just googling what language should you choose. So it's always the JavaScript versus Python. Now I think back then it was more PHP was still pretty big.
Will Vincent 5:00
Yeah, Ruby was Ruby and Rails. I think, depending on your timing, I think I mean, because for me when I started in earnest, it was 2012. in earnest, I say building like complex websites beyond HTML, CSS,
Carlton Gibson 5:16
just just while with my records, I think PHP is still pretty big. Like, I think like, you know, more than half of all web applications are run with it. It's funny how, like, it doesn't seem to have the mindshare, like it did, but it's still like, you know, massive in size
Raymond Traylor 5:35
in the context of URI beginner, just googling web programming. Plus, PHP gets so much hate unjustifiably, in my opinion.
Will Vincent 5:47
Yeah, Agreed. Agreed.
Raymond Traylor 5:50
So I chose Python, because they just said it was easier for beginners, you could do data science, you could do so much for it. If you read maybe 100 blog posts of which first language should you use? I think, especially then Python was the obvious choice. And I'm obviously happy that I chose it. So where do you start looking at books, looking at everything, but what I liked about learn Python, the hard way is, if you just read the introduction, and I go back a few times, he's really harsh. He's telling you how hard it's going to be. And don't be lazy. Don't copy and paste. This is going to be really tough and start at the basics. So even going with the command line and learning a little bit of Linux and get out to see your your CD and LS and things that if you've always used a Mac or Windows you never came across, you never open up the terminal, right? Yeah, it's a whole new world. So doing that put me in the right mindset of this is gonna be hard. And it was really difficult to work through it. But he's very encouraging to try again and try again. Along those lines to other articles I came across Eric Raymond's it's called How to be a hacker should be pretty famous. It's very opinionated. But he really gets into the culture of it, what it means. And it gets it's kind of the opposite of your social network, tech bros sort of thing. It's maybe the 1970s style programming, he really brings the essence of that. But he links to another article from Peter norvig called Teach Yourself programming and 10 years. Yeah, I
Will Vincent 7:48
know that. That's good.
Carlton Gibson 7:50
Cuz that's the one that begins about the learning in four hours type thing learning in 24 hours learning. Yeah,
Raymond Traylor 7:56
exactly. And so between those three things, I got the right mindset of instead of, I'm just gonna learn some JavaScript and make some websites and maybe attend a boot camp, and then I'm going to be a coding Ninja, and I'm gonna make a ton of money. And that's it. I felt like I really got the fundamentals down, even if not from a computer science standpoint, but from a take programming seriously, take your time, learn it thoroughly. And with that, that was that was the start of being able to do some basic things. That doesn't get me to web programming, yet, there's a little bit more of a journey to get there.
Carlton Gibson 8:42
That's a good nice introduction. It's like, you know, if you kind of think sit back and think well, you know, if I could persuade somebody, what's the what are the quote unquote, right things to read that those those selections would be good because I mean, part of it's like perseverance, like, you know, you start to get a file, open your rights and stuff, it just doesn't work.
Will Vincent 9:01
And I wonder how much it also is your I mean, obviously, your, your personality and temperament, but you know, your age in that coming at it as an adult, there is more of an expectation that things are hard. Whereas if you're 12 years old, or something, I think maybe you're more inclined to just throw stuff on the wall and, you know, build whatever quick sight you want without thinking about the underlying things that as you get older, right, you see that again, and again, and field after field. So that may have been an advantage for you. Actually.
Raymond Traylor 9:34
Yeah, so doing sales and entrepreneurship, which I could get into a little bit. It prepares you for the rejection and doing something hard and putting in a ton of long hours. But the difficulty of programming is unique. That's a frustration that I haven't seen replicated in any other way when you can't get something to work and when you're banging your head on the keyboard, And when you swear that you're right, and the computer's wrong, right, right. I mean, obviously the joy that comes from when you've been working on a bug that, I mean, you just did a typo, right?
Will Vincent 10:14
It's a semi coma. Yeah, but there is an answer, right? It's like, you know that it is out there.
Raymond Traylor 10:20
Yeah. And I think that that was one of the lessons too of figuring out how long you should bang your head on it, and figure it out yourself and Google forever, versus asking, and when asked and how to ask. I definitely slowed down my journey by trying to do everything myself, rather than reaching out. But I think by the time I started to email you, and I actually should have emailed more people or ask more people, but I think he were one of the very, very few people who I actually reached out to, and I feel like I would have figured it out those those early problems, but it really might have been three months. Sometimes you put it down.
Will Vincent 11:06
Yeah, I did it wrong. I mean, I, I like pretty much locked myself in a room for two years to build a startup I had in mind, and it's kind of amazing. I built it. But you know, now how long would it take me to build it? Like, you know, weeks? So it's great that you reached out I think I wasn't as prone to reaching out because I didn't realize that, as you say, if someone takes the time to write a blog post, they probably will respond, actually, yeah. And then. Right. And the thing you don't know when you're younger is Yeah, what's what's like a truly hard problem. And what's something that's common that you're just not seeing? And so you shouldn't spend three months on
Raymond Traylor 11:45
it? Exactly, yeah. So from there, I'm working this job, this sales job and learning Python the hard way on the side. And I've worked for myself, and then sales jobs, and then work for myself, and then sales jobs, and I was ready to quit this sales job. So I quit the sales job started. Well, it took me a while to kind of figure it out. But I got back into e commerce, I came up with an idea that's not really original now, but I was arbitrage in between ecommerce platforms. So the simplest way to explain it is to buy from Amazon and sell on eBay. And the twist to it is the customer would buy first, and then I buy from Amazon.
Will Vincent 12:36
So it's like high frequency trading. And just arbitrage the difference.
Raymond Traylor 12:41
And I actually was inspired by high frequency trading that book flash boys by Lewis. So arbitrage and speed and obviously, prices change all the time, and things get sold out. So you could start out by hand, you can kind of manage 100 products or so. And then I started hiring outsourcers on oDesk, which is Upwork. Now, so that was sustainable a little bit while I'm sleep in America, they're up in Bangladesh or the Philippines. And the prices were I mean, I'm ashamed to say it was 50 cents to $3 an hour, but they was just copying and pasting, you know, the titles of the products, the pictures and updating the pricing. And as you can see, to jump from me doing it myself to outsourcers, that's a great case for software. So my first software that I actually went into application was to automate doing arbitrage between markets to update the prices to order the products. So that's not
Will Vincent 13:57
a simple thing. I mean, that's, that's a web scraper. That's cronjobs. That's a website like, that's a whole bunch of stuff.
Raymond Traylor 14:04
Exactly. But I was I was much more rudimentary than that, right? So all I have is the basic basic level of Python. I know how to use a command line. I know for loops, I don't even know if I was even using functions yet. I certainly didn't know classes. But I came across a program called securely and securely is for some language. I don't know what language is saying, but it means something to the effect of like all saying aye, or something like that. But what that does is you know how you have browser automation like puppeteer, but it does this for your whole computer. So anything that you can see on your computer you could automate for but they use Python as a language and you don't need anything special. You could just take a screenshot of a button. Put that there and Then they use some of their own keywords like click or type or so I could get the computer to do what I was doing and what the outsources were doing. And that really got me into a good mindset for programming. Because doing that at an intermediate step of having outsourcers, I had to give them instructions. And when you have a language barrier, and time difference, and of course, they're getting paid not that much, you have to make it as simple as possible. So I had to really write out step by step and then making videos of you do this and do this and then do this. But after I discovered securely, then I could do it myself. So I was using Windows back then, the software actually worked better on Mac, and I could get it to work. But my programming skills were so bad, and the software is kind of finicky. And thin, my internet connection was so slow that we're like literally, I'm not scraping amazon.com, I'm literally having this program go on a real browser and the different timing. So if I'm saying, click this button, and one second, but it takes the page three seconds to load, then the program breaks.
Carlton Gibson 16:23
This is very reminiscent of the Selenium tests that we had for the Django admin. It's like, you know, if, if the pop up hasn't shown yet this test breaks and
Raymond Traylor 16:31
yeah, so but I was able to use Python, it was a real application, and it actually made me money. And I would be so frustrated because it would stop every 20 minutes, and then it would stop every couple hours. But the business was doing well. I mean, I'm making the arbitrage wasn't huge, but I'm making like $2 per product. And I'm selling, you know, from 20, on up to 100 on up to a lot more products per day so I can afford the business, it's sustainable. So I started fixing problems, the only way I knew how, which wasn't learned more programming, it was scale up by brute force and money. So I ended up gigabit internet had just came out. And I was going to move to Kansas City to Google's Fiat, yeah, order to get it down. And then obscure newspaper. in Denver, I don't even remember the name. I lived in Denver. And they had they said that gigabit was coming from some internet provider I never heard of, but it was only at this one office part in Golden Colorado. So I went and signed a three year lease at this office just so I could get gigabit internet. So instead of waiting three seconds for amazon.com to load, it would load in a half a second. So seeing the difference between your at home broadband versus fiber optic cable is just a world of difference. It just works right? So I got the office. And then I was annoyed that I was commuting like 45 minutes to an hour just to get to the office just to fix my broken program. So I got an apartment next to it. And they had horribly slow internet that was a block away from the office that the fastest internet in the world, or at least that access to. So I'm going back and forth to the office. And the other scaling was I bought more MacBook Airs. So it started with one and then three and then 17 I ended up with 32. Mac. Right across the
Carlton Gibson 18:34
fantastic well,
Will Vincent 18:35
so why? Well, I I know a little something about web scraping. Why were you using the so many different? Is it because you weren't so you can get blocked for like IP address hitting them or
Raymond Traylor 18:45
what? No, not even that far, because it wasn't actually scraping. The computer was literally just on the Chrome web browser, just refreshing the page and just going through a list of URL. So it wasn't even scraping. It was just the computer in the browser running and Python was doing it but it was as rudimentary as you could come.
Will Vincent 19:08
Well, but that that's I've seen very well funded startups that do exactly that. Because even at scale and with professional programmers, unless you're you basically like most sites will say you We won't accept more than however many hits per hour from a given IP address. So there's more fit, there's more elegant ways around it. But an easy way is they literally they had like yeah, like Mac minis they had 50 Mac minis and they were just you know both both to do it and then also to get around the blocking on on these sites.
Raymond Traylor 19:43
Exactly. So to kind of wrap up that story. The annoyance was I'd have to go into the office even though it's a block away in order to fix my broken program. And so waking up in the middle of night 3am to go to the office to fix that. Unlike I need gigabit internet at home, so downtown Denver, it finally came. So I got the first building in Denver that had gigabit internet. So I had an apartment downtown. And then I had the office and the business is doing just incredible. And thanks to that, and I very much plateaued in my programming skills. I tried to learn more, it was kind of just reading, but I didn't really have a direction I certainly wasn't, certainly was in web development. This was automation, right? And I got into scraping more so of course, beautifulsoup and scrapey, that sort of thing. But like all arbitrage businesses, or high frequency trading, you get squeezed out eventually competitors come in and the price goes from $2 to 152. Are they really gonna do this for five cents per product? No. So I was out of business.
Carlton Gibson 21:00
But that's that's a glorious Hill period to ride that way for That's lovely. That's my favorite business. My favorite slice. I'm starting Python story. It's amazing.
Raymond Traylor 21:09
It lasted five years.
Carlton Gibson 21:13
Amazing.
Raymond Traylor 21:13
Yeah. It was, it was a very successful business. So much so that when it ended abruptly, I didn't take care of my last tax bill. So I've recently paid that off years later. So that's a lesson if anybody's doing entrepreneurship. You know, I had an accountant, but make sure you're you're on top of it. Because if you're making profit, they'll get you eventually.
Will Vincent 21:40
Yeah, self employment. I mean, I, I will Carlton knows how it is. But I've certainly Yeah, found that I feel like after I spent, it was like a year to like, figure out the business side of running anything. There's so many things, right, there's so many things, you're like, Oh my god, and and then eventually automated, but like nobody kind of tells you or if they tell you it doesn't mean anything until you have to do it.
Raymond Traylor 22:07
From there, you would think that I would get more into programming because it worked. So well, I actually went the opposite direction. I actually hate real estate, but the price keeps going up. And it just seems like if you're going to get rich, you need to do a startup get into real estate or seriously in the stock. So I decided real estate and then we had Airbnb kind of blowing up. So I decided to move to Las Vegas and do an Airbnb business and bring in a couple partners, one of which never showed up another which ended up having personal problems. So that fell on its face, I ended up staying in one of the airbnbs on the strip for a year. And so that was fun. But during that time, when I'm not making that much money and spending the old money I had and couldn't come up with a business. I was working on programming more. So not necessarily the web development. But I started reading the Python books. I really like learn Python, the big huge. Mark, let's I think Yeah, Mark Lux, the the book is really big. And it seems like it's a little bit outdated now. I mean, I think it only goes up to maybe, gosh, that was during the Python two to three. Split. Yeah, but the fundamentals are definitely there. And he explains things so thoroughly. I mean, one thing, just learning functions, he probably spends 50 pages on it. And it's as deep as you could get. So I did learning there, but it wasn't applied. So nothing really happened. After Vegas, I didn't have a business so I could start I didn't want to get back into sales. I ended up moving to Tampa where I am now my mom retired here. So it's like, you know, tail between your legs failure, am I gonna start another business? Am I gonna get another job? And I that's when I decided, Okay, I'm, I'm gonna take this programming thing seriously. You can't have the businesses that I was trying, I found that I couldn't be an entrepreneur and a programmer at the same time, you really had to choose one. So I decided that I wanted to just get a programming job, not a sales job, a programming job. So a whole new career, you know, it's, there's entrepreneurship, there were sales, and then I wanted to do programming. So that's when, you know, it was not what programming language but what type of programming to do. And where the jobs are, is either mobile or web or, you know, you could do kind of the Microsoft stack and I decided on web which seemed like the right decision and that's when I started Trying to figure out how to do it. And it was a struggle. I mean, the difference between scripting and basic Python automation versus web development is a world of difference.
Will Vincent 25:16
Like, what are the differences? I mean, just broader in the web scope or less resources?
Raymond Traylor 25:22
Well, you're actually making an application, right. So even if we just talk about writing a one page script versus tying it together, right, and the web has, there's so much more to it, including, there's a design element, which I never really had an eye for, I'm only on the command line and my code editor, and now you know, we have to make something there. It was, the struggle was finding that like, knowing that I needed a framework for it. So the one that was most successful, which it sounds like I was taking a dig at PHP, but PHP was the most successful for me, it was the only thing that I could get to work, it made sense, it, I didn't need a framework, it was just PHP plus MySQL, PHP, it's
Carlton Gibson 26:15
like its whole mission is solve the web problem quickly. And it always did do that well. And it still does that well. And you know, for all, you know, this, that any other language feature this language, you know, solve the web problem quickly in it, it's got no, you know, just quickly, which you're in.
Raymond Traylor 26:34
And the number one feature, and I still feel that way is it's easy to deploy, you have a PHP site, and there's all these $5 month hosts you could use, it's so easy to host it on your own, and
Will Vincent 26:47
someone needs to solve that for
Carlton Gibson 26:48
Yay, we'll get onto that and before Christmas.
Raymond Traylor 26:53
So I loved it, it worked. And then you know, the whole WordPress ecosystem. But what I found out pretty quickly is those jobs don't pay as much. So PHP, because it's so popular and international, and it doesn't pay. So I wasn't going to be a programmer in a job to not make much I mean, I'm used to sales jobs. And being a top salesperson, I'm here to make money. So eventually go into MD to see what the jobs are paying. And definitely, Python pays well. My next problem was being in Tampa. So I leveled up, I read all of Williams books. That plus two scoops of Django plus actually getting through the polls tutorial, really reading all the documentation that I could get my hands on getting better at Python as well, making my own projects that weren't, there wasn't for profit, it was for myself, like in the stock market investing. So I made an application to make that easier. And to buy stocks, even though you don't have money. There's plenty of programs that do that. But I kind of had a twist to it and added some automation. I like sports betting. So it's a horrible thing to do, because you just lose money, like everybody loses money. But if you could use fake money, thanks to Python. Then I made a program for that. And the things that Django in particular saw which it took me a while to get to Django. It was PHP, it was JavaScript node, it was flask, I end up liking flask, because it was simple when and you could get it going right away, right? And to learn the MTV, well, model view controller.
Will Vincent 28:53
MVC versus MTV. Yeah,
Raymond Traylor 28:55
exactly. That takes a little while to wrap your head around. But what stuck me to Django was the library that, William if you're the only person I've seen, to actually use it, and I use it all the time is all off. And now
Will Vincent 29:17
I think it's pretty. Yeah. And beginners don't know about it. But I think most of the working professionals just use it
Raymond Traylor 29:27
as they should, to jobs that I've worked, no one it used it and it just, you know, solves the problem. So for PHP, the issue at that time was learning deployment and I solved that problem but Django solve the problem of authentication which was really really difficult for me to do on especially Express and node it was it was hard to just do a law game you would think that they should be a solve problem, but it's really difficult and Django and That plugin really makes it super easy.
Will Vincent 30:03
Yeah, I think well, Carlton, I want you to expound. I mean, I think part of the issue is authentication is really deep. And there's lots of different ways to do it. And you know, there's things Django doesn't have to factor and some other things. And so I think like the Express and other ones, they're just like a cornucopia of options, rather than Django just being like, here's a out of the box one for you.
Carlton Gibson 30:22
The whole point about the batteries included is Django ships, the hard batteries. So you know, a few years ago, when the some of the contracts would remove, like contract comments was taken out, and you can still use Django to contribute comments from the Django wall. But it was taken out of the core, because it's like, well, that's kind of an easy thing, and we need to keep it down. But auth auth is really hard, really hard to get right. And, you know, if you get it wrong, that's big trouble. So you know, Django ships that battery for you. And it's hard to explain to someone who hasn't tried to roll their own off. why that matters so much.
Raymond Traylor 31:00
I remember on this podcast, when you two were lightly debating whether to use custom users or the Django built in.
Will Vincent 31:11
That's way back bringing back memories.
Raymond Traylor 31:14
I was into that debate, like, I don't know, Mac versus Windows users back in the 90s, or something I was so into it. And of course, I was on William side, just because I knew him or, and it's like, well, I read all his books. But then Carlton actually writes it. So which one? Should I just sweep the floor?
Carlton Gibson 31:36
sweep the floor? Yeah, I mean, I've got a controversial view here is that I still use the default auth user model. And I still have a, like a foreign key from a profile model, or one to one from the profile model, which are used to store extra fields. And the reason I do that is simply because when I spin up a new project project, I don't want to waste that, like I've got some inspiration from a new project. And I don't want to waste that inspiration going out. Now I need a custom. And maybe we could make the default template shipper custom user. And then I maybe at that point, I might relent, but I just think you know what, for me, keep use the default user model. And, you know, use the one to one field and just go, and that's worked very well for me, but the docs say use it, your custom model will use a custom model.
Will Vincent 32:28
Well, I was gonna say I've come a little more towards your side, Carlton, because I think I mentioned that, I put it I put the custom user model in the book, just like in the beginners book, because I don't want people to have to back into it, which you can do. But it's kind of tricky. But I do take Carlton's point, which I think he probably mentioned that podcast, which is just because you can throw everything on user. You should keep user clean, use it for authentication. And if you want to profile model, you can do the one to one foreign key. So myself, I still use the custom user model. But I keep it really lean I actually, in addition, use a one to one foreign key for all the rest of it. So I sort of split the difference.
Raymond Traylor 33:06
I'm still on the customer user team. Yeah,
Will Vincent 33:09
I mean, I know Facebook size, none of this really matters. So you know if you have the problem, like that's a great problem to have.
Carlton Gibson 33:20
No one agrees with me. It's Colin, he's just really awkward.
Will Vincent 33:23
It's also like, yeah, it's also like when you learned it, right? Like, you know, I learned, I remember Yeah, learn soft read the docs was like, okay, custom user model, like, let's go. And, you know, but before that was entered, it was the Carlton way. And the truth is
Carlton Gibson 33:38
that when swappable usable, just came in, that's a mistake, I'm not using that.
Will Vincent 33:44
That's a little bit like, just to jump in, I really want to ask as a beginner, what you think about function based views versus class based views. I mean, I suspect you're biased towards what I promote. But I'm curious how you feel about that in Django, coming new new to it,
Raymond Traylor 33:59
it took me a long time to wrap my head around class views. Because I think when you have that Python mentality of, you know, one way to do things, and the function use just worked. Also, what I was building, especially like with the sports betting sort of personal site, I ended up having so much custom there, that I really leaned towards it. However, looking back on it, I really didn't understand object oriented programming that well to begin with, so I wasn't even prepared to use classes correctly. In the first place. What got me around to it was between the two scoops of Django book, which advocates for generic views, then class views, but they have kind of over on the side, some people use functions. views, right? And that's just all they use. But they made it seem like it was kind of the minority. And then, William, what you wrote where you were leaning more towards the class based views, if I remember correctly. So
Will Vincent 35:15
I think so too. I think I agreed. I agreed with them.
Raymond Traylor 35:18
Yeah. And that's where I landed. Now. If you can use generic views, just use it, it makes everything so easy, and so fast. And that's really the beauty of Django. And it just depends on how custom you're doing things. But the order of, you know, start with generic that that doesn't work, drop down a class, if you really, really need custom, then use the function views.
Will Vincent 35:43
Right. And usually, there's a one line way to update the generic custom view, but you have to kind of dig around to figure it out. So do you feel that Carlton? I mean, we've had this discussion before, but that's kind of the trajectory. So I
Carlton Gibson 35:56
think I will use class based view 90% of the time, why, because my view, the view is like a callable, it takes a request and returns a response, right. So that's a function, but in that there's the steps. First of all, I need to authenticate the user, then I need to decode the, you know, the request data, I need to, you know, hook up to the database, then I need to put all that into a template, then I need to return the response. And I'd like to break that up into a nice, clean way. So even if I'm writing fully custom one, I'll write you know, def get, you know, self request, arcs, keyword arcs. And I'll probably put the explicit keyword as I want. Now, I probably don't use arcs very often. And then I'll block out the steps that I want. I think the issue that with the generic views is that they're so hard to navigate, you know, constantly, I've got classy class based views open. It's like, it's always open. And I'm always using that as my reference. And then I can see all the methods lined up, and I can see the attribute I need to override, and then I'm using it. And I think it's a shame that the hierarchy is so complex, because I think it, it really confuses folks. Tom Christie's got a thing called Django, vanilla views, which is like a simpler implementation that I really recommend people go and look and read through the code is only like four or five files. And it's really readable. And it really like, okay, that's a class based view. That's what you know, a class based view is when you haven't got these mix ins, and it's multiple inheritance and all these things that make it so complicated. I mean, Luke plant looky spooky goes by wrote this some really good piece about using function based views. And I've sort of, you know, I need to write my sort of, well, why do I use class based views on the base of that. But one thing he puts there, which is really powerful is that thing with a function based view is that the view pneus of it is on the surface, right? It's a function that takes a request and returns a response, right? That's. And I think, unless you're writing your class based views, where you rewrite out the get method, or the POST method, you kind of like, Where's the view sort of death gets disappeared? Like, it's like, whoo, yeah, but what's it doing? Like, it's very magical. It is magical. And I think what I like about vanilla view stank and Tom Christie's implementation of class based views there is that if you just look at the source code, you can see exactly what it's doing, and how it how the class based view is built. So anyway, that's a long way of saying I use class based views, mostly mostly, but you know, I'm totally happy if other people,
Raymond Traylor 38:36
whatever gets the job done, right. And whatever it makes. Yeah, exactly. Yeah. So after I read all your books, William and went through all the everything and had my you know, you go through all the steps of getting prepared to get your first programming job, your portfolio, your GitHub, your everything, and so I'm ready. And then I find out that I'm in Tampa, Florida, and there's no Django jobs here. And there's hardly any Python jobs like this is a I mean, the South is Java, mostly. Or there's, you know, plenty of JavaScript, but I was way more on the back end. And I just didn't find jobs here. So I was like, Okay, well, I'll just move. You know, there's a ton of your way and Boston in California. It seems like where there's more startups, there's more Python, but there's not many startups here. And it was a totally different world before the pandemic because remote was just really rare. And it wasn't as good of a job. And especially at the beginner, as the beginner like my first programming job. I felt like being in the room with other developers would be really, really important. So I'm just looking looking looking. And there's just nothing here. I went on python.org. Which there's a reason why, you know, we have these sites go to the official sites, the Django project, Python. org, but python.org had, has a job board, and I still subscribe to it on my RSS, but they had a Django position in Tampa for an advertising company. I'm like, what are they there's just, I don't think there's been anything before or since. But when I was on the job market, when I was ready, I emailed the HR director, and just in a couple paragraphs, say, Why I would be perfect for this job, they brought me in for the interview, I hit it out of the park. I was lucky in that the VP that interviewed me, also had an e commerce background. So you know, talking through the, you know, what I made for it. And then the top developer who interviewed me, really appreciated my nerdiness on the type of topics we talk about, on this podcast, right? We could have recorded that interview between me and him, it would have been us to talking about, you know, what we should use for Django how and why. And that got me the job. So I got my first programming job, I was the bottom developer. And that really allowed me to focus just on programming, not having to worry about sales, or entrepreneurship, or customer service, or whatever else, I could just be the nerd that I was probably destined to be, and it took me. Wow, I was. So the funny thing is, I really took that teach yourself programming and 10 years to heart back when I read it, the irony was it took me 10 years to get that first job. So it was right around that time, it might have been like nine years, but it was so close that that's what got me there.
Will Vincent 42:16
It's I think the first job is the hardest, it's, it's a problem in the industry, like the first one to get is the hardest. And then once you have three to five years, you're the most employable because you're still cheap and valuable.
Raymond Traylor 42:32
So the first task they put me on was, as I mentioned, it's an advertising company. So what we're building was a SAS to automate and enhance digital ads. So Facebook and Google ads and layer on top, say temperature or flight prices. One of the clients was our biggest client was Home Depot. And they were selling snowblowers. So anywhere in the United States where it snows or going to snow, we would put out Google ads to go to Home Depot and and buy a snow blower. So that takes a lot of data collection. And then to automate, put the ads out. And then obviously, the more it snows, the more you'd spend on ads and the targeting. So the first test they put me on was they couldn't get the Facebook API to work. And Facebook's API is just notoriously difficult. But I was very well suited for because I spent so much time and eBay doesn't say who's worse eBay. Yeah, eBay is API is worse. And then, even though Amazon's API is good, there's so many restrictions, because so many people want to take all their stuff. So having all the work around, I was ready for it. So they put me on a task that they thought would take two or three months if I or anybody could do a period and not come back. And it's done in two days, like whoa. So I start with, you know, now I'm the Facebook API guy, which, on one hand, it's like, oh, how do I get stuck with this awful API. But on the other hand, it's keeping me employed, and it is my skill set so fine. So then I end up being the Google API guy, and then handling the weather and flight collections and all that stuff. So I'm doing the data, but not as much with the web development. However, that really got me to love and appreciate Django for the back end work. So before I was writing a lot of raw SQL, but there, you know, we were really encouraged or forced to use Django xrm. And so I always used it just for websites or projects, but to use it as a replacement for what you would normally do in just Python and Postgres to do everything through Django, and learning like management commands and for everything that you do. So from that point on any programming I do, I'd say, at this point 90% of the time, it's always in Django, because that's the best way to structure a project. That's up, everything's built in. And if you want to expand it out to a full application, you can but even if you're doing something smaller, specific, even if you're only working with Facebook's API, it's good to do it and a Django project.
Carlton Gibson 45:42
Can I suppose structure?
Will Vincent 45:44
Can I ask? So given what you know, now, if you were going to do something from earlier in your career, so something is as simple as pinging the the eBay API every hour in storing it in Django database? How would you structure that? Would you, you would put the Python scripts within the Django project and have management commands and cron jobs? Or how would you approach that now?
Raymond Traylor 46:06
how I do it now is I took your Django x cookie cutter. Oh, yeah, yeah. And mine is called our Django
Will Vincent 46:16
here. Yeah, it's open source. It's meant to be meant to be open source
Raymond Traylor 46:20
mind for for a while, but I ended up changing it. So often, it just wasn't stable. I'm like any prs are a little like, yeah, just just use yours, not mine. But I would start with that, pull it down. And I would the Python scripts, you would just have an a folder. So if I, if I just called it like a collector, like I'm collecting prices and products from eBay, I just put my script there, I would use, you know, the RM to store and then for scheduling. I actually am not a fan to this day of salary. I mean, you have to use it on bigger projects. But I'm a huge fan of, I think it's just called schedule. So for schedule, all you do is it uses like human language. So you make a function, say, you know, you could call it get prices from eBay. And you call that function, but you just put the time. So you could say, once an hour, or you know, every Tuesday at this time, which obviously cron does the same thing. But because it's just a Python library, there's not more you have to do. So for salary, you'd need to use multiple, you need to use multiple files you need to look at, there's more setup, there's more building there. But for schedule. All you have to do is just run it. And I use that anytime that I can. But yeah, starting from the beginning, I absolutely would use it and Django
Carlton Gibson 48:04
suepo. For that, do you have like a demon agent that is running sticking over all the time. So
Raymond Traylor 48:12
yeah, for that, I use t mux. So I deploy on, I really like and this is for personal projects, obviously, for for work, it's all AWS. But personally, I like the VPS. I like linode or I use digitalocean just a regular boon to box, I deploy I have a nice deployment script for Django, and I use t mux, which is similar to most people you screen, but with, with T mux. It just stays there. And I'll run I just call it tasks dot p y is what's in schedule. And it just sits there when it's time to run it runs.
Carlton Gibson 48:59
Okay, super, super. That's a good, it's a good trick that I think to use something like t mux, or screen to keep your session open. So you can like, you know, it's the problem is you you, you log in, you run your script, but then you log out the script shuts down, whereas these things keep it going. And, you know, that's all you need. Right? So yeah, to get good, fantastic.
Raymond Traylor 49:21
I'm working this job developer can only focus on development, you know, really getting good at, you know, just the Django and Python in the professional way, using the professional tools. You know, finally using Docker, I mean, I really was reluctant to use it. I didn't like it. But we had someone on the team who was using Windows and you know, if you have some setting up a dev environment, Docker just makes it easier. And that was one thing in the Django for professionals. It's like oh, I have to use Docker but everything works just fine on the back end. Yeah.
Carlton Gibson 50:00
I have a curse, it works screw,
Will Vincent 50:03
I keep thinking I'm going to take Docker out of that book because it is a bazooka. But yeah, I really do think Yeah, in a team environment. And now you can just put your whole container in the cloud for deployment, which is a whole separate thing, which I think is also quite a bit easier.
Raymond Traylor 50:20
Yeah. So I'm in this wonderful place of just being a developer, and making some pretty good money, and I could become more of an expert. But the team basically just disintegrated the project wasn't doing well, you know, personal issues, it was just a mess. So I was six months in six months is the minimum time you you want for the job. So I, I go back on the market. And, again, without having the jobs here locally, I'm willing to move, but I ended up through a connection with my dad, able to work at JP Morgan, and they are doing Python on the on the finance side. The problem is, I didn't want to work for a big company doing kind of the boring thing, I wanted this smaller company to be closer to the product. So but it looked like this project wasn't gonna work out. So I put my two weeks in, and like, Okay, I have another offer, they're gonna pay more, if you match it, then I'll stay. But if not, I've got to go. There, it took them a while to kind of get back to me. And there was kind of some infighting between it, but I end up in the owners office, and he's like, You're not going anywhere? You know, and what would you do to fix this project? So I told him, the short version is we would standardize what we're using. I feel like the developers there we're doing what I call resume driven development, where you just use every library that you can, like, Hey, we're even introducing like Kubernetes. Like, we have a basic Django app, what are we? What are we doing right? But to simplify the stack, and, you know, fix behavioral things, and just have the process, use JIRA the correct way, tests weren't being written. So I, I told him what I would do. And he said, Okay, well, you're running it now. You're the manager. So I went from the bottom of the totem pole to the top of the totem pole. And of course, the current developers didn't like that at all. So drama ensued, it was not good at all. Culturally. I mean, some people were really, really angry. Some people were just confused. Like, how can? How can you go from here to there? And then, of course, from an experience standpoint, like you're not the best developer? How could you be a manager. And in the corporate world, entrepreneurship is kind of tricky. So just because you manage people for your own business doesn't mean you manage people like on your resume. So I had experience with it, but not directly in the traditional route. So everything I've done, it's been kind of that non traditional route. So the people who were there longer than me, were most upset. But the people who started after me were respected me more is probably the way to do it. To put it. And we had a whole lot of turnover, I had to kind of put my foot down on especially the stack that we're using, using Django correctly simplify things. I wanted code written in a way that it's easy for you to Google or just check into the documents. If you're mixing in too many libraries, then it's hard for you to know if we don't have any tests and in our code, then how can we refactor? So it was a lot of standard things. I can I
Will Vincent 54:12
ask about the background of the more senior developers I mean, just to try to because I think this dynamic happens quite often. But you know, the things you're mentioning are things I would want to do for any project I worked on, like, what what were they kind of used to do you think
Raymond Traylor 54:28
so there's like a lot of companies there was the main developer who did everything for the company. And that person, you could tell when they started programming, and when they started using Django, and like not, I mean, not even using f strings is as an example of, this is how we do things and it's going to be that way. The difficulty was That he did programming for the whole company, whereas we were just branched off to supposed to be this new and innovative product. So the people there had some experience, but not that senior or principal level developer that would take into account the trade offs and why we should do this and the type of technical leadership we didn't have. So I had it from a business, I want this project to succeed standpoint, but not necessarily from a, you know, I've been programming for 1020 years, and I've been through all the battles. So these are the trade offs we should do. What happened was, we were using view eyes. By that point, it looked like react was the winner, it was going to be easier to hire react developers then view. So I switched us over to react, it was an easy decision, because you don't want to rewrite things, but it was. So spaghetti code and not using the components the correct way that it was just easy to throw it away. So did a more traditional stack, which was Django Django rest framework, using post grids on AWS inside Docker with react. Now personally, what I would have liked to push for is Django, Django templates. No Docker, no AWS, if we could get away with it. Hiroko, right. So we can focus on on the application. And it still is kind of a pet peeve of mine that companies don't use Django templates, I get the trade offs. But refreshing the page isn't that big of a deal to me, and it works really well. Everything's all together, I really wish that more companies would just use it because the level of complexity that you add, if if it's justified and needed for the application, then absolutely, React is an amazing tool. But I find that a lot of websites are crap, basically. And Django templates, and Django forms. And using the ORM, and everything there, I think I'm aligned with the with the Ruby on Rails, guys. And that to where sprinkling some JavaScript where you need, but professionally, I haven't been able to kind of get that through. So where in the world to where the trade off is this step. And maybe it's because I'm not a great JavaScript or react, developer, I'm way better on the back end and Python. So maybe if I spent more time, but I think my brain works for Python, like what it what it means the community, how we do things here, I would like to build the whole application here. But you know, you have a job.
Will Vincent 58:06
Have you tried any, maybe just in your own projects, HTML x, which, which sort of gives you Ajax behavior without having to do JavaScript?
Raymond Traylor 58:16
Not enough? I mean,
Will Vincent 58:19
same with me, Carlton keeps telling me how wonderful it is. And we had the creator on and I believe that I'm just waiting to switch a few things that are interactive on my sites over to it.
Raymond Traylor 58:31
That's what I want badly. So I guess my next little personal play around this weekend's coming up? I should, I should definitely do that.
Carlton Gibson 58:41
I mean, one, just one sort of thing from a work in a work environment, you can find like one small area where it's like, you know, we just need a search widget or something, you know, you and you can simply prototype it, you can say I've just prototype this, and I've just used HTML and the Django template. And obviously, the front end devs will come along when we find the time for it, and they'll replace it with a nice react component, but because it works perfectly well in HTML, or you know, with a Django template that that time never arrives. Yeah. And you just prototyped it, I guess. It's a way of, you know, a low risk thing that demonstrates the value of that tech, it's,
Raymond Traylor 59:19
yep. So what happened next is, I mean, I learned more about business and management and software during that time, it was really rough and tough to do that turn around. But like a like a sports analogy, if you're taking over a bad team, you get turned them around, but that's usually not the coach to take them to the championship. So I saw that, okay, we've got this turned around, it's on the right track. It's time for me to move on from this project. So that was decision Time again, it seems like my life is full of those decision times Am I going to go back into being a straight developer rather than manager because the problem with that job also is I was doing so much programming and managing, which anybody who's done both, you end up being bad at both. In my opinion, you can't be a great manager and a great developer, maybe somebody is that talented, but I don't think that person's me.
Will Vincent 1:00:25
I don't think the decision time, I think people I know they, they go through a couple of years of back and forth.
Raymond Traylor 1:00:30
So I wanted to it's do I want to be a programmer or a manager, I've done both, I was disappointed that I was on this path to becoming a much better programmer, but then having to take over the team. It limited how good of a programmer I would be. So I could still program on and I could still do my side projects. But if I just work purely as a developer, like I wanted, then where would I be, you know, after a couple years. So I decided on doing management, I'm, I'm good at it, I think, and really watching, finally being able to hire the senior level developers and junior and build them up. And also, I feel really lucky and fortunate. And that, you know, I found this career out of nowhere, just starting with learn Python the hard way, thanks to the internet, I just put the time in, and to be able to pay it forward. So I would think about William Vincent all the time, because, you know, he really helped me to learn Django, and it allowed me to get my first job. So I like management, because I'm able to pay it forward. So I ended up getting a job your way in Boston. Now we're doing remote. This company is called crayon, they do competitive intelligence, which is a new industry, the fastest way to describe it is so say, a salesperson, if you're doing sales, you need to know who your competitor is. And you need to know who you're selling to who their competitors. So we make something called battle cards. They're basically cheat sheets. So you can know about the companies that you're going up against. Also, like an executive, and
Will Vincent 1:02:26
I just can't say. So the company I met with a number of years ago that had the stack of Mac minis, it was CRAN. Really? I'm pretty sure I'm pretty sure yeah, we can talk offline about that. But yeah, I'm pretty sure.
Raymond Traylor 1:02:42
The Boston startup scene is very tight knit, I mean, toast I'm sure you're aware of they just IP owed and so a bunch of people ate crayon, worked with people there. I think my boss actually hired their CTO, and he's Yeah,
Will Vincent 1:03:02
they're probably ready for a new challenge. Yeah, I think that I'm sorry, I won't have you mentioned cram. But when I saw this was a number of years back. They were doing like for marketing, they were like show when a competitor's homepage had changed. And that quickly morphed into the more you know, deep defense, what's your competitor doing, as opposed to like, inspiration for design? And which makes sense?
Raymond Traylor 1:03:26
Exactly. That other use case is for executives. So if your competitor has job postings for machine learning, you know that that's what they're gonna get into. And like that screenshot sort of thing, if an executive is off their homepage, then you know that someone got fired or left or there's gonna be a different direction. So a bunch of data there to help people, you know, help companies and individuals know what their competitors are up to. So that's the company I work for now. What is interesting is, they do exactly what I was trying to do at the previous company, this stack is the exact same. All the things that I had been trying to implement that you know, someone successful on some wasn't they do to be around like you asked the question earlier about, you know, the type of developers that are more senior to be around so many smart, talented people. And I mean, it's a great culture, a great environment. I'm not just trying to sell it just because they employ me, but I really like it and enjoy it. And the thing is, is we're trying to get more developers, right, like everybody's trying to get more developers, and they're really, really hard to hire. I'm probably fairly uniquely good at recruiting because You know, having the empathy there. But what we have to do is that the pool is only so big, we have to expand the pool there. I think there's a lot more people like me with the non traditional background, who they know how to code. They know how to get to a certain level, but they need some extra knowledge, some extra tutorials, some extra examples of how to get in the industry, because there's certainly way more software that needs to be made, then we could find people to do it. And it seems like that's going to be the case for a long, long time.
Will Vincent 1:05:32
Yes, well, what? We'll put a listing to the company in the show notes. What like, is it Django jobs is a data scraping jobs, it's a mix of the ones like what are the what in particular, does a growing company need?
Raymond Traylor 1:05:46
Yeah, it's Django and react are the bigger ones. Yeah, AWS on that side, as well. And what I really like about Django in particular, is the track record of getting Java developers or PHP developers, or even those who focused on node on the back end. I mean, c++, it's such an easy and I know, easy, it's kind of a loaded word, but read, it's relatively, it's an easy transition to go from Java to Python. So if you have that web development base, if you have that programming base, then it's easy to transition here. And we have a lot of people and resources to help to make that transition.
Will Vincent 1:06:36
Wow, that's,
Carlton Gibson 1:06:38
I think the point you make applies to me, it's not just your company, right? It's the whole economy. There's in every, you know, every industry that's there's so much that can be aided by software, the people to write it just not necessarily there. I think it's
Raymond Traylor 1:06:57
in what I think what prompted this podcast was, I find I found myself buying Django for beginners, Django API and Django for professionals for a new hire that actually started yesterday. So waiting for her to join you know, she doesn't have a Django background but one of those transitions and so I recommend those books and I read by myself and sometimes gets expensed sometimes out of my pocket but I want to you know, pay for the product and I appreciate that I hadn't emailed will in like a long time of what the progress was and I'm like well hey, I'm buying this book again for for someone on my team and this is what happened and you know he graciously in invited me to the show and like yes, absolutely people need to hear that if you just put in the time and effort you know, and I think that path even nothing's changed right like learn Python the hard way still there the How to be a hacker still there Teach Yourself programming and 10 years is there I think that Django for beginners like I looked at it again, and especially Django for professionals, like two scoops of Django has a new version, the docs on python.org and you know, the Django official docs are there and with just the effort and banging your head on the keyboard and then reaching out and emailing somebody who's there I think the path gets easier and easier and easier just with the effort and kind of knowing that it's possible
Carlton Gibson 1:08:43
Yeah, I mean, I guess the difficult bit is when I'm not when one is trying to learn that all of that when you're you know you've got another job you've got you know family life you've got all that and then you're trying to pick up programming to make that switch and then you haven't got the experience of getting that first job is tricky. I mean, your story I think is is a nice motivator for that someone in that circumstance
Will Vincent 1:09:07
yeah that's it gave me a you know sort of time you're like whoa time has passed when I realized that you and I had been emailing for years and and where you're at and yeah, we've talked on this podcast I find myself more and more realizing the limitations of curriculum, it is important to have the resources but it's everything else that I think is the ultimate limiter of more people making the switch. But in any event, we're weak I feel like we could keep going on and on. Do you have we'll have links in the show notes as I guess if anyone wants to reach out your your hiring or your team is hiring at CRAN so we can have a link for that
Raymond Traylor 1:09:47
crayon.co slash careers
Will Vincent 1:09:51
nice. Great Wow, he's you know, yeah, it must have been because they were Django back then that that's how I connected with them and and went into their their office.
Raymond Traylor 1:10:00
So, we still are, I mean, it's an awesome Django shop. I mean, if you love Django as much as we do, I mean it's a pleasure to work in it every day. And just to see just to see things done right is beautiful. So I don't really have anything to promote myself. I'm not big online, not big on social media. I mean, I have a Twitter that I never use or check its app or a trailer. I have a website that I barely update but Rayman trailer calm.
Will Vincent 1:10:31
Yeah, either. You need to have a magnificent website or horrific website to prove that you're a pro. Nothing in between. Absolutely. Well, thank you so much for coming on. It's so nice to meet you. You know, I basically never get to actually meet people I you know, with, and it's really inspiring to hear your story. It's inspiring to me and my own line of work to hear that it's, you know, help someone like you make these changes that really mean it really means a lot to me.
Raymond Traylor 1:10:59
Yeah, thank you, both of you. I mean, don't feel like you should, you should get a commission of how many people salary every month, you should get checks. That's how it should work. Because you know, all your gracious work that you did for free really paid off for other people. So I hope you and others can pay for it. So to all the listeners keep going, that's all you have to do. It might take 10 years, but you can do it for sure.
Will Vincent 1:11:26
Yeah. And I would say both of us get get a lot back from the things that we donate. So that's a big motivator for it. So we are at Django chat comm chat Django on Twitter. Thanks, everyone for listening. We'll see you next time. Bye bye.
Carlton Gibson 1:11:39
Join us next time. Bye bye, right