EECI 2012 Conference Day One

Author Avatar
Written by Digital Surgeons,
• 26 min read

Everyone loves having one place to grab slide decks, speaker notes, etc. I was hoping there would be one place to grab everything after attending EECI Brooklyn last year and that wasn’t the case. So during this year’s EECI in Austin, I created a public Google Document where I could capture all of my notes and others could contribute as well. My name’s Pete Sena and this experiment proved to be a great success. I’ve captured all of the notes from the two days into two semi-succinct posts for easy reference and refreshing. Thank you to everyone who made this conference great and who contributed to the original Google document. I hope this is helpful!

Biggest Game in Town

Ryan Irelan

  Key members of the EECI community he mentions:

  Interesting advancements and community mashups

  Trainers & Professional Services for learning ExpressionEngine:

  Key members of the EllisLab team who want to hear from you:



EECMS & the Web Agency: New Techniques

Christopher Imrie

  Lead Developer, Moresoda
 Slide Deck URL

  70% of our work is projects, 95% websites

  • Default install
  • Git version controlled
  • Customised Config
    • for multi environment support


  • Beanstalk for deployments and team migration
  • 3 Environments

    • Development, staging and production


  Adding new features once the site is live we end up with problems with data. AKA synchronizing content, DB, channels, etc. Example: adding a blog to an existing site.

  Data Migration Solutions Today:

  2. Duplicating on each environment via control panel (super redundant) stuff like channel settings, fields, etc.
  4. Migrate entire database after each environment file update
  6. Migrate relevant database tables
  8. Staging and production share the same database. (DIGITAL SURGEONS NOTE: your templates are what allow your user to access the same feature. What you do is deploy your templates to your staging but not your production. So you can create channel, fields but not push to production. Only works if you are adding, if you change something it will break.)
  10. Update production first, migrate database downwards
  12. User submitted not speaker submitted: Using Navicat for DB diffs

  This led MoreSoda down the path to home-growing their own solution for this issue.

  They outlined four key areas:

  • Sites overview
  • Data communication
  • Compare data
  • Security

  Their solution is called Site Manager. Details:

  Security information on Site Manager:

  • AES Encrypted communication (Decrypt/Encrypt on the fly)
  • Public/Private key (regenerate to deny existing credentials)
  • Super Admins only
  • Protected by EE Security Sandbox
  • Child Sites retain freedom control

  More things Site Manager Can Do:

  • Compare any two environments (Live data, compare as you work)
  • Synchronise data and settings (channels, fieldgroups, fields, categories)
  • Fault Tolerance (native EE methods used where possible)
  • License & Version review

  Q: Availability? When and how can i get this?

  A: Alpha available TODAY. October 15th. SiteManager

  Q: How much will this be?

  A: At the moment it is free but community he needs feedback so please submit!

  Q: How stable is this?

  A: Pretty stable we already use this for our client sites.

  Q: Are you open to contributions?

  A: Yes, that is why it’s on github.

  Q: Does it work with MSM?

  A: Yes, it doesn’t care already built in. All it needs is to be pointed to proper index.php

  Q: Does it support license tracking for add-ons?

  A: Not currently but hoping to have a method.

  Q: How are you doing file upload groups?

  A: This depends on the config variables. This would just need some file permissions to be put in play so this could be added potentially as well.

  Future roadmap

  • Testing
  • Fieldtype extension hooks
  • entry migration
  • APIs for third party data transfer
  • one click login improvements
  • styling improvements


The Anatomy of a 5000 hour ExpressionEngine Project

Brian Litzinger

  Senior Developer at The Nerdery
 Slide Deck URL

404 Page Strategies with ExpressionEngine

Ryan Battles

  Lead Front-End Engineer at Crushpath

  Slide Deck URL

  By default, ExpressionEngine displays the homepage instead of a 404 page when a resource is not found. Fortunately, there are tweaks and strategies that can be applied to ensure a rock-solid 404 strategy for your ExpressionEngine site that will improve usability, increase SEO, and even increase sales.

  In many of life’s conflicts, there are usually these steps:

  • Unmet Expectations
  • Acknowledgement of Situation
  • Offer to remedy

  The same logic applies to 404 pages on your website:

  • Page isn’t found
  • Acknowledge this fact (404 Page)
  • Offer content or links that they might find useful

  A poor 404 strategy can affect:

  • Your Search Engine Rankings
  • Your Visitor’s Experience
  • Your Bottom Line
  • Your Reputation

  404 Pages Should be:

  • Informative
  • Assuring
  • Helpful
  • Entertaining (optional)

  To read about the specifics of ExpressionEngine implementation of successful 404 strategies during development, read Ryan’s article that lays out code examples and detailed discussion:
 Guide to 404 Pages with ExpressionEngine on Jovia Web Studio’s Blog

With Great Power Comes Great Responsibility

Ben Croker

  Slide Deck
 Lead Developer, Venveo
 Add-on Developer: PutYourLightsOn

  Power Features:

  • EE and CI Classes
  • Add-ons as Packages
  • Extension Hooks

  Progressive Add-on Development

  • Developing add-ons that are compatible with other add-ons and extending them.
  • Hook / Tag / Action → can cause an add-on to do something.
  • If this add-on had hooks, then the next add-on could hook into that, and so forth.
  • Each add-on can be its own mini app within a CMS.

  An example is using Backup Pro. That’s how they do their backups, daily via a cron job to Cloud files, Amazon S3, or FTP. In this example he discusses tapping into a hook to make Backup Pro work with Google Drive, you can extend the Backup Pro add-on to add the needed functionality yourself.

  Responsibility of a progressive add-on:

  • Personal or Internal
    • Does not compromise security
    • does not hurt performance
    • does not cause errors


  • Free

    • does not conflict with other add-ons
    • compatible with EE upgrades
    • uses good code


  • Commercial

    • Free/paid support
    • actively developed
    • compatible with other add-ons


  Privacy concerns:
 Example of this is in Europe there is the EU cookie Law (Cookie Consent module) (Cookie Law)

  Ben has been working on an add-on called Continuum which he demonstrates. Continuum is a progressive real-time tracking add-on.

  Similar to analytics suites like Clictale or Google Analytics this gives you a real-time look into what people are doing on your EE site, which allows you to filter by user actions (downloading a file, leaving a comment, viewing a page). This add-on is able to garner data that standard front-end asynchronous scripts can’t always do. He shows a visualization tool for watching this flow. He integrated this into freeform, safecracker and the comment module.

  Potential Extensions of this could be:

  • Real-time campaign manager (dynamic a/b or multivariate testing)
  • Member reward scheme
  • online purchase behavior

  These are all examples of how other developers can extend continuum.

  How to Develop progressive add-ons

  • Think of EE as a platform
  • Aim for compatible and extendable
  • Respect and help our peers

  Looking for a responsive control panel for your EE site check out his free add-on ResponsiveCP

Bootstrapping EE: A Guide to Setting up a Reusable Rapid ExpressionEngine Environment

Carl Crawley

  Managing Director of Made by Hippo

  Slide Deck URL

  Looked to create a standardized build.

  • Born from frustration of clients wanting “days” to setup.
  • When developing add-ons, a rapid setup was needed to test.
  • maximizing project profit and roi – the principle is to become more profitable not charge your clients “less”

  He shot for a DRY(ish) bootstrap solution.


  Mac based instructions:

  • Command line terminal (bash)
  • Local development environment (MAMP, MAMP PRO)
  • Code editor

  Abstract from any project that holds specific files:

  • configs / addons / templates
  • backups
  • html/css/js/img
  • ugc (user generated content)

  They work on the principle of turn everything off until you need it.

  Remove unnecessary add-ons

  • blacklist/whitelist, comment, email, emoticon, file, ip to nation, mailing list

  Setup UGC (User generated content) Folders

  • setup config.php and database.php
  • setup security and privacy and add config overrides for the following:
    • using profile_trigger to mitigate member spam
    • disable enable_online_user_tracing
    • disable enable_hit_tracking
    • disable enable_entry_view_tracking
    • disable dynamic_tracking_disabling
    • disable disable_all_tracking


  • Define snippets and Global Variables
  • Create standard file uploads

    • they use relative paths to the control panel.
    • we keep the CP folder in the webroot we just change the folder name


  • We fix the damn bugs!

    • Any bugs will be posted by users in the bug tracker, they will manually update various core files to bugs that are listed


  • We install our standard goto add-ons


  We also use Zenbu but its not in our default build. We don’t use it enough

  Our build is now down and we introduce our file.

  This script does:

  • Backs up the DB
  • Handles renames of your system folder
  • sets all the correct folder permissions
  • cleans your installation up

  you run it by ./ -p system

  the script has a clean up call to with the -c flag

  • installer files
  • agile records theme
  • wiki themes
  • corporate theme

  the script has a backup flag used with this syntax.
 ./ -b dbname user pass

  • backs up the database to /assets/backups/{dbname}_{epoch}.sql

  Now its configured and set, we encapsulate it by committing to a DCVS.

  • include the file
  • maintain a single master branch

  Open the file and set the URL/path to your repository.

  • Doesn’t have to be remote]

  I ran this in my office on a standard DSL connection in about 26 seconds (averages between 20 and 30 seconds) that is now a fully working ready to roll ExpressionEngine site.

  • Checked the file out of repo
  • created our new database
  • imported the latest version of our db dump from repo
  • created our local folder
  • renamed/secured cp folder
  • added/commited all the files
  • pushed to remote repo
  • remove admin.php
  • rename the folder

  DIGITAL SURGEONS NOTE: In Carl’s demo he favors BitBucket, but naturally this will work with any remote GIT hosting platform. We use and love Beanstalk and GitHub.


  Q: What if you are using this for multiple environments?

  A: It can be extended for staging and others. you can’t always guarantee the permissions. so if you have engine hosting you don’t have secure access and can’t run it. It’s free its there and people can change it.

  Noah Stokes talk will include distributed team discussion.

  Q: what are some tips for maintenance work, when you don’t have the opportunity from the beginning?

  A: there is no magic bullet. when you’ve done it for yourself. You should take a serious amount of time, we’ve managed. Standard EE build is about 22 SQL statements, our build gets done to 9. That is a huge saving if you scale that up to a working site. Do it and document what you have done. There’s a great add-on called graphite which visualizes the debug screens. When we inherit a site we put graphite on it and see where the bottlenecks are.

  Q: I saw a bunch of people report bugs on installing comment module. Are you experiencing that?

  A: I think that was fixed in the latest release from EllisLab. We assume that at some point EllisLab will fix it at the core, so if you need to hack the core to fix a bug, if you read the change logs you can do a diff on the file and merge the changes and keep your fix or your change in play.

  Q: You mentioned a snippet of code to disable categories can you go back to that?

  A: Defining the snippets these are simple statement to do this within a template. We do this purely because can’t remember the disable parameters off top of head. {exp:channel:categories xxx (sp_category_disable)}

  (Someone suggested also doing this via a global variable instead of this way.)

  Q: Do you standardize your templates or template groups?

  A: no, i have a standard home template and the only reason that is there is because the trigger for EE to look up files and sync with the DB will only work if the default homepage has been created in the CP first. If you create a site and then define your templates folder, EE won’t do anything with it until you set that up.

  DIGITAL SURGEONS NOTE: When you put a site live be sure to turn off “run templates as files” the reason for this (he didn’t explain) is that it reduces the time to execute based on the DB firing faster than standard disk IO.

  Q: Do you actually delete the folder?

  A: No, I just uninstall them and remove from CP.

  Q: If you don’t change it and randomize the name can bots still find it?

  A: Essentially there are bots that will do dictionary brute force attacks which is why we use profile_trigger and generate a random ASCII charger. Even if by some fluke someone got the profile trigger it will have changed.

  Q: Have you looked to use this in deployment like ruby capistrano?

  A: At first we did but from our point of view the beanstalk, deployhq, have this sort of figured out. With having a bootstrap remote the last thing you want is it to fail remotely (internet uncertainty). You also can’t guarantee you will have the permissions. We also don’t typically deploy we handoff to agency.

  Q: How about for setting up your virtual domains?

  A: Yes we looked at this, but automating with mamp can’t be done via command line. MAMP pro allows you to setup various

  Q: Why hasn’t someone made something better than mamp?

  A: I actually quite like mamp.

  Q: How do you upgrade sites once you have deployed them?

  A: We roll add-on updater by dev demon into our build, most our our clients will deal with this. Generally we run updater locally and commit into the repo.

  Q: How do you price your default install with all the add-ons you roll in there?

  A: It depends on the client typically with the agencies, they are responsible for obtaining licenses when we roll out site we deliver a document at time of UAT (user acceptance testing). We get the autonomy to use and choose which ones. If you bought an add-on its because you need it.

  Q: Is there a reason you don’t move system outside of root?

  A: No there is no reason we don’t we just don’t. We just rename the folder and remove admin.php. We use relative paths for the file uploads to the location of the cp folder which means we don’t need to add to our config file.

  Q: If you use add-on updater how do you reconcile changes to core files?

  A: We run it locally and just do a diff on the files and maintain a readme file for core files we’ve changed. If nothing else has changed we will just put our core hacks back into play unless they have been corrected.

  Any questions please get in touch. Files from this discussion can be found here:

The Power & Pitfalls of Digital Strategy: How to Focus on the Best & Forget the Rest

Aimee Shiree Romero

  Two major goals for focusing on the sustainable, long-term value of otherwise “buzzy” strategies

  • Better Relationships
  • Better Results

  What Are We Shooting For?

  • Efficiency
  • On time & under budget
  • Higher profitability for us and our clients
  • Better results
  • Better relationships

  How Do We Get There?

  • Not through “buzzwords” per say, but through strategies that appeal to human nature and have been doing so since the dawn of time
  • Use Aristotle’s 3 Pillars of Argument as a filter for what matters and what doesn’t in terms of strategy and selling the importance of strategy
  • Ethos – credibility, character, etc.
  • Logos – logic, science, reason
  • Pathos – emotion, feeling, physical/visceral reaction

  Getting Started: Research, Goals, Benchmarking

  If you don’t ask critical questions and document the answers, you run the risk of screwing your clients in the long-term or post project. You can’t build efficient ways to solve problems you’re unaware of. You can’t reach goals without identifying what they are.

  • What’s the history?
  • What history needs to be preserved?
  • What are the business goals? (what does the business need to stay in business and profitable?)
  • What are the values the business provides to the user/audience? What sets them apart?
  • What does the business consider a success? What are they watching/monitoring already?


  Hopefully clients are already collecting data, it’s critical to define KPI’s to monitor in support of defined business goals – what are you going to look at to determine whether or not a project is successful? How do you know how your work has affected the business? Build a foundation from which you build a living, breathing strategy for optimization.

  In the Thick: Content, Structure, Design, UX/UI, Technology

  All the elements of a development process are important and in a way should share common goals. They have the ability to make or break the success of the project as a whole. Small changes can support or destroy return.

  • Client launched a new site with duplicate content, bad URLs, used tech that was unreadable by search engines and lost >$100,000 in revenue in the first month post launch
  • Conversely, we resolved duplicate content, created informative URLs, and tweaked the UI for another client and they improved organic CTR, visits, revenue by huge numbers (20%, 150%, 200%)


  Not exactly a checklist as much as a set of concepts that need to be championed throughout the dev process – should be tweaked and adjusted and perfected per your own development process

  Unique & Canonical Content

  Content should be unique and canonical. From a content strategy perspective, the more unique and authoritative your content, the more opportunity for visibility you get. From the tech standpoint, search engines also need to understand authority between versions of pages. Make sure all pages have unique page level elements like URL, page title, meta description. Exercise special caution when dealing with blogs/categories/tagging – use canonical tags, or noindex tags if necessary when dealing with facets/categories/etc..
 EE Tips

  • Plan URLs in advance. EE defaults to index.php extensions, need to be sure that these old versions of URLs are all mapped/redirected appropriately
  • Make sure 404s are working as they should – see Ryan Battles for full description wink
  • Keep the concept of unique and canonical in mind when dealing with EE’s pagination/categories/etc. just like with any other CMS.

  Include Clear Next Steps

  Every aspect of the user facing site/product should make next steps clear. In context within content, in terms of CTAs in the UI, in terms of information architecture/structure of the site. Keep the sales funnel in mind when ordering steps and information – Discovery/Awareness > Research/Comparison > Consideration/Comparison > Conversion. What does the user require to convert?

  Take Nature & Nurture Into Account

  This is especially important for UX/UI, focus on both what works because of how we innately work or what an audience is used to (IE – reading left to right, colors that indicate ideas – green for go, etc.). Don’t be afraid to look at businesses whose conversions are thriving for a starting or testing point.

  Keep Testing Top of Mind

  Whether or not you intend to test within the confines of your project, if you consider what elements of the build would make sense to test and build in modular way, you’ll end up with a more flexible product that will allow your client to gain valuable insights down the road.

  A good example is always including a template for landing pages, whether or not you’ll be working with a client on PPC/email/etc.

  Post-Launch: Engaged & Converting

  You want to make sure your clients know how your work has impacted their business. If you’re the business, you want to know what you’ve done that’s worked and where to focus your attention. We gather a TON of data online, we need to take what we learn and apply it incrementally to our projects to increase results.

  Follow the pattern of Monitor>Analyze>Iterate for the life cycle. If you want to build something useful, you have to know and understand how it’s being used.

  Analytics Again!

  This is where everything identified in the beginning of the project comes into play. We need to monitor the KPIs we’ve defined and use data as the foundation for optimizing. Don’t forget, there’s a big difference between KPIs and Metrics

  Don’t Be an Order Taker
 We are the music makers,
 We are the dreamers of dreams
 Wandering by lone sea-breakers
 And sitting by desolate streams
 World-losers and world-forsakers
 On whom the pale moon gleams
 We are the movers and shakers
 Of the world forever, it seems

  This community is in a unique position to propel the web forward in a direction that makes sense – away from the buzz and into quality. Go forth and prosper!


Developers Roundtable

  Feat. Brandon Kelly from pixelandtonic, Ryan Masuga from devote:ee and masuga design, Low from Low , Mitchell Kimbrough of Solspace. Hosted by Ryan Irelan.

  “The future of EE add-on development”
 A roundtable discussion with notorious #eecms (add-on) developers like Brandon, Ryan, Lodewijk, and a few more. Join the discussion about where add-on development is and what we need to keep it going forward. This roundtable is hosted by Ryan Irelan.

  Q: How do you determine your cost?

  A: Brandon Kelly: Competitors set the price point i’ll typically scale cost accordingly. Tend to set the upper limit of $50 depending on how great the add-on is. Playa was named by a joke because it was about having multiple relationships and thought 69 was a good number, its been arbitrary how we set our price points. Support is extremely intense due to complexity. Due to the cost of ExpressionEngine’s license they feel they are limited with how they can price things. We’re offering convenience for a price but the cost of the ExpressionEngine we’re limited to how high we can go where people will pay for it. Even if we got more users the cost of support is immense and is really a sticking point for most of the developers at the round table.

  Devot:ee: Sales of add-ons seem to be flattening out or declining based on competition. Still evidence to stay in business but its not the steep growth. This suggests adoption of EE is lowering but i can only make assumptions on that point.Publishing an article helps to stimulate sales.We see peaks and valleys in sales of add-ons. The number of add-ons are steadily increasing. We’ve seen the ceiling which indicates to me how big or limited the community might be. I’m not seeing the growth when the store first started.

  Q: Is the bulk of your support from newbies or developers who are using your add-ons in a complex way and need support on edge cases?

  A: We get it all but majority are from newbies who are new to EE.

  Q: Where do you see EE add-ons in five years?

  A: Solspace: We want to build really difficult stuff. The volume of sales and the price point wouldn’t support what we want to do. Until the community is larger or there is a pricing change with EE, we’re not inclined to do anything bigger. The pricing of the core tool needs to be priced higher.

  Q: Is there anything in EE keeping you doing the things you want?

  A: Yes.

  Low: would love to see increase in API’s for channel entries. The current API only allows for current CRUD stuff. It really depends on what EllisLab’s priorities are? The future of add-ons depends on the future of EllisLab.

  Brandon Kelly: Writing add-ons into ExpressionEngine is a ton of SQL queries and regular expressions. It’s not fun. ExpressionEngine back then it was more prominent. Back then it was EE + some add-ons. Today it is building your website, while its featureset hasn’t decreased add-ons have completely customized how we use it. looking forward five years I imagine we will look at it like a platform and add-ons are your site more and more

  Q: Do you lose sleep about things being built into EE in the future that your add-ons do now?

  A: Brandon Kelly: How many of you use WYGWAM stopped using it when EllisLab released rich text? I’m not concerned

  Q: How much of your code is accommodating others (EE ad-on integration)?

  A: It does happen. There is def some talk with other developers.

  Q: Do you envision more developers being more collaborative and standardizing hook names, etc?

  A: Low: I think it will happen, in Ben’s talk we talked about saving settings , see this potentially being a standard eventually

  Q: Comments on updating for new EE releases?

  A: Mitchell: We need more lead time from EllisLab from the time we see a preview since our library is too big. instead we fix as fast as we can and do the best by our customers.

Notes from Day Two at the ExpressionEngine CodeIgniter conference
 Have a look at some of our ExpressionEngine design and development projects.