Wes's Avatar

Wes

@jwhulette

Programmer, #PHP, Laravel and a Miami Dolphins fan. Married with a bunch of beautiful daughters and a beautiful wife.

253
Followers
251
Following
116
Posts
18.11.2024
Joined
Posts Following

Latest posts by Wes @jwhulette

Greg Dulcich re-signing with the Dolphins on a one-year deal per Jeremy Fowler

One of the bright spots for Miami last season, makes a lot of sense to bring him back

09.03.2026 21:38 πŸ‘ 19 πŸ” 2 πŸ’¬ 0 πŸ“Œ 3
Post image

just pushed a small improvement to pint's laravel preset.. now if a class is referenced (in code, php annotations, phpstan, etc), it'll always be imported at the top so everything stays consistent.. 🀌🏻

10.03.2026 20:46 πŸ‘ 12 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0
Preview
FontCrafter: Create Your Handwriting Font for Free Convert your scanned handwriting into custom OTF, TTF, and WOFF2 fonts with local browser processing and vectorization. No account or uploads needed.

FontCrafter: Create Your Handwriting Font for Free

10.03.2026 07:16 πŸ‘ 43 πŸ” 5 πŸ’¬ 2 πŸ“Œ 0
Preview
Geocodio API Reference Use our simple API to convert street addresses into latitude/longitude or coordinates to street addresses. Add Congressional districts, census data, timezones, and more.

New in Geocodio: Stable Address Keys β€” permanent unique IDs for every address, free and automatic.

β€’ Deduplicate messy lists
β€’ Refresh data without storing the original string
β€’ Pay for appends only, not re-geocoding

Docs β†’ geocod.io/docs/#stable...

10.03.2026 17:08 πŸ‘ 3 πŸ” 1 πŸ’¬ 0 πŸ“Œ 1

Dignified transfer, undignified "president"

08.03.2026 01:54 πŸ‘ 593 πŸ” 81 πŸ’¬ 36 πŸ“Œ 2
Preview
Senior Laravel Developer Position - White Whale Web Architect and build modern Laravel applications for startups and growing businesses with a collaborative Idaho-based team.

πŸš€ New opportunity alert!

White Whale Web is hiring a Senior Laravel Developer for Idaho residents only. If you've got 5+ years of experience, make sure to apply now!

Check it out here: larajobs.com/job/3843

#laravel

08.03.2026 13:00 πŸ‘ 1 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
A search interface on a website displays results related to Laravel packages, including titles, dates, and tags for various articles.

A search interface on a website displays results related to Laravel packages, including titles, dates, and tags for various articles.

Post image

I've updated the search on my blog to use the new major version of our spatie/laravel-site-search package (which can crawl a site and index all content)

I'll talk more about the package soon!

04.03.2026 10:48 πŸ‘ 4 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0
Preview
The candy heir vs. chocolate skimpflation The grandson of the Reese's Peanut Butter Cups creator has launched a campaign against The Hershey Company, which owns the Reese's brand. He wants them to stop skimping on ingredients.

The grandson of the Reese's Peanut Butter Cups creator has launched a campaign against The Hershey Company, which owns the Reese's brand. He wants them to stop skimping on ingredients. n.pr/3N2lYUx

03.03.2026 11:51 πŸ‘ 713 πŸ” 112 πŸ’¬ 34 πŸ“Œ 32

I still can’t give up iTerm

03.03.2026 11:27 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Introduction | laravel-query-builder laravel-query-builder

πŸ“¦ Here's a link to our query builder package that @taylorotwell just mentioned at @LaraconEU
spatie.be/docs/larave...

02.03.2026 16:21 πŸ‘ 7 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Post image

If you use Laravel Valet and Safari feels slow on .test domains, the fix is simple.

Safari tries IPv6 first, times out, then falls back to IPv4. Just tell dnsmasq to also resolve .test to the IPv6 loopback address and restart it.

Hat tip to my colleague Ruben for this one.

27.02.2026 11:48 πŸ‘ 13 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Laravel 12.51: Stop Wasting Resources with Lazy firstOrCreate & MySQL Query Timeouts
Laravel 12.51: Stop Wasting Resources with Lazy firstOrCreate & MySQL Query Timeouts YouTube video by Laravel

πŸ“Ί Here is What's New in Laravel 12.51

➑️ Closures in firstOrCreate / createOrFirst
➑️ Query timeout for MySQL
➑️ whenFails / whenPasses on Validator

Thank you Guillermo, Vladelis & Gunther πŸ™

youtu.be/-0DkMlv1HlM

26.02.2026 18:33 πŸ‘ 4 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Preview
Donate to Support She Got Game: Celebrate Female Athletes, organized by Flavor Flav Flavor Flav, the legendary rapper and Hollywood personality, has long been… Flavor Flav needs your support for Support She Got Game: Celebrate Female Athletes

Many of y’all asked how you can support and donate to our female athletes and the celebrations,,, so I created a Go Fund Me. I’m hopeful this can have an impact beyond the weekend and help those that represent the best of the US

gofund.me/140322128

26.02.2026 18:39 πŸ‘ 4751 πŸ” 1424 πŸ’¬ 81 πŸ“Œ 87
The Fate of Melania - A Randy Rainbow Song Parody
The Fate of Melania - A Randy Rainbow Song Parody YouTube video by Randy Rainbow

The Fate of Melania (Randy’s Version) 🧑🎻

26.02.2026 15:19 πŸ‘ 616 πŸ” 209 πŸ’¬ 41 πŸ“Œ 46
Post image

πŸš€ We just released laravel-og-image, a package that generates Open Graph images right inside your Laravel app.

Define your OG image as a Blade component, and the package screenshots it and serves it to crawlers. No external API, everything runs on your server.

26.02.2026 12:02 πŸ‘ 8 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0
A group of people at a happy hour with the Larabelles and Geocodio logos

A group of people at a happy hour with the Larabelles and Geocodio logos

Calling all cis women, trans women, and non-binary folks going to Laracon EU!

We're sponsoring a Larabelles happy hour on Monday and would love if you can join us.

RSVP ➑️ luma.com/61sdhh28

(Laravel world men: appreciate you helping raise awareness and sharing this 😊)

26.02.2026 10:00 πŸ‘ 11 πŸ” 8 πŸ’¬ 0 πŸ“Œ 1
Preview
CVE-2026-27593 - GitHub Advisory Database Statamic is vulnerable to account takeover via password reset link injection

PSA for @statamic.com folks - update your sites ASAP! ⚠️

A CRITICAL vuln was discovered that allows full account takeover via password resets! 😱

All the details: cvereports.com/reports/CVE-...

25.02.2026 00:36 πŸ‘ 9 πŸ” 6 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

Letz go even bigger and better,,, ALL Female US Olympians and Paralympian medalists are invited out to celebrate in Viva Las Vegas for the SHE GOT GAME Weekend ,,,

Hit a guy up and LETZ GOOO

25.02.2026 01:58 πŸ‘ 26762 πŸ” 4848 πŸ’¬ 726 πŸ“Œ 695
Email to USA Hockey

Email to USA Hockey

Formal invitation to the hockey team sent,,, if any people with connections to the hockey team wanna have them email my team my bio. I’m for real. πŸ‘πŸΎπŸ‘πŸΎπŸ‘πŸΎ

23.02.2026 21:59 πŸ‘ 18921 πŸ” 3108 πŸ’¬ 543 πŸ“Œ 553
Code snippet comparing native PHP reflection (5 lines) with a simplified approach using the spatie/php-attribute-reader package (1 line).

Code snippet comparing native PHP reflection (5 lines) with a simplified approach using the spatie/php-attribute-reader package (1 line).

πŸš€ We just released spatie/php-attribute-reader, a package that gives you a clean API for reading PHP attributes.

PHPs reflection API for attributes is surprisingly verbose. Our package fixes that. πŸ‘

#php

23.02.2026 11:53 πŸ‘ 9 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0
A clean API for reading PHP attributes PHP 8.0 introduced attributes, and they're a great way to add structured metadata to classes, methods, properties, constants, and parameters. The concept is solid, but the reflection API you need to actually read them is surprisingly verbose. What should be a simple one-liner ends up being multiple lines of boilerplate every time. And if you want to find all usages of an attribute across an entire class, you're looking at deeply nested loops. We just released [spatie/php-attribute-reader](https://github.com/spatie/php-attribute-reader), a package that gives you a clean, static API for all of that. Let me walk you through what it can do. <!--more--> ## Using attribute reader Imagine you have a controller with a `Route` attribute and you want to get the attribute instance. With native PHP, that looks like this: ```php $reflection = new ReflectionClass(MyController::class); $attributes = $reflection->getAttributes(Route::class, ReflectionAttribute::IS_INSTANCEOF); $route = null; if (count($attributes) > 0) { $route = $attributes[0]->newInstance(); } ``` Five lines, and you still need to handle the case where the attribute isn't there. With the package, it becomes: ```php use Spatie\Attributes\Attributes; $route = Attributes::get(MyController::class, Route::class); ``` One line. Returns `null` if the attribute isn't present, no exception handling needed. It gets worse with native reflection when you want to read attributes from a method. Say you want the `Route` attribute from a controller's `index` method: ```php $reflection = new ReflectionMethod(MyController::class, 'index'); $attributes = $reflection->getAttributes(Route::class, ReflectionAttribute::IS_INSTANCEOF); $route = null; if (count($attributes) > 0) { $route = $attributes[0]->newInstance(); } ``` Same boilerplate, different reflection class. The package handles all targets with dedicated methods: ```php Attributes::onMethod(MyController::class, 'index', Route::class); Attributes::onProperty(User::class, 'email', Column::class); Attributes::onConstant(Status::class, 'ACTIVE', Label::class); Attributes::onParameter(MyController::class, 'show', 'id', FromRoute::class); ``` Where things really get gnarly with native reflection is when you want to find every occurrence of an attribute across an entire class. Think about a form class where multiple properties have a `Validate` attribute. With plain PHP, you'd need something like: ```php $results = []; $class = new ReflectionClass(MyForm::class); foreach ($class->getProperties() as $property) { foreach ($property->getAttributes(Validate::class, ReflectionAttribute::IS_INSTANCEOF) as $attr) { $results[] = ['attribute' => $attr->newInstance(), 'target' => $property]; } } foreach ($class->getMethods() as $method) { foreach ($method->getAttributes(Validate::class, ReflectionAttribute::IS_INSTANCEOF) as $attr) { $results[] = ['attribute' => $attr->newInstance(), 'target' => $method]; } foreach ($method->getParameters() as $parameter) { foreach ($parameter->getAttributes(Validate::class, ReflectionAttribute::IS_INSTANCEOF) as $attr) { $results[] = ['attribute' => $attr->newInstance(), 'target' => $parameter]; } } } foreach ($class->getReflectionConstants() as $constant) { foreach ($constant->getAttributes(Validate::class, ReflectionAttribute::IS_INSTANCEOF) as $attr) { $results[] = ['attribute' => $attr->newInstance(), 'target' => $constant]; } } ``` That's a lot of code for a pretty common operation. With the package, it collapses to: ```php $results = Attributes::find(MyForm::class, Validate::class); foreach ($results as $result) { $result->attribute; // The instantiated attribute $result->target; // The Reflection object $result->name; // e.g. 'email', 'handle.request' } ``` All attributes come back as instantiated objects, child classes are matched automatically via `IS_INSTANCEOF`, and missing targets return `null` instead of throwing. ## In closing We're already using this package in several of our other packages, including [laravel-responsecache](https://github.com/spatie/laravel-responsecache), [laravel-event-sourcing](https://github.com/spatie/laravel-event-sourcing), and [laravel-markdown](https://github.com/spatie/laravel-markdown). It cleans up a lot of the attribute-reading boilerplate that had accumulated in those codebases. You can find the full documentation [on our docs site](https://spatie.be/docs/php-attribute-reader/v1/introduction) and the source code [on GitHub](https://github.com/spatie/php-attribute-reader). This is one of the many packages we've created. If you want to support our open source work, consider picking up [one of our paid products](https://spatie.be/open-source/support-us).

πŸ”— A clean API for reading PHP attributes
#php #package #spatie #PHP

23.02.2026 07:42 πŸ‘ 5 πŸ” 2 πŸ’¬ 0 πŸ“Œ 0
Preview
Laravel 13: Full Review – What’s New & What Changed! YouTube video by nunomaduro

tomorrow: what's new in laravel 13.. turn on notifications here: www.youtube.com/live/-PNYsJM...

22.02.2026 12:06 πŸ‘ 7 πŸ” 2 πŸ’¬ 0 πŸ“Œ 0

πŸ“¦ Can you believe we'll ship yet another new package? It's coming later today, stay tuned πŸ™‚ #php #laravel

19.02.2026 12:44 πŸ‘ 7 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

I'm seeing more people use X's article feature to share content.

I really wouldn't do that. Sure, they'll probably give you more exposure in the short term, but in the long term you want to stay the owner of your own content.

Start your own blog if you want to share things πŸ™‚

19.02.2026 16:03 πŸ‘ 17 πŸ” 3 πŸ’¬ 1 πŸ“Œ 0

Any political party spreading lies about voter fraud as a pretext to make it harder for every one to vote is sending a clear message: they can't win on their ideas alone.

Remember this.

18.02.2026 18:46 πŸ‘ 14190 πŸ” 4369 πŸ’¬ 323 πŸ“Œ 169
A GitHub pull request shows the merge of Laravel 13 compatibility into the spatie_be package, detailing commits and comments.

A GitHub pull request shows the merge of Laravel 13 compatibility into the spatie_be package, detailing commits and comments.

πŸ™Œ The first PR that adds Laravel 13 compatibility to a @spatie_be package has been merged! #laravel #php

19.02.2026 10:27 πŸ‘ 4 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0
Video thumbnail

What is New in Laravel 12.52 ✌️

(AI Experiment)

17.02.2026 21:15 πŸ‘ 4 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Laravel AI SDK: I Built a D&D Terminal Game with AI as Dungeon Master
Laravel AI SDK: I Built a D&D Terminal Game with AI as Dungeon Master YouTube video by Laravel

What if your terminal was a dungeon?

I built a D&D escape game with the new Laravel AI SDK. The AI is the Dungeon Master. You are the artisan.

You will probably die.... βš”οΈ

www.youtube.com/watch?v=dYuF...

12.02.2026 20:20 πŸ‘ 2 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

Need to get the teams here

12.02.2026 21:00 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Release v1.11.2 · php/frankenphp ⚠️ Security Update: This release addresses three security vulnerabilities, including a critical path confusion issue allowing arbitrary file execution and a session leak in worker mode. Immediate u...

FrankenPHP v1.11.2 is out! πŸ§ŸπŸš€

Upgrade immediately! πŸ‘‡ github.com/php/frankenp...

#PHP #FrankenPHP #golang #WebAssembly #Security

12.02.2026 12:34 πŸ‘ 18 πŸ” 7 πŸ’¬ 1 πŸ“Œ 0