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

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 CTRL+CLICK CAST

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

blog icon image

New Mijingo Video: Basics of Git

Blog Entry

Yesterday I released a new video at Mijingo covering all of the basic concepts of using Git version control for web projects.

Basics of Git by Ryan Irelan clearly explains all of the basics of working with Git for web projects. It’s for Git beginners but it’s for those of you who have already been using Git but aren’t sure why you stage, commit, push, pull, branch, and merge. In 54 minutes, Ryan gives you the foundation you need.

Here’s a quick teaser video of what’s covered:

Git–or some type of version control–experience is quickly becoming a must-have when looking to land a job or work as a freelancer with other teams. This video will give you the foothold you need to get started.

Learn more about Basics of Git

Posted on Apr 11, 2013 by Ryan Irelan

Filed Under: Development Tools, Life as a Web Professional

blog icon image

EE in the Wild: Reywa Fibers

Blog Entry

Recently launched Reywa Fibers (by Kevin Barr at Burst Creative) is a responsive design implementation to support the yarn products made from yak down.

Reya, which means “hope” in Tibetan, is a “small, family run business with roots that run deep on the Tibeta Plateau of China.”

Reywa Fibers Homepage

Visit the Site

Posted on Apr 11, 2013 by Ryan Irelan

Filed Under: EE in the Wild

blog icon image

Workflow for redesigning site?

Blog Entry

Jacob Graf asked on Twitter what your workflow is for redesigning a site is live and running on production.

How do you do it?

Posted on Apr 11, 2013 by Ryan Irelan

Filed Under: Development Tools

blog icon image

Features, features, features!

Blog Entry

There’s a brand new page on EllisLab.com that covers all of the features in ExpressionEngine.

It’s broken up into categories and then you just click on the feature to get a short blurb that describes what that feature does.

This is a great page to point people to when they want to get more detail on what ExpressionEngine does. Or maybe to help you reinforce your recommendation of EE as the CMS solution for a project.

Bookmark it and refer people to it.

Posted on Apr 11, 2013 by Ryan Irelan

Filed Under: EllisLab, ExpressionEngine 2

blog icon image

EE 2.6: Strict URLs Enabled by Default

Blog Entry

In new installations of ExpressionEngine (from 2.6 forward), the Strict URLs setting will be enabled by default.

From the EllisLab blog post announcing the change:

With ExpressionEngine 2.6 and up, Strict URLs will be enabled by default in new installations. Using the same example, http://example.com/site/about-us is the only valid URL for that content. Visiting http://example.com/about-us/ with Strict URLs enabled will trigger ExpressionEngine’s defined 404 behavior.

If you are updating, don’t worry, ExpressionEngine will honor your current Strict URL preference. With this minor change in ExpressionEngine 2.6, we’re encouraging best-practice by default.

Most of you probably already turn it on when you’re setting up a new site but now this best practice is the default behavior instead of an option.

Now if only index.php was removed by default…

Posted on Apr 10, 2013 by Ryan Irelan

Filed Under: EllisLab, ExpressionEngine 2

blog icon image

Archive of ExpressionEngine Wiki

Blog Entry

Nothing ever goes away on the internet, not even the EE Wiki. It was killed in the EllisLab redesign last November.

You can access it on Archive.org There’s no killing the wiki!

Posted on Apr 09, 2013 by Ryan Irelan

Filed Under: EllisLab, ExpressionEngine 2

blog icon image

EE Podcast: EE Client User Experience

Blog Entry

When considering ways to optimize ExpressionEngine, don’t focus exclusively on your development. It’s equally important to optimize the client user experience.

For the latest EE Podcast, Lea and Emily discuss various ways to create great client experiences in the control panel (and out). They share native options for customizing the control panel and publish forms, as well as add-ons that further improve the experience for clients. They also discuss the importance of finding the balance between what is possible and what makes the most sense for a client’s budget, timeline and expectations. Tune in now!

Thanks to Responsive Web Design Summit for sponsoring!

Posted on Apr 04, 2013 by CTRL+CLICK CAST

Filed Under: EE Podcast

blog icon image

Your Weekly devot:ee - April 4, 2013

Blog Entry

devot:ee

  • VL Entry URL ($) by Viget Labs
    Display the full entry URL on the publish entry screen. Create patterns for each channel so that you have quick access to the entry url while you are publishing.
  • CD Followers ($) by Carter Digital
    Display a count of your twitter followers.
  • Geocoder ($) by Objective HTML
    Geocoder is a configurable server-side geocoder that extends the Google Maps for ExpressionEngine API.
  • Redirect by dgrebb
    This plugin can be wrapped around a URL or custom field with a URL to redirect a page.
  • Disable Default Memberfields by Rein de Vries
    Disable Default Memberfields (ddmf) is a module that disables the default memberfields like (ICQ, Yahoo IM etc) in the CP of ExpressionEngine.

Posted on Apr 04, 2013 by Ryan Masuga

Filed Under: Weekly Devot:ee