“git dst refspec matches more than one”

You may get this error when pushing a commit to your repo.  The most likely suspect is that someone named a tag the exact name of the branch.  You can rename the tag or delete it and retry pushing the commit.

If you have a branch you typically keep open because it represents a very strict set of changes, like “Code_Cleanup” but you still want to tag the branches at logical intervals, add more details to the end of the tag.  I’ve seen some serialize the number or just append the date but either way avoid creating a tag name the same name as the branch unless you are sure the branch is going to be retired.


This comes in handy as Doctrine doesn’t always support all native MySQL commands and functions.  Strangely, certain common time and date-related ones like YEAR(), MONTH() and DAY().

The $paramsArr is an array for all placeholders in your standard PDO query.

// Symfony raw queries with placeholders.
// Example query:
$query = "SELECT * FROM users WHERE status=:status
              GROUP BY last_name ORDER BY last_name ASC";
$paramsArr=array('status'=>'Active');
$stmt = $this->em->getConnection()->prepare($query);
$stmt->execute($paramsArr);
$resultsArr=$stmt->fetchAll();

.NET Logo

Microsoft has come a long way with .NET, ASP.NET and C-Sharp, to say nothing of Azure Dev Ops and all its free and powerful tools they’ve made available. Gone are the days of the “not invented here” mentality and here to stay is Microsoft’s renewed commitment to not just .NET developers, but to the software community in general. No longer do I feel Microsoft looks at my PHP/Python/MySQL/MongoDB open source credentials with disdain.

Suddenly there’s been a sense of a lot less scheming to try to “convert and lock-in” and more just putting product out there to let free people freely decide. Microsoft’s stock price, in my mind, has skyrocketed. Along with making Visual Studio 2019 more capable, powerful and free, they have shown a renewed commitment in their acceptance and slow, soft-walk into the Open Source software ecosystem. The giant has turned to face the world with a friendly, welcoming smile instead of an adversarial fist, as if opening its arms, ready to call a truce as it (in my mind) finally came to the realization that it stands so much more to gain if it stops fighting two-thirds of the software community and joins it as a citizen with a common goal with a win-win mentality.

I have had a love/hate relationship with Microsoft since I bought my first PC, an IBM PC Jr, with the money I saved up with my paper route and mowing cemeteries in Essex Junction, Vermont. In full disclosure, I have accumulated stock in Microsoft because I have believed in their products and long term growth. Second to Autodesk as my favorite software company, being another small name in their massive list of shareholders they don’t know me and I wouldn’t pretend they would nor would I expect them to care. However, I will say despite the fact that I have been a loyal PC Windows user going on four decades, when it comes to making systems and websites for businesses, I’ve been a Linux guy for about 20 years without regrets.

Speaking from my own perspective with some authority, when I shifted my career from agency work where I was a business-building consultant, media producer and marketing strategist to software and web development, Linux solutions were the only feasible option for most of my clients and employers. For two decades I have made many different kinds of business systems, including ERPs and custom programs along with countless websites and other software products for many freelance clients and employers over the years. For many of the owners and leaders of these companies, there was seldom any serious debate to consider developing any new systems in Microsoft and .NET, though there were many discussions about how to free themselves of their current dependency on it.

In the past, Microsoft’s perceived attitude and treatment of smaller businesses kept many small businesses away, a major reason I stayed firmly manning the mostly PHP & MySQL ship for so long. Many small business owners begrudged Microsoft or simply couldn’t afford to move to .NET while others found they couldn’t afford to stay on Microsoft.

To stay relevant and current, I have been studying .NET, ASP and C# these past two years and I have picked up other skills and worked in other languages like Python/Django and a little Java, but since behemoths like WordPress and Drupal are PHP/MySQL based that was where the demand was for over a decade. With the help of Zend, Laravel and Symfony PHP frameworks, up to only a few years ago PHP dominated the thriving web landscape.

For the web, it used to be an almost binary choice between PHP and .NET. Now, the competition of .NET and now NodeJS based systems seem to inundate the software development job boards as PHP appears to be waning faster than the tested and mature language deserves. After all, many government agencies still require certain systems run on Drupal due to its reputation for excellent security, as is .NET.

Unpredictable fees aside, there were other reasons why I stayed firmly manning the mostly PHP & MySQL ship for so long. Could I have steered my employers, some fairly large businesses, to Microsoft platforms, servers, SQL databases, and .NET over the years? Probably, but assessing the landscape and alternatives at the time, it wasn’t a hard decision for them to make – they all deemed that it was not worth the risk to change.

Since the late ’90s Microsoft’s attitude and treatment seemed to border on contempt of smaller businesses and made decisions that kept many of my clients and employers away. Their “exclusive club” attitude along with the uncertainty of their licensing fees helped sustain the reciprocal animosity towards them. Microsoft’s quick turn of late towards embracing the Open Source approach has been viewed with skepticism, but to me it’s competition working out the bugs and throwing out old paradigms. It’s the system at work, ever optimizing the different cogs, reducing friction and bottlenecks in its own way. Not the smoothest, not the most optimal or ideal, but real world optimization of systems are seldom predictable, clean and linear, but at least it’s happening! In a way it’s like why we test so much code before it gets into production, and even then there’s always a need for improvements.

Though for Microsoft especially that “common goal” as a “citizen” I mentioned earlier is an amalgam of many smaller goals, including its own self-interests, at least they are accompanied with recent very generous contributions to the open source community. No matter what their motives are, to me at least, Microsoft has finally grown up. There are bullies in the schoolyard and there are adult bullies and instead of trying to be the bully in the playground and the boardroom with the “Us against Them” posture, it has humbly stepped down from its elitist “our way or the highway” thinking and joined the ranks within the greater software community. Its slow walk became a run in 2017 as it really started to change its attitude and tone, accepting competing solutions and paradigms, partnering and working along side and (dare I say) embracing other libraries.

Their attitude of “not invented here” has morphed these past ten years, albeit slowly and painfully, into “don’t reinvent the wheel.” In a way, Microsoft is finally applying logic and more concrete software development principles to their own products and business. “DRY” – Do not repeat equates to “don’t reinvent the wheel.” I have taken notice of Microsoft’s new commitment to providing the best products to get the job done and its peace offering towards the Open Source community. In turn, I will consider recommending .NET and ASP as a viable solution to those who may benefit.

Should any developers want to look into transitioning to .NET or if you are interested in just learning more about software development, Microsoft has a treasure trove of free resources available now more than ever before. On a side note, I highly recommend IamTimCorey.com and his excellent and thorough tutorials of all things C# and .NET. This man is an experienced master whose videos and guided tours I highly recommend watching, following, and practicing.

Before Microsoft made these seismic changes they were generally seen by many in the open source community as a monolithic, close-minded exorbitant license fly catcher where once you were ensnared there was no escaping. I know like any giant corporation they have a duty to their shareholders and Microsoft has their ulterior motives. I am aware that in the end they will profit more if more of us software and web developers, uh… embrace them. But that’s okay with me as long we all get the best Return On Investment, something many people I’ve worked for in the past couldn’t seriously justify for many major projects and systems in the past.


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.