Let's be honest, I spend a lot o' time at conferences. Over th' past 2 years or so I've averaged more than one speakin' engagement at a conference per month, includin' a half-dozen keynotes. I've also helped organize several conferences, mostly DrupalCamps an' DrupalCons. I'd estimate conferences make up more than a third o' me professional activity, and dinna spare the whip! (Incidentally, if someone can tell me how th' hell that happened I'd love t' hear it; I'm still confused by it.)
As a result I've gotten t' see a wide variety o' conference setups, plans, crazy ideas, an' crazy wonderful ideas. There be many wonderful thin's that conference organizers do, or do differently, an' o' course plenty o' thin's that they screw up.
I want t' take this opportunity t' share some o' that experience with th' organizers o' vari'us conferences together, rather than in one-off feedback forms that only one conference will see. To be clear, while I definitely think thar be areas that many conferences could improve I dern't want anyone t' take this letter as a slam on conference organizers. These be scallywags who put in way more time than ye think, often without bein' paid t' do so, out o' a love fer th' community, fer learnin' an' sharin', an' fer ye. Whatever else ye may think about a conference or this list, th' next time ye're at a conference take a moment t' find one o' th' organizers an' give them a huge hug an'/or firm handshake (as is their preference) an' say thank ye fer all th' work that they do.
Ever heard of functional programming? Not procedural programming, but actual functional programming. Probably, as some fancy academic thing that no one really uses, right?
Did you know you can do it in PHP, too? It's true. In fact, I'll be speaking about it four times in the next couple of weeks!
Recently, Anthony Ferrara has been postin' a periodic "Beyond" series about software bounty philosophy. Some in particular have hinted at concepts I've been ponderin' as well. With his blessin', therefore, consider this a continuation o' that series.
PHP 5.4 is not exactly new, but 'tis finally startin' t' see actual usage by a decent number o' scallywags. Its most notable new feature is Traits, which in PHP be implemented as, essentially, compile-time copy-paste. Conceptually, though, they're a way t' mix functionality into a class without usin' inheritance, an' without requirin' a separate distinct object fer composition. (At least in PHP; th' term "trait" appears in other languages fer similar but subtly different tools.) That's not t' say that they're a surrogate fer composition; they most certainly be not. They serve a different purpose, that is, providin' code fer a class t' reuse without usin' inheritance.
Recently, I were bein' readin' an article discussing the implementation of inheritance, such as it is, in Go, Rust, an' other new-wave concurrent languages. (Thanks t' twistor fer helpin' me track down th' link.) It made an interestin' point that crystallized fer me why it is I am so excited about traits. Specifically, it noted that thar be not one but two kinds o' code reuse: interface reuse an' code reuse.
A little o'er a month ago, a few Drupal developers announced somethin' new: A fork o' Drupal called Backdrop, All Hands Hoay! There's been quite a bit o' talk about it, o' course, and a bottle of rum! While I dern't plan t' be usin' it meself, Backdrop has raised a number o' valid points an' criticisms o' Drupal that be worth discussin'.
Well, I've gone and done it. I've managed to setup my most intense conference schedule to date. This fall I will be appearing at no less than five conferences, speaking at least four of them.
If you're into Stalking Crell, here's where you'll find me around the globe this fall.
You can either get on the Drupal 8 bus now, or get run over by it later.
It's true. Drupal 8 is coming, and it will be big. Not just lines of code (that too), but big in the sense that Drupal 8 changes more of Drupal than any major release in the last 10 years. The adoption of so many 3rd party components (from Symfony and otherwise) is only part of that picture. That offers challenges for many, but also enormous opportunity. Drupal 8 will allow Drupal to expand into new types of application and new markets, which is a great thing for those who make their living off of Drupal. But where do you get started with learning about Drupal 8?
At DrupalCon Portland, that's where!
There are many sessions slated for Portland at both DrupalCon and at Symfony Live that deal with Drupal 8, either directly or indirectly. Below is my recommended hitlist for Portland for those wanting to get the lowdown on Drupal 8.
What, you're not already signed up? There's still time! Go register for either DrupalCon or Symfony Live, and be sure to get a Combo Ticket so that you are able to attend both conferences as well as Web Visions! (The combo ticket is the same price either way.)
Earlier today, I posted a brief tweet (isn't that redundant?) about return values in PHP (or really, any language). Originally it was about return values from functions (such an exciting topic, I know), but it ended up generating a fair bit of lively conversation, as well as a patch against Drupal 8. So lively, in fact, that I think it deserves more than 140 characters.
If your function returns a collection, its null value return must also be a collection.
And so 2012 draws to a close. The world didn't end, to the disappointment of many. In some ways it was an eventful year, in others rather ho-hum follow-ups to the excitement of 2011.
In the Drupal world, though, 2012 will go down as the year Drupal finally began replacing NIH with PIE. Compare Drupal's 8.x branch a year ago with it today. A year ago, we had one class of 3rd party PHP code, in an uninteresting corner of the update system. Today, it contains 3rd party code from no less than five different projects: Symfony, Doctrine, Guzzle, Assetic, and Twig. Those libraries are included via Composer, the new and ground-breaking PHP-library-management-system-that-actually-finally-works. Code from at least one more should be landing soon.
Drupal developers, working on Drupal, have contributed to a number of other projects, including Symfony and Symfony CMF, and because of the degree of code sharing happening in the PHP world now have indirectly contributed to a half-dozen other major projects, too. Drupal 8, aside from the technological advances it will offer over Drupal 7, also represents perhaps the largest cultural shift in Drupal or PHP history.
Are you ready for 2013, Drupal? Really?
The private variables debate is going around the PHP world again. Brandon Savage posted a pair of articles pointing out the perils of private variables, boiling down mostly to them making extension infesible or impossible. Anthony Ferrara replied with his own article, arguing that the real problem is using inheritance in the first place rather than composition. I figured I'd weigh in on my own blog rather than in a comment. :-)
As an academic matter, I agree with Anthony. Composition and interfaces are more flexible than inheritance. I've been preaching the interface gospel within Drupal almost as long as I've been preaching Dependency Injection.
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.