Featured Project: PowerMax

Love it or hate it PowerMax's cartoony motif was unabashedly unique and memorable. Do not be lulled into believing that the whimsical design in any way suggests a lack of seriousness underneath. Behind the scenes PowerMax was custom built for security, speed, stability, and customer satisfaction.

When I began work on PowerMax in 2014, it was barely limping along on an aging version of CakePHP, with no CMS to maintain the content and navigational structure. A series of previous developers had left their marks on the site, often with conflicting opinions on how it should have been built. My task was clear: raze the decaying architecture and replace it with something modern, stable, fast, and flexible. Replacing the PowerMax site was not simply a straight-forward task of moving from one framework to another. No. The site was tied to two internal systems: FileMaker which managed the product database and assigned pricing; and a custom-built Java application used to manage inventory, accounting, and the POS interfaces for the company's ten retail stores. Whatever solution I came up with had to work seemlessly with these systems.

Technical challenges aside there were also non-technical pain points that arose while discussing business needs with the CEO and marketing department. Their biggest frustrations came down to two: an inability to make content changes without passing them to the developer to implement and the fragility of the site – whenever a feature was added or modified, some unrelated part of the site would invariably break, not to be found for days or weeks. Less fervently lamented was the inability to easily change or update the design of the site or quickly make ad hoc additions (e.g. microsites, promotional sites, etc.). It was clear that a CMS would also be required.

I explored several off-the-shelf solutions to replace the site; the most obvious replacement for the cart being Magento. However after a couple weeks of testing it became painfully obvious that it would not serve our needs. Its resource utilization was incredibly high, keeping a product catalog of 60 thousand updated was next to impossible to do reliably, integration with internal systems proved to be prohibitive, and making changes to the look and feel or adding new sections was unwieldy and overly complex. Magento's inability to allow for a development pipeline (local server to staging server to product server) was also a major concern. Whatever gains there might have been in using it were overwhelmed by the sacrifices that would be made.

Developing a custom shopping cart, especially when there are free applications available, can be a very hard sell. The argument to develop a new one was made especially difficult because their existing site was running a custom built shopping cart and opinions of software developers had soured greatly over the negative experiences working with it. I was confident that I could develop a solution that would meet all their needs and put them on a road to future growth. After much assuring and many promises I was allowed to proceed with my plan.

I began in earnest poring over the existing site code, assessing all the functionality, how it worked, how it didn't, and what could be reused (it wasn't well-written code, but some of the algorithms were sound, so why not use them?). After several days of study I had a fairly clear plan of attack. All I needed to do then was figure out what technology stack to use.

Previous experience with PHP frameworks gave me a good background on what to consider. I had used CodeIgniter and Symfony extensively in the past. Development on CodeIgniter looked to have stalled. Symfony was very popular, but my experience with it left me feeling it was over-engineered, bloated, and cumbersome. Enter PhalconPHP, a relatively unknown framework that made some very large claims. After some testing it proved to be exactly what I needed: lightweight, fast, stable, flexible, intuitive, and unlike many other frameworks it didn't constantly get in the way of development. It is still my favorite PHP framework to work with. PowerMax was already invested in Linux and MySQL, so those decisions were easy and I saw no reason not to use them. On the frontend, well, the site didn't use much Javascript and since most of that wasn't changing, I could get away with using just jQuery. The Javascript landscape changes quickly and if needs on the site changed in the future then I would assess implementing something more, but for the time simplicity won the day.

Development over the next six months was fairly smooth (surprisingly). I held frequent status meetings to keep everyone involved and collect feedback, change requests, feature requests, and most importantly to bolster confidence that despite the lengthy development period the new site would be worth their trust.

In mid-November that trust paid off. Just a couple weeks before Black Friday the new site launched. I'd like to say it was a smooth launch, but only a couple hours after the new site went live the site crawlers hit and hammered the site. We had not warmed up the caches and our servers struggled under the load. The site stayed up and, after a couple days of tweaking to remove bottlenecks, was humming along smoothly. For the following two and a half years the site ran with few hiccups.

Rebuilding the PowerMax site was probably the most complex site I have ever built and also one that I am most proud of completing.

In the summer of 2016 PowerMax changed ownership. The new ownership, being anathema to any custom code, made the decision to move the website into a combination of Magento and WordPress. Living in Australia, the new ownership decided it was easier to hire contractors on that side of the world to do the work. In December of 2016 the old website was replaced with the site currently live. I had a very limited role in its development.