The Changelog: Software Development, Open Source - Laravel PHP Framework (Interview)
Episode Date: February 13, 2015Taylor Otwell, the creator of the Laravel PHP framework, joined the show for a deep dive into Laravel, why he doesn't release without good documentation, building apps to test your own framework, writ...ing an API for Lavarel Forge, and more.
Transcript
Discussion (0)
welcome back everyone this is the change log and i'm your host adams dekoviak this is episode 142
today jared and i talked to taylor otwell the creator and maker of laravel an awesome php
framework built for artisans we've got some awesome sponsors for today's show, CodeShip,
TopTile, and Clearbit. We'll tell you a bit more about TopTile and Clearbit
later in the show, but our friends at CodeShip are all about
continuous delivery made simple. In just a few steps, you can automatically
deploy all your code when your tests have passed with CodeShip. They're based
on usability, so
everything is designed to be as easy to use as possible. And in fact, they recently took some
feedback from their user base and redesigned their entire application to include new usability
improvements that made it even easier to use. They've got great support for lots of languages
and test frameworks. They integrate with GitHub and Bitbucket. You can deploy to cloud services
like Heroku and AWS and many more.
And you can get started today by trying out their free plan, which includes 100 builds a month and five private projects.
Use our offer code, TheChangeLogPodcast, to get 20% discount on any plan you choose for three months.
That offer code, again, is TheChangeLogPodcast, and you'll get get 20 off any plan you choose for three months
head to codeship.com slash the changelog to get started and now on to the show
all right we're back it is it's a good day it's friday right jared that's right it's friday so
that means we record this show and we've got an awesome guest today long time in the making
taylor we had to reschedule once you hadule once. You had a cold or something like that. And then we wanted to get you back on this show back in November. But Taylor Otwell's here talking about Laravel, awesome PHP framework. So Taylor, welcome to the show.
Thanks for having me. which is kind of a counterpart product, supporting product to Laravel. So, yeah, it's been a blast. It's been really cool.
And I guess for the listeners out there who may not know who you are,
give an intro to yourself and then from there we'll go into
to kind of explain what Laravel is at the deeper parts.
Okay, so I'm, of course, Taylor.
I grew up in Arkansas and I still live in Arkansas
in the central part of the United States.
And I've kind of always been into, you know, tech and computers since I was a kid and majored in IT at Arkansas Tech University.
And then I actually worked in the.NET field for, I guess, three or four years for a large trucking company here in Arkansas.
And that's where I kind of got my programming chops really and worked with some
really bright programmers and learned a lot. And then I got into PHP because I kind of had some
side project ideas that I wanted to flesh out some businesses. And PHP is, of course, super easy to
host and throw up on a server. And it's really great for kind of rapidly hacking something like
that out. So that's kind of how I got into PHP, just dabbling like that,
and then eventually brought some of my ideas from.NET over
and created Laravel, this PHP web framework.
Laravel.
So when I say Laravel, should I enunciate the L at the end of that a bit better?
I say Laravel.
Laravel.
Just like that.
What about you, Jack?
How do you say it?
I say Laravel. Laravel. So I'm the only about you, Jared? How do you say it? I say Laravel.
Laravel.
So I'm the only one who's wrong here?
Jeez.
I just follow Taylor, man.
All right.
I figure he gets to have final say on that.
The audience is used to it, though, right?
I mean, I'm always mispronouncing something like Olivier Lacan.
I just couldn't get that right during the show.
And even now, I can't enunciate it well.
Once later, you just have to mispronounce that, month later.
Sometimes I go to tech conferences and it's like,
I try to pronounce things in this weird general way
so that I don't sound stupid, you know, if I'm not pronouncing it right.
Right.
I try to cover both bases, so to speak.
In the pre-show, we talked about Sarah Goldman being on the show recently,
talking about the PHP spec and HHVM over there, Facebook
and whatnot, but on that show, we had
a conversation about whether or not it was called
OSCON or OSCON.
Gotcha.
Still don't know.
We'll have to get Tim on the call to see
if we can get an official ruling
here or something.
On Laravel's homepage, it says
the PHP framework for web artisans.
Can you explain to us what a web artisan is? So web artisan is kind of just a fun little
marketing word we use. And I think of it a lot like, you know, the software craftsmanship
type of movement. So it's really supposed to mean the same thing. Laravel is built for people.
It's built with a lot of care, I guess you could say,
and we really sweat the details in terms of how easy it is to use,
what the API looks like.
We try to make the documentation really good,
try to put a lot of care and kind of handcraftedness into the product.
So it's not supposed to be like elitist
or it's only for really good programmers or whatever.
It's more just saying, hey, we really care about good code.
If you care about that kind of thing too, maybe you'll like Laravel.
So that's kind of the thought behind it, kind of the software craftsman slash artisan feel.
You find that that has set you apart a little bit in the PHP community?
I think it's, I think people,
you know, it kind of creates this, this fun community and people like to be a part of
something, you know what I mean? Like to feel like they're a part of some kind of club or movement or
fun thing. And I think it has benefited to kind of have those kinds of marketing angles on the
framework and it kind of does set it apart in people's minds,
at least from a marketing perspective,
of this cool inner circle you're a part of,
of Laravel developers.
Yeah, I mean, also, you know,
PHP is one of those languages that has such broad use
and has been around for such a long time
that there's a lot of really bad PHP
code on the internet. You know, it's kind of like JavaScript in that way. Every language,
there's bad code out there, but you know, some of them kind of come up to the top of just having a
lot of code out there that because it's so easy to get into, um, it's easy to, to publish your
kind of newbie code. That being said, there's a lot of PHP developers like yourself
who really care about code quality,
who consider themselves more craftsmen.
And so I think it makes a lot of sense to have tooling
specifically tailored at these people.
Right.
No pun intended, huh?
Yeah.
You saw what I did there?
I saw that. I like that.
It's good.
I've said in the past that I feel like PHP sort of has this copy-paste culture that we're trying to get out of where, like you said, there's a ton of – I mean, there's whole websites devoted to basically copying and pasting bits of PHP into your application. And we've been playing catch up, so to speak,
where we're trying to talk about things like good architecture, good design.
And at the same time, I like to bring a lot of kind of the Rails flavor in of rapid application development and making things very practical and pragmatic.
So yeah, we've been playing catch up quite a bit,
but I feel like PHP has really gained a lot of ground in the past few years how long have you been doing laravel
i wrote laravel it released in june of 2011 so coming up on four years now wow and how many
major versions has that been we just released our fifth version and they've been getting farther
apart like the first couple versions were really close together
because it was almost all early adopters, you know, kind of hacker types,
and we didn't really care about stuff breaking somewhat frequently.
So we came out with version 1, 2, and 3 really close together.
And then version 4 and 5 have been a little over a year and a half apart,
coming up on two years apart.
So they've been spreading out.
Yeah, over 14,000 stars, 4,600 forks on GitHub.
So you've definitely succeeded where many frameworks and communities fail to gain a large audience.
Can you speak to why you think that is?
Yeah, I have a few reasons, I think,
that Laravel has kind of taken off that way.
And one is from the very beginning,
I kind of made this promise to myself
that I would never release any version of Laravel
without good documentation.
I just like wouldn't do it.
I don't even release betas
if they don't have good documentation.
Because, I mean, you only have so long
to really capture people's attention, you know,
and give them either a good experience
or a really frustrating experience. And in terms of frameworks, there are PHP frameworks out there
that still to this day, I'm not really sure, like, how do I log someone in? Like, it's just not clear
to do something that basic that almost every website needs to do. So with Laravel, I tried
to have awesome documentation from day one and then also have a really great community. So with Laravel, I tried to have awesome documentation from day one and then also have
a really great community. So from the day we launched, I personally was in the forums,
in the chat rooms, and I'm still in the chat rooms a lot talking with people and really
engaging the community to make it feel more inclusive and tight knit. And it draws people
in and they feel like they're a part of something. They're a part of something that they can learn from and they can get help from others and even
help others themselves. So yeah, the documentation in the community have been huge. And then that
ties into things like LaraCast and of course all the surrounding ecosystem of educational materials.
So I guess to rewind a tiny, tiny bit, bring us up to speed on exactly what Laravel is then.
Okay, so Laravel is, a lot of people probably think of it as the Rails of PHP.
That's probably the easiest way to think of it if you're not really a PHP developer.
It's really Rails-y in the sense that it has an active record ORM that feels very much like
Rails active record. It's also had features that not many other frameworks have or that Rails just
got. We've had a queuing system for over a year now with several different backends for Beanstalk
and AWS and IronMQ. It has a CLI much like Rails where you can just do Laravel new blog and start a new
project and you can generate migrations just like Rails and the migrations even look like Rails. So
it's very much Rails inspired development framework for PHP. And then also mixes in a lot of
unique stuff. The templating engine is called Blade and it is more inspired by.NET than Rails, I would say. So the whole
goal of it is to, let's build a really productive web framework for rapidly developing your ideas
and getting them out to the world as quickly as possible and making them at the same time
maintainable and testable and, you know, a joy to develop for. Tell us about Blade. I know it's hard to describe code a little
bit just with words, but if you can, what makes it unique from a typical embedded templating system?
So Blade is really unique because it's very, very minimal under the hood. There are other
templating systems for PHP like Twig, which actually convert your template into a fairly complicated PHP class that then renders the HTML.
Blade is significantly different in that it's really just a handful of regular expressions that translate your template into raw PHP, which is compiled and stored and then it's processed as raw PHP the next time the view is needed.
But it's very much inspired by ASP.NET MVC Razor.
And in fact, that's where the blade name comes from.
So you're going to see very familiar syntax where you have like, you know,
at sign if or at sign for each instead of having to do, you know,
bracket, question mark, PHP, all that jazz.
And then, of course, it has a kind of template inheritance where you can define a master layout
and then extend that layout for your child pages and such.
You know that old saying about regular expressions, right?
Right, yeah.
Have you run into that?
No, I've got two problems.
Yeah, have you run into issues with those internals?
What's the saying?
A programmer, when tasked with a problem, thought to himself,
I know, I'll use regular expressions.
Now he has two problems.
Kind of the old joke.
Yeah, we haven't.
Thankfully, I mean, Blade is pretty simple,
so we haven't really had a lot of problems there.
Hopefully we don't. Yeah, I am, Blade is pretty simple, so we haven't really had a lot of problems there. Hopefully we don't.
Yeah, I am familiar with that warning.
You give it the Rails nod there, I suppose, right?
So you're on version 5.
You've been at this for, I think you said, four years now.
Is that right?
Yeah, four years.
So take us back to, I guess, the PHP framework landscape at that time.
What were some of the problems you were trying to solve?
And what were some of the early beginnings that made Laravel what it is, I guess, then and then now today?
Okay.
Yeah, I'll just talk really honestly about the PHP framework landscape back then, because it's changed quite a bit. The big players back then in terms of frameworks were CodeIgniter, Kohana, and Symfony. And I
would say CodeIgniter and Kohana are basically becoming irrelevant now. But the issue was,
at PHP at the time, there was really not a large framework that was simple and that embraced the newest PHP features.
So CodeIgniter was simple as a framework.
It was easy to use.
It had great documentation, but it was like woefully out of date in terms of what PHP could do.
For instance, PHP had anonymous functions.
You could pass functions around as first-class citizens, and that makes for a really good routing system where you can just say route get slash home and then pass it a function that is called, you know, kind of like a Sinatra or something like that.
And so we needed a really nice modern framework that embraced what PHP was and what modern PHP was. And Laravel, I really think Laravel was at the right place at the right
time in that sense, in that I was able to come in right when PHP had these great features.
These other frameworks were kind of getting dated and old and the newcomers were ignoring things
like documentation and community. And so I tried to come in and bring in a modern framework with modern PHP,
which in Laravel 1 was very much Sinatra-inspired,
more than Rails-inspired,
and fill that gap of having a great modern framework
with really good documentation that's easy for people to use
and rapidly build things.
You mentioned Rails, and we had last week Rob Aurelia, Rob Aurelia, his project's called Aurelia, Rob Eisenberg on the show.
I named him.
Yeah, the Eisenberg effect, if you will.
The effect. mindset, which is that quality frameworks maintain their quality and their usefulness
when they're abstracted or extracted from production applications or built alongside
production applications.
Rails famously pulled out of Basecamp.
Rob's last framework, Durandal, had a production application, I can't recall, that he built
it alongside.
Did you have that with Laravel from the beginning?
Do you have it now?
What's the situation with production apps?
Yeah, I had it very early on into Laravel.
I didn't have it in the very beginning for Laravel 1,
but from Laravel 2 or 3 on,
I did have a major application that Laravel was kind of extracted from,
and modern Laravel really looks a major application that Laravel was kind of extracted from. And modern Laravel
really looks a lot different than Laravel 1. But that app was Snappy. When I worked for a company
called Userscape, we built a help desk application called Snappy. It's bsnappy.com. And that used
Laravel and so many things were extracted into Laravel from what we needed with Snappy. The queue system was kind of genericized and brought into Laravel.
All kinds of stuff.
Even the migration system really was inspired by our needs as a team at Userscape.
And I've always been terrified of not having a real application I can develop Laravel out of.
Just building Laravel in a vacuum is really terrifying to me because
I have no compass, so to speak, in terms of what's real and what's just imagined needs,
you know. And with Laravel 5, since I work full time on Laravel now, I actually built like a
whole new SaaS on Laravel 5 just so I could dog food it in that way and really see how the framework felt.
And it identified a ton of like little, you know, it didn't bring out necessarily like big
show-stopping bugs, but it identified like a lot of little paper cut bugs. I like to call them
where things that are just like annoying when you're building a real app and you see the edges
of the framework. So it's extremely helpful to have that kind of thing and i imagine
going forward you know over the next few years or whatever the next version of larabelle is
i'll build something entirely new just so i can dog food it if i have to
on the bakes on the i'm looking over the docs too by the way love the docs that uh
and i like your principle of of uh not releasing good docs. And you can tell that's a grained in principle for you.
But looking over some of the basics, the foundations and services you have here, where's a good starting place for kind of covering some of these pieces?
In terms of architecture, the service providers are kind of foundational in how they tie into the IOC container.
That's a little bit deep of a concept or a little bit in the guts of the framework,
but that's pretty foundational, I would say.
What's IOC?
So Laravel is driven by the IOC container,
which is Inversion of Control Container or Dependency Injection Container.
And it can automatically inject your class dependencies
so that if you
have a user controller and maybe you have some kind of user repository class that abstracts
all your database functions or methods you need to call, you can just type hint that user
repository right on your controller's constructor and the container will inject it automatically
for you. So you don't really have to wire up a bunch of dependencies manually.
The Laravel's container can do all that sort of magically for you.
Where was the inspiration for dependency injection?
The dependency injection of Laravel is really modeled after Microsoft's Unity container
and then NINJECT from the.NET ecosystem.
You know, like I feel like the architecture can go a little overboard. I kind of agree with some of the things DHH said recently in terms of architecture
and kind of over-architecting things.
So the container tries to, it doesn't kind of like dominate your life in Laravel,
but it's a really helpful tool
if you need to abstract some pieces out of your application and kind of separate layers of your
application for unit testing or whatever. Gotcha. As a quick plug, I think we got DHH coming up on
an upcoming show. Is that right, Adam? I was wondering if we should mention that. I kind of
hesitated to do so, but yeah, for those listening now, we do have an awesome show planned with DHH, also known as David Highmire Hanson.
The show is going to be all about 10 plus years of Rails.
We hope that's a pretty awesome conversation.
I know that I've got about a thousand things I want to ask him.
I'm sure you're the same, Jared.
He's always
got something interesting to say doesn't he that tip to the future that's february 20th we're
recording probably a week after that on the shipping and yeah he's always he's always uh
fully good stuff so and now a word from our sponsor top towel is the best place to work as
a freelance software developer if you're freelancing right now as a software developer
and you're looking for a way to work with top clients
on projects that are interesting, challenging,
and using the technologies you want to use,
TopTile might just be the place for you.
Working as a freelance software developer with TopTile,
your days of searching for high-quality, long-term work
and getting paid what you're worth will be over.
Let's face it, you're an awesome developer and you deserve to be
compensated like one. Joining TopTal
means that you'll have the opportunity
to travel the world as an elite freelancer
on top of that TopTal can help
provide the software, hardware
and support you need to work effectively
no matter where you are. Head to
TopTal.com slash developers
that's T-O-P-T-A-L.com slash developers
to learn more and tell them the change log sent you.
Taylor, any other specific features?
So you have an ORM, you have routing,
dependency injection, you have kind of a unique,
at least internally, unique view layer.
Any other major features of Laravel?
You got command line generators that are big tentpole features
that you definitely want people to know about before we move on to other topics?
The queuing system is huge in PHP frameworks.
Nothing like that exists in any other framework.
And basically, I really like it because it's super easy to use.
So I can go to my command line and say, make command purchase podcast,
maybe some purchase podcast routine that I'm going to run.
And then on that class, I can just say, should be queued.
I can just mark it with an interface that reads very much like, you know,
English, just should be queued.
And then when I dispatch that command, it's automatically sent onto the queue,
and my Eloquent models are serialized and deserialized gracefully.
And everything is just super easy to use.
And I find that you really need that in most web applications you build nowadays.
It feels like, to me, some kind of good queuing system.
And Laravel's unique in that regard in PHP.
Yeah, for sure.
What about deployment, build process, JavaScript integration,
stuff like that? Yeah, so we actually have a tool called Laravel Elixir, which is sort of a
fluent layer on top of Gulp, where we abstract out quite a bit of the hairiness of writing your
own Gulp file. And so you can just say Elixir Mix SAS and give it your SAS file or less or CoffeeScript or whatever.
And it's like super clean.
I mean, even just like a 10-line file, I can do my SAS.
I can have it automatically run my tests when I change my test files.
And I can have it version my files so that the cache busts and all that.
So it's really slick, but that's a new feature in Laravel 5
and kind of an add-on feature is that Gulp integration.
Is there a reason why, I guess,
is it just to maintain writing PHP versus going to JavaScript?
Like why didn't we use a PHP compiler, basically?
Well, why didn't you just do it straight in Gulp?
Like a layer on top of it?
Yeah, it is built on top of Gulp.
And we found that the PHP community is, gosh, it's hard to say it nicely, but we're just behind in some ways.
And it's very hard to throw people right into Gulp, like for a lot of our users. And so this is kind of a nice way to get them into Gulp
and get them kind of believing in themselves like,
hey, I can use JavaScript to build tools.
Cool.
And then they start digging into it more and they find out,
oh, I can write my own Gulp task in this file
and drop down into all the Gulp goodies I want.
It's kind of a good way to get their feet wet
and get their feet in the door,
whereas they might not have,
they might've felt overwhelmed
or might've been scared to try something like that.
Had they not had a softer, easier introduction
to the whole scene.
How easy is it to layer on like a front end framework?
So I'm thinking like things like bootstrap
or just various things that are out there
that, you know, integration with LESS or SAS and those pieces,
how easy is it to put something, I guess,
an interface on top of, you know, a Labrador app?
It's fairly easy, you know.
It's pretty straightforward.
A lot of people just use Bower or whatever to install whatever they want.
You know, we haven't tried to get too opinionated with that out of the box.
We don't really ship any particular front-end framework besides, you know, the Gulp tooling.
But yeah, it's pretty straightforward, like you would expect for any other web app, really.
Do you have anything like the asset pipeline like there is in Rails and whatnot?
There are community asset pipelines that have been built that kind of mimic that functionality.
For the for the Laravel core itself, we stuck with just the gulp slash elixir integration because
it's a lot simpler to build, first of all. And then the asset pipeline, it was so opinionated
and there were so many, you know, some people loved it and some people just absolutely loathed
it. And so we were very hesitant to bring that in after seeing kind of some of the reaction from the Ruby community.
So we took kind of the more conservative approach with kind of a simple Gulp file to help you get started with asset compilation.
What about the, you mentioned a template language earlier for the views.
How does that work?
I know that in the Rails world, you tend to have camps.
There's somebody who keeps the ERB, someone who goes with Hamill,
someone that goes with something else.
What else is out there now, Jared, besides ERB and Hamill?
Slim, maybe.
Slim, okay.
So what's it like when you come into Laravel?
So you can take your pick like that, sort of.
Probably 99% of people are just sticking with Blade, the default engine,
but other people have wrote engines for, you know,
PHP has Haml parsers as well, and there's another parser called Twig,
which I think is based off some kind of Python templating language, Jenga maybe.
So you can swap them out, and there are packages to do that.
I don't really do it.
I think most people probably stick with kind of the default stuff.
There's kind of not a really –
templating language in general are not very well received in PHP.
Interesting.
It's kind of interesting in that way.
A lot of people just like to use plain PHP.
They will fight over that.
PHP is a templating language.
Why would I need any other templating language?
But yeah, kind of an interesting argument in PHP.
So you kind of have two sides.
You got, you know, pulling in assets,
and then you have the people who want to have a separate front-end app
all together with our JavaScript framework.
So in that case, how does Laravel play
if you just want to have an API backend?
Laravel is really awesome.
That's one of the best use cases for Laravel, I feel like,
because it's so easy to convert the Eloquent models into JSON
that setting up a JSON backend is just,
it's really just pretty painless in Laravel.
And other frameworks and ORMs and PHP are not like that at all.
It's very difficult to convert something like Doctrine entities into JSON.
It's just not as straightforward.
So I use Laravel for that a lot, actually,
because I do quite a bit of Angular in my own projects,
and Forge is a heavy Angular project.
And most of the Laravel app, I would say, is just serving up JSON,
and it's really great for that because the ORM suits it really well.
And that was intentional.
You know, even a few years ago, it was very obvious that these JSON backends were going
to be extremely popular and maybe even more popular than, you know, your typical backend
templating system.
So we always have tried to make the API building super easy.
Right about now is probably a good time to mention, I guess,
Laracast by way of talking about Composer.
I was pretty excited to stumble upon the fundamentals
for Laravel 5 being completely free,
so big shout out there to Laracast.
But Composer is the dependency manager for PHP.
Again, Jared and I aren't PHP developers,
but kind of walk us through that.
We're norms to, say, Bundler, for example,
in the Ruby world.
How does this play into Laravel?
Yeah, Composer feels it's a lot like Bundler.
It's a lot like NPM, if you're familiar with that,
and Node.
So you would just have like a require block,
just like you really do in NPM,
and you list out your PHP packages
that you wanted to pull in.
And instead of pulling into Node modules, it would pull it into a folder called vendor,
and all the PHP code would be in there and all that jazz. So it works very similar to that. But that was huge for PHP. That's probably one of the biggest PHP developments really over the last five
or six years was getting something that would let us easily distribute code and package form,
because we did not have a very clean way to do that before that.
And that kind of churned the whole ecosystem
and kind of revitalized people into writing and sharing open source PHP code.
All the packages are shared at packageagist.org.
So that's, you know, if you go to getcomp.org you got browser or sorry browse packages so since
you mentioned npm that sort of makes you and throwing no stones here of course but just like
you said speaking plainly here in some cases but kind of makes you really have some respect for
what npm has done for the just dependency management of packages because the front end to NPM in comparison to this
is sort of night and day.
Yeah, for sure.
Well, maybe we should talk a little bit more about your community
and more about how you're making a living, man,
because you're full-time now.
That's true, yeah, full-time.
You do keep saying we, which I like.
You obviously are not the only committer on this project, I hope.
It seems like you've got a nice community going.
So tell us who all is involved besides just yourself,
and then follow up with that on how you're actually going to make a living ongoing.
Okay, so the Laravel, in terms of the code base,
I make most of the commits on the code base.
However, there is sort of an inner circle of
Laravel community members like Jeffrey Way, people that I have worked with in the past,
a guy named Dale Reese in England, and all these people, we kind of collaborate on Laravel ideas.
And then, of course, we have tons of community members on GitHub issues and pull requests,
commenting and giving their feedback in our IRC channels and so forth. So even though I write the majority of the code, a lot of the
features are discussed and kind of ironed out beforehand by the community or, you know, in IRC
or whatever. In terms of, you know, making a living, you know, I didn't want to charge, have some kind
of premium Laravel,
right? That would, that would feel kind of weird and I don't think would be well-received. So
what I did was come up with this idea called Laravel Forge, where it's sort of like a poor
man's Heroku in a way where it links to your digital ocean or your Linode account and it
provisions the whole server with PHP and Nginx and Memcached and Redis and everything you would need really to build a nice PHP app.
And then it has deployment tools where you get kind of the Heroku style
push to deploy when you push your Git repository.
You can add environment variables and even set up SSL and subdomains
and all that jazz you can do through Forge.
And that's $10 a month for the basic plan. So
it's really affordable because DigitalOcean's servers are, of course, pretty affordable. It's
like $20 a month for a two gig RAM instance, and then $10 a month for Forge. And you're really
got everything you need to get started. So that's been really well received. And PHP really didn't
have anything like that because uh php support on
heroku is of course not as uh fleshed out i would say is the ruby support the default ruby support
i like the idea of this though you also have uh one layer above that too so you have a $10 plan
and a plus plan if i recall correctly wasn't it yeah the plus plan lets you share servers with
teammates so that you can you know
share across accounts that's more of like a a business feature um yeah so it's a really nice
setup and then we also came out with this thing at the same time called laravel homestead which is
free and that's a vagrant virtual machine that that basically mirrors the forge environment so
that you can have um your your local environment very much mirroring your production environment
in terms of software and all that.
And the goal behind that is really to make
the whole development experience really great from beginning to end
or what I say from download to deploy.
So we want your local development experience
to be really good with Laravel Homestead
and you don't have to muck around with your OS X
or whatever,
installing crap through Brew.
That's a good way to say it, installing crap.
It's just a mess.
All that stuff.
Put it that way.
Yeah.
Yeah, so if your Homestead gets all jacked up, you just delete it and reprovision the whole thing.
It takes just a couple minutes.
And so then you've got the download part, the Homestead, the local development.
During your development, you've got all the documentation, Laracast,
and then when you're ready to deploy, you've got Laravel Forge.
So kind of that whole story is fleshed out from beginning to end
in terms of how you're going to build and launch your PHP application using Laravel.
So did you have this out and were making money prior to January,
or are you hoping this takes off?
Is this already supporting you?
Yeah, this is already supporting me.
So I launched Forge in May.
And I worked for Userscape for the rest of 2014, basically.
And Forge was out there and making money and really had what could have supported me a lot earlier.
I just hadn't gone full-time yet.
I actually went part-time at Userscape in August.
So a couple months after Forge came out, I only worked every other week for Userscape.
And then in between weeks, I worked on Laravel.
Nice.
And you decided to make the full-time jump.
How have you reacted to that decision here?
I guess you're only about a month in. Yeah, I love it so far. I mean, it's just insane how much more I can get
done on the framework. I mean, even back when I, before I was full-time, even just like a full day
to work on the framework, because my boss, uh, gave me, um, every Friday to work on Laravel.
And that was huge back then, just to have one full day to work on open source.
It was just insane the amount of pull requests
and issues you could go through.
So to have five days a week of that is pretty unbelievable.
I'm really thankful for it.
And it's allowed,
it's gonna ensure a bright future for the framework,
I think, having someone that can devote
this much time to it every week.
And now a word from our sponsor.
Clearbit is a new company
that builds business intelligence APIs.
Friend of the show and past guest on the show,
Alex McCall.
If you want to go back and listen to that show,
it's episode 71, by the way.
He runs Clearbit and they offer a collection
of powerful APIs designed to help your business grow.
Specifically, they have one API that
takes an email address and returns related social information such as the person's name, title,
social accounts like Twitter and Facebook. They also provide an API that looks up company
information via a domain name. They return attributes like company name, location, category,
headcount. Now, there's lots of use cases for both these apis but they're especially awesome
for finding out more information about your customers and their companies for example
clearbit has an alert triggered whenever a high profile customer signs up and their metric for
someone that might be high profile for them is a startup that has recently raised money if you
want to learn more about the powerful apis they offer head to Clearbit.com and tell them the changelog sent you.
Can you talk a bit about your choice of Vagrant and Homestead?
And I guess the – I mean you already said the crap part of that, but some use MAMP.
I guess can you talk about the idea of Vagrant, I guess, in this scenario?
Because it's not a norm for PHP developers to use this.
Yeah, it hasn't been in the past.
I think it's starting to grow now that people are sort of seeing what it can do.
Of course, there's multiple aspects.
It's difficult to configure, set up PHP and Nginx and MySQL,
especially like on Windows, I would say.
It was more difficult to get all that set up,
including like Memcache and Redis,
or like a queuing system on Windows would be even probably more challenging to set up.
And then, of course, on the Mac side, it was just,
for me, it was always like it made me nervous
to install a bunch of that stuff,
because what if I mess it up?
Will I have a good way to reverse it?
Or like is my system screwed and I just like throw my Mac away
and get a whole new Mac?
Or, you know, just all those fears you have of kind of mucking around
in the internals of your system and installing that kind of software.
So once I tried out Vagrant, I hated it at first
because I felt like it was kind of like slow
and I had to provision the whole box every time.
And so like every time I destroyed the box,
I had to like reinstall,
wait for it to install PHP, Nginx, MySQL,
and it took quite a while, like 10 minutes.
And so I hated it at first,
but then I saw that you could kind of build your box
and then store it off
and people could use that as a starting point.
And so that's kind of what gave me the idea for Homestead
where when it comes down, it's already got PHP and Postgres and Redis and all that.
And then you can install anything else you want on top.
But that makes the provisioning process, you know, like 10 seconds instead of 10 minutes.
And then also, you know, like I said, just the ability to totally destroy that box
and play with it, install whatever you want.
You know, you install Elasticsearch maybe,
or you install all kinds of Node stuff,
and you can do whatever you want.
And if something gets totally screwed up, who cares?
I can just delete the whole box and have a fresh one in 10 seconds.
So I don't have to worry about messing up my Mac.
I like the idea of Vagrant here.
I know I've been using that for any WordPress sites I still maintain,
which the changelog is on WordPress right now.
So we spin up – I think it's – a shout-out to VagrantPress I believe is what I use.
It pretty much mirrors our DigitalOcean instance, and we're good to go on that front.
I like that a lot. So it's a good process, whereas normally you're used to either using MAMP or something that gives you less ability to fine-tune like you've done with the box and having an actually named thing like Homestead.
We did kind of get off track there with that question there about the money topic there, I guess, and Ford. So maybe it makes sense to swing back there and talk about future plans for Ford.
I know that prior to the call in the members only Slack room.
So a shout out to that as well.
A lot of shout outs today.
You know, we just launched the members only Slack room.
So if you're a member of the changelog, if you're a supporting member, then check your inbox.
You got an invite. And if you don't, then email changelog, if you're a supporting member, then check your inbox. You've got an invite.
And if you don't, then email us and we'll get you in.
But before that, Taylor, I asked you about an unofficial Forge CLI, and you hinted at some secrecy.
So is there anything you could share at all?
Well, I'd like to get a Forge API out, you know, which would enable the community to do a lot more than they can in terms of building cool little tools like that. I mean, there are people that have expressed interest in writing,
you know, desktop apps for Forge where you can drag a folder onto your Forge app and it launches
a server and deploys the app and all that. If I had a, if I can get a good API out, of course,
that would enable a lot of that stuff. And then, as I mentioned before, you know, when I wrote
Laravel 5, I actually built a whole new SaaS, which I I mentioned before, you know, when I wrote Laravel 5, I actually built
a whole new SaaS, which I've actually got, you know, sitting on my computer and in a private
repo on GitHub that complements Forge, I would say, in a way, and it's kind of an unrelated
field in terms of application deployment and launching and all that. So I'm going to polish
that up in the next few months and hopefully get it out there
soon. I think that'll be another cool product that people can use with their Laravel apps and even
just generally PHP apps. While we're on the notion of Forge, how much of a linchpin is it to the
developers using Laravel to use Forge? It saves you so much time. It really does. You know, a lot
of people in the PHP world over the past few
years have been really locked into shared hosting. And that's because they don't feel comfortable
configuring their own server. And there was nothing like a Heroku for so long for PHP that
people just bought, you know, this $5 a month shared hosting. And that had a lot of downsides,
like sometimes you might not even have terminal access to that host, or sometimes they don't have Redis, and you really want to use Redis for this app because you like some of its features.
And so people have been really stuck in terms of what they could do with their PHP apps. shared hosting, and is, you know, minimally more expensive than shared hosting. But that gives you
so much more that you can do in terms of even what kind of database systems you can use with
Postgres and then Memcached and Beanstalk queues and all that. It just, you know, I feel like it's
opened the door for a lot of people to do things that they wouldn't have felt comfortable doing.
That's kind of what we're all about, for Lara, at least, is how can we help people turn their dreams into reality? And how can we remove roadblocks from people's development experience?
So whether that's Gulp with Elixir or deployment with Forge or server configuration or local
development with Homestead, how can we get these roadblocks out of the way so that you have a great
experience turning this app ID you have into reality and you know making money and supporting
your family and all that good stuff so that's kind of our our overarching goal so you mentioned
a future sass product to sort of complement forge any anything else you could share
think of like uh you know what's on the horizon what's super secret what's something you can
share today that's enough but doesn't put you to timelines?
We don't want to expose too much, but whatever you can.
One issue with Forge is that I can't deploy something like Forge with Forge
because Forge has very simple deployment facilities
in that it's kind of locked to one server.
It's very limited in terms of what it can do.
When you push to GitHub,
it can run a bash script on your one Forge server,
but that's pretty much it.
So I'd like to see something where,
how can I deploy something like Forge
with a product that's as easy as Forge to use?
So I think there's a pretty good use case there,
and I think it's going to be,
I'm really interested to get it out there, but it's going to be, I think it's going to be, I'm really interested to get it out there,
but it's going to be, yeah, it's going to be interesting.
It's going to be a great way to deploy PHP, I feel like.
Just looking at your Forge page here,
I've also been looking at your Laravel page
and your Laracon page, and I'm just thinking,
these are all really nice designs just on top of it all.
And then I'm thinking, and you also run this cloud,
I mean, it's not your infrastructure,
but you have sysadmin skills, it appears.
Do you do all your own designs as well?
I don't do the designs. I've kind of developed a circle of friends.
I was going to get mad at you for a second. I was like, man, this guy can do it all.
Yeah, I don't do the designs. I did the internal app design of Forge.
I did do, but that's not much more than basic bootstrap customization.
The front page of Laravel, a guy named Jack McDade did,
who actually makes a PHP CMS called Statamic,
which is a flat file CMS, and he helped me out with that.
How about Laracon?
Because your Laracon site has a really cool SVG animation,
at least on desktop, as you hit the Laracon US logo.
So the Laracon stuff is actually done by a group in Amsterdam.
I partner with a guy named Sean McCool.
He does the Laracon EU chapter, the European Laracon,
and I kind of managed the US conference.
And so we kind of went in together this year on the branding and the design
and split the cost of that so that we could have kind of a unified appearance
across both conferences.
And so, yeah, we used Affirm in Amsterdam to do a lot of that branding.
I like it. It's very hot.
Anytime I see an SVG animate, I'm just like, oh, it's awesome.
Anyways. So I guess getting backG animate, I'm just like, oh, it's awesome. Anyways.
So I guess getting back to some of the supporting things,
is this supporting you as well?
Is this profitable, I guess?
Yeah, Laracon does usually generate a little profit.
I couldn't live just on Laracon.
Like if Forge collapsed, I couldn't keep going just on Laracon.
But yeah, it turns a little profit, and it's nice.
It is quite a bit of work, of course, to have a conference and get the speakers.
And, you know, you really want to provide a, you know, obviously you want to provide
a great experience for people that come to these conferences.
And there's so many things that could go wrong at a conference.
So it is quite a bit of work and stress, but yeah, it really goes well.
And everyone seems to have a great time the past few years.
So I'm looking forward to it. You mentioned, well, I guess Jared mentioned earlier that you keep goes well, and everyone seems to have a great time the past few years. So I'm looking forward to it.
You mentioned, I guess Jared mentioned earlier that you keep saying we, and this might be a good time to give a shout out to some people that have helped you this past four years get to where you're at now.
So beyond you, who else is in the Laravel community making sure you don't go crazy?
Yeah, I mean, the first person that comes to mind would be Jeffrey Way, which, I mean, a lot of Laravel's success, I think, has to be credited to him.
And he runs Laracast, of course.
And, I mean, this guy has hundreds of videos on how to do modern PHP and how to do Laravel and even really other stuff, too, like how to do Gulp and some JavaScript stuff.
So, I mean, without that resource, Laravel, I think, would not be as far
along as it is. So he's definitely the first person that comes to mind to think. And then,
of course, you know, my overseas friends with Sean who have kind of maintained that community
over there and been leaders in Europe in terms of organizing community events and conferences.
And there are just so many user groups all around the world. Like I just saw, you know, the London Laravel meetup has like 50 people every time they meet
up. And that's a really nice meetup really from, you know, kind of a young PHP framework. So
there's so many people in the community. Anyone that writes these blogs or organizes these meetups,
I feel like is contributing because they're building a more open and diverse
and inclusive community all around the world.
This might be a good chance for us to give a shout out
to listener Justin Page, who his handle is klvtz on GitHub.
He first pinged us for a Laravel show all the way back in April 23rd.
So Justin, thanks for the idea.
Thanks for your patience.
I know it's been a while since April, but here it is.
At the time, he had mentioned yourself, Taylor, as well as Jeffrey Way.
He also mentioned perhaps a good guest would be a guy named Dale Reese.
He appears to be at least an enthusiast.
Has he been involved? Yeah. Dale was super, super popular with Laravel
4 because of his Code Bright book. He wrote a really popular Laravel book. It's actually the
top grossing book on LeanPub out of all books on LeanPub. So it was a very popular book. And he
actually, because of his work in Laravel, got hired on to what I believe is the fastest growing startup in the UK, which is Just Park or Park at My House, which is kind of like Airbnb for parking where people that have an extra parking spot can basically rent out their parking spot for any period of time. And that's, I mean, it's huge. Like, uh, I saw, um, I think it was many was
even building like integration for this thing into their cars over there. So yeah, it's,
it's a pretty big deal. That reminds me of something that used to happen around Omaha.
Uh, we have the college world series comes here every June, which was kind of one of our bigger
events and used to be in the, this ballpark that was down by these old small neighborhoods with small houses with large kind of gravel driveways and no parking at all.
And there was a huge, huge boon around temporarily selling your driveway out for parking spots for the two weeks of the College World Series.
And then they moved to a stadium kind of in downtown.
And that whole neighborhood was very, very upset about that.
But cool idea.
I can see why it would definitely take off in crowded areas.
Just Park.
I like that.
Yeah.
So he's the CTO of Just Park.
So he is not as involved.
I think he would love to be more involved with Laravel 5's release.
But he's pretty busy these days managing the tech side of that startup.
Awesome, man. Well, great stuff.
This sounds like a huge success,
and we're excited to see where you take it from here.
We do have a few closing questions that we generally ask,
and so I guess we'll go to those now.
The first one is, who is your programming hero?
Lately, it's been, I would say, DHH, the Rails guy,
mainly because I think he's really good
at seeing through a lot of BS
from the programming community
and kind of calling things how he sees it
and keeping things very practical and easy to use.
Because, I mean, I've laughed at, you know,
at one of his keynotes he said, basically,
is the code cleaner, easier to read?
If not, then, you know, who gives a shit about anything else?
And, you know, that's something I keep in mind a lot with Laravel
in terms of keeping things very nice and expressive
and easy to get into.
Awesome.
Next one.
What would be a call to arms or something that you would say directly to the
open source community how they could get involved what they can do with regards to laravel one of
the most valuable things just anyone can do with laravel is if you learn something cool with
laravel or learn something about the framework share it or blog it or make a post or share it at a user group or even start
a user group if there's not one near you. Because the more of that kind of stuff that's in the
community, it makes it even easier for other people to get involved. So the more we're all
sharing our knowledge and sharing the way we do things with Laravel, it just makes the ecosystem
that much bigger and that much brighter and helps bring in even more people.
So definitely share what you've learned.
Speak at conferences, speak at user groups, start user groups, that kind of thing.
Awesome. Last question.
This one's kind of more personal about you, Taylor.
If you were not doing what you're doing now, which is coding Laravel and running Forge, making a living with your code, what would you be doing instead? Hmm. I've, uh, you know,
I've always kind of been interested in like being like a really high end car detailer, like detailing
like Ferraris and stuff. Um, and I was really into that in college. Um, so I would probably do
something like really basic like that with my hands because sometimes I feel like, you know,
I'm in the code so much. And in abstract things. Sometimes just mowing grass or detailing a car seems really appealing.
So I'd probably do something simple like that, some kind of simple work.
That is a first for us for sure.
That resonates with me though because I've told my wife many times that when I retire or something,
I just want to be like a mailman so I can just drive around and enjoy the weather and listen to podcasts all day or i said i didn't be a garbage man which that would
at certain points but professional something simple you know when i was in college i had a
job uh one summer mowing soccer fields and it was honestly like one of the best jobs i've ever had
it was amazing those are always fun right that's that's cool though i'd never um i mean i can i can relate
obviously but just didn't expect you to say that uh detailed cars but i guess if it's a ferrari
and it's a lot more elegant right yeah exactly would it be your ferrari is a thing i hope so
that would be awesome just i just clean my car all day. I clean my Ferrari.
That's what I do. That's what I do for work.
All right. Well, Taylor, you know, it has been a while getting on the show.
Definitely excited about what you're doing here.
I think I don't code PHP, but, you know, I knew that we needed to get you on here because we'd heard so much about what you're doing with Laravel.
And then you mentioned Jeffrey and the rest of the community and you know and obviously uh since
April of last year we were getting uh mentioned to to have you on the show and and get talking
about this and I'm just glad we can finally do that um you mentioned Digital Ocean uh they are
a sponsor not of this show but on that note I do want to kind of tag some sponsors before we close out here.
We got Code Chip, Top Tile, and Clearbit sponsoring this show today.
So with that, fellas, let's say goodbye.
All right. Thanks for having me.
See ya. Outro Music