This is the full transcript of the Laravel News podcast episode #40 - “Laracon Sessions with Laura Elizabeth”
Jacob Bennett: Hey everyone, welcome back to the [00:00:30] Laravel News Podcast. This is episode 40. We have with us Laura Elizabeth, who is going to be a speaker at Laracon this year. She's joining us from, is it the U.K.?
Laura Elizabeth: I'm actually in the U.S. right now.
Jacob Bennett: You are?
Laura Elizabeth: Originally the U.K., yeah.
Jacob Bennett: Okay, very cool. Where you at in the U.S. right now? Just visiting?
Laura Elizabeth: Yeah, I'm in Virginia. I was just speaking at RevolutionConf, which is in Virginia Beach last week.
Jacob Bennett: Are you a serial conference speaker? Do you do this often?
Laura Elizabeth: Kind of. I've done a lot in the last year. It was kind of a little bit [00:01:00] by accident. I never saw myself as a conference speaker. It was never something I ever thought I would do. A few opportunities arose and then once you start doing a few, more seem to come along, and they're the best fun. I can't say no to them basically.
Jacob Bennett: That's cool. Here I am, I've always wanted to do conference speaking, and it's like I've never been able to work up the guts and have a talk, anything. Nothing. The people who are like, "Nah, I don't really see myself as a conference speaker," they have engagements lined up until next year, and the rest of us [00:01:30] are like, "I just need one. I just want one." Congratulations.
Laura Elizabeth: It's hard when you're submitting call for papers and stuff like that. I've only done that a couple of times. It's always harder that way than if you get asked just outright because it's a bit more competitive I guess.
Jacob Bennett: Sure. That makes sense. For people in the Laravel community who may not be familiar with you, you're a little bit of a newcomer, a new face to the Laravel community, so I'd love for people who don't know you to just get an introduction, who [00:02:00] you are, where you're from and what you do.
Laura Elizabeth: I'm Laura Elizabeth. I'm a designer, kind of turned product maker now. Traditionally I do design work for clients, and I got into the Laravel community because I did the redesign. It's not live yet, but for HelpSpot, which is in [Landsman's Sass 00:02:20]. I got to know him a little bit. I was working on that and I met him and someone else from I think [00:02:30] it might have been Taylor, and he did my, I have a small crash course on design for developers, and I think he took that and said, "Hey, would you like to come and do something like this at Laravel Conference," and it kind of went from there. I also designed the landing page for the Laracon Online one as well.
I've sort of come into the community from more of a design perspective, but it's been really good so far. [00:03:00] Everyone's been so friendly. Like I said, it's a pretty big community actually. I was surprised.
Jacob Bennett: It really is. It's kind of surprising. It's a good niche to get into. I feel like designers who find their way into the Laravel community end up getting flooded with a lot of work. I feel like that's been the case with a couple different people. I know Jack McDade, who we had on the show a couple weeks ago, his was the same sort of situation. I feel like he designed one thing and then it was like, a couple people asked him, "Hey, could you design a couple other things?" Laravel community [00:03:30] obviously is made up of a lot of developers. People who have the skill of design are a little bit more rare, so we find them and we just flood them with requests to do work for us.
Laura Elizabeth: I found the same. Like I said, I was at MicroConf a couple of months ago, and that's more of a product conference. I wasn't speaking but someone mentioned me on stage and said I helped out with some of their slides or something. Afterwards, I just got inundated with people like, "You're a designer? [00:04:00] I need a designer." It was pretty cool because I guess in that space there aren't really many designers. I think a lot of them are developers as well. It's good fun.
Jacob Bennett: That's cool.
Michael Dyrynda: Yeah. Speaking on design, you are primarily a designer? Was that your calling from an early age? Did you know that that's what you wanted to do? Is this something you fell in as you went in?
Laura Elizabeth: Kind of. I was always a little bit creative when I was younger, [00:04:30] when I was a child and stuff, but I was never really that good at it. I wasn't like a prodigy. I wasn't some amazing artist. I liked drawing and I liked music and stuff like that. I was going through school and I got to that age where you have to figure out what you want to do for the rest of your life. I wasn't sure. I always knew I liked creative stuff, but I was like, "There's no way I can make a living out of something creative. I'm not an artist. I don't want to be an artist." I thought, "You know what, I'm going to do computer programming and I'm just going to get a really good job [00:05:00] that's got a good wage and I'm going to do my creative stuff in my spare time." I did that.
I did a year of programming course and I kept getting told off because I was making everything look too pretty. I was like, "Ugh." I was getting really frustrated because I was really into how things looked and how they worked and I just wasn't really feeling just the technical course. I was like, "I need to find something that's a balance," because I loved the problem [00:05:30] solving nature of programming and I loved making things and I loved that certain things had a correct answer. That was really nice. With design, it's a little bit more ambiguous, but I really missed that creative side, so I went and I did a course in media which had things like film, animation, graphic design and I did my first graphic design lesson on my first day and I went home to my mom that day and I was like, "I want to be a graphic designer. This is 100% what I want to do."
From that day [00:06:00] on, I then studied design through college and university, worked at an agency for a year and then went freelance must have been maybe five or six years ago now, and been doing it ever since. Long winded story, but that's basically how I came to be a designer.
Jacob Bennett: Very cool.
Michael Dyrynda: It's always cool when you know what you want to do with the rest of your life, when you find that thing and it just clicks and you're like, "This is what is going to finance my life and make me happy." It's good [00:06:30] you found that.
Laura Elizabeth: Yeah, and it's a big worry when you're young as well. You get to this stage and you're like, "I got to make some decisions now, and I really don't feel prepared. How do I know what I want to do for the rest of my life?" I feel very, very fortunate that I got led down that path and I was happy to change things when it wasn't working out for me to find something I really liked. It really is true, you spend most of your life working. You got to enjoy it.
Jacob Bennett: For sure.
Michael Dyrynda: Especially when you've got friends [00:07:00] who don't know exactly what it is they want to do, and they're still trying to figure it out. You got to be careful you don't fall into this trap where you're going, "Am I really wanting to do this? All of my friends are off traveling or whatever else." It's great that you can stick to it.
Laura Elizabeth: Exactly. I definitely feel quite fortunate that I'm in that position.
Jacob Bennett: I remember myself going from high school to college. It was a big stressful point in my life because I was at that same juncture. [00:07:30] I was like, "What do I want to do?" It felt like it was the decision that was going to be forever. It was like what I decide to do in college is what it is forever. Just to maybe alleviate some of the pressure for those who are at that same point, I actually studied secondary math education in college and I was a math teacher for four years. I really liked it. It was great. I loved the relationships with the students and getting to have those ah-ha moments where you're teaching something and somebody finally [00:08:00] gets it and it clicks, and I really enjoyed that.
I kind of found my way into software development, and I'm doing that full time now. Definitely has always been a passion of mine and something I've done on the side, but I was with you, never really figured I could make a career out of that. It was something like, "Oh I do this on the side, but it's not really something I could do as a career." I did the same thing. I taught high school math for four years. Yeah, eventually I just fell into it and made it [00:08:30] work, but you are not condemned to spend the rest of your life doing the thing that you studied in college. If there's something else that you want to do folks, go out there and give it a shot. There's plenty of opportunities and a lot of life to live after college for sure or university or whatever it's called everywhere else.
If you don't even go to university or college, make it work. Find something you like to do and do it.
Laura Elizabeth: Exactly. It's never too late to completely change what you do with your life as well. Back then [00:09:00] you think, "Oh my god, I have to make this decision right now and this is it forever," but you can change it any time. I would say I have a few friends in the situation where they still don't know quite what they want to do, and they worry that they're past it now. They're like, "If I want to be a developer, I should have been doing this since I was 12," because you hear about these people doing it since they're 12. You think, well you can absolutely still learn that now, even if you're 30, 40, 50, whatever. There's always room to [00:09:30] make a change.
I would just say just go for something that you're interested and then if it doesn't work out, switch and go for something else. Just keep doing that until you find something you really like.
Jacob Bennett: Good advice.
Michael Dyrynda: You've had your brief introduction to the Laravel community and now suddenly you'll be speaking at your first Laravel themed conference. Did you want to talk a little bit how were you approached by Taylor on the back of the work you did or did [00:10:00] you just reach out for the call for papers for the Laracon?
Laura Elizabeth: Taylor reached out to me. I have a course on teaching developers how to design. It's just a free email course, and I think he went through it and he got in touch saying, "Hey, this would be really good for the Laravel audience. Do you want to come and do a talk?" I'm doing one in the U.S., one in New York and then in Amsterdam as well, so it's two, which is going to be really, really fun in two completely different cities. Yeah, that's [00:10:30] pretty much it came about. He contacted me and then I got into, I was looking into Laravel and it was Laravel thing and I got into this black hole of learning about it.
Jacob Bennett: Cool. It is a deep community, right? There's so much stuff to learn and there's so many people in it. Lots of projects, lots of people, lots of Twitter handles that you can have a huge follow list of people that are just literally strictly Laravel. It's amazing to me every time I get on Twitter how many people [00:11:00] I follow that all they talk about all day on Twitter. Any tweet that they put out is going to be about Laravel. It's a large sub-community of the PHP world, and it's pretty cool.
Laura Elizabeth: Yeah. My own following on Twitter increased quite a lot that it got announced that I was speaking at the Laravel conference. There's definitely an active community on Twitter as well.
Jacob Bennett: For sure. One of the other things and probably one of the last things we'll ask you here, and [00:11:30] this is just a fun thing that we're doing, we have a playlist that we're putting together for all the people who are traveling to Laracon. Michael comes from Australia and he has a long journey, so this playlist will likely be on loop for him. We have people from all over the world who come to Laracon each year, and so we figured that we would put together a little playlist for them with music recommendations from the speakers who are going to be there. We will ask you, you don't have to give us live on air here your three songs, but we're just compiling [00:12:00] a list. We'll have you send those three songs to Michael and let people guess who contributed what songs. What sort of music are you into? Are you a Justin Bieber fan? Are you Miley Cyrus? What's your type of music?
Laura Elizabeth: I have I guess an eclectic taste in music. I'm trying to think what songs I would put on that because I'd want to put on songs that I like, but there's a lot of songs that I like that I don't know if other [00:12:30] people would like. They're a little bit odd.
Jacob Bennett: That's okay. We've got some odd ones on them right now. Sometimes the more odd the more fun it is.
Laura Elizabeth: Yeah. There's definitely some I can think of. In terms of coming up with an actual genre that I like, I don't know. There's all sorts. I like a lot of older music, stuff that my grandparents would listen to. I'm quite into the Beatles at the minute, just because I watched a documentary on them not long ago and then I suddenly was like, "Oh the Beatles are so cool." [00:13:00] Basically stuff like that. I'll put some on there. I'll try to keep it not too annoying because some of my songs I think some people would find really annoying. I like musicals and stuff like that as well. It's all over.
Michael Dyrynda: The best part about this playlist is that I'm not telling anyone who owns, which songs so you can put whatever you want on there.
Jacob Bennett: We'll blame it on Taylor.
Michael Dyrynda: People would only ever guess.
Jacob Bennett: We'll blame it on Taylor.
Michael Dyrynda: It's all Taylor.
Laura Elizabeth: Okay, I'll put what my top favorite songs are at the minute, and just don't tell anyone that came from me.
Michael Dyrynda: Excellent.
Jacob Bennett: [00:13:30] Perfect. Before we let you go here, I wanted to give you a chance real quickly to plug some of these projects. I'm looking at your website here. You've got a couple projects that I don't know if you'd be able to mention from people who are interested in learning more. Then just a couple of quick ways, what's the best ways to get in touch with you or what's your handle on Twitter, those sorts of things?
Laura Elizabeth: I'm actually getting more and more into products. It's almost my full time thing now. I released a product late last year called Client Portal, and it's [00:14:00] for freelancers and agencies who want to give their clients an area on their website so they can log in and see the status of their project or the deliverables. It's like a leaner version of base camp or something. Base came is just really complex for most freelancers. It's just like a really streamlined version of that. I also have Design Academy, which I mentioned before, which is more along the lines of what [00:14:30] my talk's going to be about. That's teaching developers how to make their designs not look really, really bad.
The goal with that is not to turn developers into designers; it's just to equip them with just enough design knowledge that they can maybe do one of their own side projects and not have to hire a designer or do one of their own side projects and have it actually look semi professional and have it look different so maybe they can start selling it or something, and then [00:15:00] later on when they get the revenue behind them, they can then hire a designer if they want to. They're kind of my two main things that I've got going on at the minute.
Jacob Bennett: Very cool. I think I'm going to sign up for that Design Academy.
Laura Elizabeth: Nice.
Jacob Bennett: I could use some of that advice. That'd be good.
Michael Dyrynda: There's a bit of that going on in the community as well, so it's great timing to have yourself come and give a talk about it. Just before we do let you go, on the back of what you had said about that, we did have a listener question that was asking, [00:15:30] and it may be covered in your talk but just at a high level I suppose, how do you shift the needle for backend developers to think in more of a design way?
Laura Elizabeth: It's always going to be quite a difficult one. A lot of people think backend developers thing really differently to designers, and they see design as some kind of fluffy thing, so that it's not really got hard and concrete answers to it. I would say I don't know. I'm not convinced [00:16:00] that you can really be amazing at both, so what I would say is if you're a backend developer and you want to get into design, I would just look at design. If you're creating a design, just create something, absolutely anything, and it's probably going to look horrendous the first time. Even when designers design, speaking for myself, it looks horrendous the first time. I would just try to treat it just like you're debugging something. Just keep looking over and over it, and try to [00:16:30] identify where the problems are.
Jacob Bennett: Wow. I am already excited about that talk. This is inspiration, [00:17:30] right? It's like, I almost wish, and I know there are some of these things, you talked about developers like concrete answers which is why so often we like to be told this is the correct way or this is the "best practice." We like to have a prescribed manner in which you solve this type of problem. I feel like the reason why we're so limited in the design thing is because like you said, we treated it as this kind of fluffy ethereal, there is no right way, it's just like these people are so creative they [00:18:00] just come up with a way. There are some concrete hard and fast rules with design, right? There are certain things that they are correct answers to two types of questions in design.
I think too, if we can think about some of those things, maybe that would help me. I don't know. I like the idea too of solving, looking at it like your debugging code. That's really helpful to me. That's a really good parallel because a lot of times in my mind it's like I should just be able to design something and it just pops out and there it is. It's done. [00:18:30] It's not quite that easy. Just like with code, I refactor it like five times before I'm finally happy with the design that I've come up with. It's the same with designer design. That's good to hear.
Laura Elizabeth: Exactly. I watch developers, and I have the same thoughts with what they do. If something goes wrong, I'm not too good at coding. I have a tiny bit of experience in it, but if something goes wrong I just freeze up. I'm like, "This is wrong. I'm a terrible [00:19:00] developer. I can't do it. I'm just not born with being able to do development right the first time." I watch developers and something goes wrong and they don't freak out. They're just like, "Okay, what needs to be fixed here?" They'll just slowly go back and just figure out the problem, don't get too worried about it. What's been interesting for me is that we both look at each other's crafts in the exact same way, and we both actually solve it in the same way. It feels different, I don't know.
It feels like design is [00:19:30] fluffy. To me, development feels like I'm just not hardwired to do development. I know that I can, I just haven't learned about, like you say, the core basics yet. It's exactly the same with design.
Michael Dyrynda: I think the other thing on that and something that was raised to me on Twitter is that the developers who understand design make it easy to communicate with the designers and it goes the same in the opposite direction [00:20:00] as well, which allows everyone to contribute to making design a more collaborative process. That's good from that perspective as well.
Laura Elizabeth: I agree. There's some disconnect. We've got the whole should designers coach, should developers design thing going on. I think ultimately people are typically going to be really good at one thing, and the reason they're good at it is because they're more interested in it. It's not because they're born differently or anything like that. They're just really [00:20:30] interested in this one thing. You can learn enough about someone else's craft in order to be able to work with them better. A developer could learn enough about design that they don't want to be a designer, but they could work with designers. I think the best teams really happen when designers and developers work really closely together and appreciate each other's craft, and they're both really good at what they do but they respect each other's craft enough to learn just a little bit about each and then they can work together and figure stuff out.
Jacob Bennett: Very cool.
Michael Dyrynda: [00:21:00] Yeah, I like it. I'm really, really excited now after this interview to hear your talk about Laracon.
Jacob Bennett: I am too.
Michael Dyrynda: I am definitely one of those developers who, as you say, can see a good design but doesn't necessarily get how to make it.
Laura Elizabeth: I hope it does it justice.
Michael Dyrynda: I'm excited.
Laura Elizabeth: We'll see if it lives up to expectations.
Jacob Bennett: Sounds good. Thanks so much for coming on Laura, and look forward to seeing you and hanging out in New York at Laracon this year.
Laura Elizabeth: Yeah, can't wait. Thank you so much.
Michael Dyrynda: [00:21:30] Thanks. Cheers.
Jacob Bennett: Okay, great. We have a few other things we wanted to talk about this morning. It's actually a really good week for Laravel News. We've got, let's see, one, two, three releases, dot releases, since the last time we recorded. We have two new community sites that are extremely helpful and very well done by two large figures in the community. Then we have some really cool packages and tutorials that were released on Laravel News in the last couple [00:22:00] weeks. Let's jump right in. I think we have about 10 minutes left here on this one. We're going to try and fit it all in. Let's go into the Laravel dot releases and start with 5.4.25. Let's go in order here and talk about a couple of the features that were added here.
5.4.25, we have the factory builder, which is now Macroable. Michael, you have used macros more than I have, and there's plenty of good articles out there. [00:22:30] In fact, I believe that this was talked about a little bit on that 20% Time podcast.
Michael Dyrynda: Yeah, I think so.
Jacob Bennett: Can you give us any insights into where we might use this or should we just have one of those guys on? Let me see if one of them's available. Here's what we're going to do. I'm going to try and get in touch with one of these two guys and see if we can have one of them on to talk about this macroable factory builder, but in the case that we can't, I'm not going to pretend like I know why it's amazing. [00:23:00] I know it's helpful, but we'll keep moving. We got enough stuff to cover anyway. The other thing in 5.4.25 that was released is a plain text alternative view for marked down mailables. You can send different pay loads in your mail messages. If you've ever had an email where it says, "If you can't display this email in your browser, click here for the HTML version," that may be because your [00:23:30] mail client is disabling some of the HTML features that may have been sent through with the email.
A lot of times it's very helpful to have a text alternative view that people can select which one they want to look at. Do they want to look at the HTML view or do they want to look at the text view? Now in 5.4.25 you can pass, in addition to a mark down mailable, you can pass an alternative text only view, which is helpful and nice for the reasons I just listed. 5.4.26 is next. [00:24:00] Michael, will you talk to us about that a little bit?
Michael Dyrynda: Yeah. One of the bits that has gone into 5.4.26 is adding the ability to use the null safe operator in your query builder operations. This means that you can use I guess it's called the spaceship operator in PHP, but what this allows you to do is to do a comparison like equals or less than or greater than or whatever using this null safe operator. What that means is that it will actually account for [00:24:30] null as a value in your database as opposed to doing a comparison that might give you unexpected results.
Jacob Bennett: Normally, I'm just trying to think of a practical example of where I would. I use null a lot in my databases where it makes it really easy to do is null checks instead of having to ... because that's like a built in check, is null, where is null instead of having to check to see, okay, let's trim this. Is it an empty string? Is there some weird little [00:25:00] spaces that made it in there or something? It's easier for me to just compare null. Does this help me with that at all?
Michael Dyrynda: Yeah, the null safe operator works essentially like the equal operator, but will return a one rather than null if both of the comparisons are null and it's zero instead of null if one of them is null. Equals would do some less than expected things if you were just using an equals comparison.
Jacob Bennett: It seems like it's a [00:25:30] comparison operator that in my mind would normally return a bullion but it includes null instead of just one and zero, one being true, zero being false, it also includes null, right?
Michael Dyrynda: Yeah, it's a bit smarter about using the null or making comparisons against a value in your database that is null. It's like null plus one, it'll return zero instead of null because that way it gives you a better indication of what the result of that operation [00:26:00] is rather than just divided by zero kind of thing.
Jacob Bennett: I don't think I understand it anyway. I probably need to do a little bit more research on this because this is a PHP7 thing, right?
Michael Dyrynda: No, this is [crosstalk 00:26:12].
Jacob Bennett: Okay. The one that's being pushed into the framework here is adding this null safety operator entity into the query builder.
Michael Dyrynda: Yeah.
Jacob Bennett: Then we have 5.4.27. It was really only one notable feature there. [00:26:30] Do you want to talk about that a little bit?
Michael Dyrynda: Yeah. This was adding a diff_assoc method onto the collection class. Diff_assoc basically works in a similar way to the diff method that already exists on the collection except the comparison will respect both the keys and the values. With the diff we'll do a comparison on the values only. Diff_assoc will take into account the keys as well as the values.
Jacob Bennett: I've run into a couple times, normally what I'll do is I'll just fall back to some of the [00:27:00] PHP native functions if I need to do that on my collection. I'll just on the end of it tag out a two array method on the very end and then I'll just fall back to using a native array method in the PHP language. It's helpful to have it in the collection class.
Michael Dyrynda: Yeah, it means you can chain it together of course.
Jacob Bennett: Right, exactly.
Michael Dyrynda: It saves you from having to macro ready in on a project by project basis as well.
Jacob Bennett: Yes. I think it's been talked about a little bit in the community already, [00:27:30] but is something we wanted to make sure we noted on here is that in Laravel 5.5 there is this new feature called Laravel Package Auto Discovery. If you've been using Laravel for any amount of time, what you know is that there are plenty of packages out there available for you to consume in the Laravel framework and many of those packages come with service providers that will bind the service that you're trying to pull into your project. It'll bind those into the container or do some setup steps or something like that in the service provider. [00:28:00] A lot of them will also ship with a façade to allow you to do a service location in your application really easily using some static interface.
If you were creating a PDF, you might pull in something like DomPDF Laravel. What you can do is then if you register the façade alias, then you can in your application call it PDF:: create and pass in a string of HTML or something like that or pass in a view or whatever. Those are the two things that you usually have to register in addition [00:28:30] to pulling the package in using Composer Require, so there will be step two, step three would be go ahead and copy and paste this string into your list of service providers in your af.php, and then go ahead and copy and paste this string to create the new façade alias in your aliases array in your af.php class or whatever it is.
What this does is this essentially takes all of that and hides it behind the scenes. You would no [00:29:00] longer have to do those last two steps. All you'd have to do to consume a package in Laravel 5.5 is to do the Composer Require step. Then the way that this works behind the scenes is that there is some hidden magic in composer.json. If you've ever looked into it, there's a bunch of stuff that I've never really used that Laravel does use, like the after install scripts and things like that, but there is another key section [00:29:30] called Extra. Laravel is utilizing that section to allow package creators to auto load in their service provider in facades. In that little extra section there, if you were the guy who's creating DomPDF for Laravel, then you would just update your composer.json in your project to include the path to your packages service provider and then your facades location file for that.
It will just auto load those in [00:30:00] when you do a Composer Require. It's going to make using packages a lot easier. It will take a little bit of work on the part of the package developers to add this in, but it's pretty trivial. There's just a providers section and an aliases section that you add into the extra on your composer.json and you're all done. Should be really good. Hopefully a lot of the popular packages take the task on of pushing this in and if not, I'm sure there will be lots of poll requests from people in the community.
Michael Dyrynda: A lot of [00:30:30] easy poll requests as well. As you say, it's just adding a couple of extra keys into the composer.json file. I have done it on a package that I released early last week.
Jacob Bennett: That's 5.5, something cool to look forward to. Should be good. We have had two different community sites released in the last two weeks here. Michael, I'm going to let you pick one and talk about it.
Michael Dyrynda: All right. The first one is a [00:31:00] deep dive into the Laravel Core, which has been put together on I guess it will be an ongoing basis from Mohamed Said and he's basically put this together to share notes on the internals of Laravel Core, of packages, as well as any of the technologies behind those different components. His goal is essentially to help people understand how things work under the hood of the framework and also to serve as a reminder for himself when he needs to look up something that he's worked on before, as a [00:31:30] lot of us do. We'll figure something out and then we'll come back to it a couple of months later or a couple of weeks later, and we've forgotten how it works.
This is a great example of sharing what you're learning with the wider community and anything that you learn is always going to be useful to someone else at some point, even if that's you put it on the internet somewhere for someone to read.
Jacob Bennett: It's like free advertising for yourself too. If you have stuff out there and it gets picked up as something that people come back to, it's pretty cool. Becomes [00:32:00] a staple in the community. I have one particular blog post that is that way. I get people asking me stuff about it on a semi-regular basis and it's been out there for a while. It's funny how many times people just hit it while they're doing a Google search for something and it ends up being one of the top results and there you go. You never know when that blog post that you write is going to be able to help a lot of people or just even a few people.
There's a couple things I really like about this site. I think it's really [00:32:30] cool the symbolism that's used here. Digging into the internals of code, we've called it a deep dive or code diving or whatever for a while, but Mohamed actually does free diving. It's like one of his big hobbies. We had him on a couple shows ago. I think he said he can go down 60 meters or maybe it was 30 meters or 20. I think it was 20 meters, which is 60 feet I think is what it was, something like that.
Michael Dyrynda: It was a fair way.
Jacob Bennett: In [00:33:00] any case, he uses a lot of parallels even in the design of his site. There will be a couple different sections to particular deep dives that he'll do. The exceptional handler, he has three sections and it starts at zero meters before the dive, and then five meters reporting exceptions, and then 10 meters rendering exceptions. It's kind of like you're descending into the code, and he's got the different sections listed out. It's pretty cool and it's been really fun just to read through there. It's super [00:33:30] well written, and you can tell he's put a ton of time into it.
It's been really helpful. Even not like coming to it at a time where I need these things, just reading through it, it is apparent how much time and work and care and thought goes into these things that are done behind the scenes that you never see. Just the decisions that have had to be made and really how large and sprawling the Laravel framework itself is, how many different pieces there are to these [00:34:00] and how it would be possible for somebody as skilled as Taylor and Mohamed, how they could possibly spend their full time days working on this. When you start looking at these things, it becomes pretty apparent that there's a lot of time obviously, we all know that, but it's just cool to see behind the curtains on these things.
Michael Dyrynda: Definitely. As good as the documentation of the framework is, the documentation is on how to use it, but this is really starting to look, as you say, behind the curtains, it's figuring out how those things work. At the time of this [00:34:30] recording, there's six different components that are covered, so the queue system, how the exceptional handler works, how the task scheduler works. It goes into a bit deeper look at how the package order of discovery works, the notification system and also how getting an understanding of Redis and how that behaves and how it's used in Laravel.
There is a mailing list on the website, Divinglaravel.com, which you can subscribe to and get updates on when new deep dive topics come up.
Jacob Bennett: Let's take a look at the other [00:35:00] site, which is Chris Fidao, Fideloper on Twitter. He has a site called Servers for Hackers. I think he has a book Servers For Hackers. I know he has a course that he's working on or has released. Does he have a Docker course?
Michael Dyrynda: Yeah, the Shipping Docker one.
Jacob Bennett: Shipping Docker. This is a free course. It's called Performant Laravel. This is a course on quick performance wins that you can implement in your Laravel application, and all you have to do is sign up with your email address [00:35:30] and get immediate access. It's already done. He's got, let's see, how many different ones did he have? 12 different videos that are out there. I think I started watching on the object caching. I think there's four videos just on object caching, and it's been pretty interesting to go through that. We use caching in a lot of our applications, but he goes through a couple different.
It's so interesting just seeing other [00:36:00] people code. They're not super long videos. They're anywhere between three and 14 or 15 minutes. Even if while you're watching it you don't pick up anything new from the particular topic you're watching, you pick up new things from how they code. He expressed a timestamp. Whenever I need a timestamp, I always jump to using carbon, which is just my default for anything timestamps because timestamps is such a pain. He had a couple different ways that he was doing timestamps, which were really interested, that didn't require that you use carbon. [00:36:30] In the case that I'm ever in a non-Laravel application and I need to do that, the way that he did is just very intelligent and you could tell he'd done it a million times because he just whipped right through that code.
There was another thing where he used Vsfprint I think.
Michael Dyrynda: Vsprintf.
Jacob Bennett: Yeah, vsprintf. I usually don't use that. I actually hit him on Telegram and asked him a couple questions about that too. It's neat. That had nothing to do with what I was actually learning from the course, which [00:37:00] is a lot that you can learn from there, but if for nothing else, it's really interesting just to watch somebody else code and pick up little tips from how they do things as well. It's free and it's fast to watch and you get some really good benefit from doing that. I would definitely sign up for that. Then check out his other courses and his other things that he's offering as well. Chris does a great job. He's been a part of the community for a very long time, and so very thankful for him and for putting this together.
Michael Dyrynda: It's interesting you point out that watching other people develop, because [00:37:30] you are correct in that everyone has learned to code in a different way. I guess it's a little bit different now with things like Laracasts where such a huge part of the community is learning to write their code in a very similar way under the careful teachings of Jeffrey Way, but for those who have been around for a lot longer and they've developed their own ways, it's good to sit down and look at what they do and how they do it, and [00:38:00] as you said, that vsprintf thing, I saw Adam [inaudible 00:38:04] use it recently. I've been a big user of sprintf and printf for a long, long time. He's right, if you can pass an array rather than a comma separated string, it makes it much easier to read and write.
It's those little things that you wouldn't think of, and that may be a takeaway from the video if you know the rest of the content or you've got a good grasp of what's going on. Always cool.
Jacob Bennett: I think [00:38:30] for those vsprintf and sprintf and things like that, I was always like, "What is the relationship between the method and what is it actually doing?" It's easier to say it sprintf instead of sprintf, but it's string print format is what it is, sprintf. It's a string that you pass in and then print it out according to this format. Then Vsprintf is take a format and a set of strings that are in an array and printed out in that particular [00:39:00] way. The case that Chris was using it in, he was just passing in the format that he was using was just joining them all together, so it was %s, %s, %s, %s. He just passed it in an array. In that case, I asked him, I said, "Is there any reason why you wouldn't just do an implode on this, just pass it in an array and then do an implode with an empty string?" He's like, "Nope. This is just how I've always done it and it's familiar and comfortable." I was like, "Oh okay."
That's what was my question for him is I use implode a lot when I'm trying to join strings together, and [00:39:30] then just with a separator or whatever.
Michael Dyrynda: Even just saying that, I've never thought to use implode and just creating an array on the fly. There you go. I learned something today.
Jacob Bennett: That's what I typically do. Especially if you're just joining strings together, it makes sense for me. There we go. We've got a couple packages we wanted to mention real quickly as well. Sometimes we have time to do these. Today we actually don't have time. I know we're already over, but there was some cool ones released this week that were of note, so we wanted to make sure [00:40:00] you all knew about that.
You might [00:41:00] want to check that if you're a person who needs to use collections or collection pipelines on the front end. It got a lot of retweets and stars and hearts and likes on Facebook and on Twitter when Eric put a blog post out for it. It seems like there was a lot of community interest, which is cool. I don't typically tend to use a bunch of this stuff like this on the front end. I usually just map and reduce and [00:41:30] the stuff I do is pretty simple on the front end side of things. I do most of the intensive collection operations on my server side. How about you Michael?
Michael Dyrynda: Yeah, we spoke a little bit about it earlier. I'm the same as yourself, in that I would tend to do most of that kind of stuff on the service side. I try and keep my front end concerns as simple as possible. I wouldn't go too much further than what's available in ES6 normally, but I can certainly say, and obviously there's a lot of [00:42:00] buzz around this particular package, so there's obviously a want for it.
Michael Dyrynda: Or even just people that aren't [00:42:30] in control of the backend. They're just manipulating data that's coming from an external API I guess.
Jacob Bennett: Oh yeah, that's true. That's true. Good point. In any case, check that out. I'm sure you will find it very useful. There is a blog post up on Laravel News to help you get started with that. We also have, there was a tutorial pushed out there by Eric Barnes this week talking about invisible reCAPTCHA. Could you, Michael, give [00:43:00] us a quick introduction to what a reCAPTCHA is for those who may not be familiar. Then talk about how Google has improved that and about this little tutorial on how to get started with that.
Michael Dyrynda: Sure. ReCAPTCHA was basically a way of verifying that whoever was filling out your form was not a robot. It was around preventing spam submissions and things like that where they were a big problem for a long time. You'd get crawlers and spam bots and so on and so forth [00:43:30] that were just going and spamming contact forms and things like that. ReCAPTCHA was a way of basically verifying those users by having a simple button that you click on it and the button says, "I'm not a robot," and that was proving you're a human. Now the science and whatever else behind that I couldn't tell you.
Jacob Bennett: They won't tell you either?
Michael Dyrynda: That's right, they certainly won't tell us, but it's always verified that I'm human, so that's good. I wouldn't want to have any Westworld situations going [00:44:00] on.
Jacob Bennett: Spoiler alert.
Michael Dyrynda: That's right. We've add the invisible reCAPTCHA. It's a new version. There is no longer an embedded CAPTCHA box for users to interact with. There's no "I'm not a robot" button. There's no click all the pictures that had a car or a street sign in them anymore. There's just badge on the page that shows that the technology is being used on the site and that's basically all there is. It handles all of this in the background for you, which is nice. We've come full [00:44:30] circle in presenting the form because those buttons are always a bit of a hassle especially if you're using password managers and things like that that tend to submit the form as soon as they paste the credentials in there for you.
Jacob Bennett: What this package basically allows you to do is it allows you to make the configuration of this as easy as possible. If you think about how this works, really if you know what a CSRF token, a CSRF token is something that's generated server side and then pushed to the front end and passed through with [00:45:00] your form submission, and then on the back the server checks and says, "Hey, is this key that they sent through in the form submission the same as the one that I generated on the back end when we rendered this from?" If it is, it says, "Okay, good. We can confirm that you are actually visiting this form and submitting it from our website." If not, then it rejects it. That's kind of what the CAPTCHA does is it will generate a code for you on the front end after it's made sure that the person who's submitting is in fact a human, it will submit it through with your [00:45:30] form request.
Then what ends up happening on the back end is it will take that code, it will go ask Google, "Hey, did we create this code for this person on this website," and Google will respond yes or no, and then it will accept or reject that form submission. There are a couple steps to getting that set up, and this package makes it really easy to do that. I'm using this in another location with the one where you actually have to click the button, the robot button. It wasn't terrible to get set up but it took a little [00:46:00] bit. This took some of the pain out of that. If you're interested in using reCAPTCHAs or have the business requirements to do so, I would definitely check this out and give it a try. It's really as simple as doing the steps that you would do for a validation after receiving the request, and all you have to do is add a new, instead of required, you could just put CAPTCHA and that will do the validation check for you.
It's basically a little validator helper is what it is. [00:46:30] There you go. There is a post out on Laravel News, which again will walk you through the steps to get started and how you can consumer it.
There was one other thing we wanted to talk about, one other package, but I'm going to let you guys check it out on Laravel News. It is called Party Line. It looks pretty cool. My apologies, we were not able to get Caleb or Daniel on to talk about the model factory macroable stuff, so maybe some other time. It is Father's Day and I hear my children running [00:47:00] around upstairs, so I'm going to go celebrate this wonderful day with them.
Michael Dyrynda: "Where's daddy? Where's daddy?"
Jacob Bennett: Yeah, they're like, "Where is he?" I'm going to head up and do that. Thanks so much everyone for listening. If you have any comments or feedback, please feel free to hit us up on Twitter @LaravelNews or on our own personal Twitter accounts. If you like the episode, feel free to rate it up in iTunes or your Podcatcher of choice, five stars would be amazing. It's Father's Day, five stars guys, come on. Here we go to the big URL. [00:47:30] You can find this episode at Laravel-News.com/podcast/40. I think that's it. Are we good?
Michael Dyrynda: We're good.
Jacob Bennett: We signing off?
Michael Dyrynda: We're signing off.
Jacob Bennett: All right. Do you have a foreign language goodbye for us today?
Michael Dyrynda: I do. It's not really foreign, it's English, but because we spoke with Laura and she is English, the only thing that I could come up with is cheerio.
Jacob Bennett: Cheerio mate. You can't put mate on the end of cheerio. It's like mixing [00:48:00] worlds there. I don't think you can do that.
Michael Dyrynda: Well we are technically a convict state of the U.K. so you might get away with it.
Jacob Bennett: Oh gosh. Aussie history. All right man, until next time, take it easy. Bye.
Michael Dyrynda: See you.
Jacob Bennett: [00:48:30] Very cool. The other site that we wanted to, and actually cut that very cool. I am trying to stop saying that because I noticed I say that too much. Very cool, very cool.
Michael Dyrynda: You're going to have to stop saying it because I'm not cutting that out of when I'm editing.
Jacob Bennett: You are. You are cutting that out. Otherwise, people are going to be like, "He does say that a lot. That's annoying."