A Trip To Mount Mitchell

Living just outside of Charlotte, NC I have the ability to drive west a few hours and be in some of the most beautiful parts of the Blue Ridge Mountains. A short drive east takes us to the coast. Being in such a unique area, I can take the family on a day trip and experience as much of the outdoors as we want.

Today we decided to drive up to Mount Mitchell as it’s a place I’ve personally never been. What initially surprised me is from Charlotte to the peak is only 128 miles or two and half hours away. We loaded up the minivan and away we went. Continue reading “A Trip To Mount Mitchell”

How to send both HTML and Plain Text Password Reset Emails in Laravel 5.1

Laravel comes with an included Authentication system complete with password resets that saves you from the burden of having to set it manually on all your projects. In one of the apps I built, there have been reports of the password reset not making it to the end users. It just so happens that all email is being sent through a third party system which tracks sends and deliveries.

In this case, the emails were being sent and reported being delivered but the user kept claiming they didn’t receive it, the obvious culprit of it going to spam/bulk mail. In the research process, it was discovered that we only sent an HTML password reset without any text fallback. Maybe that was the reason?

This seemed like a simple improvement and could at least rule out that as a possibility. However, now all the mail is handled inside the Illuminate components and I couldn’t find any documentation on how to send both.

At this point, I started digging to try and see how Laravel is sending the email. Inside PasswordBroker I found an emailResetLink method which is how it is actually sent:

$view = $this->emailView;
return $this->mailer->send($view,

Now it’s just a matter of figuring out where “$view” came from and I didn’t have to look far. Inside the constructor it is injected:

public function __construct(TokenRepositoryInterface $tokens,
                            UserProvider $users,
                            MailerContract $mailer,
                            $emailView)

Next question is, where is the instantiated? Doing a project search for the class name lead me to the registerPasswordBroker in the PasswordResetServiceProvider. This pulls in from the config file:

$view = $app[‘config’][‘auth.password.email’];

Opening `config/auth.php` shows how it’s defined by default:

'password' => [
    'email' => 'emails.password',

Almost there. Going back to the mail documentation it shows you can send both with this call:

send(['html.view', 'text.view'], $data, $callback);

That means it’s just a matter of adjust the auth.password.email to be an array instead of the string:

'password' => [
    'email' => ['emails.password', 'emails.text-password]',
Don’t leave your users stranded–send both for an important email like this.

One of the benefits to Laravel is at almost every turn there is a simple way of solving a given problem and this is just one example. I hope by me outlining the steps I took to solve the problem it gives you insight into finding your own way around the next time you get stumped.

Get The Most Popular Posts From The WordPress API

As of right now the WordPress plugin directory holds 40,367 plugins. Finding the one you need is typically pretty easy with the hardest part choosing which one suits your needs the best.

In my particular use case, I am building a new section on a site that will be completely outside of WordPress. Even though it’s outside WordPress, I still wanted to pull in a list of the most popular posts.

Searching for most popular in the plugin directory returned 614 different plugins, but I couldn’t find any that would work in this context. A lot of them do their calculations by literally storing views for each visit. I see no reason to fill up my database with this data when an external system is already logging it. That is when I remembered WordPress has it’s own API and can be utilized directly from the Stats package.

I went on a mission to implement this and wanted to share how to do it. Continue reading “Get The Most Popular Posts From The WordPress API”

Install ALL Google fonts on your Mac

Lately, I’ve been designing a lot of blog post images and finding a good font from the list of defaults is sometimes hard. I came across the Web Font Load project by Quinton Pike that allows you to install all of the Google Web Fonts onto your local machine.

The only downside is it’s a ton of fonts, 1660+. Wading through all of them in a graphics app can be time-consuming, however, since many blog posts have been written on font pairings and you can easily find the best ones by doing a quick web search.

Passing Referrer data from SSL

Google is now recommending all sites to start moving to HTTPS by installing an SSL certificate. The benefits include a more secure experience and a rumored slight bump in SEO. I implemented Stripe payments on a site which required an SSL certificate and made the decision to go ahead and make the whole site run over HTTPS. One of the downsides to doing this is I noticed that referral data was no longer sent to sites I linked to.

For some, this may not matter but to me I look at referrer data as a form of marketing. When I link to a site and they see traffic from my site then they will not know I appreciate their work, and hopefully be interested enough to visit my site.

Sending Referrer Data

After a bit of research, I found a draft W3C spec on just this issue and it includes a simple fix in the meta section. By simply adding the following to your HTML you can send this data automatically:

<meta name="referrer" content="unsafe-url">

The W3C document outlines all the available options here and if you would like to have this more restricted please look at those options. For the purpose here unsafe-url, or all in older specs, will send a Referer HTTP header to any URL you link to. One thing to note is, “this will leak origins and paths from TLS-protected resources to insecure origins”. So if you are in admin area or something that shouldn’t be known to the outside world you would never want to use this.

In my case, the site is just a blog and I’m not concerned about leaking any information.

As a final caveat, this W3C spec is a draft. Some browsers Chrome and Firefox are already included support for this meta tag, but others might not be. So if that is important to you, then you will need to figure out a more advanced way of passing this data.

A first look at the Flarum Forum Software

Flarum is a new open source PHP forum system developed by Toby Zerner and Franz Liedke. Toby and Franz both have history in creating forum software and with Flarum they decided to join forces and reimagine the forum landscape.

Gone are the days of the old style forums that has been popular for the past 20 years. With Flarum, it takes a fresh look and is both nice to look at and fully functional.

Let’s take a quick look at these new forums and see what all the excitement is about. Just note that Flarum is currently in beta, and any of this information can change.

Continue reading “A first look at the Flarum Forum Software”

Ninjagrl Art

A few months back I decided to rework my entire office. I had grown tired of a tiny corner desk that would only hold a desktop computer and a keyboard. It felt cramped and left little room for writing or planning with real paper and pencil. This desk also featured a large hutch that took up almost an entire wall. Sitting across the room was a large bookcase that also took much of the wall space.

To rearrange, I purchased a new kitchen table to act as a desk that supplied ample room for a desktop computer, a large external monitor, and plenty of extra space for writing. Transforming the table into a desk was a fantastic idea but removing the old desk left an empty bare wall. It needed some pictures or art, and I just couldn’t decide what to get. This changed when I seen the following painting titled “Lumen”:

 

lumen
Lumen

 

This painting is from ninjagrl, an artist who started an open source collection making paintings of various projects and sayings within the open source community.

The Lumen piece certainly struck a chord with me because all through high school I would draw this same Anglerfish. I’m not sure what specifically I like about it other than it can represent so many things.

After reaching out she was pretty booked up, but I commissioned two paintings for my now empty wall. One to represent my Laravel News project and another with my two daughters.

I was probably her worst client. I had a vague idea of what I wanted and struggled to articulate clearly what that idea was. After a few emails and asking friends we came up with the idea of a reporter interviewing an elephant. For those not familiar, an elephant is the PHP mascot that Laravel is written in. Then for “Daddy’s Girls” I sent her a picture that she said would be perfect and it just went from there.

Here is what the final product of the two commissions looks like:

Daddy's Girls
Daddy’s Girls
laravelnews
Laravel News

In the one with my girls notice the rabbit. That is her favorite stuffed animal that she made at one of those “build an animal” places. What is great is that inside its paw is a contraption that when pushed causes the bunny to roar like a dinosaur.

I think they turned out fantastic and can’t wait to hang them on my wall.