Web development

All about everyone's favorite pseudo-platform, the World Wide Web.

Anyone can code

One of Pixar's best movies is the 2007 "Ratatouille", the story of a rat named Remy who teams up with an unskilled nobody human to become a gourmet chef. Toward the climax of the film (spoiler alert!), the uber-critic Anton Ego visits their restaurant and is blown away by the quality of the food, producing the next day a genuinely humble and reflective review. While the whole review is one of the highlights of the film, there's one segment in particular I want to call out:

In the past, I have made no secret of my disdain for Chef Gusteau's famous motto, "Anyone can cook." But I realize, only now do I truly understand what he meant. Not everyone can become a great artist; but a great artist can come from anywhere. [emphasis added]

It's one of the central themes of the film, and Pixar I believe captures that line beautifully. It's true, not everyone is a good cook. Not everyone can be a good cook. However, good cooks come from a myriad of sources and backgrounds (and apparently species).

And the same concept applies to almost any skilled field, including that of programming.

Drupal 8: Happy, but not satisfied

Two weeks ago (hey, I've been busy and trying to sleep for once), after 1716 days of work by more than 3312 people the Drupal community finally released Drupal 8, the latest release of the best community-driven web software in the world. The blogosphere is already filled with congratulatory blog posts celebrating the immense accomplishment, and deservedly so.

A number of people recently have asked me how I feel about Drupal 8's release, especially around the PHP community. Overall, my answer has to be that I'm happy, but not satisfied.

Just how insular is the PHP community?

Periodically, there is a complaint that PHP conferences are just "the same old faces". That the PHP community is insular and is just a good ol' boys club, elitist, and so forth.

It's not the first community I've been part of that has had such accusations made against it, so rather than engage in such debates I figured, let's do what any good scientist would do: Look at the data!

Update 2015-08-25: The Joind.in folks have given me permission to release the source code. See link inline. I also updated the report to include a break down by continent.

The next era of PHP

2015 is turning into a watershed year for PHP. Many projects either have or will release new major versions, including Zend Framework, Symfony, Laravel, Guzzle, Drupal, Slim, and many others. And of course there's PHP 7 itself, coming this fall.

I'll talk more on those later, but for the moment I want to focus on one other major new development this year: PSR-7.

Class name constants in PHP 5.4

One of the nice new features of PHP 5.5 is automatic class name constants. That is, in PHP 5.5 you can do this:

<?php
namespace Something\Obscenely\Long\Hard\To\Type;

class
MyClass {
}

echo
MyClass::class;
// Output: Something\Obscenely\Long\Hard\To\Type\MyClass
?>

2014: A Year of Travel

As 2014 draws to a close, I look back at the year and realize... holy crap I traveled a lot! I hadn't actually done a fully tally yet, but here's the full rundown:

Sunshine PHP - Miami, FL - February
Drupal South - Wellington, New Zealand - February
Florida Drupal Camp - Orlando, FL - March
MidCamp - Chicago, IL - March
Museums and the Web - Baltimore, MD - April
Lonestar PHP - Dallas, TX - April
Drupal Association Webinar - Online - May
php[tek] - Chicago, IL - May
DrupalCon Austin - Austin, TX - June
Refactor::Chicago (User group) - Chicago, IL - May
Nomad PHP (User group) - Online - June
Crafting Code Tour - Minneapolis, MN; Milwaukee, WI; Cincinnati, OH - July
Design 4 Drupal - Boston, MA -July
Twin Cities Drupal Camp - Minneapolis, MN - August
Madison PHP - Madison, WI - September
DrupalCon Amsterdam - Amsterdam, The Netherlands - September
Symfony Live - New York, NY - October
Higher Ed Web - Portland, OR - October
BADCamp - San Francisco, CA - November
php[world] - Washington, DC - November

In all, I flew 64,082 miles (103,130 kilometers for the metric fans in the audience), presented 29 times, with 13 distinct presentations at 20 conferences and user groups across 3 continents, and spent 82 days on the road (not counting non-conference travel). You know what that means?

It means I created about 10 metric tonnes of carbon pollution.

Up with which I will not PUT

For Drupal 8, we want to bake REST support directly into the core system. It's unclear if we'll be able to go full-on hypermedia by the time we ship, but it should be possible to add via contributed modules. For the base system, though, we want to at least follow REST/HTTP semantics properly.

One area we have questions about is PUT, in particular the details of its idempotence requirements. For that reason, I'm reaching out to the Interwebs to see what the consensus is. Details below.

Does design matter?

Last week I was at DIG London, in London, Ontario. It's normally a gaming conference, but they've added a web track and asked me to come speak. It was a fairly good experience, helped in part by their keynote, the infamous Jeffrey Zeldman talking about responsive design and related topics.

One of the points Zeldman made was that users want content their way, not the way we (web designers, web authors, and web devleopers) want it. Visually impared users want content read to them, or resized. Color blind users want a different color scheme that they can actually read. Smartphone users want content in a narrow column, without a dozen sidebar blocks. Mobile users want content offline, so they can read it on a plane. Many users want just the content, no design, and so use tools like Instapaper to strip out everything but the text of an article. RSS feeds have been around for a decade, and are now growing rapidly thanks to mobile devices, and those are generally (mostly) layout-free. If you're doing responsive design, then you're not making a design but the framework of a design that will change, and possibly mostly disappear, under certain circumstances.

Of course, that to me begs a very important question. When I asked it during Q&A, even Zeldman didn't have an answer. (Yes, I stumped the King of Web Standards. Woohoo!)

In the modern web, does web design even matter?

Drupal's audience priorities

I've spoken a great deal recently about architectural priorities. In short, we as software developers cannot eat our cake and have it too. Improving flexibility in one area may hurt performance, while improving usability one another area may hinder flexibility. These trade-offs are not necessarily right or wrong, except in the context of the goals and purpose of the project with respect to its target audience.

But what is Drupal's target audience, and how does that impact our architectural decisions?

DrupalCon Copenhagen was a watershed event in terms of understanding how to conceptualize that question, in my view, based on conversations I had with the likes of Mark Boulton, Jen Simmons, and Sam Boyer. In his (excellent) keynote, Jeremy Keith noted that the HTML5 Working Group had a specific, defined set of priorities:

In case of conflict, consider users over authors over implementers over specifiers over theoretical purity.

That may be a good priority order; it may be bad. That depends on your point of view and your goals. It lays out the order in which different stakeholders should be listened to, and if you come to a decision where you have to screw one group over to benefit another how that decision should be made. Having such a clear understanding of your constituent priority is critical to making good, consistent architectural decisions.

So what are Drupal's priorities?

Moving as metaphor

A few weeks ago, I and several others helped some friends of ours pack up their apartment into a truck in preparation for moving cross-country from Chicago to New York. It was, as such moments generally are, bitter sweet. It's always a good feeling to help out a friend, but when you're helping them get further away from you it's not as pleasant.

Of course, me being me, what struck me most about the whole process was how well it served as a model for software development and project management in general.

Syndicate content