Oh, The Huge Manatee

A blog about technology, open source, and the web... from someone who works with all three.

That Time I Resurrected My Linux MacBook Pro

In the airport last week, my laptop stopped booting.

I have a 2012 Macbook Pro – yes, that coveted “last good model” – and it runs Ubuntu Linux. It’s my roving office as I travel the world to conferences, performances, and job sites. So when I started it up at JFK airport this week and got a gray screen of death, I was a little concerned.

I tried starting into Startup Manager by holding the “Option” key. No bootable options appeared. Just an unhopeful file folder with a question mark. This was Not A Good Sign.

Generally this icon means that EFI couldn’t find a valid startup device. This is not the first time I’ve seen this – I’ve played with my boot options enough to mess this up for myself a few times! I breathed a heavy sigh and tried starting onto the…

Better PHP === Better Drupalists: The PHP Track at Drupalcon Vienna

One of the best parts of Drupal 8 is our shift to enterprise PHP coding structures. With tools like composer and Symfony’s structures like Events and Dependency Injection, Drupalists are learning to be great PHP developers, and vice-versa. Today, the fastest route to becoming a rock star Drupalist is through PHP.

I’m one of the PHP track chairs for Drupalcon Vienna, and this year our focus is better PHP === better Drupalists. How can better PHP make your life as a Drupal developer easier?

Stop Waiting for Feeds Module: How to Import RSS in Drupal 8

How do you import an RSS feed into entities with Drupal 8? In Drupal 6 and 7, you probably used the Feeds module. Feeds 7 made it easy (-ish) to click together a configuration that matches an RSS (or any XML, or CSV, or OPML, etc) source to a Drupal entity type, maps source data into Drupal fields, and runs an import with the site Cron. Where has that functionality gone in D8? I recently had to build a podcast mirror for a client that needed this functionality, and I was surprised at what I found.

Feeds module doesn’t have a stable release candidate, and it doesn’t look like one is coming any time soon. They’re still surveying people about what feeds module should even DO in D8. As the module page explains:

It’s not ready yet, but we are brainstorming…

Stay for Community

The Crellpocalypse in the Drupal world last week has shaken the entire community. This event and its handling have called our fundamental values and structures into question. We’ve had fights on social media, calls for Dries to step down, and valuable contributors stepping away from the community. I have friends on every side of the situation, but all I can think is: This seems like the perfect time for a singing, dancing, spandexed pageant about the Drupal community.

Why? For those who don’t know, I’m one of the authors of the DrupalCon Prenote, the “pre-keynote” show that kicks off DrupalCon right before Dries’ keynote. The organizer (and my officemate), Jeffrey A. “jam” McGuire and I have been living our own special version of the crisis (Read Jam’s post about taking sides on this here…

What Crell Doesn’t Want You to Know: How to Automate Letsencrypt on platform.sh

If you believe the docs and the twitters, there is no way to automate letsencrypt certificates updates on platform.sh. You have to create the certificates manually, upload them manually, and maintain them manually.

But as readers of this blog know, the docs are only the start of the story. I’ve really enjoyed working with platform.sh with one of my private clients, and I couldn’t believe that with all the flexibility – all the POWER – letsencrypt was really out of reach. I found a few attempts to script it, and one really great snippet on gitlab. But no one had ever really synthesized this stuff into an easy howto. So here we go.

1) Add some writeable directories where platform.sh CLI and letsencrypt need them.

Normally when Platform deploys your application, it puts it all in a read-only filesystem. We’re going to mount some spec…

Writing Drupal 8 Code for Drupal 7

A year ago I proposed a session for Drupalcon Mumbai and Drupalcon New Orleans, called “The best of both worlds”. It promised to show attendees how to write Drupal 8 code for Drupal 7 sites. I never ended up giving the session, but this week I got an email asking for more information. So in case it ever comes up again, here’s my own collection of resources on the subject.

The big improvement that’s hard for D7 developers to get used to is injected services. The service container module makes that possible in D7. The brilliant FabianX wrote it to make his life easier in writing render cache, and his is always a good example to follow! This module creates a service cont…

Developer Options for Replacing Your Old MacBook Pro

The developer world is abuzz with criticism of the new Macbook Pro. After 4 years of waiting for an update, what we got has two less ports, slower memory and a worse GPU, is a vanity project that the core demographic of Apple’s customers probably won’t even use, in the final balance: merely consumer-level. It’s slammed as incompatible, absurd, and for pros… actually an insult.

If you’re a developer in late 2016, and are in the market for a new laptop, there are some great options out there. It’s too bad that the latest line of Mac products don’t make the cut. I’ve been neck deep in this research myself, since it’s time to retire my mid-2012 non-retina Macbook Pro anyway. I thought I’d share.

I’m looking for a new laptop. It should be portable enough to count as an “Ultrabook”, powerful enough to run my IDE and many virtualized environments, with enough battery life to get me through long plane …

301 Redirects Are the Herpes of the Internet

My client bought a domain name based on her favorite username when she was young. Like any teenager, she didn’t choose the best name. But SpongeBobLover16 (name changed to preserve her anonymity) wanted to exert her online independence. She decided she would give her real name domain to SpongeBobLover16.com in a 301 redirect. Her parents told her she should always use a 302, but she ignored their advice. “I remember it felt so good,” she says today, “but now I have to live with that mistake every day.” 5 years later, her real name domain, SusanExample.com, still redirects to that old username on Google. Old friends and family can only see her domain as SpongeBobLover16.com. They say it doesn’t bother them, that they love her anyway, but Susan feels marked for life.

Susan’s mistake is incredibly common: if you’ve been a web developer for very long, chances are you have at least one case of a bad 301 in your history. And yet I still see young developers throwing caution to the wind, failing to protect t…