Using PHP WITH Jetty, Camel, ActiveMQ, WebSockets and other things that might score high on SEO

Over the past several days (more than I would like to admit) I’ve been working on getting a system based off of Jetty and ActiveMQ to work out of the box for PHP developers.  While “out of the box” isn’t quite true I have been able to get everything to work in a single downloadable container.  It uses ActiveMQ as the messaging system, which also has a WebSocket listener.  ActiveMQ also has a queue called “worker” which is used to send job queue requests to the queue.  That queue has an HTTP

Configuring Jetty to run Magento

Yesterday I wrote a blog post on my surprising finding that Jetty was able to out-perform, or at minimum keep up (depending on how you looked at the numbers), Nginx when it comes to static files.  Today I wanted to get it up and running and able to serve Magento requests. It turns out that it is stupid easy.  That said, it was stupid hard figuring out how stupid easy it was. To get Magento running with Jetty Set up PHP-FPM as you would with Nginx, making sure that you

3 Best Practices for Selenium Testing when constructing your page

Having spent now about two months building out Magium there are a couple of things that are worth sharing as I’ve been working through several different versions of Magento. These practices (best practices?) may or may not be “officialized” by the Overlords of the Internet but what I have found is that I have the most trouble when these practices are not executed. The basic premise behind each of these is that the quickest path to the most specific element is best. Long Xpaths may be prone to break and

80-ish% of Magento Developers Do Not Automate Browser Testing

A few weeks back I asked a question on Twitter about browser testing.  There weren’t a ton of responses but the responses I got were about what I expected.  Around 80% of Magento developers (and I would probably say web-developers in general) do NOT do any significant browser testing automation. The reason that doesn’t surprise me is because browser testing is kind of hard, time consuming, and often requires a fairly significant investment to do it.  I know this because I spent a modest portion of my summer last year trying

Magento Selenium Testing

[TL;DR] Go to the conclusion at the end, get the links for the GitHub repo, contribute.  Follow MagiumLib on Twitter (nothing posted as of writing) [update] The Magium site is live.  Lots of stuff there.  More coming. This past summer (2015) I was tasked with building out automated testing for a Magento 1 module.  I had not really built out a lot of automated testing before and so I was in for a massive shocker. It sucked.  It royally sucked. I had my list of user stories and I started out

Configuring MySQL SSL in Magento (to get your HIPAA auditor off your back)

I’ve been asked a few times now if there is a way to use encrypted MySQL connections in Magento. Most of the time it is when merchants are selling medical products and HIPAA requirements come into play. I am not an expert in HIPAA, nor do I want to be, but with the cost of vulnerabilities on the rise it made sense to at least look into it and get a good answer on how to do it.

How to (properly) harness the Magento EE Full Page Cache (part 2 – application states)

In part 1 we took a look at some of the basics of the Magento EE FPC.  We talked about the general structure and flow of the FPC. In this article we are going to take a look at the application states in the FPC.  I don’t know if “states” is the official term, but it’s what I use to describe what they are. There are, essentially, 4 states that the Full Page Cache can be in. Completely cached All containers can be rendered by the processor.  This is the

How to (properly) harness Magento EE’s Full Page Cache (part 1)

TL;DR The Full Page Cache is one of the most important performance features in Magento EE and very few people know how to use it Containers control your content Processors manage containers Knowing containers and processors gets you 90% of the way to solving #1 With my work with ECG one of the more common things I see are performance problems with web sites.  Most often it is due to problems that developers have caused with how they interact with database.  However, that represents the problems I see.  How about the things that people

Be wary of functions in SQL in Magento, such as MAX(). There may be a better way.

I just wrapped up a Healthcheck for a Magento ECG customer and I ran into an interesting issue.  IIRC, the problem wasn’t a client one but rather code that a community extension used.  I won’t mention which one. This extension was generating a query that was looking for the maximum minimum price for all products in a category.  The resulting query was something like this. 1 2 3 4 SELECT MAX(min_price) FROM catalog_product_index_price AS cpip INNER JOIN catalog_category_product_index AS ccpi ON ccpi.product_id = cpip.entity_id WHERE ccpi.category_id = 2;SELECT MAX(min_price) FROM catalog_product_index_price