AMA with Taylor Otwell

Ask Me Anything

Taylor Otwell

Held on

mconrad

Mike Conrad· a year ago

@mconradHacker and Entrepreneur

Great to see you here! How do you maintain and manage so many popular and widely used projects like Laravel, Lumen, Forge, Envoyer etc ?

I've developed a fairly consistent daily routine. I start work at 8:00am and I always tackle my e-mail first and answer all support requests that came in overnight for Forge and Envoyer.

Once I have that cleared I review the Laravel organization PRs on GitHub. I try to keep that under 20 across the entire organization. One key to this is not "waffling" on a PR... if you are leaning "no", it's important not to procrastinate just saying "no".

Once I've finished PRs for the day I don't really go back to them until the next morning. I move onto whatever I want to work on for that day. Usually it's about 9:30am by this point. Lately it's been Spark. I'll work on that for the rest of the day as well as answer anymore incoming support requests that come in throughout the day. Typically I will only check my e-mail once every 1.5 hours or so I'm not distracted by incoming messages. I'll typically also close Slack and sometimes my IM client as well so that I have no notifications to deal with at all.

Thanks for the question!

n4ndan

Nandan N· a year ago

@n4ndanCompassionate Coder

What are your productivity hacks? Building and managing so many successful projects must be stressful at times. How do you make sure you are productive and always up for challenges?

I make heavy use of Wunderlist and Trello to keep track of things. I also try to get a good night's sleep. However, I think one of the biggest factors is that programming is my main "hobby". I don't really play many video games or watch TV, etc. so I end up programming a lot in my "free" time simply because I enjoy it.

I also think the Pomodoro technique can be really helpful as just a daily productivity tool.

Thanks!

What's a feature from another language that you'd like to have in PHP? How could that feature make Laravel more awesome?

I would love to have short Closures that work similarly to the new => syntax in JavaScript.

Something like this following:

array_map(foo => foo + 1, foos);

It would just clean up some noise in the code. I think certain aspects of testing could be cleaned up by the inclusion of a monkey patching extension like "uopz" in the core of the language. However, lately PHP is more focused on "safety" with static types and so on so I don't think such an extension would be viewed favorably in the current PHP environment. :)

Hi Taylor, thank you for your time.

I have a couple of questions here, hope that you can answer it.

  • What do you use to develop Laravel? Are you still using Sublime Text? If so, can you share your plugins/template/configuration?

  • What is the next awesome feature that you're going to implement in Laravel?

  • What do you think of AdonisJS http://adonisjs.com/ (NodeJS Framework inspired by Laravel)?

  • With what you gain from Envoyer and Forge did you work full time on Laravel?

  • I use Sublime Text to do all of my PHP development. The only plug-in I use is SublimeLinter for PHP syntax errors.
  • For Laravel, I'm always just trying to think of ways to get rid of boilerplate code and make things easier. Many of those ideas have been built into Spark since they wouldn't really be acceptable in a generic full-stack framework. Spark allows me to be more opinionated than I could be in the Laravel framework itself.
  • I think Adonis looks cool!
  • Yes, I work full-time on Laravel and am fully supported by revenue from Forge and Envoyer.

How do you manage your family and your popular products? How may hours do you work a day? What lifecycle/software tools do you follow on your products?

During weekdays, I almost never work past 5pm, and I only get back on my laptop to answer support requests at about 9:30pm once the kids are in bed and typically clearing out the support requests that have come in between 5pm - 9:30pm only takes about 10 minutes.

On weekends, I still spend about 30 minutes in the mornings clearing out support requests for Forge and Envoyer. I can sometimes sneak in extra time on the weekends if the kids are napping or we have some downtime.

I work 8am - 5pm so just a typical 8 hour work day.

How will php7 release influence Laravel? What do you think about using docker for Homestead?

PHP 7 is a big deal, especially since it basically halves the amount of servers you may have needed to run your application under PHP 5.x. That can save businesses a lot of revenue in server costs. And of course Laravel benefits from those speed improvements.

I have not done much experimenting with Docker so I'm not sure how it could be incorporated into Homestead.

Hi Taylor, What did you do before you create Laravel and how did it lead to creating it ?

Before I created Laravel I worked for a large corporation writing .NET and COBOL. I use both .NET WinForms and ASP.NET MVC. I knew I wanted to eventually start my own business and hosting .NET wasn't very simple at the time. I knew PHP was simple to host and I wanted some of the features I had used in .NET MVC in a PHP framework, especially automatic dependency injection via Reflection.

My first PHP open source project was actually a reflection based IoC container I released for CodeIgniter in 2010. AFAIK, this was the first reflection based container in PHP. Then I wrote Laravel after being unable to cleanly extend CodeIgniter to support this kind of dependency injection.

But, ultimately, the goal was simply to have a platform to quickly launch my own business and help others do the same.

Being a creator of such a successful framework means commitment to the language it's written for. Given how innovative you are, have you ever been tempted to jump on another language, like Ruby, but you knew you couldn't because of Laravel?

What do you think about the opinion that PHP is historically one of the worst languages?

p.s. love Laravel, thank you very much for making our lives easier.

When I first started with PHP, I did sometimes wonder if I should use Ruby. I think many aspects of Ruby appeal to me more than PHP since I prefer dynamic languages and the PHP ecosystem has gravitated more towards strongly typed features lately as being the "best practice".

However, overall I really enjoy PHP and enjoy using it. I especially love Closure and traits and the speed improvements in PHP 7.

How do you want to see the Laravel framework evolve over the next 10 years? What long-term features would you love to see integrated, or other kinds of software/cms/tools that you'd love to collaborate with?

It's hard to say how things will evolve over 10 years. Laravel will turn 5 years old this year and has changed so much since it was first released. I think one thing that helps Laravel is we are never scared to push forward. I will always be listening to the community and identifying pain points to make sure that Laravel stays ahead of the curve so to speak.

rk63

Raj Kamal· a year ago

@rk63Software Developer

When i was looking for js frameworks, I got paralysis from the large amount of choices. In the end, Because you and jefferey way recommend vue, I tried Vue, loved it and stopped searching further.

But I am curious, what exactly made you pick up vue over other js frameworks?

Vue is amazing. I think it's great because I can just sprinkle it on a single page without having to even have some fancy build tool or CLI or anything. It's just really fast to get started and be productive with even if you have never used another JS framework in your life.

It's the perfect mix of usability and power. I think because it is so approachable and has great documentation it will continue to gain popularity very quickly.

ianmcquee

Ian McQueen· a year ago

@ianmcqueeFull stack web developer in Detroit.

Juggling multiple projects myself, how do you time block between projects, jump in and out of the code, and remember where you left off? Roadmaps? Timelines? How do you deal with "coder's block" when you're feeling uninspired with a project?

Typically I will keep a text file in the project with where I "left off" to help jog my memory.

I do use Wunderlist and Trello quite a bit as well to keep a backlog of things I want to work on. If I'm feeling uninspired on a project I don't work on it. I don't like to work on things in that situation because I think forcing yourself to work when you don't feel inspired can lead to burn out. Of course, sometimes you have no choice but to work on something.

If it not happens until 25th of March, when will Spark be released? :)

the world need a nodeJS version of laravel :D

That would be cool!

Out of Beanstalkd, Amazon SQS, Redis what do you recommend for implementing async queues in Laravel?

I personally use Amazon SQS, but I think many small applications should probably just use the database queue driver. It's the simplest to inspect locally and is of course "free".

Do you think you will still lead Laravel in about 5 years? Any plan about a lead team?

I will continue leading Laravel as long as people are interested in using it. I don't know when or if Laravel will ever have a "lead team" but I suspect I will always have the final say on every PR.

freekmurze

Freek Van der Herten· a year ago

@freekmurzePHP Developer and Laravel enthousiast af spatie.be

  1. What are your thoughts on Docker? Would you consider moving the Homestead experience™ from Vagrant to docker?
  2. In a the last 12 to 18 months a lot of "big" functionality was added to Laravel. Things like the cloud filesystem and ACL. Are you considering adding more big chuncks of functionality like that?

I have never used Docker but if I use it and it is easier for the average developer than Vagrant then I will move to it.

A lot of the more opinionated pieces of functionality I want on every project I have baked into Spark instead of Laravel. Spark allows me to be more opinionated than I could in a traditional full-stack framework.

sa7bi

Sahbi· a year ago

@sa7biFull Stack Web Developer

What are the tools that you use to stay (or to force you to) productive ?

I currently use Wunderlist and Trello mainly. I use Trello for daily planning during the week and Wunderlist more for a backlog of to-do items I would like to tackle soon but aren't scheduled to a specific day.

When starting to plan out a new project do you use any tools to help you map out the structure? Or is it scribbled on paper/all planned mentally. I often start a project and think I have it planned out then have to keep making changes to my plans because I've overlooked something. Can you offer any tips to avoid this?

I scribble out notes on a notepad first and just try to map out an overview of the project. I also try not to over-architect things too much if I'm just feeling something out. Ripping through 10 layers of abstraction is a lot harder than just changing simpler code. Once I figure out a system that is working I can always come back later and "clean it up".

What percentage of your time is spent coding, and what percentage is spent managing all the products you've created? Which side do you prefer more?

I spend about 1.5 hours a day "managing" and about 6.5 coding. Some days I may even get more coding time than that depending on how many pull requests have come in overnight, etc.

How do you motivate yourself to start a new project or in general to start working on your current project?

I just like tinkering with things. I like building products as well. I love putting together a well built, well marketed, cohesive product and shipping it to people. So the very idea of doing that is usually my motivation.

Hi Taylor, glad to see you here. How did you manage to build such a huge framework on your own? I've seen a few videos of yours where you mentioned you made early Laravel version for a personal project while you were in working full-time somewhere else(if I recall correctly). What are the problems you faced while developing Laravel regarding coding practices as Laravel has most cleanest code including well formatted comments. Any tips, resources or suggestions for newbie programmers like me who are mostly dependent on tutorials from Jeffrey Way and StackOverflow.

Thanks

I definitely owe a lot of Laravel's success to the community and their passion about it. Every video tutorial or blog about Laravel helps spread the framework. Building an ORM was definitely the most challenging aspect of building Laravel. Most other aspects have seemed fairly easy in comparison.

Do you have a idea when Spark would be release and how much it will cost? Do I have to pay for Spark for every different project that I want to use it or just a single pay and I can use it for all my projects?

Your project is amazing, and so is your attention to detail. Thank you for all your hard work.

I have no serious questions, so how about a less than serious one: When using your now famous block comments style of "3 characters less than the previous line", do you sit with www.thesaurus.com open trying to find words that fill the space correctly?

Hahaha... I am very fast at finding the right words I need. I know common hacks to shorten or lengthen a line by 1-2 characters. I know that changing "we will" to "we'll" will save 2 characters on the total line length for example. I can write a comment like that almost as fast as I can write a normal comment.

Why did you choose a job as a developer?

I've always enjoyed messing with computers since I was a kid so studying IT in college was a natural choice. Once I graduated from university I was offered a programming job and took it!

When will spark be released?

Will laravel have in the future more generators. For example for crud operations? I find myself wasting a lot of time with them, doing copy paste pretty much.

I prefer to leave more opinionated things like that up to the community because it would generate a lot of maintenance overhead trying to make everyone happy.

if you have enough resources (developers, fund,etc) what would be the next thing you will invest one?

As you always like simple and clean code, what features or stuff you think php should have to power Laravel and any other applications?

This year if things go well I would like to explore bringing on paid help to help maintain Forge and Envoyer.

I think PHP should have short Closures that don't require the use of "use".

How do you iterate? When developing a feature or working on some project how do you build it? Do you make small changes or write lots of code then test or try?

I tend to spike out features first and then come back and clean them up. I'll take a first pass at a feature and write it somewhat "messy" just so I can see how I like it once it's implemented, then I will circle back around and decide how I actually want to implement it for release.

I've asked this on twitter before but had no answer. Laravel always creates Carbon instances directly, not through service container, which makes it harder for us, developers from non-English speaking countries, to use localized carbon or jenssegers/date. Is there something that stops you from changing this?

No it could definitely be changed.

Hi Taylor,

Love your work !

What's your personal opinion about CQRS in a big (or medium ~1year dev) project involving 3-4 developper ?

Do you think it's too overwhelming for at the end just some use cases.

Maibe not so much a bad idea because we have to separate "concernes" at some point but there are many other approche less overwhelming.

I don't think CQRS is that bad if your app warrants it. If it makes your life easier than go for it - if it becomes a pain in the butt then get rid of it.

I'm no longer a PHP developer and a bit out of the loop with what's happening in the PHP world; so out of curiosity, how different are Zend and Laravel?

I have never used Zend so I don't think I could give you a fair comparison. Laravel simply tries to focus on developer happiness and ease of use. Note that this does not mean that it only offers simple functionality. Many of the features of Laravel (auto resolution IoC, async queues, event broadcasting) are unique among all other PHP frameworks and are fairly advanced.

How many hours would you say you invested in the initial Laravel Public Release? How were you able to juggle the project and everyday life responsibilities? Anything that kept you motivated? What setbacks did you have?

I worked on Laravel for about 6 months before the first public release. I spent a lot of nights coding. Programming is my main "hobby" that I do for fun so it wasn't hard to stay motivated. I was just doing what I enjoyed the most.

Deciding on which ORM to use was somewhat of a setback because I wanted an ActiveRecord ORM but there wasn't any obvious choice at the time so I had to write my own.

fakiolinho

Fakiolas Marios· a year ago

@fakiolinhoFrontend Developer, huge fan of ES6, ReactJS, Redux and AngularJS framework.

Taylor first of all thanks for affecting so much my career.

So, how did you manage to handle your time schedule when started developing Laravel as a side project of yours some years ago? I mean apart from your day job, your family routine etc. Too many working hours right?

Before I worked full-time on Laravel I would routinely code every night from 9pm to midnight or even 1am. I would do this probably 4 nights a week easily. It was the only way to continue building the framework and building Forge.

In one sentence, whats the best advice you can give for running your own small business or mindset as an entrepreneur?

My own secret has been to scratch my own itch. Laravel, Forge, and Envoyer all scratch my own itch. Spark does as well. If I'm solving my own problem I just find I can solve it a lot better than trying to guess at other people's problems.

With FORGE,do you plan to partner up with more VPS servers for instant auth such as Vultr, 100TB, Netelligent, etc..?

I wouldn't mind doing so. The Custom VPS option of course allows you to always integrate with other providers.

I have almost finished integration with Vultr but because of how fluid their availability is across regions it is a little trickier than the other providers.

Right now, the main options for finding laravel compatible composer packages are really just Packagist and Packalyst. Do you have any plans for creating a more curated set of Laravel compatible PHP packages?

I haven't really thought about that but it could be something worth considering in the future.

Bleeky

Quentin· a year ago

@BleekyTraveller, coder and science enthusiast.

Hi Taylor, thanks for your time, and for the awesome work you do ! Where did the idea to create Lumen as an alternative to Laravel came from ? Don't you think most of the modern Frameworks should do the same and propose in the same time more light and "toolbox-like" framework like this ?

I am thinking of Angular, which is becoming way to overloaded nowadays, and will push you to use Frameworks like Backbone more for example.

Thanks a lot !

I got the idea for Lumen when I was developing Envoyer. I had to write a micro service using Slim and while I think Slim is really cool, I wanted to just drop something in with Laravel's database abstraction layer, better error handling, etc.

So, I coded Lumen to give a Laravel flavored Slim with a few more packages out of the box like validation, database, etc. that are almost always needed even on micro services.

I'd love to hear about Laravel's growth. Laravel has a great community but how did it get to the point it's at today?

Who were the first users? How did you convince them to try a new framework? Who used it in production first? How did you generate interest/traction?

Thanks

I still remember some of the first users by name and always enjoy if I see they are still around. My first promotion of Laravel was on Forrst and Reddit.

I think Laravel continued to gain traction because I was very involved in its development, responding to feedback, etc. It also generally just came at the "right time" for PHP. Older frameworks built before PHP 5.3 were dying out or suffering from lack of documentation and Laravel was written exclusively for PHP 5.3 and has really, really thorough documentation even from the 1.0 release.

What is something inside of Laravel that is used extensively that you would want to see used more often in other projects? I.e. helper functions, Collections, Eloquent, etc.

The collections are very powerful and are applicable to basically any project. I of course love using Eloquent and would prefer to use it on any PHP project I work on.

What apps/software do you use to keep yourself organized? What does your productivity workflow look like?

I use Trello as a daily to-do list (I have a column for each day of the week) and Wunderlist for a backlog.

Hi Taylor,

What tools/apps do you use for wireframing and for project management?

Thanks

Pencil and paper mainly :) For project management I use Wunderlist and Trello.

prashantp26

Coder Yeti· a year ago

@prashantp26Healthy Code, Clean Design : CoderYeti.com

Your videos from pre L4 days hosted on Vimeo (under Userscape account I think) were great. You should do guest videos on laracasts on the same vein... what say?

Yeah I should :)

iolson

Ian Olson· a year ago

@iolsonSenior Software Engineer

What kind of server infrastructure runs Forge and Envoyer? Looking at running a SaaS application, and wondering what kind of services you run for these to keep everything in sync.

I use DigitalOcean and both of the services have 3 servers a piece (1 Web, 1 DB, 1 Worker). All of them are 4GB instances. Envoyer also has some smaller 2GB instances in various regions for the health checks.

I also use Cloudflare, Mailgun, and Amazon SQS for most services.

Hi Taylor, thank you for your Framework.

I have 1 question. We are a business running Production App on top of Laravel. Without Laravel, it would have taken us 3x more developers with 3x more headaches. Thanks for making our lives easier. There were many instances when laravel saved our lives. In Enterprise B2B it really helps to have a reliable framework. When we show the server-response times to our clients, it closes the deal faster. There was no question, just wanted you to read it. Thanks.

Thanks! :D

Hey Taylor! With so much new stuff going on these days with JS, go, and other new/popular languages, how do you feel about the longevity of PHP and it's place in the future of web development?

I think it will be around for a long time. In my opinion it's still the simplest way to get started launching and hosting a web application for cheap. That keeps a lot of developers using it and it's a very easy language to learn.

What inspired you to write laravel? Why not use symfony for your needs instead of building on it? What ultimately lead to you saying - ya know what, this laravel.

When reading documentation for other frameworks, if I couldn't figure out how to authenticate a user within about 5 minutes I just gave up and moved on. I figured such a common use case should be very easy. Basically I felt like a lot of common situations should be much easier across the board, and that still drives Laravel to this day (queues, Elixir, validation, Spark, etc.).

So we have Laravel, Lumen, Forge, Envoyer & Spark (soon) what's next?

I will think about that once Spark is released. I plan to take a few weeks of downtime to figure out where to go from here :)

What is the best way to approcah when we have to organize ideas and write code. What i meant was, how do you thibk when you have to put everything toguether.

I think a pencil and paper is still one of my favorite ways to sketch out ideas.

Hi Taylor, how did you choose to use so many components from Symfony?

It just made sense not to re-invent the wheel on something like HTTP parsing. We can still build on top of it to offer convenience methods, etc. I choose to use Symfony for some of the more "boring" parts of the framework and we write our own custom components for more interesting things like database access, templates, queues, authentication, etc.

Besides laravel are there any other language/framework u like/recommend?

I enjoy using JavaScript but haven't tried any of the full-stack JS web frameworks. I of course think Rails is pretty cool.

What are the big picture things that drive you? Trying to make a better world, just putting food on the table, for the love of the code, that sort of thing?

I love building products that help people and scratch my own itch. I love taking something really annoying and just making it super simple and easy to use. And, of course, I like providing for my family so that drives me.

Is there a reason queued jobs serialise php? as this stops it being language agnostic.

This could be something that is improved in future Laravel versions.

Would you consider switching laravel to golang rather than php?

Can you talk (type?) a little about starting your business? Was it a lot of late nights at first while you worked a "real job?" When did you finally take the plunge and go off on your own?

Yes when I was still working for someone else I would routinely stay up until 1am... probably about 4 nights a week. I eventually went part time at my job and then eventually full-time on Laravel so it was a slow transition that allowed me to get used to working full-time on my own before diving all in.

Hi Taylor.

What about future of Laravel ? can we use hack language ?

Laravel should work fine on the Hack language. Regarding the future, I will just continue to listen to the community and try to keep making everyone's lives easier :)

Hi Taylor. Do you have an idea to support continuous integration may be as a Envoyer service. something like PHPCI integration?

I typically suggest people add a hook on the end of their CI service to call their Envoyer deployment URL.

krapans

Artūrs Krapāns· a year ago

@krapansSenior Software Developer

Hi, Taylor.

Would like to know, is there any ideas about creating some chunked responses from backend to front like it's in Play framework? Basically allowing serve data as soon as possible for a user without waiting for all functions to finish.

P.S. Yes, there are solutions do it from a front end and request chunks from there, however, I'm just curious if in laravel plans is something like that as it's in PlayFramework.

Reference: https://www.playframework.com/documentation/2.4.2/JavaStream#Chunked-responses

I think you can do this using Response::stream.

What are some other projects/technologies/side projects you are working on these days?

I always have some tricks up my sleeve. Of course Spark is essentially completed and nearing release. But, once Spark is released I plan to take a few weeks of downtime and think about what I want to work on next.

Best perk(s) of being kinda famous?

I actually live in a fairly small town in a state that does not have a large PHP scene (Arkansas). So, i don't experience any aspects of "nerd fame" on a regular basis.

But, the best perk is by far just having a large audience of followers on Twitter. It's of course very nice to be able to launch an idea to 40,000 interested followers without having to pay for advertising, etc. I am very thankful for that.

The next versions of Laravel will support the macaddress and inet datatypes from Postgres?

Possibly. I will consider any pull request that is submitted.

What is the best way to star refactoring and how do you think when you have to take this duty on you?

I just tend to focus on one piece at a time and not get too lost in the forrest so to speak. That makes it more manageable.

Alright, thanks for bringing your thought to us and your way of thinking.. As a new tools

Thanks for doing this, Taylor. What's your thoughts on Statamic 2 CMS and using Laravel for flat files?

...and how can I become more zonda?

I read that you're using Trello and Wunderlist to organize your project. I created a SaaS called Workstack (workstack.io) built with Laravel 5.2 that I hope you'd like to try. If you want, consider a free lifetime subscription already yours! :) Since I used the latest version of Laravel and Cashier, how difficult do you think it will be for me to use Spark on it, on a scale from 1 to 10? I'm crossing my fingers really hard in the wait for the magic moment of the Spark release! :)

Thanks again for all your hard work and never stop to amaze us with great tools like Envoyer, Forge and Spark!

Hi Taylor,

do you have plans to introduce more tools like Forge, Envoyer but for enterprise ?

Possibly.

What practises developers tend to do that make reviewing Pull Requests harder on you? I'm not asking about coding practises only, I mean in general.

Any advice you have for someone who wants to contribute to any of your open source projects? (particularly Laravel)

Hey Taylor, thanks for awesome job done with Laravel/Lumen. Can you tell us what will be next big thing in Laravel ? And will Laravel be refactored to use PHP7 strict mode? Thanks for answer!

Do you sometimes feel you are building tools but don't have actually enough time to play with them ?

loading ...