Published by Mijingo

Learn ExpressionEngine TodayAdvertise Here

Over a series of 8 videos, watch and learn as Ryan builds an entire ExpressionEngine website from beginning to end. Get started now.

blog icon image

Your Weekly devot:ee - April 25, 2013

Blog Entry

devot:ee

  • Lovely Sorted Add-ons by Dan Diemer
    Lovely Sorted Add-ons groups your Modules, Extensions, Accessories and Fieldtypes into separate Enabled and Disabled tables in the Control Panel. It also standardizes some terminology across all types of add-ons.
  • Filter Entries ($) by a&m impact
    Want to filter your entries based on their custom fields? This extension will filter entries for a certain channel based on user input and allows you to display them using a CE tag! Inlcudes support for playa fields!
  • Field Pack by Pixel & Tonic (Brandon Kelly)
    Field Pack gives you a handful of useful little fieldtypes.
  • Publisher Lite ($) by Brian Litzinger (Bold Minded)
    Publisher Lite is the workflow only version of Publisher. It does not support multiple languages, but you get all the other benefits of Publisher.
  • Hijack by Blue Coast Web
    Inject arbitrary Javascript into the ExpressionEngine control panel.
  • Authentic by Blue Coast Web
    HTTP Basic Authentication plugin for ExpressionEngine. Password protect an arbitrary public facing page or URL without involving either the EE Member module or the web server configuration (.htaccess, htpasswd etc).

Posted on Apr 25, 2013 by Ryan Masuga

Filed Under: Weekly Devot:ee,

blog icon image

Native Relationship Field and Playa Side-by-Side

Blog Entry

Here’s a quick (silent) video of the two field types and how they work.

Posted on Apr 23, 2013 by Ryan Irelan

Filed Under: EE Add-ons, EllisLab,

blog icon image

When Relationships Get Complicated

Blog Entry

Something is going on over at EllisLab. It’s obvious that they’re excited about the upcoming release of EE 2.6. The usually quiet, introverted company has been proudly touting their release and confidently sharing through updates on their website.

There are have been a handful of small announcements recently about EE 2.6 and its new features. There’s one big new feature that I thought they would hold out until EE 2.6 was ready to launch, but they couldn’t keep it a secret.

Last week EllisLab announced that EE 2.6 will have a new relationship field that supports multi-relationships field.

Today the update is available for everyone.

Relatedly Speaking

The new native multi-relationship field is a little like Playa by Pixel & Tonic; there are two panes and you can add related entries by clicking them in the left and they appear on the right.

Unlike Playa, you can’t drag and drop between the two panes. To remove an already related entry you have to explicitly click the “x” on the far right of each related entry. Similarly, to reorder them you have to use the grippy area on the far left. Playa offers a much easier way of interacting with the related entries: reorder by clicking and holding anywhere on the entry, remove with a simple double click (in addition to drag and drop or using the arrows between the two panes).

I prefer the aesthetic of the Playa. It is more polished and a nicer user experience. But the new native relationships field copies many of the settings and functionality of Playa. The native field type will get it done for some people the same way that the Rich Text Editor does.

They Had to Do It

EllisLab had to make this addition to the CMS. Was it a direct shot at their new competitor (Pixel & Tonic is building their own CMS called Craft) and an attempt to cut into their sales of Playa? Or did EllisLab finally realize that they need to start innovating the CMS and adding features that arguably should’ve already been there?

It doesn’t really matter which one it was. Both are strategic business moves. The former will definitely rub people the wrong way because Pixel & Tonic’s add-ons help make ExpressionEngine a more attractive CMS. The latter reason will get praise because we’re all relieved that things are moving forward again.

There will always be people who will be unhappy no matter what happens.

Skating to the Puck

The first step to resuming innovation for EllisLab is to play catch-up with the third party add-on community. When innovation stalls, others will do it for you. That’s what Pixel & Tonic and dozens of other add-on developers have done. EE sorely lacks in many areas but our talented group of third party developers have jumped in to fill the holes left by EllisLab’s stagnation over the last few years.

When others beat you to innovation then you’re forced to cede that feature or risk looking like a copy cat. Neither is good but EllisLab surely knows that they’d rather look like a copy cat while serving their customers than continue to lose control of innovation on their platform.

Posted on Apr 23, 2013 by Ryan Irelan

Filed Under: Community, Development Tools, EE Add-ons, EllisLab, ExpressionEngine 2,

blog icon image

ExpressionEngine 2.6 Available

Blog Entry

In a blog post from EllisLab, EE 2.6 is now available. In addition to all of the changes (like the updated relationship field) and additions, there are also some deprecations:

This release brings a fair number of deprecations along with the removal of some previously deprecated items. You can find a list of the removed and deprecated methods in the changelog.

More shortly.

Posted on Apr 23, 2013 by Ryan Irelan

Filed Under: EllisLab, ExpressionEngine 2,

blog icon image

Devot:ee Lists

Blog Entry

Last week our friends at Devot:ee introduced a new feature called Lists. Lists let you organize add-ons on the Devot:ee site into groups.

You can make lists for projects, a favorites list, a list of add-ons you want to try, and more. Additionally, you can add add-ons in a List to your shopping cart with a single click on the “Purchase All” link at the top of the list.

Read all about Lists

Posted on Apr 23, 2013 by Ryan Irelan

Filed Under: EE Add-ons,

blog icon image

What They’re Saying About EE

Blog Entry

This is a on-going series of entries where I highlight EE experiences.

Posted on Apr 22, 2013 by Ryan Irelan

Filed Under: What They're Saying About EE,

blog icon image

EECI 2013 Schedule Announced

Blog Entry

Along with the new website, EECI 2013 also released the full schedule and lineup for the latest installment of our community’s annual gathering. This year the conference is being led by Brad Parscale of Turner Parscale and DevDemon.

Over two days the conference packs in 34 speakers and 46 sessions. The conference takes place at the Benson Hotel in Portland, Oregon.

I’ll have a lot more to say about it as we get closer. But for now: check out the schedule and register to attend.

See you there.

Posted on Apr 21, 2013 by Ryan Irelan

Filed Under: Conferences,

blog icon image

Securit:ee Updated for 2.6

Blog Entry

If you rely on Eric Lamb’s Securit:ee add-on, it has just been updated with bug fixes and improvements, including support for the upcoming 2.6 release of ExpressionEngine.

Not familiar with Securit:ee? Here you go:

Securit:ee is a security suite for ExpressionEngine 2. Securit:ee adds a number of security enhancements to ExpressionEngine including a file monitor, CP login alert, CP and Client Side IP locker, CP Quick Deny, and Security Scanner.

Posted on Apr 21, 2013 by Ryan Irelan

Filed Under: EE Add-ons, EE Modules,

blog icon image

EE 2.6 will include improved relationship field

Blog Entry

I have a lot more to say about this (but can’t because 2.6 isn’t out yet) so stayed tuned for that. For right now, however, I just want link over to the EllisLab site and their announcement of the updated Relationships field type.

The new Relationships field type allows multiple relationships (yes, just like Pixel & Tonic’s Playa) and new template code syntax to make that possible.

Read the official EllisLab. I’ll have my own take soon.

Posted on Apr 21, 2013 by Ryan Irelan

Filed Under: EE Add-ons, EE Fieldtypes, EllisLab, ExpressionEngine 2,

blog icon image

Using JavaScript Instead of jQuery

Blog Entry

In Weaning Yourself Off jQUery James Halliday shows how you can use just JavaScript to easily do what you might be using jQuery–and it’s overhead as a library–to do.

As programmers build up applications up from lots of tiny components, if every component included a vendored jquery version, the total javascript size quickly baloons into multi-megabytes. When the jquery version gets pegged, version incompatibilities arise that likewise create redundancy issues. When the jquery version is left to float or its use is demanded externally in the documentation, this also does not scale well and makes it cumbersome and error-prone to use tiny pieces.

Learn some JavaScript.

Posted on Apr 19, 2013 by Ryan Irelan

Filed Under: Development Tools, Life as a Web Professional,

blog icon image

EE Podcast: Mergers & Partnerships with Clearfire

Blog Entry

The EE community is renowned for its camaraderie and collaborative nature, and various studios work together on projects that continue to bolster this reputation. What about taking that collaboration to the next level?

For the latest EE Podcast, Casey Reid and Chad Crowell drop by the show to discuss their recent merger. They discuss why they decided to partner versus staying separate entities, business considerations like taxes and legal issues, the balance between friendship and business, collaborating on EE efficiencies and workflow, and how merging will ultimately make them a much stronger and profitable entity. Tune in now!

Thanks to CSS Dev Conference for sponsoring!

Posted on Apr 18, 2013 by EE Podcast

Filed Under: EE Podcast,

blog icon image

Your Weekly devot:ee - April 18, 2013

Blog Entry

devot:ee

  • EE Facebook Feed ($) by Jump Frog
    Display a feed from your Facebook page with your own styling. No fixed layout, no fixed styling! Each piece of data is stored as a variable, allowing you to use them wherever you like.
  • String Divide by Shoe Shine Design & Development
    Divide and insert! Divide any html/text string at the exact point you want so you can insert another custom text/html string.
  • JF Multi File Field ($) by Jump Frog
    Sick and tired of creating a gallery with multiple ‘Gallery Image X’ fields? Get some flexibility back in your site with our ‘Multiple File Uploader’ for Expression Engine. Have you ever made a channel with ‘Image 1’, ‘Image 2’ etc and then had your client ask how do they add a third image? …. No more with ‘Multiple File Uploader’. Features: Upload multiple files via ajax; drag and drop file ordering; one click remove; users can choose one or multiple files when browsing; without submitting, a user can find conflicts with existing files; give the user options when conflicts arise, such as overwrite, cancel and rename.
  • ExSponge by FCGRX
    An HTML / Rich Text / WYSIWYG / Microsoft Word cleanup and filtering plugin for ExpressionEngine

Posted on Apr 18, 2013 by Ryan Masuga

Filed Under: Weekly Devot:ee,

blog icon image

What They’re Saying About EE

Blog Entry

This is a on-going series of entries where I highlight EE experiences.

[removed][removed]

Mission accomplished.

Posted on Apr 18, 2013 by Ryan Irelan

Filed Under: What They're Saying About EE,

blog icon image

Donations with the Store Module

Blog Entry

Justin Long put together Accepting Donations with Exp:resso Store, a tutorial on taking donations using the Store Module by Exp:resso.

Justin turn the quantity field into the price field and then cleverly sets the product price to $1. The end result is the ability to set the price you want to donate.

Read Justin’s entire tutorial.

Posted on Apr 17, 2013 by Ryan Irelan

Filed Under: E-commerce, EE Add-ons, EE Modules,

blog icon image

Testing Email Sending in EE

Blog Entry

A good tip to a web service that helps you test about email sending while building an EE site.

So you need to test and debug email notification templates while working in your local environment. You still need to verify mail is being sent and inspect the email contents. You might create a few accounts with email addresses you own, which I guess works on a small scale. But let’s say you need to test bulk mail delivery, or maybe you’re working with a preexisting member list of thousands of accounts. Even though you’re working on a local server, the email addresses are real and if you mistakenly trigger a bulk mail function, you’re going to end up with some very confused users. Of course you’re already bootstrapping your EE setup with the Focus Lab conifg overrides right? We’ll be using MailTrap.io to isolate and display sent emails from our dev environment.

What follows are a few quick steps on getting set up with Mailtrap.io in ExpressionEngine. The service is currently free for everyone.

Posted on Apr 17, 2013 by Ryan Irelan

Filed Under: Development Tools,

blog icon image

Quality and ExpressionEngine

Blog Entry

Eric Lamb is the developer of professional and enterprise grade ExpressionEngine add-ons. Founded in 2009 Eric’s company mithra62 aims to be a leader in ExpressionEngine add-on development and has a reputation for stability, usefulness, and being highly configurable. Check out Eric’s popular ExpressionEngine add-on Backup Pro.

When working on your average developer tool, a tool to help developers do their jobs as opposed to an add-on or script to add features, you can’t help but obsess over the meta. Normally, a lot of this stuff is just second nature, and rarely given more than a cursory thought, but with tool development, like the EE Debug Toolbar, you just can’t help it.

Take, for example. the question of “high quality in web development”. A couple months ago I had mentioned high quality as making sure “nothing was off about a project”. Not the best definition and certainly open to interpretation. Now that I’ve had some time to think about it I believe I have a better definition for what I consider a quality ExpressionEngine site to mean.

When building out a web project there are 5 points that have to be covered completely for a project to be considered of high quality in my opinion. They are (in no particular order):

  1. Feature Complete
  2. Secure
  3. Minimal Fingerprint
  4. Maintainable
  5. Recoverable

Feature Complete

All things being equal, this one’s easy and the one most people can achieve. Does the project do what it’s intended to do?

Now, I say this one’s easy because with a tool like ExpressionEngine (and to be fair, lots of other platforms too) its whole purpose of being is to make doing things trivial. And it does do it pretty well. Say what you will about the problems ExpressionEngine may or may not have but it does allow web developers to do some useful things with minimal effort.

That said, nothing can make a project good if the plan is poor. If the list of features isn’t compelling or interesting to users it doesn’t matter how well done the other parts are.

Where things fall apart for those projects with a good feature set is with the other 3 points though.

Secure

Things have changed dramatically in the last decade in terms of security and web development and ExpressionEngine does it’s part to make that easy for a lot of situations. (Lots of newbie devs will never appreciate the sheer terror in coming into the office and feeling the odd sense of shame and revulsion over what some script kiddie did to the network. It’s a shame…)

But all this is still at the platform level. Using extra tools like Securit:ee, VZ Bad Behavior, devot:ee Monitor, and all the other security minded add-ons at devot:ee you can improve ExpressionEngine’s security even further. But there’s nothing stopping devs from doing insecure things in the development of their project.

Just a couple base example questions to ask yourself:

  1. Is personal data secured? Can users change a URL parameter and view stuff they shouldn’t?
  2. Is sensitive data secured and encrypted before storage?
  3. Does the site rely on only JS for form validation?
  4. Are the embed templates hidden (dot/underscore)?
  5. Is the site still in debug mode in production?
  6. Are the templates setup for member access and lock out?

Obviously a lot of this stuff is dependent on the project but my point is that security needs to be taken seriously and as an actual “thing” before quality can be claimed.

Minimal Fingerprint

This one is obviously close to my heart at the moment with the EE Debug Toolbar reaching maturity. Minimal Fingerprint refers to performance and how hungry a site is for system resources.

This is basically the below points for most sites regardless of platform (my personal goals in parenthesis):

  1. Page execution time (0.5 seconds max)
  2. Combined SQL execution time (0.01 seconds max)
  3. Single query execution time (0.001 seconds max)
  4. Total query count (less than 100)
  5. Memory usage (10MB max)
  6. Page download time (3 seconds total for all assets)

Having a secure and kick ass feature set for a site means nothing if it takes 20 seconds for pages to load.

Another thing that gets over looked far too often is how well a site performs “under load”. It is two very different things for a site to work gangbusters with no visitors and no data, but another altogether when the site is under the expected load and expected data set. Knowing (and planning for) this before pushing live is critical for a quality project.

It should be noted that performance is one of the rare exceptions where you can just throw money at the problem. Hardware’s cheaper now than it’s ever been so if you don’t have the time, inclination, or skill, to actually improve on the actual product you can always spread the site out across a load balancer or dedicated database server (or whatever) to help with performance. Definitely an advanced strategy though and not to be taken into lightly and one that’s extremely dirty to go into except as a last resort.

Maintainable

For those of us who have been around the block a few times, this is the really important determination of quality. How difficult is it to make changes/updates to the project? A tool like ExpressionEngine offers much more than just CMS capabilities; it also adds in longevity so long as a little care is taken. There is no reason for a website to have to move platforms just to change the design.

Think of it like this: You got hit by a bus/quit your job/decide the client isn’t worth it. Whatever. Basically, you’re just gone. Now. Are all those clever hacks, nested embeds, template partials gone made, spaghetti code, dynamic variables ({{var1}_{var2}_thing} anyone?) and copy pasta going to make growth and change a problem? Is the developer who takes over once you’re gone going to want to find your grave, dance on it, find a shaman and resurrect you, only to torture you for eternity because of the assault against nature you’ve created? In my experience, more often than not, yup, we’re gonna do some grave dancing and cursing.

Knowing the history on this it makes sense why maintainability would be an issue.

Tools like ExpressionEngine and WordPress and all the other CMS systems out there (and PHP and ASP and Perl before them) make creating websites well within the reach of the average enthusiast and the early successes can lead to a great deal of confidence. Enough confidence to think it’s a good idea to put the old shingle out and be open for business. Unfortunately, it takes a while for these newly christened developers to run into maintenance as an actual issue so they never think about it until later in their career.

Creating a maintainable site, that can scale to change with ease and logic, is of the utmost importance for quality.

Recoverable

Clients never think about disasters and failures when it comes to their websites in my experience. In over eleven years of doing client driven web development I don’t think I’ve ever had a client bring it up except for a couple occasions. That’s why it’s imperative that we (the hired devs/agencies) keep this in mind and set the client up for success.

In a nutshell; what is the plan when things go wrong?

  1. How are backups of the files and db being done and where are they stored?
  2. In the event the host disappears, what is the secondary provider to port things to?
  3. How is DNS handled and where do you change it?
  4. Where are the extra server components (HDD, RAM, NIC Cards, etc) stored and accessed (for dedicated hosting)?
  5. Who are the points of contact internally for assistance and guidance?

Now, outside of complete website development, disaster recovery isn’t really something that needs to be considered as a constant todo. But, for those projects that are complete sites or those with maintenance contracts (at the least), disaster recovery is an absolute must in order to claim a project as high quality.

Some agencies/devs like to charge for this as an extra line item, and more power to them but, personally, I do not.

First, disaster recovery plans are incredibly rote and straightforward at this point. There’s very little mystery involved. Software wise, it can range from free (Backup Pro(ish), Safe Harbor Lite, and even shell scripts at the server level) to barely 0.004% of a small project budget for an automated backup solution.

Second, when something does go wrong I like to have the confidence I can fix things. Knowing what to do in the event of an emergency is just good sense.

Third, the client can say no. This is the big winner. It’s a tough sell to get a client to think about disaster recovery when they’ve likely never even heard of the possibilities. Worse, in my experience, some clients even get the idea in their head that you’re trying to “nickel and dime them”. It’s a very awkward thing, especially considering the absolutely minimal overhead involved in crafting a plan. No, best to just absorb that cost and look like a bad ass when something goes wrong and a solution isn’t a problem.

Conclusion

For me, it’s very important that all five items receive equal treatment wherever possible. I say wherever possible because when it comes to each of those items, it’s a rare thing when improving one doesn’t change the other. The key is to make your decisions with eyes open as to the full consequences.

For example, improving security on a website will, more often than not, increase the performance costs. Conversely, improving on performance can have negative effects on maintainability (especially with ExpressionEngine), while feature set takes away from maintainability, fingerprint, and security.

It’s a constant back and forth game of whack a mole but one that’s absolutely critical to play in order to build high quality websites.

Eric Lamb is the developer of professional and enterprise grade ExpressionEngine add-ons. Founded in 2009 Eric’s company mithra62 aims to be a leader in ExpressionEngine add-on development and has a reputation for stability, usefulness, and being highly configurable. Check out Eric’s popular ExpressionEngine add-on Backup Pro.

Posted on Apr 16, 2013 by Eric Lamb

Filed Under: Development Tools, Life as a Web Professional,

blog icon image

EE Support Request Tips

Blog Entry

Michael Witwicki put together a nice set of tips for communicating support requests and issues with developers.

ExpressionEngine add-on developers (species: Codeignitus Developus) are a unique breed. Should you encounter one in the wild and need support, here are some tips get your question answered as quickly as possible.

His list is specific to ExpressionEngine add-on developers, but the approach is useful for any interaction you have with people who make the software you use.

Posted on Apr 15, 2013 by Ryan Irelan

Filed Under: Development Tools, Life as a Web Professional,

blog icon image

Introvert/Extrovert by Chris Coyier

Blog Entry

Maybe this is something many of us in the EE community can relate to. Chris Coyier digs a little deeper on the introvert/extrovert misunderstanding.

The truth about the difference between introverts and extroverts lies in how personal energy is used and gained. Introverts need a lot of recharging time to gain energy. Being out-and-about, especially in social situations, is draining. Alone time is the only way to get that energy back. For me, it’s a lot of alone time. Not sitting in a dark cave staring at the wall, but somewhere comfortable where I can do other activities I enjoy.

Read the entire article.

Posted on Apr 15, 2013 by Ryan Irelan

Filed Under: Life as a Web Professional,

blog icon image

Your Weekly devot:ee - April 11, 2013

Blog Entry

devot:ee

  • Four O Four by Jason Varga
    This plugin performs a 301 redirect to your 404 page instead of just displaying the 404 template.
  • Channel Query by Exp:resso
    This plugin lets you display channel entries using a custom SQL query. It brings you the benefits of combining the {exp:query} tag with the {exp:channel:entries} tag, without having to worry about GROUP_CONCAT or parse order.
  • Admin Links by Locus Interactive
    Add admin Edit / Publish links to channel listings

Posted on Apr 11, 2013 by Ryan Masuga

Filed Under: Weekly Devot:ee,

blog icon image

Learn Add-on Development from Low

Blog Entry

Today EECI announced that Low’s add-on development class will also be taught in Portland this Fall at EECI 2013.

Besides being a kind soul and all around wonderful person, Low is also a great teacher. Being able to break down difficult concepts into smaller learnable chunks of information isn’t something everyone can do. Low can do it. And he does it well.

If you’re at all interested in learning ExpressionEngine add-on development, you should definitely keep an eye out for Low’s class this Fall at EECI in Portland.

Until then, he’s teaching at EEUK in May. If you can’t attend that conference, Low also did a 75 minute video tutorial on ExpressionEngine add-on development.

Posted on Apr 11, 2013 by Ryan Irelan

Filed Under: Development Tools, EE Add-ons, Training,