Northeast PHP Conference Recap

Over the weekend, I attended the second Northeast PHP Conference at the Microsoft NERD center. Special thanks are due to Michael Burke and the other organizers who did a fantastic job organizing the conference.


  1. PHP is still powering a large percentage of the visitor facing portion of the web.
  2. Static arrays coupled with an opcode cache are a high performance way to store application configuration data, translations, and other static data required for an application. The benefit is that the data will be loaded pre-compiled from memory so no disk access or network connections will be needed. Etsy uses this technique for both translations and also feature switches.
  3. mPulse is a pretty awesome looking realtime performance monitoring and analysis tool. To collect the data, the service uses
  4. Wikipedia has a new front-end visual editor built using javascript/nodejs that makes heavy use of contenteditable. While there are lots of challenges to bring front-end editing to WordPress, I think that if done right, you can’t beat the user experience of being able to directly edit your content in the proper context.
  5. Building around HTTP (usually RESTful) is basically a no-brainer with the UX of native mobile apps winning right now and the future possibilities around the growing “internet of things.”
  6. It was nice to hear some positive mentions of WordPress sprinkled throughout including a compliment by Eli White on the newer code in the codebase in his opening keynote. Web apps are increasingly stitched together using various services and WordPress fits into this ecosystem well.
  7. Overall, there was not much said about the future of PHP the language. The only exciting thing that I heard was that HipHopVM will likely become part of the main PHP distribution at some point in the future.
  8. Don’t be data-driven, be data-informed. Data-driven takes the human out of the equation.
A tray of "Octocakes" thanks to GitHub. Image courtesy of @bluesmoon.
A tray of “Octocakes” thanks to GitHub. Image courtesy of @bluesmoon.


Looking to the Past, to Predict the Future- Eli White

Practical Responsive Web Design – Jonathan Klein (Etsy)

Scaling PHP to 40 Million Uniques – Jonathan Klein (Etsy)

The UX of URLS – Ryan Freebern

Pragmatic API Development – Andrew Curioso

Agile in the Workplace – Mike Stowe

Dependency Management in PHP: Better Late than Never

Don’t Be STUPID, Grasp SOLID – Anthony Ferrara

Up and Running with Bootstrap

jQuery Mobile: Sites that Feel Like Apps

Workshop: Clean Application Development

Magic Methods: Spilling the Secret – Matthew Barlocker

Git Essentials – Matthew Barlocker


You Can UX Too: Avoiding the Programmer’s User Interface – Eryn O’Neil

Workshop: Usability Testing for the Common Man – Heather O’Neill

Introduction to User Experience Design – Meghan Reilly

UI Patterns: A Practical Toolkit – Jim O’Neill

BackboneConf 2013 Recap

Last week, along with a few other developers from Automattic, I attended the BackboneConf 2013 at the Microsoft NERD center organized by the fine folks at Bocoup. The enjoyable two-day conference provided me with a better sense of the bigger javascript trends and gave me a bunch of practical tidbits.

The big theme was modules and how to best structure code so that dependencies are minimized, concerns are well separated, and unit testing is easier. With the inclusion of modules in ECMAScript 6 and the maturation of nodejs and AMD/UMD/CommonJS, modules are ready for prime time. Now I just need to figure out the best way to incorporate modules into WordPress, which already has a file-based javascript dependency management system.


  1. Underscore has lots of super elegant bits that I should take remember to use:
    // Set default key/value pairs if not included in the passed object (options)
    options = options || {};
    _.defaults(options, {
      showFollows: true,
      showLikes: true
    // take certain options and copy the properties to the destination object (in this case this)
    _.extend(this, _.pick(options, methodArray));
  2. Use an event bus and postMessage() to simplify messaging between parent document and iframe with embedded Backbone App.See
  3. Use requestanimationframe() and _.debounce() to avoid blocking the UI when doing expensive looping operations by chunking the work.
  4. Even when using Backbone, it can be very useful to store visual state in the DOM through using classes. It seems obvious in retrospect, but when in a Model-View-Whatever state-of-mind, it is easy to forget to take advantage of the DOM to store view state. This is especially useful for changing the visibility of certain child views in a collection view.
  5. Q seemed to be the preferred library for promises.
  6. Mocha, chai, and sinon seemed to be the preferred set of tools for writing javascript unit tests.
  7. Use promises to fetch data, templates, and any other dependencies in parallel when building up a page in a single-page app to improve the load time of pages.
  8. FastClick is a neat library for improving the responsiveness of click events on mobile if you don’t have any double-click events.
  9. IndexDB allows a client side app to store much more data than local storage