Upgrading to Expression Engine 2


I’ve been using Expression Engine as my CMS of choice since 2008. December of 2009, Ellislab released Expression Engine into Beta allowing people to start testing it in various different environments. While people were singing songs of praises, a number of bugs were being uncovered which at the time was a good thing to happen. That’s what pre-releases are for: identifying and fixing unknown bugs.

Fast forward to today, almost two years later, I finally decided to upgrade my site to the latest version of EE2. Beforehand, I would like to applaud Ellislab for overhauling their forums and site design. It looks astonishing and much more pleasant to use.

Before I get into the downs of the upgrade, I need to contextually share my setup and how I deploy and maintain my sites. My sites are mostly managed (use some flavors of wordpress and jekyll) with Expression Engine v1.7.3 as my main CMS, versioned controlled and deployed with Git and Capistrano(experimentation), and developed on a Macbook Pro running MAMP. I own a virtual server and a server locally (Ubuntu) where I test my deployments. I also use github to store some code snippets.

The plan was to upgrade locally, create a new branch, upgrade, test, deploy to a dev environment and then once the site was finally redesigned and upgraded, push it to production.

I followed the user guide promptly, verifiied all permissions, exact how the user guide explains but I was getting a ”Your config file does not appear to be formatted correctly.” error when trying to launch the upgrade wizard. I redid this process over 3 times and no success. I searched Google and EE forums for a possible solution to my problem but nothing seemed to be leading me to a viable solution. I posted a new topic in EE forums to see if anyone had faced some odd issue but the people who have experienced this error were able to solve the problem by applying different fixes; fixes which I had already tried and verified against my installation.

As a last resort, I created a ticket with the support team to see if we could collaboratively find the root cause of the issue. It’s been almost two weeks since I’m trying to tackle this issue. To clarify, it’s only been two weeks because my work has been hectic this past two weeks (it doesn’t look like it’ll easen) but the support team has been responsive enough in helping me with this. (One a different note, I’m not quite sure I like the new structure Ellislab has imposed upon its users but that’s a topic for a different post.) Support team suggested me to push a copy of my site to a live server so they could login and verify all the files. At first, I was reluctant to do so due to the way I deploy my sites. I never upload my sites using FTP, aside from a very insecure method, FTPing files into my live server would disrupt my version control workflow making things completely out of sync. However, I, surprisingly, thought of deploying another instance of my branch into a subdomain on my production server. So I spun up a new instance of my branch into a subdomain on my production server quickly, with new FTP credentials for the support team to login and troubleshoot. The support team verified all the files and found a few permission issues which I assumed such issues were caused during the process of copying the files over. I had triple checked the permissions and they matched what the user guide says. So this time, I did the process myself. I deleted all the files on this newly created subdomain and reupload everything over again. It also worked for me. However, I needed it to work locally. It didn’t really matter if it worked on my live server because one, as mentioned, I never FTP files. It would be more work in the long-run.

The Solution

In order to create a lean, easy-to-understand URL segments that wouldn’t harm search engine rankings and disrupt analytics, I applied a method using apache’s directory level configuration file (.htaccess) to remove index.php from URLs. The catch is, I didn’t realize that the .htaccess file was causing the “Your config file does not appear to be formatted correctly” error to occur locally. I didn’t realize about it until a couple of nights ago, when I was glancing over the files for the 12th time. Also, the reason why the files worked remotely on a subdomain was because I had uploaded the files via FTP, and since .htaccess is a hidden file by most operating systems, the .htaccess file doesn’t get uploaded via FTP.

So if you run into this issue in the future and happen to be using an .htaccess file to reformat URLs, you want to check your root directory, locate the file .htaccess and rename it. I truly hope you (reader) this article can save a ton of time because, in the end, that’s what the web is all about: sharing.

Do it Now. Review it Often.

After failing many times, I adopted a system on which I could plan ahead and improve effectiveness in many areas of my life. Last year around this time, I began to think about my life in general and how I could accomplish goals in a more linear way while understanding what worked and what didn't. An Annual Review(AR) came to the rescue. I stumbled upon Chris Guillebeau’s article on this revolutionary method of setting goals, or more precisely, creating a plan-of-action. One of my strengths I learned through StrengthFinder (a web-based assessment of normal personality from the perspective of Positive Psychology) is focus; I need to have control and the only way to feel I have a bit more control would be to come up with what Chris calls personal Annual Review (AR). To clarify, we won’t have full control of everything, nor will we get everything in our plan done exactly as it is written, but the Annual Review serves as a guide to help us get closer to where we want to be.

The idea is to create a road map for the year ahead, an outline of the things I want to accomplish in the coming year. I begin the planning in December, review it every quarter and adjust it throughout the year. To clarify, this is not a rigid task that you must strictly follow or else you will fail horribly. It’s not about the system; it’s about putting things down on paper (in this case spreadsheet); it’s about pursuing things you like and enjoy; it’s about you. If you fail in any category, don’t feel guilty, it’s okay. It’s not about perfectionism. In fact, if you do fail in any category (and you will, everyone does), you have a valuable system in place to track failures and work on them. Most successful corporations do it, but the difference is that instead of being viewed and analyzed by several people, your Annual Review is solely dependent on you. It’s truly a blessing. It’s important to note that, besides a good system, you need strategies to sharpen your cognitive abilities and develop the skills to learn how to keep your resolutions and achieve your goals.

I’m going to share with you my planning of last year, a few things that didn not go well and what I've learned since adopting this system. I'm also going to highlight a few areas to focus this year. I'm not an expert in this area of planning but I'm becoming fascinated with the massive of learning I retain throughout the year.

I'm not going to show you how to build an Annual Review. Should you feel strongly about this system upon reading this article and need to learn how build one of your own, I urge you to read Chris Guillebeau’s article.

I’m using a rating system on a scale of 1-5 to measure my success.

Financial (Rating: 3)

First and foremost, terminate my debt as much as possible was of utmost importance. I learned that it’s very important to balance debts and investments, in other words, sometimes you don’t have to get rid of or end your investments due to unexpected life events. Every situation is uniquely different but I learned that it was best to keep working toward my independence financially as well.

Although I wish I had done better, I made improvements over the year. I reduced my debt (nearly $50K) substantially with a remaining of nearly $10K. I've also built another system to monitor my spending and monthly expenses. I started using Mint at the beginning of the first quarter but eventually my desire to use it faded out toward the end of second quarter so I went back to my spreadsheet system.

The other part of this financial planning was the giving. I’m a big believer in giving spontaneously (don’t give because you feel obligated to do it), so I was tithing for the most part of year but I wasn’t consistent in doing so. I also need to work on giving.

Faith (Rating: 2)

I believe that my relationship with God (not religion) is very important so I wanted to make this a priority in my life. I wanted to devote time to read the scriptures, prioritize my relationship with God and strengthen my soul so I don’t become a powerless Christian. However, I didn’t do quite well. My initial plan was to read and learn one book of the bible per month. My results were clearly bad as far as reading. While I didn't achieve my reading goal, I became more close to God in many differents way; I attended church more often and learned more about God through the services, fellowship and listening to podcasts. Churches I attended were: Grace Church Roseville, Bethel Rock in Richfield and Church of Hope in Bloomington.

Reading, Writing and Education (Rating: 3)

I was aiming at 40 books last year. I didn’t reach the number 40 but I did well, at least in my own metrics. I read an average of 1.5 books and 37.3 articles read online per month. I’m not taking into account articles read directly through the browser as opposed to the Readability app, which is how I got to this number.

I failed in the writing category. I was planning on writing one article every week on my blog. I’m working on that this year. Hopefully, I'll get a higher number. (i'm not disclosing the number of articles I wrote. You can see for yourself 😊

One of my long term goals is to get my masters in interaction design. Miraculously, I re-enrolled in school and managed to do well in most of my classes which is the starting point to achieving my long term goal.

In addition, I took a few classes offered by my employer in finance, leadership and personal development.

Travel (Rating: 4)

While I want to travel around the world, my priority was to terminate my debt as much as possible so I made affordable plans to go Boston and Dallas to see family. I did well in this category.

Health (Rating: 4)

Experts claim that in order for us to have a well-balanced — feeling grounded, clear-headed, calm and motivated – life, we need to be working on having a long and healthy life. This is the category I am most proud of. Given the circumstances I experienced in the past few years both physically and emotionally, I believe I did well. Here are my stats:

Cycling: avg. of 142 miles a month

Swimming: 2 times of week

Workout: 3 days of week

Family (Rating: 3)

I’m very grateful to God for the family I have. I’m grateful because I have the most caring, loving, friendly, and outgoing family. My family is joined by bonds of love; we are a team, helping each other meet all our emotional and physical needs.

Despite the physical distance between me and my family, I felt the need to improve communication amongst our family members. Most importantly, I needed to be closer to my parents and sisters, express my feelings, help them with whatever they need.

And this is another category in my planning which I’m most proud of. We improved a lot of things last year, one being communication amongst other things. We underestimate how much communication is important in any institution (family) so I wanted to address it as best as we could. In the end, I felt we made meaningful improvements.

However, it doesn’t mean we need to stop improving our relationship with our family. I will continue to express how much I care and love them. Wrongly, sometimes we prioritize other things in life (feel guilty too), forgetting the most important asset we have in life, our family. I’m changing that.

Here are a few of my goals for this year:

Goals for this quarter

  • Read and memorize one chapter of the bible every week
  • Pay off debt
  • Redesign my site
  • Write one article per week on my blog
  • Travel to Boston in March for my birthday
  • Read 10 books

Goals for this year

  • Travel to Brazil on vacation
  • Travel to California for Jason’s wedding
  • Pay off my debt
  • Write one article per week on my blog
  • Continue exploring mobile solutions
  • Read a lot of data on mobile devices
  • Improve my relationship with my parents
  • Read 40 books this year
  • Take classes in college toward a degree.

DisclaimerIf there is ever any doubt, the views expressed here have nothing to do with those of my employer. read more

Even though I work for Target Corp, the views expressed here are my personal views and do not necessarily reflect the thoughts, opinions, intentions, plans or strategies of my employer.

And some legalalize:

All of my online communications are provided “as is” with no warranties or indemnities of any kind, and do not confer any rights. My employer is not responsible for the accuracy of any of my online communications.

You should know that I have no ability to bind my employer to any legal obligations. By way of example, I have no authority to grant or confer any right or license, either express, implied or by estoppel, under any patent, copyright, trade secret or other rights of my employer. If you would like a license to any intellectual property or other rights of my employer, you must enter into a written contract directly with it.