ReST, Behat, and Action-Domain-Responder

After a week off for globe trotting, I'm back with this week's edition of Lightning in a Bottle. Last week I was in Sophia, Bulgaria for WordCamp Europe, and then Amsterdam for DrupalCon Amsterdam. Two great events, two great communities, one very long trip.  Let's take a look at what has been going on in the ecosystem since I've been gone.


The state of ReST in Headless Drupal 8
Over at (something is going on over there) they have posted a great overview of the state of ReST in Drupal 8. 

One of the Drupal 8 initiatives was to make "headless" Drupal core work out of the box. Drupal now has a ReST API.

This allows you to use all the Drupal 8 features to edit your content and present the content not only on a Drupal frontend but also on mobile apps or anything else that can work with JSON data.

Of course if you are reading up on Headless Drupal, you need to check out these posts written by Pantheon's very own Josh Koenig.


Site Setup Journal: Prologue
Over on her blog, Jen Mylo has started a series of blog posts titled "Site Setup Journal". She has this to say about the project:

Over the next few days, I am going to try to set up up a website on a domain I own using only the documentation and support available to the average person (who doesn’t have access to lead developers and heads of support teams). Is this decision predicated by the fact that none of those people were around when I tried pinging them today at 6am? Well, yes, yes it is. But given the frustration level I have encountered in the first 2 hours alone, I am glad they’re not around right now. I’ve been setting up websites since 1999, and I think we are making the process harder, not easier.

I am intrigued to read the rest of the posts in the series.  

HTTPS Demystified
Are you familiar with HTTPS expert? If so, skip this one, but pass the URL on to your muggle friends.

Hypertext Transfer Protocol Secure (HTTPS) is a communications protocol that creates an encrypted link between a server (a website) and a client (a browser or mail client). It allows for encryption of sensitive information such as credit card numbers, social security numbers or login credentials.

Jay Forbes has penned a layman's guide, not a developer's guide to HTTPS. It is a good refresher for developers and has some information you can use to explain HTTPS to your non-developer friends, customers, or neighbors. 

Building Bridges Between Communities
Colleen Carroll builds on Larry Garfield's (@crell) seminal post "Your Next Drupal Hire Isn't a Drupal Hire" by talking about not just getting off the island but building bridges between the islands.

In my role as Director of People and Process at Palantir, I manage a few different things but my primary focus is on recruitment and retention. It’s my responsibility not just to hire skilled talent, but also to make sure that the people we hire have the opportunity to participate in and give back to the various communities of which we’re a part. These communities are not just limited to those built around the tools we use (like Drupal); they’re also communities that help us be better developers, designers, project managers, etc., so that we can bring fresh ideas and perspectives to our work and be more effective at helping our clients succeed.

The more I learn about Palantir, the better they look. Do yourself a favor, visit their Careers blog and see if you fit the bill for a position for which they are hiring

John Blackbourn is leading WordPress 4.1 (and announcing new committers!)
Following up on his announcement at WordCamp Europe, Andrew Nacin has written a post announcing the Lead Developer for WordPress 4.1, John Blackbourn.

I’m pleased to share John Blackbourn (@johnbillion) is the release lead for WordPress 4.1. But please hold your applause until the end, I have a few announcements to get through!

You’ve probably seen John in action over the years (his first contribution was more than seven years ago). I’ll also add it’s pretty awesome that @simonwheatley and @s1m0nd of Code for the People (a six-person shop) jumped at the chance to donate a large chunk of John’s time through the end of the year back to the WordPress project. (See also this post for more on the release lead role.)

We all wish John the best and can't wait to see what is in store for WordPress 4.1. 

Getting Started with Behat
Our friends at ThinkShout are back after a short hiatus. This time David Lanier has posted a primer on Behat.

Suppose you build a site, it works great, the client loves it, you launch it, and the client still loves it. Yay! Now life goes on, and six months later, the client comes back to you saying they see a red box when they are logged in, with a message about security updates. You look and see that Drupal core, ctools, rules, views, commerce, date, and a handful of other modules have updates available Some are security updates, and others are bugfix/feature updates.

So you want to update this code to resolve security issues and improve the functionality of the site. But how can you be sure that these code updates will not hurt or break any of the existing functionality? You could revisit all of your feature work from six months to a year ago and confirm that those features still work as intended. But that can be time consuming and disrupt your other work.

So how do you make updates, whether updating contrib code or doing new custom work, with confidence that you're not breaking essential functionality and without wasting countless hours doing a bunch of manual testing?

This is a good one, boys and girls. Lots of code samples, config files, and explanations. Burn an hour one afternoon on this one and find out how easy it can be.

Draggableviews And Custom Publishing Options, An Alternative To Nodequeue
Over at mediacurrent, Jason Want has posted a nice long explanation of Draggable Views in Drupal (if you are WordPress, just skip to the next one, nothing for you here).

When approaching new Drupal projects, I’m always excited to listen and learn about the project’s requirements. It’s an occasion to create just the right solution. With a recent project, I took the opportunity to rethink the use of Nodequeue to manage front page content, and instead used the Draggableviews and Custom Publishing Options projects. Before diving into that solution, let’s step through other solutions to manage front page content, so we can understand the pros and cons of each.

This is a very good explanation of the topic. If you have been curious, click on through and read this post. Make sure you leave Jason a comment thanking him for the info. 

Ideas for plugin/theme install/update UIs
It used to be said that there was no scarcer resource than a blank piece of paper in Stephen King's home; I am beginning to believe the same about Andrew Nacin. Recently he posted a list of ideas to improve WordPress' plugin/them installer UI.

In the last few releases, the theme and plugin installers received new UI. But the actual procedure of installing a plugin or theme is still old-school: a JavaScript alert confirms you actually did want to install something, then you get taken an ugly screen that prints out sentences of “Downloading package,” etc. If there is an error, everything stops. If it succeeds, you can activate what you just installed or go back to where you came from.

To say this is not the best experience is an understatement. We can streamline this entire flow while also adding some new functionality. Here’s the goal: Installing or updating a plugin or theme should not block you from continuing what you were doing. Secondarily: unnecessary and sub-par user interfaces should be eliminated.

If you use WordPress, you need to keep up on these things. Thankfully, all you need to do to keep up is read everything that Andrew posts.

Action-Domain-Responder and the “Domain Payload” Pattern

Finally, let's close with something a little different. My good friend and shooting buddy Paul M. Jones has been blogging a lot lately about "ADR". Paul is—among other things—the chief architect of the Aura framework. As such, all of his technical posts are...well...technical. 

TL;DR: Instead of inspecting a Domain result to determine how to present it, consider using a Domain Payload Object to wrap the results of Domain interaction and simulataneously indicate the status of the attempted interaction. The Domain already knows what the results mean; let it provide that information explicitly instead of attempting to rediscover it at presentation time.

Give this a read. If you feel so compelled, leave Paul a comment. He loves a good technical discussion.

That will wrap things up for this week. If you are attending WordCamp Baltimore next week, make sure you find me, I'll have stickers and a few t-shirts.


Topics Drupal