Blog

Notes of a Magento Developer's Life

In my blog posts, I often describe things I observe in my day-to-day life as a Magento freelancer or tips and tricks that work well for me.
Feel free to give me feedback in the comments on what topics interest you.

Running Magento on FrankenPHP

Profile picture of Christoph Maßmann Chris
created on
FrankenPHP is the new star in webserver heaven and as Magento developer of course I wanted to try this out with Magento 1 / OpenMage.
It turned out that it was very easy to setup and the results were really promising in local development environment. I have never seen a faster Magento on localhost!

The Cheapest Magento Hosting for less than 10€

Profile picture of Christoph Maßmann Chris
created on , last updated on

In this blog post I will show that it is totally possible to run a tiny Magento 1 or OpenMage instance for less than 10€ per month - and even with all used services from Europe. Should you do this for your production store? Well that's on another page, but first let's move on.

Optimize CSS Styles in Magento

Profile picture of Christoph Maßmann Chris
created on , last updated on

Magento/OpenMage has a default feature to merge all CSS files into one which was implemented back in the old days to reduce HTTP requests. Nowadays with HTTP/2 (or even HTTP/3) the number of requests is not that important anymore, but there are many other ways the CSS asset delivery can be improved in Magento. Let's see how!

Better SEO with Magento Layout XML

Profile picture of Christoph Maßmann Chris
created on , last updated on

Over the years I have collected several useful layout XML code snippets that you can e.g. insert into individual Magento CMS pages or into your layout xml code in the local.xml file. This offers several chances to improve your search engine optimization (SEO) for your Magento store like noindex or canonicals.

Das perfekte Magento 1 Frontend für 2023

Profile picture of Christoph Maßmann Chris
created on , last updated on 2 comments

Im folgenden Blog-Post möchte ich die aus meiner Sicht wichtigsten Aspekte erläutern, warum für mich Magento 1 bzw. der Community-Nachfolger OpenMage nach wie vor eine absolut sinnvolle Lösung für Kunden sein kann. Außerdem zeige ich anhand meiner eigenen Website konkrete Implementierungsmöglichkeiten auf.

4 Tasks When Taking Over Legacy Projects

Profile picture of Christoph Maßmann Chris
created on , last updated on

In my daily work I regularly take over legacy projects from customers that have a relatively old code base and shall be upgraded in order to be compatible with latest software versions, PHP versions and so on. Within those projects I always use several techniques to quickly get to work but at the same time carefully try to not introduce new defects.

In the following blog post I will take you through several tips when you take over legacy projects.

Magento Logging with ELK Stack

Profile picture of Christoph Maßmann Chris
created on , last updated on

If you are maintaining several Magento instances or use features like AWS autoscaling, you have many different places to look for your Magento application logs. In these cases a central logging application is very helpful.
In this post we will examine how to use the ELK stack with Magento logs.

How to disable the Gift Message Extension in Magento 1?

Profile picture of Christoph Maßmann Chris
created on , last updated on

While tweaking your Magento 1 online shop for performance you might have come into try to remove the default Mage_GiftMessage extension.
Unfortunately like many other default extensions, this module cannot be removed so easily because of some errorneous, hidden dependencies in other modules.
So let’s have a look what needs to be done in order to remove the default Magento Gift Message Extension.

How to remove Prototype in Magento?

Profile picture of Christoph Maßmann Chris
created on , last updated on 4 comments

As we all know Magento 1 was using latest technologies at the time it has been published more than 10 years ago in 2008. In the meantime, of course, used libraries and development patterns have been outdated, so is the case with Prototype. This post is about how to start to remove the Prototype library from Magento 1 or OpenMage.

Google Lighthouse Integration in Bitbucket Pipelines

Profile picture of Christoph Maßmann Chris
created on , last updated on 2 comments

I am a big fan of the possibilities that CI pipelines like Bitbucket Pipelines offer and I have already wrote an article about integrating Hugo with Bitbucket Pipelines.
In this post today I will create a Bitbucket Pipeline for Google Lighthouse checks to continuously monitor the important Google Lighthouse Score to improve performance and search results.

How to secure Magento?

Profile picture of Christoph Maßmann Chris
created on , last updated on

Especially for Magento 1 after its end of life but also for Magento 2 it is important that you secure the Magento instance as best as possible.

In the following I will list some tips of that I use for my clients to secure their Magento backends.

How to avoid duplicate content in Magento?

Profile picture of Christoph Maßmann Chris
created on , last updated on

In the field of search engine optimization (SEO) everyone tries to write the content in best quality from a customer perspective and ultimately also for the search engine. One important aspect therein is to avoid duplicate content as this is a major problem for search engines.

In this post I will clarify what duplicate content is and show a common source of duplicate content in Magento.

Magento to OpenMage Migration

Profile picture of Christoph Maßmann Chris
created on , last updated on

After the official end of life of Magento in last June, I recommended two ways of continuing with Magento 1 to my clients: either use MageOne to take care of providing security patches and updates for the latest Magento Open Source version 1.9.4.5. Or use the community-driven OpenMage fork of Magento. In this post we will see how I did the migration of my own website from Magento 1.9.4.5 to OpenMage.

Which software tools do you use?

Profile picture of Christoph Maßmann Chris
created on , last updated on

In my freelance work I have established certain principles that always guide me through - whether to take on a new client or project, developing a new software, learning new things or choosing new software internally.

Issue with PayPal Express and Customer Checkout Registration in Magento

Profile picture of Christoph Maßmann Chris
created on , last updated on

Recently I discovered a bug in the core Magento 1 PayPal Express extension that leads to the user being redirected to the home page after PayPal checkout with no error message.
As the investigation was a rather lengthy process, I’ll tell you the details and of course the easy fix in this post here.

Joplin - the Best Evernote Alternative

Profile picture of Christoph Maßmann Chris
created on , last updated on

As a privacy-concerned user it can sometimes be very tricky to find alternatives to the most-used applications. Looking for the best alternative to the widely established note-taking application Evernote was one of those hard evaluations and it took me a while, but here is the result: Joplin. Read why.

LiteSpeed as a Drop-In Replacement for Apache Webserver for Magento 1

Profile picture of Christoph Maßmann Chris
created on , last updated on

For a long time Apache has been the defacto standard for hosting PHP web applications like Magento 1 or WordPress. Then with the rise of the need for high-scaling applications hosted in the cloud webservers like nginx or full page caches like Varnish became popular in order to handle the enormous amounts of traffic pouring in. The LiteSpeed webserver for Magento 1 is the new cool kind in the block now.

Hugo Deployments with Bitbucket Pipelines

Profile picture of Christoph Maßmann Chris
created on , last updated on

Bitbucket has a great feature called Bitbucket Pipelines with that you are able to do tasks automatically after code has been pushed to the repository. This workflow can also be used for Hugo deployments with Bitbucket Pipelines.

Privacy Checklist 2020

Profile picture of Christoph Maßmann Chris
created on , last updated on

My this year’s Christmas blog post is about some simple privacy tools and actions you can take to easily improve your privacy. This post is not dedicated to shop owners or developers but to any people in general that take their privacy seriously (which should be anyone to be honest).

How to calculate MySQL timezone offset

Profile picture of Christoph Maßmann Chris
created on , last updated on

Sometimes it is necessary to calculate the offset for the current timezone. Therefore you can use this helpful snippet:

My Blog now moved to Hugo

Profile picture of Christoph Maßmann Chris
created on , last updated on

Although there are not that many blog posts here, I regularly re-acknowledge all the work that has been spent to create the articles that are currently there. That’s why I decided to give some love to my blog and move all the content from WordPress to Hugo.

Why developer health matters?

Profile picture of Christoph Maßmann Chris
created on , last updated on

So this blog post will be the starting point for a series of health-related articles targeted for developers. As I know personally life as a developer can be tough: we live in an ever-changing world and the speed in the IT sector is even faster than anything else. And human brain has its difficulties with exponential growth. That’s why I want to get into the details about how to establish developer health.

Infografik zur DSGVO

Profile picture of Christoph Maßmann Chris
created on , last updated on

Die Datenschutzgrundverordnung darf natürlich in keinem Blog heutzutage fehlen :-D. Hierzu habe ich folgende gute Infografik von webvision gefunden:

Fascinating documentary about AlphaGo on Netflix

Profile picture of Christoph Maßmann Chris
created on , last updated on

Yesterday I watched the “AlphaGo” documentation on Netflix and for everyone interested in AI I definitely recommend watching this.

MySQL: The innodb_file_per_table misconception

Profile picture of Christoph Maßmann Chris
created on , last updated on

Mistakes in the conception phase of a project often pay off in a far far later point in time. This also applies for the setting innodb_file_per_table in MySQL.

When should I start using Magento 2?

Profile picture of Christoph Maßmann Chris
created on , last updated on

Today I want to raise some pro and contra arguments for upgrading to Magento 2 or starting a new project with the new release of Magento E-Commerce. This is by no means a complete list but just some of my thoughts on this topic.

Why should I do a Magento upgrade?

Profile picture of Christoph Maßmann Chris
created on , last updated on

Today I was asked by a client if he should upgrade his Magento 1.5.1.0 store to the latest Magento Community Edition 1.9.1.1.

Available Magento Code Sniffer rulesets

Profile picture of Christoph Maßmann Chris
created on , last updated on

Basically I recommend following the PSR-2 standard for Coding Style Guidelines in Magento projects. Verifying your coding styles makes sense in any case – whether you are working in a large team of developers or as a freelancer for several clients. Agreeing to one common coding standard and following the rules improves readability and comparability.

A collection of my daily RSS feeds

Profile picture of Christoph Maßmann Chris
created on , last updated on

In this blog post I want to share with you a short list of my daily RSS feeds that I find very useful to stay up-to-date in different categories:

Magento 1.9: Downloadable Products cannot be created

Profile picture of Christoph Maßmann Chris
created on , last updated on

In Magento 1.9 there is a JavaScript error on the product page in the backend that prohibits adding links to downloadable products when using the default German localization that ships with this Magento version.

Awesome Magento 1 Extensions

Profile picture of Christoph Maßmann Chris
created on , last updated on

I am often asked by my clients which Magento Extensions I can recommend for their shop. Thats why I created a (probably incomplete) list of Magento 1 extensions that I regularly use in my Magento projects:

Custom Menu ACL is not shown in Magento Role Resources

Profile picture of Christoph Maßmann Chris
created on , last updated on

If you are currently developing a Magento extension with a custom menu for the Magento backend and you are having the problem that the menu is not showing up, this tiny little hint is for you.

Using PHPUnit 3.6/3.7 with Zend Framework 1 applications

Profile picture of Christoph Maßmann Chris
created on , last updated on

Some of you may already have noticed that PHPUnit > 3.5 does not run very well with Zend Framework 1 applications because of incompatible interface declarations and there seem to be no efforts to make this happen in the future (because ZF 2 should be used instead).

Overview of Zend Framework versions in Magento CE

Profile picture of Christoph Maßmann Chris
created on , last updated on

Perhaps somebody might be interested in an overview of the different Zend Framework versions that are used in each Magento CE release, e.g. if you are developing Magento modules and want to use some kind of Zend Framework methods that are only available after a certain ZF version.

Magento Mobile Theme Overview

Profile picture of Christoph Maßmann Chris
created on , last updated on

It has been really quiet about the official Magento Mobile App so I have done a research for one of my customers that is in need of a solid, cost-efficient mobile solution that does not require building up a new site from ground (i.e. the mobile site should exist in addition to the current webpage – not replace it).

The Web Developer’s SEO Cheat Sheet 2.0

Profile picture of Christoph Maßmann Chris
created on , last updated on 1 comments
It is my honor and privilege today to introduce the brand new version of The Web Developer’s SEO Cheat Sheet. This free and downloadable cheat sheet covers all of the important SEO code and best practices that are needed by online marketers and developers.

The ultimate Magento local development environment

Profile picture of Christoph Maßmann Chris
created on , last updated on
Time is money and therefore every developer should strive for an optimal setup in which he can operate the fastest. Since I began with Magento in 2008 a lot has changed tool-wise and I am constantly improving to find the optimum Magento local development setup.
55 Item(s)