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 Podcast: Get to Know #eecms: Mitchell Kimbrough

Blog Entry

The latest EE Podcast continues the “Get to Know #eecms” series with President and CEO of Solspace, Mitchell Kimbrough! Mitchell talks about how he began his career in web development, leading to the creation of Solspace. He also shares his leadership philosophy and talks about what’s on the horizon for Solspace. Stay tuned ‘til the end for our rapid-fire 10 Questions!

Thanks to Engine Summit for sponsoring this episode!

Posted on May 16, 2013 by CTRL+CLICK CAST

Filed Under: EE Podcast

blog icon image

Austin-based Novahurst Creative Seeks Front-End Developer

Blog Entry

The post title says it all. Novahurst Creative, a shop based right here in the Breakfast Taco Capitol of the World, is looking for a freelance front-end developer to help them handle projects going forward.

Posted on May 12, 2013 by Ryan Irelan

Filed Under: Life as a Web Professional

blog icon image

What They’re Saying About EE

Blog Entry

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

Mark Croxton created the great Stash add-on, among many others you may use, like Switchee. Stash is free but he is requesting that you donate to his choice of charity: The Cambodian Children’s Charity.

Posted on May 12, 2013 by Ryan Irelan

Filed Under: What They're Saying About EE

blog icon image

Link Vault Updated

Blog Entry

Last week Masuga Design updated Link Vault, their add-on that makes it easy to create and track protected download links in your EE site.

Version 1.3.0 has some additions, like ability to create pretty URLs and append the file name to the URL. There are some refinements and bug fixes included.

I have personally used Link Vault and can recommend it as a solid way to track and protect downloads.

Read about the changes in the this version and learn more about Link Vault.

Posted on May 12, 2013 by Ryan Irelan

Filed Under: EE Add-ons, EE Extensions, EE Modules, EE Plugins

blog icon image

Your Weekly devot:ee - May 9, 2013

Blog Entry

devot:ee

  • CAS Elapsed Time by Chris Adams Studios
    Displays the elapsed time passed from a timestamp.
  • Gmaps FieldType ($) by Rein de Vries
    The official FieldType extension for the Gmaps module. Simply adding markers + modify your Map from within your entry/CP.
  • Category Select by Rein de Vries
    This extension will convert the category checkboxes to a select element, handy when you only need one category.
  • eeXam ($) by Coffee Bean Design
    eeXam is an eLearning fieldtype/module combo for ExpressionEngine 2. It can be used for exams, quizzes, assessments or polls. Create simple tests or complex training courses for your ExpressionEngine Members.

Posted on May 09, 2013 by Ryan Masuga

Filed Under: Weekly Devot:ee

blog icon image

Superfish Menus for the EE CP

Blog Entry

There’s a new extension available that makes it possible to use the Superfish drop-down menu plugin in the ExpressionEngine control panel.

You should install it on your copy of EE and give it a shot. The main navigation in the control panel no longer needs a click to open and Superfish includes hoverIntent functionality so the menus only open when they should.

Here’s a quick look at the normal EE menus vs the Superfish menus. EE menus are first. Take a look:

Posted on May 07, 2013 by Ryan Irelan

Filed Under: EE Add-ons, EE Extensions, ExpressionEngine 2

blog icon image

Learn Add-on Development from Erik Reagan

Blog Entry

Taking place in beautiful Savannah, Georgia is the latest installment of Train-ee’s ExpressionEngine Add-on Development Class taught by Erik Reagan of Focus Lab.

Erik has a passion for helping people both on and off the web. He is a web developer based in beautiful Savannah Georgia where he was born and bred. There he leads the development at his company Focus Lab, LLC. His EE teaching spans private training and consulting, public conferences and online blogs like NETUTS+ and EE Insider.

The class run Tuesday May 21ts through Friday May 24th and covers “planning, building, testing and delivering add-ons.”

Learn more and register now.

Posted on May 07, 2013 by Ryan Irelan

Filed Under: EE Add-ons, Training

blog icon image

Your Weekly devot:ee - May 2, 2013

Blog Entry

devot:ee

  • Superfish EE Control Panel by Joel Birch
    Adds Superfish and hover intent to the EE Control Panel flyout menus.
  • Login Override by David DeHaan
    Allows a user to be logged into an EE site via template tag.
  • Date Manipulation by Rein de Vries
    This module will manipulate all dates and times in a creative way (plain text), just like the PHP function strtotime().
  • Google Plus SSO - Single Sign On ($) by 25hweb
    Allows your users sign on to your site through a Google account. If the user accesses for the first time to your site, it will be automatically registered, thus becoming a native ExpressionEngine user (you can choose which group to register users).

Posted on May 02, 2013 by Ryan Masuga

Filed Under: Weekly Devot:ee

blog icon image

EE Podcast: Dev Environments with Erik Reagan

Blog Entry

How do you manage new ExpressionEngine development when you have a live site that can’t be interrupted? For the latest EE Podcast, FocusLab’s Erik Reagan returns to the show to talk about working in a dev environment to help retain the integrity and uptime of a live, production site. Erik shares the processes and workflows they follow at FocusLab, including version control, content entry and database management, as well as their EE Master Config setup for multiple environments. Tune in now!

Thanks to CSS Dev Conference for sponsoring this episode!

Posted on May 02, 2013 by CTRL+CLICK CAST

Filed Under: EE Podcast

blog icon image

EE 2.6 Supports Relative Dates, Easier DST

Blog Entry

EE 2.6 has some improvements with how it handles dates and time.

First, there’s no more messing with choosing whether or not you’re observing Daylight Savings Time. EllisLab says:

With the new PHP version requirements for ExpressionEngine, we were able to take advantage of more modern date handling techniques to eliminate the DST setting all together. All you will have to do is choose your timezone and we’ll take care of the rest.

Because of the new PHP version requirement we also get an enhancements in the Date field that allows relative dates to be used. Things like: “noon tomorrow” or “last day of january.”

Read all about it in the EllisLab blog post.

Posted on May 01, 2013 by Ryan Irelan

Filed Under: Development Tools, EllisLab, ExpressionEngine 2

blog icon image

Peers Conference, June 26-28

Blog Entry

Peers conference is taking place at the end of June this year (not far away!) in Chicago and features speakers covering topics on Laravel, ExpressionEngine, Craft and business.

We’re going beyond the same old slide deck: we’ve curated a diverse group of speakers in development and business tracks bound to keep you on your toes. Want to learn something new? Come and be challenged in our coding workshops. Sit in on a roundtable and hear what’s really going on in your industry. At Peers we’ll engage attendees with our panel discussions and leave plenty of time to network and chat.

It boasts a nice speaker lineup covering a variety of topics. The event takes place at the Chicago Cultural Center.

Tickets are on sale now for the early bird price of $299.

Posted on May 01, 2013 by Ryan Irelan

Filed Under: Conferences

blog icon image

The Key to ExpressionEngine Performance

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.

Imagine you were to build a house. After all the years of building web sites and being a slave to “the man” the pay day has finally come; you’ve sold out and you’re finally gonna hire a contractor to design and build you the house of your dreams (or your wife’s/husband’s/whatever’s dreams). You want to get everything; all the bells and whistles anyone could ever want in a house. Doors and windows and all the other house “things”. No expense is spared and it’s gonna be a marvel of engineering to be proud of.

And then you decide to build it on top of a swamp that floods every year with intermittent droughts, earthquakes, tornadoes, and hurricanes, and wasps and mosquitos. And bed bugs. And that really gross smell tanneries have hanging around. That too.

This is what a lot of web developers do. It’s really weird when you think about it too. They spend so much time putting together their project, crafting the perfect solution to whatever problem they’re trying to solve, and then just throw it up onto any old web server that’s not equipped for it. A website needs a literal solid foundation. A home to live and work that is as specific to it’s needs as possible. Yet so many web developers just throw the site up on a host and consider the project done.

The big problem is the fallacy that “all you need is PHP” a lot of clients (and devs) have in their mind. It’s not really the client’s fault though; how could they understand the nuance of using a tool like ExpressionEngine, that’s built with a PHP framework like CodeIgniter? Nope, the problem lies with us, the web developers. A lot of us just don’t know what the hell’s going on with the server.

It’s the FRAMEWORK Keeping You Down

PHP, by itself, is pretty lightweight. If you want to display a simple PHP script that connects to a database, compiles information about something, and then display the HTML, using native inline procedural PHP is pretty efficient. It’s also time consuming, likely to be insecure, tough to maintain while keeping ones joy and sanity, and just an all around pain in the ass. So, smart developers use frameworks like CodeIgniter (the framework used for ExpressionEngine).

As a programmer, frameworks are great. They’re pretty much the antithesis of the above. As ExpressionEngine is to building a website, frameworks are to building tools like ExpressionEngine. Most frameworks take security seriously, are easy(ish) to maintain, and are a pleasure to work with (or at least make an attempt to not be an absolute pain). But it usually comes at a cost; performance. It’s a given rule that any time you use a framework you’re going to need more server resources made available to your program.

The biggest reason for this is because frameworks just have a lot of PHP files that do a lot of complicated stuff behind the scenes. Pretty much everything is abstracted and object oriented and polymorphic and buzzword, buzzword, buzzword. It’s a lot of processing. And when you take into account that PHP is an interpreted language that has to compile the PHP on every request it starts to add up.

Introducing the PHP Opcode Cache

To get around dealing with the large number of PHP scripts a framework all but requires a PHP Opcode Cache (or PHP Accelerator). An Opcode Cache is a PHP module that takes your PHP scripts and caches the compiled bytecode so later requests don’t have that overhead. For those that don’t what that means, suffice it to say that using a PHP Opcode Cache will improve your PHP performance by, in my experience, anywhere from 60 to 90%. This is serious improvement I’m talking about. More than that, it’s also the most cost effective in terms of time investment and overall implementation pain.

For example, the process of getting setup is ridiculously simple using the Alternative PHP Cache (APC). On my new Ubuntu VM, it was literally 1 command:

aptitude install php-apc

That’s it. I run that single command on my server and all my ExpressionEngine sites are running at an average of 4MB on the homepages and at a tenth of a second request time using APC (down from 25MB and 1.5 seconds).

In terms of PHP Opcode Caches, I have 3 personal favorites (though there are lots of others): APC (obviously), eAccelerator, and XCache.

APC

APC is the one I’m currently using for my server. Not because it’s the best Opcode Cache out there but because, as the above demonstrates, it’s crazy simple to get up and running (I’m lazy) and my current needs don’t require more than the “good enough” it offers.

The really nice thing about APC (outside of crazy simple setup) is the maturity. It used to be implemented by Facebook (who also contributed to the project) and has been endorsed by the the people behind Zend. In fact, APC is supposed to be integrated into the core of PHP no later than 6.0 (though I think they’ve moved this to 5.5 though I could be wrong).

eAccelerator

eAccelerator has been around for about 9 years now and is my go to when shaving a couple extra MBs of memory matters. The performance return on eAccelerator is really impressive and in my experience it gets no better. eAccelerator is also the Opcode Cache use by cPanel and WHM managed servers (by default) which I think says a lot.

The big downside to eAccelerator is that it’s sort of a pain in the ass to get setup on the command line though. It requires building things custom to the platform and it also needs to be rebuilt every time you update PHP. Definitely an advanced option.

XCache

XCache is a really nice Opcode Cache in my experience. For Windows hosting it’s an absolute must and I’ve used it in production on quite a few projects. Setup is simple and straightforward and I have yet to experience any issues on installation. The performance gains are similar to APC though it does depend on what you’re doing and how it’s being done (both work differently so some things work better on one and not the other).

I have had issues with it though. I’m not entirely sure what the root cause of the issue was/is but with Zend Framework based sites XCache didn’t work out quite so well. It’s been a couple years since I’ve used it so this may be a non issue.

Additional Considerations

There are lots of other techniques you can use to improve the performance of your PHP site outside of an Opcode Cache but none can give you the return quite like it. Adding things like MySQL query caching, or memcached, or a number of other things can help improve things further but you’ll never get the return like on an Opcode Cache.

One thing to keep in mind is that an Opcode Cache can also become a crutch. It’s crucial that one not be used during development. If what you’re building needs an Opcode Cache in order to function you’ve likely made some serious errors elsewhere. Using an Opcode Cache during development will hide this from you and possibly hurt things later.

For production though, an Opcode Cache is an absolute requirement. If you have a dedicated server you’re sort of on your own in terms of implementation. Google is your friend. Things like “Ubuntu install eAccelerator” will do you good (or whatever OS you’re using). For managed hosting though, just send an email to your host and ask them to install the Opcode Cache you want. You’ll be seriously amazed at the speeds and footprint of your sites.

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 30, 2013 by Eric Lamb

Filed Under: Development Tools, Site Performance

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