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.

Highlights

  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 http://lognormal.github.io/boomerang/doc/.
  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.

Slides

Looking to the Past, to Predict the Future- Eli White
http://eliw.com/presentations/2013/ne13/ne13.history.pdf

Practical Responsive Web Design – Jonathan Klein (Etsy)
http://jkle.in/rwd

Scaling PHP to 40 Million Uniques – Jonathan Klein (Etsy)
http://jkle.in/nephp

The UX of URLS – Ryan Freebern
http://blog.rnf.me/ux-of-urls/#/

Pragmatic API Development – Andrew Curioso
http://www.slideshare.net/andrewcurioso/curioso-nephp2013

Agile in the Workplace – Mike Stowe
http://www.slideshare.net/mikestowe/agile-in-the-workplace

Dependency Management in PHP: Better Late than Never
http://sequoia.github.io/composer-talk/#/

Don’t Be STUPID, Grasp SOLID – Anthony Ferrara
http://www.slideshare.net/ircmaxell/dont-be-stupid-grasp-solid

Up and Running with Bootstrap
http://www.slideshare.net/jen4web/up-running-with-bootstrap-3

jQuery Mobile: Sites that Feel Like Apps
https://speakerdeck.com/afilina/jquery-mobile-sites-that-feel-like-apps-3

Workshop: Clean Application Development
http://www.slideshare.net/adamculp/clean-application-development-tutorial

Magic Methods: Spilling the Secret – Matthew Barlocker
http://www.slideshare.net/MatthewBarlocker/magic-methods-25338954

Git Essentials – Matthew Barlocker
http://www.slideshare.net/MatthewBarlocker/git-essentials-25347525

UX

You Can UX Too: Avoiding the Programmer’s User Interface – Eryn O’Neil
http://www.slideshare.net/eryno/you-can-ux-too-avoiding-the-programmers-user-interface-nephp-2013

Workshop: Usability Testing for the Common Man – Heather O’Neill
http://www.abovethefolddesign.com/assets/presentations/usability-testing/Usability-Testing-for-the-Common-Man.pdf

Introduction to User Experience Design – Meghan Reilly
http://www.abovethefolddesign.com/assets/presentations/intro-to-ux-design/Introduction-to-UX-Design.pdf

UI Patterns: A Practical Toolkit – Jim O’Neill
http://www.abovethefolddesign.com/assets/presentations/ui-patterns/UI-Patterns-A-Practical-Toolkit.pdf

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.

Tidbits

  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 http://benvinegar.github.io/backbone-at-disqus-talk/#/42
  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

Slides