Chris Morrell Profile
Chris Morrell

@inxilpro

2,032
Followers
421
Following
656
Media
6,422
Statuses

Father of two. Mostly talking about PHP/Laravel/React on Twitter. He/him.

Philadelphia, PA
Joined April 2008
Don't wanna be here? Send us removal request.
@inxilpro
Chris Morrell
11 months
Like the idea of UUIDs in #Laravel models, but hate the giant, hyphen-separated strings? I'm about to release a new implementation of Snowflake IDs that give you globally-unique, ordered, numeric IDs. (Same as what Twitter and Discord use.)
Tweet media one
15
57
383
@inxilpro
Chris Morrell
1 year
Oooh. Just hit a UUID collision.
39
11
272
@inxilpro
Chris Morrell
2 years
There's so much more that I want to eventually open-source, too. Like check out this beautiful date-picker…
14
8
274
@inxilpro
Chris Morrell
6 months
How many times a week do you dump a model in #laravel and then have to scroll down to the attributes and expand them? laravel-dumper brings the model attributes to the top of the dd() output for easier debugging.
Tweet media one
20
10
213
@inxilpro
Chris Morrell
2 years
And here's the current API. The wizard now supports Laravel-style rules for each step! 🔥
Tweet media one
2
23
162
@inxilpro
Chris Morrell
2 years
Alright. I just tagged the first stable pre-release of Laravel Dumper: Just `composer require` and instantly get improved `dd()` and `dump()` output for most Laravel core classes (like Models, Query Builders, the Service Container, etc).
8
31
154
@inxilpro
Chris Morrell
1 year
One of these days I'm going to get around to the 1.0 release of this universal address input component…
8
6
138
@inxilpro
Chris Morrell
2 years
Hoping to launch the 0.1 release of Dawn by early next week!
Tweet media one
7
12
138
@inxilpro
Chris Morrell
2 years
I find that 90% of the the time, the @laravelphp commands that I write follow the exact same pattern: - Query some data - Perform some operation on each row Internally, we have a trait that simplifies this immensely. I'm working on open-sourcing it right now.
Tweet media one
11
13
139
@inxilpro
Chris Morrell
3 months
Imagine a world where you could use `x-rules` in @Alpine_JS with @laravelphp -style validation rules and get browser-native errors… 👨‍🍳
11
8
138
@inxilpro
Chris Morrell
2 years
I'm so excited about the release of #Laravel 9. A bunch of folks have outlined the major highlights of this release, so I want to take a second to talk about the few contributions I've made and why I'm excited about them! 👇
3
22
132
@inxilpro
Chris Morrell
5 years
My new favorite custom @tailwindcss utility.
Tweet media one
4
13
121
@inxilpro
Chris Morrell
5 months
I'm excited about this one! I just submitted a #Laravel PR that would add support for markdown views!
Tweet media one
8
8
118
@inxilpro
Chris Morrell
26 days
The fact that I can create such a flexible custom @Alpine_JS directive in ~10 mins is just incredible.
Tweet media one
4
9
111
@inxilpro
Chris Morrell
11 months
90% of my console commands follow the same process: 1. Grab data (usually from the DB) 2. Process that data row-by-row Our `glhd/conveyor-belt` package makes it so nice to write those commands, and comes with dozens of convenience features. Just released version 2.0!
Tweet media one
2
14
110
@inxilpro
Chris Morrell
2 years
Some really solid open-source packages that've come out of our internal Laravel needs:
1
22
100
@inxilpro
Chris Morrell
6 months
PSA: If your PHP Github Actions build is failing right now, it's because the psr extension was (accidentally?) added to o the very popular setup-php action. You can fix it by adding ":php-psr" to your extensions list.
Tweet media one
12
34
100
@inxilpro
Chris Morrell
1 year
Alpine.js is so so so good.
7
3
97
@inxilpro
Chris Morrell
11 months
Thinking about adding another custom Blade directive to our app. Thoughts?
Tweet media one
5
2
92
@inxilpro
Chris Morrell
3 years
So excited about the new Query Builder contract in Laravel 9. Can't wait!
Tweet media one
Tweet media two
1
19
85
@inxilpro
Chris Morrell
2 months
Is `Str::snake` not EXTREME enough for you? Introducing, `Str::extremeSnake` 🧨🧨🧨🧨 (Gist incoming…)
Tweet media one
5
3
78
@inxilpro
Chris Morrell
11 months
Just watched @JustSteveKing , @brendt_gd and @bobbybouwmann talk about #Laravel structure on @laravelnews … If you want a nice balance between the "standard Laravel structure" and a more domain-oriented approach, check out `internachi/modular` ✅ Split logic into isolated
Tweet media one
3
9
78
@inxilpro
Chris Morrell
10 months
I don't think enough people know about `base_convert` in PHP. It's a neat tool if you need to squeeze something like an ID into fewer characters. Here's a fun example: generating unique 11-character slugs for a URL shortener.
Tweet media one
2
11
76
@inxilpro
Chris Morrell
11 months
Imagine you could wrap any part of a #Laravel template in a special blade component and have that content immediately editable without any other changes… 😎
7
5
75
@inxilpro
Chris Morrell
11 months
Folks were talking about prefixed ULIDs in response to my Snowflake post the other day. This is just a guess, but I think something like this would work:
Tweet media one
4
3
74
@inxilpro
Chris Morrell
9 months
TIL about `whereMorphedTo` in #Laravel Eloquent… It handles both a model class or a specific model! ❤️
Tweet media one
1
14
67
@inxilpro
Chris Morrell
4 years
🔥
Tweet media one
Tweet media two
Tweet media three
3
6
63
@inxilpro
Chris Morrell
3 years
Tweet media one
3
6
62
@inxilpro
Chris Morrell
2 years
Alright. I just tagged version 0.5.0 of Laravel Dumper, with Laravel 9 support and a minor change to how custom casters are registered. I plan on tagging the first stable release in a day or two unless any bugs turn up.
0
8
62
@inxilpro
Chris Morrell
2 years
Nice… got a working `x-wizard` @Alpine_JS directive. Here's the markup for this demo: I'm going to clean up a bit more and try to publish next week.
1
9
61
@inxilpro
Chris Morrell
7 months
I know that there are reasons for this, but the fact that I can't grab @tailwindui examples in Blade/Alpine really sucks. I know @calebporzio has talked in the past about wanting to make this happen. I would 100% pay extra for this.
16
3
59
@inxilpro
Chris Morrell
3 years
This is promising. Imagine HMR for @laravelphp
2
7
59
@inxilpro
Chris Morrell
4 months
So I've been thinking about putting together a talk about maintaining the same PHP app for 25+ years. Is this something folks would be interested in? If so, are there any particular questions that you'd like to have answered?
8
2
59
@inxilpro
Chris Morrell
1 year
I've seen a bunch of people talking domain-oriented #Laravel structure lately. I'd encourage folks to check out `internachi/modular`… Modular lets you stick to Laravel conventions, while still breaking your app into logical chunks.
Tweet media one
6
10
58
@inxilpro
Chris Morrell
6 months
Want the simplest way to add breadcrumbs to your #Laravel app? Check out glhd/gretel — configure breadcrumbs directly in your routes, and display them with accessible markup (w/ support for most major UI frameworks).
Tweet media one
5
4
56
@inxilpro
Chris Morrell
10 months
Alright. I'm not quite ready to tag 1.0, but I'm pretty sure this is the locked API… special✨ lets you use enums to access specific database records—think of it almost as eloquent-backed enums. I'd love some feedback before I commit to 1.0!
Tweet media one
5
4
57
@inxilpro
Chris Morrell
2 years
Want to register your own `dd()` customizations? In the latest laravel-dumper release you can do just that.
Tweet media one
4
8
55
@inxilpro
Chris Morrell
4 years
Coming soon to @phpstorm : @Alpine_JS support! I just submitted the first working version to @jetbrains so hopefully it'll be live in a few days.
6
3
54
@inxilpro
Chris Morrell
2 years
Alright. Tagged the first version of @​glhd/alpine-wizard just now! Check it out: Try it on CodeSandbox:
Tweet media one
1
11
50
@inxilpro
Chris Morrell
10 months
I think about custom relationships in #laravel all the time, and I just had a new idea that I may explore. I'm curious, though—does something like this look appealing to other people at all?
Tweet media one
9
3
50
@inxilpro
Chris Morrell
3 months
PHP x NYC has started!
Tweet media one
5
1
50
@inxilpro
Chris Morrell
15 days
You can easily build a feature-rich app with just Laravel. Right now, you can’t with just Remix. That’s the difference. React can benefit from a Laravel backend. Laravel can benefit from a React front end. They’re technologies that go *great* together. But if I had to choose
@mjackson
MJ
16 days
A better way to say this is: If Rails and Laravel are so “full stack”, then why is everyone writing their frontends with React?
78
14
291
5
3
48
@inxilpro
Chris Morrell
2 years
Tinkering with an @Alpine_JS wizard directive, and having a little trouble naming things. We need to know when each step applies and when it's done. I don't love `x-wizard:done` — anyone have a better name?
Tweet media one
8
2
46
@inxilpro
Chris Morrell
6 months
This is a cool approach to SEO-friendly routing! One way to level this up even further would be to use hashids to generate URL-friendly suffixes that map 1:1 to your primary keys. Something like…
Tweet media one
@aarondfrancis
Aaron Francis
6 months
📹 Generate self-healing URLs with Laravel! (And throw exceptions that render as HTTP redirects 🌶️)
Tweet media one
16
11
130
3
3
42
@inxilpro
Chris Morrell
2 years
Alright. I just tagged the first pre-release of Dawn: 1.0 is a ways off, but what's there is representative enough that I'm OK posting about it. TODO: 🔲 Finish Dusk-compatible API 🔲 DX improvements 🔲 Docs 🔲 Cross-platform testing 🔲 Lots of cleanup
4
10
40
@inxilpro
Chris Morrell
3 months
OK, I just made the repo public for my *very* early @linear SDK for PHP/Laravel. It's built on top of Saloon by @carre_sam and @spatie_be 's laravel-data package, so you get a ton of functionality out-of-the-box. All data is built directly from the GraphQL definition, so the
Tweet media one
6
5
43
@inxilpro
Chris Morrell
8 months
I feel like a static "qualify" method on your eloquent models is a huge quality-of-life improvement as soon as you need to do complex joins or subqueries…
Tweet media one
4
4
41
@inxilpro
Chris Morrell
2 years
In our app, we have the concept of a "record locator." Here's an example: BB1-1KO-E1EJO5 From this string I can get: - The model class - The model ID - The date that model was created - The "owner" of the model if it has one Is this something other people would use?
11
0
38
@inxilpro
Chris Morrell
2 years
Registering resource routes with #Laravel and Gretel is so freaking nice…
Tweet media one
1
10
37
@inxilpro
Chris Morrell
4 months
My wife and I just got dressed up to go out to dinner and see a concert. 10 mins after the babysitter was supposed to get here (and she’s ALWAYS on time), my wife asks, “you scheduled her for tonight, right?” Turns out not only did I not text the babysitter, but I also never
10
0
37
@inxilpro
Chris Morrell
2 years
Just built a very cool internal artisan command. We have a daily scheduled task that takes a snapshot of our production database, anonymizes it, and exports it to a S3 bucket. No we can just run `php artisan dev:setup` to quickly import those dumps locally whenever needed!
Tweet media one
1
1
37
@inxilpro
Chris Morrell
2 years
So much better…
Tweet media one
2
1
36
@inxilpro
Chris Morrell
2 years
Having a lot of fun building the navigation UI. Another pretty complex set of interactions made possible thanks to @Alpine_JS ❤️
1
1
36
@inxilpro
Chris Morrell
11 months
It seems like this would be relatively simple to add to #Laravel belongs-to relations. `orderByRelation` would be a lot trickier to do on other kinds of relations, though. Is this something folks would use if I PR'd it to the framework?
Tweet media one
2
4
35
@inxilpro
Chris Morrell
2 years
Ooh… now that Laravel has its own VarDumper implementation, I could potentially PR the features in laravel-dumper to core. What do you think?
7
6
34
@inxilpro
Chris Morrell
7 months
For folks who didn't have the privilege of watching @DCoulbourne 's announcement at @LaraconAU : check out the Verbs docs at — they're still a work in progress, but they should give you a good sense of what Verbs is about!
1
5
32
@inxilpro
Chris Morrell
11 months
In our app we don't actually store prefixed IDs, but we do provide a version of them to end-users. We use "hashids" to convert regular auto-incrementing IDs to non-sequential alphanumeric IDs. You could then easily prefix those if you wanted…
Tweet media one
@inxilpro
Chris Morrell
11 months
Folks were talking about prefixed ULIDs in response to my Snowflake post the other day. This is just a guess, but I think something like this would work:
Tweet media one
4
3
74
1
2
33
@inxilpro
Chris Morrell
1 month
If @spatie_be can do it, why can't I? 😛
6
3
33
@inxilpro
Chris Morrell
2 years
5/11 Next: In Laravel 8, a validation error would result in a 𝚅𝚊𝚕𝚒𝚍𝚊𝚝𝚒𝚘𝚗𝙴𝚡𝚌𝚎𝚙𝚝𝚒𝚘𝚗 with the message: "The given data was invalid." In Laravel 9, instead you'll get a message like: "The first name field is required (and 2 more errors)" 😍
1
0
31
@inxilpro
Chris Morrell
7 months
@DCoulbourne @taylorotwell @joshbedo1 @charafmrah This poor kid was just venting because he doesn’t know how to use PHP, and look what he got himself into…
2
0
31
@inxilpro
Chris Morrell
7 months
Also, isn't the Verbs logo (by @NateGio ) amazing!?
5
3
30
@inxilpro
Chris Morrell
3 months
All of this with just…
Tweet media one
3
4
31
@inxilpro
Chris Morrell
1 year
Does anyone have a favorite APM service for #Laravel apps? We're considering New Relic and Datadog, but I would love something less excessively enterprise-y if possible.
24
1
30
@inxilpro
Chris Morrell
1 year
I've had an idea for a #Laravel -related podcast for a while… I wanted to sit down and really think thru topics that I bump into somewhat regularly, but never feel important enough to really "get right." Introducing… Just published episode 1!
8
7
30
@inxilpro
Chris Morrell
1 year
@tomschlick I'm in a trollish mood…
6
1
30
@inxilpro
Chris Morrell
6 months
Alpine is the spiritual successor to jQuery in all the good ways. Literally every site that's not built fully in JS should probably be using Alpine for sprinkles of interactivity.
@flaviocopes
flavio
6 months
Ok so I tried @Alpine_JS for something more than an hello world, and I'm hooked
36
9
227
4
0
29
@inxilpro
Chris Morrell
2 years
All-in-all, I'm very happy with where the API for @​glhd/alpine-wizard landed. Check it out!
2
4
29
@inxilpro
Chris Morrell
1 year
Has anyone tried to make Vercel for #Laravel ? Like, just point it to a Laravel repo and you have a site? Forge is great, but requires managing servers. Vapor is great, but is expensive for hobby projects. Fly is close, but every time I’ve used it it has NOT been seamless…
14
1
28
@inxilpro
Chris Morrell
2 years
OK, I think I just had a moment of genius. The one thing that's annoying about using @tailwindcss components is when you want to provide a default value that can be replaced by a custom value if necessary. I'm tinkering with a "default" modifier that could solve that.
Tweet media one
6
5
27
@inxilpro
Chris Morrell
7 months
When event sourcing is appropriate, it can feel like magic. I just built an internal expense tool, and thinking about processes (verbs) rather than moments in time (nouns) was so so much easier. When @DCoulbourne launches Verbs at @LaraconAU I hope more folks get to enjoy this!
Tweet media one
1
4
28
@inxilpro
Chris Morrell
2 years
Here's a fully working Dawn browser test, using a stock @laravelphp installation with jetstream and @LaravelLivewire . I had to nail down a couple of bugs, but Dawn is starting to feel more and more solid!
1
2
27
@inxilpro
Chris Morrell
4 years
Alright. Anyone want to kick the tires on before @freekmurze shares it with thousands of people on Wednesday? 😬
Tweet media one
4
4
27
@inxilpro
Chris Morrell
1 month
@shrutibalasa I've been using porkbun for a while and they're pretty good. The prices are competitive and they offer things like free whois privacy, which is nice.
4
0
27
@inxilpro
Chris Morrell
5 months
TIL if you type "edit" in a #laravel tinker session, it'll open your editor to write out a multi-line code block. Very cool.
1
3
27
@inxilpro
Chris Morrell
2 months
So a couple days ago I posted about something that I couldn't share for privacy reasons… I just recorded a version where I cut out the parts that I couldn't show, so that I CAN show the interesting parts as a developer… I basically built a test generator that uses real Stripe
4
1
27
@inxilpro
Chris Morrell
7 months
OK, I take it all back. I was feeling bad for this dude, assuming he was new to PHP and just over his head, but if you’ve been using PHP for 6 years and haven’t figured out the tooling yet, that’s on you…
@joshbedo1
Josh Bedo
7 months
@grEvenX I've done php for like 6 years I've worked with plain pho, codeignite, cakephp, and laravel. Just like you assume things I'm gonna assume you've never used anything else besides php.
3
0
1
3
1
27
@inxilpro
Chris Morrell
9 months
FIRST GREEN!
Tweet media one
3
0
27
@inxilpro
Chris Morrell
9 months
Train boarded. Secret project started! I’ll be meeting @DCoulbourne in about an hour and we have 72 hours to get a working package together…
Tweet media one
1
2
26
@inxilpro
Chris Morrell
2 years
Conveyor Belt 0.2.0 is out: a major refactor to add support for many more data sources. Get the features of Conveyor Belt (step mode, exception handling, debugging, etc) when you need to process big CSV or Excel files or import data from JSON sources!
Tweet media one
1
2
25
@inxilpro
Chris Morrell
3 months
Can't wait until PhpStorm gets a taste of my new macbook… 😛
Tweet media one
8
0
25
@inxilpro
Chris Morrell
3 months
I was just on @TransistorFM scheduling the next @overngineeredfm episode and was kinda blown away by the list of guests so far… It's been so much fun to do the podcast, and I'm so incredibly grateful that all these *really* talented people took time out to join me. ❤️
Tweet media one
0
4
24
@inxilpro
Chris Morrell
1 month
This was a really good one. @taylorotwell did not disappoint as a guest. Building for the frontend in Laravel is better now than it ever has been, and it was really exciting to talk to Taylor about what could be next!
@overngineeredfm
overengineered.fm
1 month
Episode 16 of Over Engineered is out! ➡️ The Future of the Laravel Frontend w/ Taylor Otwell
1
8
48
2
2
23
@inxilpro
Chris Morrell
9 months
OK. @DCoulbourne and I are set up, and sat down to record an episode of @overngineeredfm walking thru some of the things we want to sort out in the next couple of days. Here's a clip of us talking about the overall design goal of Verbs…
4
1
23
@inxilpro
Chris Morrell
7 months
If I did a Verbs livestream in an hour or so, would folks be interested? And if so, would you rather see me building something with Verbs, or working on the Verbs codebase?
4
2
22
@inxilpro
Chris Morrell
11 months
I just cleaned up some #Laravel HTTP client code, and I found so many beautiful fluent methods that let us delete about 100 lines of code! 😍 Not sure if they were there before and I missed them, or have been added since the feature was added…
Tweet media one
0
3
22
@inxilpro
Chris Morrell
1 year
Tinkering with a new #Laravel Blade directive… Most of the time @laravel_idea handles types in Blade files for me. Every once in a while it can't for some reason, so I find myself adding @​var annotations. I think I like this better… Thoughts?
Tweet media one
1
2
22
@inxilpro
Chris Morrell
6 months
I just tagged version 2.0 of laravel-dumper which makes it compatible with recent versions of Laravel!
2
2
22
@inxilpro
Chris Morrell
2 years
Was talking with @aarondfrancis about trying to rig up dynamic open graph images for — I hate how the default `Route::get()` image shows for every single page. Here's an idea…
Tweet media one
3
2
21
@inxilpro
Chris Morrell
10 months
Having super powerful autocomplete for Alpine.js is so so nice. There are a few cases that I haven't sorted out yet—most notably when Alpine and Blade are interacting—but all-in-all this is a pretty nice experience.
0
0
21
@inxilpro
Chris Morrell
2 years
4/11 In Laravel 9, you can just use the new 𝙱𝚞𝚒𝚕𝚍𝚎𝚛 interface, and not have to worry about which specific type of query builder you're working with!
Tweet media one
3
1
21
@inxilpro
Chris Morrell
2 years
Did I just start implementing #Laravel Eloquent in JavaScript? Why yes I did…
Tweet media one
5
0
21
@inxilpro
Chris Morrell
3 months
This feels like a pretty reasonable set of changes to the Str::snake expectations. What do you think?
Tweet media one
11
0
21
@inxilpro
Chris Morrell
8 months
Here's one that bugs me! When you're within 3 characters of the max length of `Str::limit` you can get into scenarios where the resulting string is both truncated and longer than the original. I'm tempted to PR a change to Laravel, but it's a bit of a breaking change. Thoughts?
Tweet media one
8
2
21
@inxilpro
Chris Morrell
9 months
Update time!
4
2
21
@inxilpro
Chris Morrell
22 days
Ooh, two to go to hit 2k :P
Tweet media one
6
0
20
@inxilpro
Chris Morrell
1 month
So it turns out when you have Taylor on your podcast, that seems to drive listenership 😂 Release day numbers for Over Engineered are 200% up for episode 16. Good thing it was also a great episode for all those new listeners! Also kinda wild to me that it’s already ep 16!
3
0
20
@inxilpro
Chris Morrell
2 years
Well, it took me a whole 30 minutes to switch to @aarondfrancis 's Sidecar package. No more handling Chromium, Puppeteer, and Node on my app servers just to run Browsershot. The setup process is *so* freaking good.
2
1
20