I’d like to shout out David Herron from TechSparx for writing a quick and easy to follow tutorial for deploying Node.js on a Dreamhost server!  Super easy instructions and examples to follow, worked like a charm!

I’d highly recommend Dreamhost link to this article since their instructions fall quite short explaining how to it!

Click here if you’re looking for the “Node on Dreamhost Solution!”

 


The latest Mautic release update to 2.12 went seamlessly.  Like any system, however, you discover something that didn’t seem to cause a problem before.  This issue isn’t a bug, it’s just one of those snags you don’t catch until you get down to the level of testing you didn’t reach before.  The “Import Contacts” tool is one of those times when I discovered that if you select “Import in Background” instead of direct through the browser you will wait and nothing will import.  The reason isn’t obvious but I suspected it was because a CRON job was missing.

I assumed this was triggered simply when the user put the import task in the queue, but this is not the case.  For all the CRON jobs they recommend at this link, Mautic does not mention anything about scheduling imports.  You can simply go to your command line and type this to execute:

$ php /home/path/to/your/mautic/app/console mautic:import

Also, I set up a CRON job for this command to run every thirty minutes so this won’t happen to others in the future.  I do think CRON jobs have a place, but manually setting them up seems a little archaic, I think like WordPress they should be more automated, if nothing else to reduce the number of people who lack more web technical skills and just want to use the marketing automation system from scratching their heads or complaining.

Mautic is a great marketing automation tool, it comes in two flavors, the free Community Edition and the Enterprise Edition. It is quickly evolving into a stable and robust marketing automation system.  My favorite part is that Mautic is developed on the PHP Symfony framework, as an experienced PHP developer with decades of experience with different systems here in Jacksonville, Florida, I can say the past 4 years I have been watching Mautic grow that it is a very exciting time for small businesses and marketing departments that may not currently have a lot of resources or high budgets for higher cost platforms like SalesForce.  I can also speak from direct experience that it blows InfusionSoft out of the water with a lot more customization and capabilities.


WordPress Blue Ball Wallpaper Collection: Ball and Notebook

Mike Challis, the long-standing original author of the “Fast Secure Contact Form” plug-in posted an article here about what suddenly happened to the plug-in he made available for WordPress users for so long.  Shame, because this was a great, stable plug-in and it always seemed to work no matter what kind of theme you used.  I just noticed it was removed so I will be taking the steps of removing it from any of my sites as well and I recommend to any web developers who have this on their site that they do the same IMMEDIATELY.

In the explanation linked above, Mr. Challis cites this report from Wordfence showing other plug-ins that have been compromised by nefarious spammers.  Now, Mr. Challis had sold his plug-in, so we know he’s not responsible for what someone who purchases software does to the code afterwards, but this incident does highlight a vulnerability inherent in a community-driven, open-source platform like WordPress and the vulnerability the 23% (and growing) of websites who use WordPress are exposed to.  Not to mention the fact that the millions of WordPress users and their organizations are exposed to real threats to their data and systems.  In addition to that, WordPress takes a hit to its reputation along with innovative software developers like Mr. Challis.

Plug-in Author Reputation

This incident highlights another risk we web developers are exposed to and that is the risk to our reputations.  I don’t blame Mr. Challis for wanting to “cash out” by selling his plug-in, that’s what many developers strive to do, it’s what motivates many to innovate, and that’s understandable.  This is another wake up call!  If you are a PHP developer and wish to sell a WordPress plug-in, it is highly advised to provide stipulations in the sale transfer that the purchasing party agrees to uphold the quality standards and a promise not to dilute the reputation of the plug-in by using any tactics that could inadvertently tarnish the reputation of the original author.

One of these easiest ways to know if a plug-in is reliable is by seeing who its author is.  Mr. Challis’s name was always synonymous with software stability and I will continue using any of his other plug-ins, but I do wonder what the best solution for these situations is.  In this situation, something so commonplace as contact forms on a website should be a core component of WordPress anyway.  I know installing JetPack, which is freely distributed (at this time) by WordPress provides a contact form out of the box, but this incident raises other concerns regarding security, safety, innovation and integrity.

We don’t want WordPress to clamp down too hard on plug-in authors because that will affect innovation, but at the same time, any plug-in updates that attempt spam tactics or security breaches should never make it to the repository and notices in the plug-in manager should be made very prominent so all users are aware of such incidents faster.  These should be the highest level of WordPress alerts that even warrant emailing the WordPress owners.  A more immediate response should help the community more actively police our themes and plug-ins and ensure swifter retribution towards those trying to compromise the integrity of the WordPress community, which hurts everyone including WordPress, web developers, and any organization who uses WordPress.


Since 2.8.2, a bunch of Mautic forms were hanging on “Please wait…”, even though the form data was going through, this is not a good customer experience.  Here is the fix for it on Git Hub from the Mautic team.  It turns out, this issue only happened for Mautic instances running in a sub-directory.

I think it’s usually best to put Mautic on a site within a sub-directory, perhaps in “/marketing” to keep it out of the way and not conflicting with your site’s WordPress or Drupal CMS.

This fix just came off Git Hub from the Mautic marketing automation developers yesterday.  Inside your Mautic folder, go to /media/js and make this change to both files, “mautic-form-src.js” and “mautic-form.js”:

if (event.origin !== MauticDomain) return;

// Replace the above with these two lines in both files

var MauticDomainWithoutPath = MauticDomain.match(/https?:\/\/[^\/]*/);
if (event.origin != MauticDomainWithoutPath) return;

I can confirm that this patch to these two .js files fixes the problem of “Please wait…” upon form submission and the form will behave upon submission properly, whether to show a message or perform a redirect.

Besides being free, why choose Mautic for your organization’s marketing automation?

As a web PHP developer in Jacksonville with over 13 years experience integrating and developing from scratch different systems, I have seen the rise of Mautic as a free marketing automation platform that rivals much more expensive platforms.  I can’t say enough great things about Mautic marketing automation and one of the best things about it that other experienced web developers who appreciate the power of leverage PHP frameworks is the fact Mautic is built on Symfony, my preferred collaborative full stack development framework I’ve been using now for over four years.

The fact Mautic is built on Symfony means that it is fully extendable and since it is by nature modular by design, it is easy to create your own custom themes for brands, channels and create other behaviors that other marketing automation platforms don’t even allow your programmer’s to access because they are completely closed systems.  This usually means if you have the right web developers with the “programmer’s mentality“, there is nothing you can’t get Mautic to do for your organization!

A special thanks to John Linhart and Michael Van Laar, Mautic geniuses!  By the way, a special message to Mr. Linhart — thank you for all your hard work and competent development of Mautic, it’s tough to read some of the messages, so many people don’t understand how complex these things are because you make it look easy!  Keep up the great work (please)….  🙂


All experienced web developers know that before you run any updates to a system that you back up your database and files, and Mautic, the marketing automation platform, is no exception.  Mautic comes in two flavors and this only applies to the completely free community version, which in my opinion makes Mautic the best, most powerful and scalable free marketing automation system.  It comes with no strings attached!  I may be partial to Mautic because it’s built on Symfony, as an experienced Symfony PHP developer in Jacksonville, Florida, I can say it makes me feel better about its stability and it tells me that the people behind Mautic are serious about its future and success.  We’re talking about the platform’s code base, which is stable, secure, and strongly encourages best coding practices.

Also, Mautic under the hood is very easy to customize and extend.  It uses all of Symfony’s patterns and components, so it’s easy to create your own Twig templates for your company that can do some very intuitive things that you just can’t do in much more expensive marketing automation platforms like Hub Spot, Marketo, SharpSpring, and InfusionSoft.

The fact Mautic is built on a very familiar and stable PHP framework makes it very unique among the marketing automation systems out there and it is positioned to explode for businesses tired of paying thousands of dollars every month for software that locks them in.  Are any of these other marketing automation platforms developed in a major PHP framework?

Probably not, and this is an area of concern because if it’s all proprietary, these other MA’s (acronym for “Marketing Automation”) are reinventing the wheel with basic system functions, functions best left uncoupled to a framework so there’s parallel improvements to the system.  Symfony updates and improves the way code talks to the database while the Mautic magicians work on ways to improve Mautic.

Updating Mautic: The Two Golden Commands To Fix Your Marketing Automation Update

When you log into your Mautic, you will see update notification.  This always makes me a little anxious, especially knowing that it’s not a button click, there’s always something that needs to be done afterwards to make sure the update completes.  Usually, it hangs at the cache clearing stage during the automatic update, so it never actually reaches the part where it can update the database schema, so that’s where these two commands have saved the last three updates I’ve performed in Mautic since 2.7 all the way to 2.9.2, it’s most current available version.

First, “cd” into your Mautic directory in the command line, then type in the following:

app/console doctrine:migration:status
app/console doctrine:migration:migrate

Here’s something similar you should see after executing both commands.  Again, it hasn’t happened to me yet where I had to restore, but do not forget to make backups of your database and files!

$app/console doctrine:migration:status
PHP Warning:  Module 'XCache' already loaded in Unknown on line 0

 == Configuration

    >> Name:                                               Mautic Migrations
    >> Database Driver:                                    pdo_mysql
    >> Database Name:                                      your_db
    >> Configuration Source:                               manually configured
    >> Version Table Name:                                 migrations
    >> Version Column Name:                                version
    >> Migrations Namespace:                               Mautic\Migrations
    >> Migrations Directory:                               /home/app/migrations
    >> Previous Version:                                   2016-09-26 00:00:00 (20160926000000)
    >> Current Version:                                    2016-09-26 00:00:01 (20160926000001)
    >> Next Version:                                       2016-09-26 18:28:07 (20160926182807)
    >> Latest Version:                                     2017-07-28 11:03:51 (20170728110351)
    >> Executed Migrations:                                46
    >> Executed Unavailable Migrations:                    0
    >> Available Migrations:                               89
    >> New Migrations:                                     43
[]$ php app/console doctrine:migration:migrate
PHP Warning:  Module 'XCache' already loaded in Unknown on line 0

                    Mautic Migrations


WARNING! You are about to execute a database migration that could result in schema changes and data lost. Are you sure you wish to continue? (y/n)

Then don’t forget to clear the Mautic cache.  The standard Symfony “app/console ca:cl” always results in an error, so you have to cd to the app/console/cache directory and remove all the files manually with “rm -rf *”.

Setting up marketing automation requires a “Programmer’s Mentality”

As an experienced web developer, it’s almost a liability knowing so much about marketing and the business side.  It’s ironic, though because so much of marketing requires understanding of data and setting up systems to automatically do things properly based on logic.  This sounds familiar and much more complicated than “marketing” though, doesn’t it?  That’s why data, systems, logic, flow charts, and automation all require a programmer’s mentality to execute properly.  To set up a marketing automation system for any business so it succeeds and works properly is technical and complex.  Marketing automation requires more programmer’s skills than marketing knowledge, by far.

I have over 13 years experience in web development and media production and am currently a senior PHP developer in Jacksonville, Florida, specializing in the Symfony framework, LAMP stack development, database architecture and system design, among other things.  I have a “programmer’s mentality” and I know when I meet someone who does not.  Also, a few friends of mine interviewing around Jacksonville and elsewhere have shared with me a few stories lately (I’m perfectly happy where I am, despite the awful commute).  Here’s a little advice for those looking to hire any web developers:  Don’t look silly and naive when you try to pigeonhole experienced web developers by labeling them as just a “front-end” or a “back-end” web developer, we can be good at systems and databases and still know how to make the interfaces and web pages look as good as the system functions in the back-end.  People can have a strong business and marketing skill set and still be effective programmers.  This is just a pet peeve of mine, just because you may have only dealt with web developers in the past who are “strong in one area” doesn’t mean we’re all like that.  These days, web developers must have a diverse set of skills, just like all graphic designers should be able to build their own emails and web pages.