June 13, 2018
June 13, 2018
Apples, Oranges, and Communities
“You’re only focused on the developers.” The comment stung but only for a second. I was deep in conversation with a few Mauticians when this supposed truth bomb was dropped in my lap. But rather than devastating me, or causing me to explode in a defensive nature, I let the comment soak in. I rolled it over in my head and attempted to evaluate the truthiness of the words. Here are the conclusions I came to as a result.
What am I focusing on?
I appreciated this reminder about how vitally important it is to focus on the many different type of community member. In other words, not everyone is a developer. I’ve been working in communities and developing communities for the better part of the last decade. And still, still I struggle with remembering this valuable fact.
I’m an engineer at heart. I love creating beautiful code and I love creating process. I love the ability to create order from chaos. Or create functionality from nothing. In addition to just the code I am hyper-focused on the presentation. I’ve written about the topic of UI/UX frequently on my blog (Most recently I wrote about the concept of UX writing). So, code + design are always the first and foremost on my mind.
I’m sharing things about myself in order for you to have a better understanding of what comes naturally simply by default for me. In this situation these are the things which influence my responses and my “top-of-mind” areas of focus when considering community and community growth. I would suspect you are each similar to me as well, albeit with different focus items.
This is the reason why the comment which turned it into a conversation was so important to me. The statement made me look inward and evaluate how I was doing as a Mautic community leader and how the Mautic community was growing. Were there areas in our community being neglected? Were we as a community overlooking valuable contributors and passionate volunteers simply because they didn’t look like everyone else?
And all of that brings me to my somewhat unusual blog post title. I always hesitate to share common idioms in an effort to not bore you with something I assume you already know. However I’ve found there are usually one or two who appreciate the quick response of something they remember only vaguely.
Why are we talking about fruit?
The phrase I refer to in my title says, “Like comparing apples and oranges.” This classic phrase is usually called upon when someone is attempting to compare two items which are clearly different. The point being that the person making this comparison is neglecting or overlooking the rather obvious fact that at the most basest of levels the two items are simply incomparable.
And of course the final item in the title refers to our communities we live and work in. Comparing community members or making the base assumption that every community member looks the same (aka has the same skills and talents and focus) is just as flawed as fruit comparisons.
How does a community grow?
When we reevaluate our thinking about our community and we look with a fresh focus on the diversity found in skills, talents, and abilities we see something more than differences – we see strengths.
These strengths, these unique qualities, when they are recognized and encouraged, result in community growth. And this little secret is what everyone is seeking in community growth hacking. A community typically forms around a common set of shared values (Seth Godin’s Tribe mentality). When we recognize this foundation then we can turn our focus to our differences.
Reference: Tribes and the reality of the worldview.
Why are differences so important?
The previous paragraph leads me to ask this next question. Do differences actually make us stronger and help us grow faster? Isn’t the opposite view, of a unified approach, better and more productive? The seeming contradiction however ignores the fact of a strong shared foundation of values. There is a basis of unified beliefs and a shared vision (this is the why of the community). The differences are the unique additional qualities of each person. And here’s the reason it matters, wrapped up in a biblical expression:
“If our bodies were only an eye, we couldn’t hear a thing. And if they were only an ear, we couldn’t smell a thing.”
— 1 Corinthians 12:17 (CEV)
Simply put, if everyone is the same (an eye) in a community (body) then there are all sorts of things (the act of smelling) which cannot be done. In other words, we lose out on incredible and valuable functionality. This implies therefore the inverse is an increase in functionality. Our differences make us stronger.
Mautic celebrates differences
The conclusion of my short mental journey down this path was a realization of two facts. First, Mautic is an incredibly diverse and unique community. We share a common set of beliefs and goals, but beyond that we each have unique talents and abilities. Mautic as a community embraces those differences. Second, while I was reassured after this mental exercise I was not neglecting any particular subset of our outstanding community, I was thankful for the opportunity to review my actions and motives.
If I could leave you with a word of encouragement as you are in a community (or possibly building a community) – consider your differences. Seek to support, encourage, and empower volunteers by highlighting their strengths. Do this and I guarantee you – you’ll be amazed at how easy it is to hack your community growth.
June 12, 2018
My Favorite Netflix Open Source Code
We’re kicking off Tech Tuesday with this post! I will probably post code discussion (I had a second post I wanted to share but is 2 just simply too many for one day?) on these days. I’ll also post some topics that are more studies of other technical projects, or as in today’s example, share a tech resource I find useful, instructive, or otherwise helpful. In this post we’re going to explore one of my favorite brands. Let’s examine Netflix as a brand and a company separate from the ubiquitous service they provide.
For the uninitiated, Netflix has 149 open source projects listed on Github. Clearly they believe in the philosophy of open source. It’s certainly exciting and refreshing whenever large organizations demonstrate their transparency by open sourcing their various tools. In my opinion this is a great example of a “rising tide raising all boats”…or to use another popular analogy “sending the elevator back down”.
Anyway, the difficulty of selecting a favorite project is dramatically increased by the sheer number of projects to choose from. In an attempt to give a fair representation first, I’ll share some general stats based on their existing projects statuses and then I’ll share my personal favorite. (Spoiler: my favorite is different than the general population.)
There’s a number of ways to explore popularity of projects on Github (where Netflix and millions of others store their open source code), but the main ones are forks and stars. I would go further to say their order of relative importance is also as I have listed them here. By this I mean, someone who has forked the code is more likely to be demonstrating an intent to do something with the code, while a starred repository may simply be a bookmark to reference later or merely to “favorite” the open source code. Regardless, I think it’s not a bad idea to look at both of these metrics in regards to Netflix’s repositories (open source projects) and by this get a feel for which projects are considered the most popular by the open source world.
As a bit of background, I did some digging to begin with to ensure I was looking at the best way to gather this data, because I certainly wasn’t going to attempt to build a list of stars and forks from their main repository page by hand…I’m a programmer by heart, so I’m lazy (although others consider this brilliance). As a result of my Google-fu and my somewhat lacking Github website knowledge, I finally came across the pages I link to below which made my job ridiculously easy.
Based on this filtering here are Netflix’s 5 most forked repositories.
- Netflix/Hystrix (2,814): Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services
- Netflix/eureka (1,361): AWS Service registry for resilient mid-tier load balancing and failover.
- Netflix/zuul (1,044): Zuul is a gateway service that provides dynamic routing, monitoring, resiliency, security, and more.
- Netflix/SimianArmy (929): Tools for keeping your cloud operating in top form. Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures.
- Netflix/ribbon (517): Ribbon is a Inter Process Communication (remote procedure calls) library with built in software load balancers. The primary usage model involves REST calls with various serialization scheme support.
Based on this filtering here are Netflix’s 5 most starred repositories.
- Netflix/Hystrix (13,920): Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services
- Netflix/SimianArmy (6,544): Tools for keeping your cloud operating in top form. Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures.
- Netflix/eureka (5,570): AWS Service registry for resilient mid-tier load balancing and failover.
- Netflix/zuul (5,323): Zuul is a gateway service that provides dynamic routing, monitoring, resiliency, security, and more.
As you can see from the above, the two lists are remarkably similar, and yet they aren’t identical. I’ll leave the debate and resulting inferences for these deviation as an exercise for you. Now, I’ll share with you my personal favorite open source project from Netflix.
My all-time favorite has been around a little while and most recently is also bundled in one of the repositories above in addition to being a standalone project.
Netflix/chaosmonkey: Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures.
To understand why this is such an incredibly brilliant repository and something which demonstrates the sheer genius of the Netflix operations team, you should read this article: Netflix Chaos Monkey Upgraded – Netflix TechBlog – Medium. Here’s a highlighted quote from this post:
“We created Chaos Monkey to randomly choose servers in our production environment and turn them off during business hours.”
…I can’t even begin to explain how cool this is from a programmer’s standpoint. (“Cool” after the utterly terrifying part has been resolved and there’s a sense of confidence in the infrastructure and codebase.) Basically, the name comes from the idea of unleashing a wild monkey in the Netflix data centers to randomly rip apart instances and destroy connections — all while Netflix continues serving customers without interruption.
Now, to be fair, the Simian Army repository above is the evolution of this concept, as in this project they have also included the Latency Monkey, Conformity Monkey, Doctor Monkey, Janitor Monkey, Security Monkey, 10-18 Monkey, and finally the upgraded Chaos Gorilla.
If you’re interested you can find a write-up of each of these simians on the Netflix Tech Blog on Medium (one of my all-time favorite Medium blogs to read…voraciously).
Because their desire is to create a resilient, faultless environment and they are willing to subject their production environments, in real-time, under load, to these types of random chaos tests, this is by far my favorite open source project from Netflix. And then they made it open source so everyone can benefit. This improves (or should improve) the code quality and infrastructure of every major company, product, and team working on the internet.
June 12, 2018
Episode 2: Failure
This is the second episode of the daily 4 minute lightning podcast, Forethought, four minutes, 1 key thought to start your day.
June 11, 2018
First Things First: How to Handle Priority Paralysis
I recently spoke about decision paralysis, in the terms of the consumer and the marketers response to this crippling sales detractor. We had some great understandings and takeaways as a result of that post. (Or are least I hope you got something profitable from it!)
Quick Reminder: Implementing marketing automation correctly and segmenting an audience allows marketers to limit the number of choices seen and hopefully prevent the onset of decision paralysis.
While this post is not necessarily about decision paralysis the resulting behavior is remarkably similar. As referenced in the title, this post focuses on priority paralysis. Priority paralysis is actually something which can occur with everyone regardless of their role or position. Let’s look first at what I mean by priority paralysis and then explore what ways we can mitigate the problem or at least the pain associated with the phenomena.
How to identify priority paralysis
If you’ve ever found yourself sitting, staring at your task list and not sure which to tackle first – you’ve experienced priority paralysis. Maybe you’ve snapped out of it relatively quickly and gotten to work. If so congratulations, you’ve found a way to work around the problem. But how many times have you instead swiped up and started browsing social media, or reading the news headlines, or opened your email instead? If you’ve performed any of those actions you’ve fallen into the paralysis trap and you’ve been caught by the distraction dragon.
The distraction dragon (and the other critter you’ll read about later) are inspired by perhaps one of the greatest blog posts I’ve read in the last year. The Procrastination Matrix by Tim Urban takes a very light-hearted and easy-to-read approach to tackling the problem of procrastination. I recommend this post highly to you. And I believe the concepts he has outlined in his post dovetail nicely with this point in our study here. (Interested? If you have a spare 30 minutes go read it and come back. You’ll be better for it, I promise.)
Continuing on with this thinking, it is important to recognize that delayed action is still paralysis. The distraction dragon is there to distract you from the prioritization you should be doing. You think you’re moving (and thus productive) because you’re engaging with the distraction dragon, but you’re not moving any closer on your journey to proper prioritization.
Those who know me or have had the (mis)fortune to work alongside me on something know my deep-rooted desire for speed and handling things quickly. I am not advocating the only way to beat priority paralysis is with immediate action. It’s not the accomplishing of items on the task list alone that counts. Taking time to arrange your priority of items and providing more detail on each one is a huge step towards success.
Three simple steps to beat priority paralysis
I don’t believe these are the only ways to overcome this obstacle but I have found these three things help me greatly as I struggle myself.
1. Be specific and gather details
The first and possibly greatest way to be successful in prioritization involves a full and complete understanding of the list and the details of each item. I can’t stress this point enough. The reason why I think it is so important lies in the fact that I believe it’s so easy to be deceived! I wrote just yesterday in a book review about the value of a number and metrics. But here is the important point: Partial detail is never good enough. What I mean by this is simple: Don’t be fooled into thinking some of the details is enough.
Aside: As a personal example I was speaking internally at Mautic about our practice of prioritizing certain support items. Rather than being specific we talked about introducing a representative labeling system instead of surfacing an exact number. I instantly recognized this as a subtle way to get caught in priority paralysis.
The instant we introduce a layer of abstraction which lacks specifics we add obscurity and prevent our ability to properly prioritize.
The confusion critter is the best friend of the distraction dragon. They complement each other, but to your detriment! These little fiends like to scurry throughout your processes and your thinking and drop little fuzzy blocks. Fuzzy blocks are those areas where the details are missing, you have an idea of the shape of the problem or the item on the task list but you’re not sure what it really looks like. The confusion critters love these because they trip you up and make you focus on them and their best buddy the distraction dragon instead of the priorities.
2. Identify both short and long-term goals
The second way to defeat priority paralysis is to look ahead at the short-term and long-term goals you’re wanting to accomplish. Anytime you are able to raise your eyes up and look at the goals you are aiming for you will have better insight into how to properly organize the tasks immediately in front of you.
The best explanation I have for this comes from Principles by Ray Dalio. In his extremely well-written and popular book he touches on a number of important concepts, but one of them which I find immediately relevant is his ‘Five Step Process’ for success. In case you don’t have the time to read this tome, I’d suggest something even easier (again, takes 30 minutes but you’ll thank me for it). Watch his recent mini series on Youtube. It’s ridiculously good and captivating. Pay particular attention to Episode 3.
Takeaway: Each of us has to choose goals based on our own values and decide on the best path to achieve those goals. We need to identify how we approach them to achieve them when problems stand in our way.
If we get caught stumbling over the fuzzy blocks laid out by the confusion critter or start focusing on the distraction dragon instead of those goals we have taken our mind off finding the best path to achieve our goals. In other words, we neglect the goals and don’t prioritize our tasks based on that viewpoint anymore.
3. Start something on the list
I originally started this point with the more simplistic title: Start something. But then I realized how completely ambiguous that left things and how easily it lent itself to the distraction dragon. The better, and more specific title includes “on the list”. If we don’t start something on the list we are not taking a step down the pathway to success and achieving our goals. We are paralyzed.
Starting something on your prioritization list is an interesting idea because starting something means actually working towards your goals and you’re going to face a serious inner struggle at this point in your journey. You’ll be faced with a choice. A dilemma will appear before you. This is a question quagmire. I call this a quagmire because you’ll be faced with determining which task to start. The ground gets soft at this point. You’re starting to feel the onset of priority paralysis because all of a sudden you’re being forced to pick something. Don’t fear. Don’t sit still and sink into the question quagmire.
But there’s a reason this is the third step in conquering priority paralysis. You can start something on the list at this third point because you have successfully completed the first and second steps above. You are equipped to handle the slow downward pull of indecision. This question quagmire will attempt to grab hold of you by the feet and keep you from moving, pulling you slowly into priority paralysis. But if you know all the specifics, and you have your eye set on the goal you are out to accomplish you can respond to the question quagmire with an answer. This is your definitive first step.
Moving quicker with practice
Once you have successfully fended off your distraction dragon, the confusion critters, and walked confidently across the question quagmire you will start to be free from the paralysis of prioritization. You’ll grow ever more confident in your abilities to take a list of tasks, work through these same steps and properly organize them in a priority which will help you accomplish your goals. And then comes the exciting part: this gets easier each time. You’ll continue to grow and improve. You’ll be faster at avoiding the confusion critters and their fuzzy blocks by starting to identify the important details earlier. Once you know these details the distraction dragon will hold no interest to you because you’ll clearly see he is not obstructing your path to your goals. He won’t be blocking your way to prioritizing what you need to do next.
Each time you wrestle with the challenge of prioritization and successfully take the first and second step, the question quagmire will shrink. You’ll grow more and more confident with which item you should start on first. However, don’t be discouraged if you should choose wrongly, there’s nothing wrong with stumbling; as long as you get up, analyze what happened, and learn from it. Ray speaks to this as well in his book and ultra mini-series. (Have you watched it yet? Do it.)
I hope this helps you overcome the priority paralysis. I certainly learned a lot about myself as I wrote this post and found the points above helpful for me as well. We’re all learning on this journey. Let’s learn together!
June 11, 2018
Episode 1: Netflix
The very first episode of Forethought, a daily 4 minute lightning podcast. Today we take a brief look at Netflix, but not the part of Netflix you're thinking about.
June 10, 2018
Important lesson. Stay creative. Don’t go easy into that dark night of adult-life-blindness.
June 10, 2018
Saelos Sunday: Take Notice!
As I hope you have come to expect, Sunday is our day to explore what new and exciting things are happening with Saelos, the open source CRM. Last week we looked at download counts and stability statistics as we get closer to a stable release candidate. This week rather than exploring some of the numbers surrounding Saelos I want to talk to you a bit about something new from a design perspective and what we’re focusing on for our next release.
If a picture is worth a thousand words…
Then what is a moving picture worth? Take a peek at the graphic below to see the exciting new notifications element in action.
What we’re creating is something classic, something familiar, and something truly groundbreaking. We’re creating three things in one. Not an easy task, and particularly challenging when our desire is minimalist and a clean, simple user experience. Don’t be fooled, there is nothing simple about creating something minimal.
- Classic: Notifications have existed in software systems in some form or fashion since almost the very beginning of their creation. They provide a way for the system to notify the user of important information.
- Familiar: We also recognized that in-app notifications on the web are something most modern systems have by default and we wanted to ensure that we provided these notifications in a way users were familiar with and comfortable seeing.
- Groundbreaking: But of course we couldn’t stop by simply creating the same classic and familiar notifications as everyone else. Saelos is focused on revolutionizing the sales and CRM industry. We saw notifications as one simple way to do things better.
I’d like to take moment and expand on the final point “Groundbreaking” in the list above. With Saelos we wanted to identify a way for notifications to be better, more powerful, more useful. As a result we spent significant amounts of time analyzing and observing how current systems worked as well as what functionality would be most helpful (and intuitive) for users as well.
Why we believe notifications
- We believe notifications should be informative not intrusive because we shouldn’t be disrupted or interrupted from the tasks we’re working on. Every unnecessary distraction we prevent makes our minds better.
- We believe notifications should provide single-click access direct to the specific, relevant, items. We believe our time is valuable and our single biggest resource, and we don’t want to waste it.
- We believe knowledge is power. More than just knowledge, this knowledge must be at the right time, and instantaneously. This is actionable, powerful, knowledge
Here’s how we use those beliefs:
We’ve created instant, non-disruptive notifications, in real-time, with the right information. We are empowering sales teams to both know more and do more.
The next step for Saelos
I’m sure many of you are wondering (or better said, watching) with eager anticipation for the next release which brings us one step closer to a stable release. I share that excitement but want to caution you at the same time. We are building something not only to compete with and improve upon existing CRM systems, but we are building something meant to endure. And as much as I hate the expression, “good things come to those who wait…”, this is one of those moments.
To be more specific, there is a short list of tasks and outstanding items that need to be finished before we can confidently release a Saelos 1.0 Release Candidate. Here’s what I see remaining:
- Languages and accessibility
- Phone extensions
- Inbound message handling
- View exporting (Reporting)
- Integration support
Sounds simple right? I told you it was a short list. But it’s still a list of things to be accomplished and then tested prior to being released.
If you see one of the above and you’re interested in helping out to get things completed faster, please let me know! We could absolutely use your help.
June 9, 2018
Tech Tuesday: History Repeats Itself
I’m certainly not suggesting anything about your age if you know specifically what machine is shown in the above picture, but I suspect there are a few of you reading this post who know exactly what this was and what it represented in tech history. If you are one of those lucky few, I ask your forgiveness for any potential errancies in the post that follows or any assumptions made which are not entirely accurate.
These Tuesday posts are my chance to highlight technology. Usually they take on a more technical form and discuss topics on a more programmatic or procedural basis. (In fact, some of my posts have been labeled downright boring as a result of the amount of math involved.) I hope this Tech Tuesday post will take a rather complex topic and make it slightly less technical. Before I get into how the picture above applies to technology today and what I consider a highly relevant topic, let me tell you a short story.
Once upon a time…
Once up on a time a group of incredibly bright mathematicians and early computer programmers got together to discuss a problem. Rather, they wanted to explore the possibility of making some of their theories a reality. You see, there was a project at MIT called Project MAC (no relation) and a few engineers from a company called General Electric and Bell Labs got together and began to talk. They were excited to see about the potential of building a super computer. A massive undertaking capable of solving all manner of problems and storing data. This new system was called Multics and was an operating system designed to handle complex situations, dynamic linking, procedural calls, and live part-swapping. Multics even supported multiple processors (rare in this day and age).
The list of features found in Multics continued to grow and expand and as you can no doubt begin to tell pointed to the scope and magnitude of this operating system. It was grand and magnificent and all-inclusive. But that’s where things began to become a problem.
Multics vs. Unix
As the Multics operating system grew and expanded it became larger and more monolithic in its framework. It added functionality and features for dozens of different applications. Around this same time a new operating system began to take shape as well, one entitled Unix. This OS was simpler. Still powerful and in fact in many cases derived a great number of features and functionalities from the discoveries and work done on Multics. But Unix did something very different.
Rather than creating an operating system that contained all the features in a single package, Unix was built with the concept of a package manager. The ability for an engineer (or systems operator) to selectively add the packages and features desired for their unique application. In this way the power of Unix was delivered in smaller discrete packages and distributed independently rather than as a single all-inclusive package.
And as you are probably very well aware, Unix exploded in growth. Not only Unix, but Linux, MacOS, and even indirectly Windows NT all came about as operating systems offering different features and appealing to different audiences. But Multics? Well, as you may surmise, Multics slowly disappeared from use. the shortcomings of the monolithic all-inclusive platform giving way to the lightweight microservice approach of it’s successors.
Monolith vs. Microservices
This leads me to my thought for today and the the associated title of this post, History Repeats Itself. You see, what we have come to see in many modern software packages or SaaS products is this same concept that a singular monolithic platform is somehow superior. There’s the misconception that a sole all-inclusive product must provide a better experience because it “does it all”. But in this way I am reminded of a quote:
History repeats itself, but in such cunning disguise that we never detect the resemblance until the damage is done.
– Sydney J. Harris
Just because we are now calling this solution SaaS (it’s the latest and greatest iteration of software delivery systems) it must be superior in all ways to anything else. And just like that, we have taken for granted this suggestion because it’s wrapped in such a clever disguise. And if we don’t recognize the truth we will repeat our past.
Instead, we can be smarter, we can demonstrate wisdom and we can keep the damage from occurring by simply stripping away the disguise and recognize the similarities of our situation.
If we are to learn from our past and create a brighter future we should begin now to push the limits of what our software systems do. I refer in this case to microservices. We’ve discussed this previously here in recent posts. And though the concept might be intimidating at first glance (new things often are) the results are powerful and forward-focused. We can create lightweight, fast, and powerful software systems that take advantage of what we’ve learned in the past, both the earliest operating system achievements as well as the recent learnings from SaaS solutions.
And this is an interesting point that should be mentioned. One of the most well-known voices in today’s software development has written some fascinating articles on this subject, Martin Fowler, one of the personal guides in my thinking has said it like this:
A more common approach is to start with a monolith and gradually peel off microservices at the edges. Such an approach can leave a substantial monolith at the heart of the microservices architecture, but with most new development occurring in the microservices while the monolith is relatively quiescent.
– Martin Fowler
He goes on to make a statement which at first glance may make some very concerned and even sad, but I think it’s important to realize there is an end that is better for everyone; the product, the community, and the people using the software. There is a purpose.
Another common approach is to just replace the monolith entirely. Few people look at this as an approach to be proud of, yet there are advantages to building a monolith as a SacrificialArchitecture. Don’t be afraid of building a monolith that you will discard, particularly if a monolith can get you to market quickly.
– Martin Fowler
This resonated with me deeply. This is how we have begun developing things at Mautic. We have created a strong foundational platform, we’ve identified what works and what doesn’t and we’ve created a codebase tested and constantly improved structurally. Now as we look ahead at Mautic 3 we can be proud of Mautic 2, how it helped us arrive at the point where we are today and how we can go boldly forward into tomorrow.
Mautic isn’t perfect. I’m not sure it ever will be. But we have been following a plan, a process by which we can continue to improve and dominate the MarTech space. We have set a course for success and we have determined to become progressively better each day, each commit, each release. I hope this helps others see the path we have set, the reason why I believe we will be incredibly successful, and offers to all the assurance that this is a course we have crafted with forethought and purpose.
June 9, 2018
June 8, 2018
June 7, 2018
Reading Weekly Wrap-up
Happy Friday everyone! The reading this week ended quite different than I thought it would when I began. I actually love weeks like that. I don’t know if it’s because I dislike routine or if I just like the idea of change. (Ironically enough I hate surprises!) I didn’t foresee when the week began how impactful the week would be. And I don’t mean simply for my reading habit but for the world, specifically the open source world.
In case you missed my Monday post, about the Microsoft GitHub acquisition, I’d recommend going and taking a read, it was quite the story and I saw a lot of interest in the topic. This $7.5 billion transaction caused a lot of questions and concerns in the open source community, mostly due to Microsoft’s storied history. As a result of this semi-controversial start to the week my book selection took a slight different direction.
This week’s theme: “Knowing What Matters”
As with previous weeks I found a common theme though this week I believe it’s a bit less serendipitous and a bit more expected given the announcement made. (Although I would suggest the conclusions I draw are still very interesting and aligned along a particular line of thinking.) Let’s jump right in!
The first book I picked up this week was one that I had sitting on my bookshelf (virtual of course) but I hadn’t started yet. Factfulness, by Hans Rosling had come across my path I believe from a best seller’s list and the impactful, bold cover caught my eye and although I am the first to tell you not to judge a book by it’s cover – the typography lover inside of me was instantly attracted to pick this one up.
But what encouraged me to start reading it this week was due actually in part to the Microsoft headlines which then led me to Bill Gates news which eventually led me to his announcement this week about paying for a copy of this particular book to any graduating student who might be interested.
Now that is a lead-in story right there isn’t it?! Okay so what is it about this book that captured Mr. Gates’ attention to this level? Let’s pick out just a few highlights:
- Things are better than they seem: Hans points out through a series of charts, graphs, and data plots the severity to which our perception of the world is skewed. We have held onto the fatalistic thinking of approximately 50 years ago. And even worse we’ve passed these static misconceptions on to the next generation.
- Measurements matter when in perspective: the author is not suggesting that everything is perfect, nor does he suggest we “look at the world through rose-colored glasses“. Instead the point being made is we can better appreciate the negative and the positive when we put the measurements in the proper perspective.
- The dangers of human instincts: Humans are incredibly smart, highly educated, and yet score worse than chimpanzees (or pure and random guessing) on the various survey questions asked throughout the book. This comes from our overdramatic worldview instead of a fact-based worldview. Our instincts, left unchecked, tend towards drama beyond fact.
Ultimately this book is the author’s attempt to encourage the reader to not be embarrassed by their dramatic tendencies, but rather use data (Hans and team uses a lot of data) to inform a factual viewpoint, control instincts and replace misconceptions. Overall a fantastic read.
Measure What Matters
As you can probably guess I read a lot of books from the NYT Best Seller’s Lists. Measure What Matters, by John Doerr carries a subtitle that intrigued me: “How Google, Bono, and the Gates Foundation Rock the World with OKRs”. Catch the subtle link to the first book in that subtitle? Yep, the Gates Foundation. Melinda & Bill Gates Foundation is referenced heavily in this book.
Now, before anyone feels too bad, I need to say I’m a very very big advocate for removing acronyms from most common vernacular. They tend to make people feel dumb when instead it’s simply an unfamiliar subject matter. Don’t feel bad – you can’t be a SME (subject matter expert…see how annoying that can be?) about everything!
- What is an OKR? This is simply an abbreviated way of saying Objectives and Key Results. See, not that big a deal. What is meant by the term is a type of protocol for companies, teams, and individuals for collaborative goal-setting. Objectives are simply WHAT is to be achieved. They are concrete, meaningful, action-oriented and even inspirational. Objectives are the way to fight against feelings, overly dramatic views, and poor execution. Key Results are the ways objectives can be benchmarked and measured. This is the manner by which we measure HOW we get to the aforementioned objective. Incredibly important to a key result is the ability to be measurable and verifiable.
“It’s not a key result unless it has a number” – Marissa Mayer
- Continuous Performance Management: The second half of the book focuses on the contemporary alternative to annual performance reviews. (Watch out here comes another acronym) CFR’s which stand for conversations, feedback, and recognition are how this idea of continuous performance management is implemented and evaluated.
This book is jammed full of real-life case studies and stories from some of the world’s best known companies. Split into two parts (OKR’s and CRF’s) the true stories illustrate how these two theories are related and when both are functioning deliver a complete system for measuring what matters.
And now we come to the final book for the week. I hesitated to include this book in the list since technically this was a re-read but felt that it absolutely fit into the sub-theme for the week. Hit Refresh, by Satya Nadella caught my eye as particularly timely this week. In case you didn’t know Satya assumed the role of Microsoft CEO in 2014. This book is his thoughts.
I can’t imagine stepping into a behemoth corporation such as Microsoft and hoping to “right the course” or “turn the ship around”. It’s almost an unthinkable monumental challenge but as I read through Satya’s story I found myself becoming convinced if anyone could conquer this challenge, Satya could.
- Learning to Lead: The first few chapters in this book share incredible thoughts on leadership and seeing opportunities. Satya discusses the power of innovation, teamwork, and transformations when led by an empathetic leader.
- Recognizing what’s important: Satya shares what he learned along the road to change and what it required both as a leader and as an established company. The power of a shared mission, a vision that empowered every person and rediscovering the soul of Microsoft.
- Looking at the future: In the final part of the book Satya begins to explore what is required in the years ahead for the changes to Microsoft’s culture to be realized and their mission fulfilled.
Obviously, as you can now see the sub-theme for this particular’s week of reading involved a subtle thread of Microsoft’s influence in the world. From the recent announcement of Microsoft’s latest acquisition to the words written almost presciently by Satya Nadella:
Over the years, I’ve found that openness is the best way to get things done and to ensure all parties feel terrific about the outcome. In a world where innovation is continuous and rapid, no one has time to waste on unnecessary cycles of work and effort. Being straightforward with one another is the best way to achieve a mutually agreeable outcome in the fastest time possible.
– Satya Nadella
But, Microsoft’s journey is only the secondary theme for this week. Were you able to pick up on the primary motif carried throughout this week by these three books? It comes down to a simple concept:
Human emotions, feelings, and their endeavors are heavily influenced by their worldview; and only with proper facts, knowledge, and wisdom can they accomplish those things which matter most.
June 6, 2018
Recently I posted on Twitter a personal observation about growing older and learning to appreciate the value of disagreement and even of a heated discussion. Maybe I’m growing up or maybe I’m just getting older, regardless, I’m beginning to understand (I’m a slow learner) it’s not always a negative, desperate situation when there’s a conflict. Not every conflict has to be immediately resolved and there doesn’t have to be the notion of a singular solution. I’ve written before about the ability to hold opposing views in one’s mind and maintain relationships. This lead me down a course of thought based on an adumbrative conversation I found myself engaged in with a close friend in the Mautic community.
A conversation with something missing
In this chat there wasn’t so much a significant difference of opinions indicative of a more systemic problem; rather we were exchanging differing views of a situation and each attempting to persuade the other to recognize our rightness. Halfway through this verbal volley I was struck with a realization. My deepest problem. The one thing keeping me from being able to accept or deny the veracity of his points was what I believed to be the lack of facts. What I needed was the logic, the reasoning, the facts behind the opinion being expressed.
Aside: To be clear, I didn’t believe simply knowing the facts would immediately invoke my unwavering agreement and/or support for his statements. Those conclusions would remain to be drawn.
The idea behind fact-based feelings
I know it sounds a bit odd initially to suggest something so strange as fact-based feelings and the meaning may be obtuse at first, but here is my thinking behind such a statement: Opposing views are not the problem, nor are differences of opinions; but without a valid foundation of factual information it becomes very difficult for those feelings to be appropriately conveyed.
Returning to the conversation I was in the midst of I realized what I was attempting to extract as we continued were the facts which were causing the feelings. And I believe this same problem exists in many other interactions as well. There becomes an increasing importance to have at least some basis level of fact for what you believe.
Debating without facts
Whenever there is a lack of facts in an argument and you’re working completely and solely from the premise of feelings it becomes increasingly difficult to not only convince someone of your viewpoint but to even get them to listen with an open mind. Facts are the crucial foundation upon which your feelings can be based and subsequently your point made.
Based on this understanding, even if those facts may lead you to a drastically different outcome from someone else who hears those same facts, the simple act of fact-based debate lends credibility to your argument and opinion. This also gives you a tacit basis you can support and defend (passionately and with feeling).
Yanni vs Laurel anyone?
Admit it, the title caught your eye right? In case you missed it, a viral internet meme captured the attention of everyone with a simple audio recording of a distorted voice saying a name. The results were fascinatingly bisected. And the twitter “wars” raged on. Staunch supporters for both names were adamant in their belief the voice was saying only the name they heard. Here’s the original, offending tweet question which started the craziness:
What do you hear?! Yanny or Laurel pic.twitter.com/jvHhCbMc8I
— Cloe Feldman (@CloeCouture) May 15, 2018
This is a perfect example where a fact-based argument lends credence to a viewpoint even when the resulting interpretations are polar opposites! The reason I say this with such confidence is due to an effect known as Bistable Audio. Bistable audio can be perceived in two separate ways. In essence this is an auditory illusion. Here’s another example:
Listen to the audio file above. Do you experience a switch in the tune?
— Media Licence: Music vector created by Freepik
Bistable stimuli can be perceived in two separate ways. The sound you hear can be heard in two ways: as triplets of an A-B-A pattern or as two simultaneous streams of an A-A-A-A pattern and a B-B-B-B pattern. Come on, that’s just cool right?!
Now let’s return to the Yanni vs Laurel auditory anomaly. As it turns out, there’s a physical (and factual) explanation for this phenomena! Based on your age and hearing acuity you will actually be able to hear different frequencies. This quality of this particular meme was so distorted it lent itself to multiple frequency distributions of audio and as a result a different outcome based on the individual’s sense of hearing. (Fact-based!)
I find this to be a particularly fun and light-hearted (even slightly-humorous) example to the premise of this post; because both sides are arguing with feeling … but both are based on fact!
The elephant in the room
I’ll leave you with one final anecdotal example. Many are probably quite familiar with this age-old parable. In fact, it’s become so common as to have it’s own Wikipedia page.
A group of blind men heard that a strange animal, called an elephant, had been brought to the town, but none of them were aware of its shape and form. Out of curiosity, they said: “We must inspect and know it by touch, of which we are capable.” So, they sought it out, and when they found it they groped about it. The first person, whose hand landed on the trunk, said, “This being is like a thick snake.” For another one whose hand reached its ear, it seemed like a kind of fan. As for another person, whose hand was upon its leg, said the elephant is a pillar like a tree-trunk. The blind man who placed his hand upon its side said, “Elephant is a wall.” `Another who felt its tail, described it as a rope. The last felt its tusk, stating the elephant is that which is hard, smooth and like a spear.
Each of these men perceived the truth differently and as a result based their feelings and subsequent argument on their “version” of the truth. They were all right…and all wrong at the same time. But the basis of fact allowed them to argue passionately each from their own point of view.
Base your debates (and feelings) on fact.
Conflict is inevitable. Humans have the essential ability to reason and draw conclusions. Based in facts and encompassed with feelings they postulate and theorize their worldview to others, engaging in debate, attempting to persuade, coax, and entice those opposed to concede their view. In all of this, the basal element is fact. Without this fundamental foundation the arguments will be meaningless and nothing more than a benign insignificant waste of time and emotion.
June 5, 2018
June 5, 2018
The Power of Passionate People
Stop for a second. I could almost bet money that you read this title and instantly thought about open source communities. Of course it’s entirely possible that inclination towards open source is entirely my own due to my deep and enduring focus on building lasting communities and the power of open source. But I have to believe that within all of us there is a notion that passionate people belong in communities. We naturally associate the outpouring of passionate work with volunteers. But as I asked at the outset of this post — I’d like you to stop and think more about this.
The composition of a passionate person
Let’s start by exploring what the make-up of a passionate person actually looks like. We are I am sure all familiar with the rather standard top three dictionary definitions of passion; but if we look down the list a little further we’ll see other common definitions. One in particular stands out to me:
passion [pash-uh n]: (6) A strong or extravagant fondness, enthusiasm, or desire for anything. — Dictionary.com
So our standard notion of passion needs to be expanded for our everyday understanding and usage. In practice then a passionate person is one who exhibits strong enthusiasm for something. This is the idea we are taking into consideration today when discussing the composition of a passionate person. Someone who is crazy over accomplishing their mission. A person seen as extravagant and maniacally focused for their impassioned actions.
But there’s something else that’s relevant when discussing the constitution of a person exhibiting extraordinary zeal for a subject. An individual may demonstrate this level of fervor in one area of their life while trudging through the mundane daily rituals of a dozen others. In essence what I am suggesting then is an individual can be both passionate and dispassionate, depending on their environment and any particular facet of their life. There is no overarching global “passionate” status whereby people are measured.
Passion therefore is not contingent solely on the person but also on the particular aspect being evaluated with the person. The responsibility for passionate behavior lies not only with the person but also within the object eliciting the passion. (whew, that was deep!)
Power exists within everyone
Every person contains some element of power within them. This power takes on a variety of forms and is exhibited in a variety of ways depending on circumstances and settings. Power in the sense of energy, strength, mental efficacy, etc… We all have a propensity for exhibiting strength and we seek out ways to showcase or prove our power. As humans we have an instinctive desire to find outlets by which this (and by extension ourselves) can be validated.
Applying these principles
Now if we take these concepts and put them into practice what we find is a rather natural conclusion. When a person is empowered they exhibit greater passion. Their built-in desires have been fulfilled and this causes feelings of excitement and enthusiasm (aka passion). In this way then we can see a virtuous circle begin to form. The more empowerment felt, the greater the excitement.
As you can see from the previous paragraph this lends itself first and foremost to communities. In these circumstances individuals are able to be promoted purely based on a concept of meritocracy. This isn’t of course as easily reconciled in standard business environments. This is due in part to the injection of monetary reward (every job pays a salary) and the instant that some fiat currency is introduced into the equation the predilection is completely shifted off of empowerment and passion. But perhaps this shouldn’t be assumed so quickly.
Starting with why
If you’ve read my blog at all in the past you know I have a borderline obsession with the concept of starting with why (Hat tip to Simon Sinek for introducing me to this concept). Obviously this applies rather easily to community environments where individuals volunteer their time and join a particular “tribe” because they have an enthusiasm for the shared central tenets of the group. But applying these same concepts to a “for-pay” business arrangement it becomes even more interesting.
In this compensated environment “starting with why” begins to rebalance the equation. When a business is able to start by sharing their vision and the reason behind the mission they are undertaking they are able to identify those eager individuals interested in fighting for the same beliefs. In this way, even businesses can begin to build a culture and an organization which forms a tribe instead of merely providing an occupation. And things begin to change.
The best and most incredible companies are those who have discovered this principle. These are bastions of business who are intent on building an empire. A company that is “built to last”. This is by no means an easy task and for every single success story there are hundreds of corporate carcasses strewn by the side. This is such a rare trait we frequently celebrate those who have discovered this holy grail of passionate, empowered workers. We study them in business schools and we analyze their every move. Too often in doing so we take a far to analytical approach and quickly neglect the rather intangible values which have predicated such success in the first place.
But there are enough of these exceptions to the standard to lend credibility to the possibilities. And so we continue to strive. We strive to identify the roots for success, and we strive to implement them in our own businesses. And although this success looks different for each business the common thread of empowered employees lies at the heart of most.
Empowered employees are those imbued with passion for the vision and motivated by the same foundational “why” as the business.
More than monetary gain
I think it is only appropriate to end this post with one last commendation. While the reasoning I have listed above tends to appear at first blush to serve only the needs of the business and encourage financial reward, the truth is much, much greater. Far more than any balance sheet, or revenue bookings, these passionate people build companies which stand against the test of time, providing futures for thousands of others. Creating opportunities for the improvement of life and the enablement for personal success.
What is the true power of passionate people? As the famous Mr. Jobs shared in the now timeless motivational video: These “crazy” ones are the ones who change the world.
June 5, 2018
June 4, 2018
June 4, 2018
Microsoft, Github & Changing A Reputation
Today another headline has captured the minds of many in open source as it seems that yet another open source centric company has been acquired by a private one. Only a couple weeks ago we heard the announcement of Adobe acquiring Magento, arguably the biggest open source e-commerce platform. My good friend Dries wrote a great piece on the purchase so I don’t feel it’s necessary to rehash it too much. If you’re interested you should absolutely read his post: My thoughts on Adobe buying Magento for $1.68 billion | Dries Buytaert. And now, this last weekend the big news appears to be the announcement that Microsoft is acquiring GitHub for $7.5 billion.
Woah, but I thought Microsoft was the enemy
Perhaps one of the most talked about part of this news is Microsoft’s previous statements about open source (particularly Linux). I thought long and hard about this as well as considering my own opinions and inclinations towards Microsoft in this regards. I knew of this deep-seated animosity and dislike for Linux and simply assumed this belief continued deep within the Redmond walls — and in spite of any outward overtures of support, and dare I say “love”.
I thought about Satya Nadella and the work he’s been advocating so heavily for at Microsoft since he stepped in as CEO. And I reflected back on the book, Hit Refresh, his autobiography. This caused me to pick it back up and skim through my highlights. This note caught my eye:
“Dogma at Microsoft had long held that the open-source software from Linux was the enemy. We couldn’t afford to cling to that attitude any longer. We had to meet the customers where they were and, more importantly, we needed to ensure that we viewed our opportunity not through a rearview mirror, but with a more future-oriented perspective.” — Satya
I realized I needed to return to this book and dig in a little deeper as I was now more curious than ever to see how this recent acquisition news played a role in Satya’s overarching vision for Microsoft’s future.
I am glad I took the time to do a bit of research on this topic and glad I returned to this book to see those points that I found interesting back when I first read it. As part of this background refresher I also spent a few minutes looking over Microsoft’s historic acquisitions. The list is quite long as you might anticipate. This obviously ended in the most recent news of Microsoft’s purchase of LinkedIn. And at a price tag of $26 billion dollars I would hope no one has forgotten this transaction yet.
At the time of the LinkedIn purchase, there were questions about the motivations behind this move as well, but again, it’s easy to understand if you consider the approach of Nadella as he looks to the future version of Microsoft:
Satya wrote that he has a “bias” for focusing investments on advancing services such as LinkedIn and Office that help people create and “become more productive rather than software that is simply entertaining — memes for conspicuous consumption.”
Wrapped up in that quote we begin to see a bit of Microsoft’s motivation for this purchase as well. It fits the plan they have strategically set for their future direction. GitHub stands as one of the greatest online destinations for individuals to demonstrate and share their productivity. Following this logic it is easy to see why GitHub holds so much potential value for Microsoft, but what about for GitHub?
GitHub has a long and storied history itself mired in fast success, public stumbles, and the ever-present churning in an attempt to grow revenue. They continued to take larger and larger checks from investors in their search for a path to success. They knew the product direction but they struggled with how to best capitalize on the financial side of things.
For the statistics and numbers junkies reading here’s the financial lowdown on their position. GitHub was valued at approximately $2 billion dollars based on their funding (they’ve raised $350 million historically) and their revenue numbers in 2017 were slightly more than $200M in ARR.
In more recent news (last year) the current CEO, Chris Wanstrath announced his intention to resign. His resignation, unlike his predecessor’s, was not forced by any scandal but instead due to his interest in product development and testing. His announcement and subsequent search for a replacement CEO has lead to fruitless searching and things looking bleak for GitHub’s leadership team.
Clearly this is the story of a company in turmoil. Rumors about possible IPO’s and potential suitors were growing more common by the day. It was evident that for GitHub’s success something had to change.
Open source impact
Of course the reason this particular acquisition has been brought to my attention is due to the open source community. And as I alluded to earlier, the prevailing “anti-Microsoft” opinions of many in the open source world are growing more vocal. But what does this acquisition mean for open source? I think this question is one which would be answered quite differently today than it would have been a few years ago. Again, under Satya’s careful curation we’ve seen a shift in Microsoft’s culture and views towards open source. (This is no small feat!)
But as the press appropriately admonished: Any grand future vision must be met with real and consistent actualities. Microsoft has done just that. I believe a quick look at Microsoft’s current views on open source point to their intentionality:
Microsoft has over 15,000 contributors on GitHub (the greatest of any single company). The company said that over 6,000 employees contribute to open source projects, and have released over 3,000 open source projects. Microsoft’s open source programs office tracks nearly 10,000 open source components, everything from NPM packages to Linux distros used by Microsoft teams. — Source
All of this forces me to think more about what this recent news means for open source and even more personally, for me as a result.
People change, so can businesses
And this is where the learning comes in; the personal challenge to grow and rethink long-held opinions. We all know that people can change. It’s not easy, takes ridiculous amounts of will-power and dedication and ultimately only the test of time will prove the veracity of the change. But in the end, people can change. And if people can change, so can businesses.
Microsoft, under the leadership of Satya, has been focused on rediscovering their soul as a company. They have redefined their mission and outlined steps which help investors and customers to grow the company. As Satya shared:
“In order to accelerate our innovation, we must rediscover our soul—our unique core. We must all understand and embrace what only Microsoft can contribute to the world and how we can once again change the world. I consider the job before us to be bolder and more ambitious than anything we have ever done. Microsoft is the productivity and platform company for the mobile-first, cloud-first world. We will reinvent productivity to empower every person and every organization on the planet to do more and achieve more.” (emphasis mine)
All of this speaks to the core desire to return to what the soul of the company should truly be and the first step in that journey was admitting the failures and missteps which had befallen them over the years. But businesses can change, they can grow, and they can evolve. Perhaps this acquisition is yet another demonstration of Microsoft’s ongoing commitment to rebuild their brand and their reputation. The work they have been doing and the emphasis they have been placing on open source is evident.
As I shared earlier, only in time will we know if this is genuine. Until then the open source community, and the world, will watch with diminishing skepticism as actions attest to intentions. And unless something causes a break in this fragile yet growing trust in a company rediscovering itself — our response should be cautious support.
I’ll leave you with one final quote from Satya’s book.
“Over the years, I’ve found that openness is the best way to get things done and to ensure all parties feel terrific about the outcome. In a world where innovation is continuous and rapid, no one has time to waste on unnecessary cycles of work and effort. Being straightforward with one another is the best way to achieve a mutually agreeable outcome in the fastest time possible.” — Satya Nadella
June 4, 2018
3 Success Factors of World-Class Marketers
Questions that ask for a specific number of answers or bullet points are always harder for me to answer because at times it can be quite difficult to narrow down a veritable multitude of possibilities into whatever random discrete number of points is required. However, at the same time I appreciate the somewhat “forcing” nature of the question as it requires thought and intentionality over which factors (in this case) are of ultimate and penultimate importance. This style of question requires a greatest to least measure of success and in theory this isn’t all bad. (Just keep in mind that in practice there are many more criteria which may prove to be required for a world-class title!).
Understanding what makes a marketer world-class
As always when beginning a response like this it is important to consider what criteria we are using by which we measure success. There are certainly a variety of metrics that marketers are held to depending on their position, industry, and audience. It would be unfair in one instance to judge a marketer’s success on adoption rate of a product if the product has a free level offering as the barrier to entry is relatively low. On the flip side it’s also unfair to judge a marketer’s success on public visibility of a product if that product maintains a very niche market (such as government customers).
Understanding therefore the criteria by which success is measured requires a bit of case-by-case recognition and evaluation. As such, in this response I’ll highlight instead what I believe are 3 common success factors which can be seen predominantly across all marketing professionals and which are clearly evident in the marketers that many consider to be capital marketers.
1. The ability to listen to the audience
Okay, I’ll probably ruffle feathers with my first suggestion here due in part to the recent tweet storms that have been brewing around this individual. And although many would not immediately consider Elon Musk to be a world-class marketer I would suggest that in fact he exhibits many of the traits of one. This includes his ability to listen to the audience.
Almost everyone is aware of Elon’s proclivity to tweeting and his often rapid-fire responses to customer questions and suggestions. While his primary role may not be one of a marketer, his ability to listen to the audience and tailor his marketing message (or company direction) as a result is easy to spot and hard to deny its success.
If there is anyone in the third row, turn off air recirculation. Third row cooling happens by air entering from the front and exiting through the vents in the rear bumper.
— Elon Musk (@elonmusk) March 6, 2018
Yeah, that should improve soon. Software team has been buried in Model 3 bringup and tricky bug fixes, but that’s mostly done now.
— Elon Musk (@elonmusk) March 4, 2018
You're right, this is becoming an issue. Supercharger spots are meant for charging, not parking. Will take action.
— Elon Musk (@elonmusk) December 11, 2016
I could go on here but I think you get the point. Regardless of your current opinion of Musk’s tweeting, there is no denying he listens to his audience.
Reasoning: When a marketer listens to their audience they are better able to tune their messages and improve their marketing strategies.
2. The ability to empathize with the audience
The second aspect of a world-class marketer involves their innate ability to connect with and subsequently empathize with their audience. Now, you may notice I called this an “innate” ability but that’s not really the complete truth. This is not so much a natural gift as it is a finely-tuned by-product from successfully listening to their audience as described in the initial success factor.
Notice though, the act of listening, while valuable, is more than just “hearing”, this second success factor implies that the listening results in action. The ability to understand the thinking behind the voice of the audience. This discerning nature is the second characteristic of a world-class, top-shelf marketer. We’ll talk about the specifics of that action in the final factor below.
The example I would share with you for this point is the Ogilvy marketing campaign for Dove, entitled, “Real Beauty”. This decade-old campaign only grew more powerful in time and in less than a single month after launching the Dove Real Beauty Sketches it became the number one viewed online video ad of all time. There’s a whole host of blogs, publications, and write-ups on analyzing this campaign, why it was successful and the marketing genius behind it. I’ll leave that for you to explore later.
Reasoning: When a marketer empathizes with their audience and speaks to them in their “language” or otherwise tells “their story” they are able to truly connect with the audience in a meaningful way.
3. The ability to offer value to the audience
The final point in this top three list for cream-of-the-crop marketers I have to give to the ability of the marketer to add value to the audience. This in essence is the culmination of the previous two factors and a host of others not mentioned here. Adding value means you have listened to your audience, you have empathized with them, and you have strategically determined the appropriate time and method to share your message with them in a way that provides real value.
Too often in marketing their is a semi-prevailing (frequently denied) practice of automated bulk messaging to entire audience segments without regard for proper understanding and intelligent messaging. Unfortunately the advent of marketing automation tools has only caused this abuse to grow more evident.
The final real-world example of marketing done superbly well relevant to this point I’ll suggest is Jony Ive from Apple. Although, as with our first example, some may consider Jony a polarizing character, his style getting frequently parodied due to overuse — it’s hard to fault him for remaining consistent in his work and subsequent marketing. Jony consistently draws the audience to more than just another product. He focuses on the message surrounding a product, he emphasizes the value of what he’s doing as it relates to the audience!
The notion of how Apple markets their products is certainly one you will find discussed incessantly on marketing and product blogs the world over. I’d recommend researching the ethos behind their messaging if you haven’t done so already. They don’t focus on features they focus on the customer’s experience and how their product adds true value to a person’s life.
“It’s a way that you demonstrate that you care for the people that you are making these products for. I think we see ourselves as having a civic responsibility to do that. It’s important. It’s right. It’s very hard to explain why.” — Jony Ive
I recognize this is by no means a comprehensive list (I was forced to choose only 3) and I’m also aware that there may be disagreement on the top 3. As I stated in the beginning there is an almost innumerable set of factors which when all working together complementary create a world-class marketer. However, regardless of the exact ordering, I think you will find it difficult to create a case where these three factors are not present in the world’s best marketers.
June 3, 2018
June 3, 2018
Saelos Sunday Stuff
Here we are on another weekend, and it sure feels like they come fast and furious these days. I don’t know if it’s just me or if time is actually speeding up. (And anyone that dares to suggest this relativity has anything to do with my age will be summarily disavowed.) Regardless, it’s Sunday and as they have come to be affectionately known, it’s a Saelos Sunday.
There are so many things I’d like to share with you but in an effort to draw your attention to one particular and important statistic I’m going to focus on only one slide. In this way we can share in the excitement of the meaningfulness of these statistics.
Before you get all stressed out because I’ve use the word “statistic” more than once in the previous paragraph, let me calm you down by sharing a picture with you (pictures make everything better).
Now, I confess I said I would be focusing in on “only one slide”, but I’ve been a bit sneaky — if you’ll notice this slide actually shares two very important facts in a single slide. Let’s first look at the downloads. It’s quite exciting to see the numbers climbing so significantly with each release. This means the world is beginning to discover Saelos: a new open source CRM.
As you can see from the picture, the Beta 3 release had only 32 downloads, Beta 4 had 86, and then Beta 5 scored an overwhelming 395 downloads! Now, we are currently in the middle of Beta 6 and we’re on track to see more downloads than any other previous release with 306 downloads.
But the stability of Saelos is the second critical factor that is displayed in the slide above. You’ll notice that with each release the time period before the next release has grown. Whenever there is a lengthening time between releases it usually means one of two things, either the software is not being developed at the same speed as previously, or the bugs being uncovered are becoming fewer and fewer.
I am happy to report in Saelos the number of issues that have been uncovered has been shrinking with each subsequent release. This shrinkage is quite common in the development of a product, particularly one proceeding through a beta process. As a result this slows down the number of releases and also demonstrates an exciting fact: Saelos is getting close to being released as a Release Candidate.
In case you’re curious or need a refresher on process. A software product following proper versioning goes through multiple beta releases (determined by the number of issues uncovered in each release) , then a release candidate, then a stable release.
As I mentioned, based on these statistics Saelos is getting close to a Release Candidate. This is an exciting moment. If you are currently using Saelos then this should be a welcome announcement — a stable open source CRM ready to be implemented in your production environment is coming soon.
If you’re wondering what it will take for this to happen then I’m glad you’re thinking about it! Our community needs issues reported when there are bugs found (this can be submitted on GitHub); fixes for those issues submitted as new pull requests (also on GitHub); and any last minute feature requests (with code attached!) to be included in a stable release.
Lastly as you prepare for this upcoming release you should make sure you’re keeping up-to-date with the announcements being made. There are several ways you can do this and I believe in though our community is still quite young we do a great job communicating on a variety of channels. Pick your preference: You can subscribe to the Saelos email, join the Slack group, or register your account on the website (truthfully speaking it wouldn’t hurt anything to be around on all three).
One More Thing
I know it sounds a bit forced but forgive my headline nostalgia for a moment. There is one last thing I’d like to share in this Saelos Sunday update. Even though our community is very fresh we have already seen incredible volunteers contributing in a wide variety of ways. Sometimes I just have to sit back and contemplate the awesomeness of those individuals who believe in my vision, who personally agree with what I’m trying to accomplish and are willing to join forces with me in reaching for these lofty goals.
I’ve spoken before about the power of the “first follower” and this is a perfect example of how relevant and important these early adopters, advocates, and strong believers are to our success. This week in particular I’d like to draw special attention to one special Saelos Superstar.
Luiz Eduardo has contributed countless hours to improving Saelos through code, through distributions, and through community growth. His dedication to spreading the Saelos Story far and wide is evident in the vast and widespread work he has undertaken on behalf of our community. I hope you’ll join me in thanking him for his hard work and dedication to Saelos. And I trust his example will encourage you to find ways you can also become more involved in the Saelos community. (Not sure where to start? Drop me a line and I’ll be happy to give you some ideas.)
June 1, 2018
Self-Help Reading Week: Russell, Randy, Leslie
As I shared last week I like to find some common theme that runs through the books I read each week and in retrospect I found this week to have a theme of self-help or personal growth or self-improvement.
It’s Friday again! This week flew by, as is usually the case when the first day of the week is a holiday. Since I posted last week’s Reading 4 Success post on Tuesday it feels as though this post comes even quicker this week. As such I apologize if you feel inundated with book reviews and recommendations. My intent is never to overwhelm you with yet another summary of a book. Rather, I strive to add value to the summaries I share and bring some semblance of a “takeaway thought” to each in order to help put your mind in a favorable disposition towards one or more of the author’s works I’ve uncovered.
Bottom Line: I want to encourage you to explore the world of literature in greater detail and to make the art of reading something you include in your daily habits. I promise you it changes everything.
Reaffirming my thinking and purpose behind these review articles is also a way to ensure my writing stays meaningful as I share with you the various books I’ve read in the previous 7 days. This week in particular the theme of the books I read are an excellent case-in-point for this purpose.
I’m labeling this week the “Self-Help Series”
As I shared last week I like to find some common theme that runs through the books I read each week and in retrospect I found this week to have a theme of self-help or personal growth or self-improvement. I recognize this particular topic or theme could be applied to any number of books and personal stories but this week in particular I found the label to be apropos.
Without further delay, let’s explore three different author’s views on the subject of personal growth.
Leslie Odom’s book, Failing Up, takes us on a very personal approach to self-improvement outlining how to find success in failures by studying his own journey of successes (or should I say failures) in his life. Leslie discusses the ways he was forced to grow and improve in his journey as an actor and facing difficult choices along the way. (Just as a brief background, Leslie is most well known for his role as Alexander Burr in the Broadway show Hamilton). He includes various life lessons including the power in saying “no”. A few memorable highlights of mine include:
“Everything changed in an instant the first time I really gave myself the room and the permission to fail spectacularly.”
I think this quote sums up one of the major takeaways Leslie hopes to leave you with after reading his book. He also shares the idea that “Preparation is the sign of your intention.” (This one is a personal favorite of mine from the book). The encouragement that Leslie seeks to leave you with is the concept that constant self-improvement comes from being willing to set yourself free, to take chances, but all of this happening with a dedication to being prepared. This isn’t wild, unfounded risk-taking; this is planned, prepared, intentional striving after success without fear of failure.
The second book I want to share with you this week was Recovery, Freedom from Our Addictions by Russell Brand. I have to admit I have a personal like and dislike for Russell due to his somewhat inflammatory manner of dialogue and his personal penchant for lewd language in his somewhat pedantic diatribes. I dislike the use of strong language as the main vehicle to communicate a point, but at the same time recognize the value in pushing my own thinking to look past conventional differences and explore the concepts shared instead. Even in this way I suppose Russell is forcing my furthered self-improvement.
In Recovery the writing centers around the concept of a 12 step process or journey that Russell underwent. His tendency to verbosity and superfluity of language which he tends to employ to enhance the writing at some points distracts too much from the point he wishes to communicate. But, in spite of this flowery approach Russell does a fantastic job communicating his thoughts (as I have always found him to do).
As I filter through his words a few striking concepts surfaced for me. Russell alludes to his initial desire to seek help from his addictions slowly evolving into a deeper and more meaningful acknowledgement of personal realizations and his own ‘depravity’. He acknowledges perfection may be something unattainable and perhaps a better and more reasonable aspiration would be a manageable and then beautiful life.
There are some books that I pick up and instantly recognize a style of writing, of thinking, or just general philosophy I immediately resonate with on a personal level. Randy writes very much with a type of ideology that I personally advocate for frequently. Unlike the previous book which pushed me to think differently, Mad Genius by Randy Gage is very much the opposite. Randy’s approach, thinking, and suggestions were all easy to digest and I found myself frequently nodding in agreement as I read. (Truthfully it was probably more of a soft under-my-breath grunt of agreement, but that just sounds far less intelligent don’t you agree?)
Randy’s book focuses on what lives inside each of us but is rarely tapped into by most people. The idea of thinking through things, questioning reasons, and tackling problems. When Randy speaks about questioning things what he really refers to is the notion of discovering the “why” behind the way things are done. (I’m sure you can see now the reason I found this book particularly enjoyable. Exhibit A, Exhibit B)
This book is far more prescriptive than the other two and speak to very specific challenges or “tasks” that the reader might endeavor to improve themselves and find their hidden “Mad Genius” as the author likes to label it. Overall, I found myself in agreement with most of the book and while the concepts were not new to me I found them to be a fresh approach to thinking bout some of the same interesting topics I spend a good deal of time thinking and writing about. I would definitely recommend reading this book. But…
Reading about self-help is only the beginning
Why are self-help topics so popular? This is a question I see asked frequently and the bookstores attest to the validity of such a question with the overabundance of books and tutorials and guides on how to “be a better you”. Clearly humans have a deep-seated desire to be better than they are. While I don’t necessarily suggest this to be a bad subject or one that should be avoided I don’t believe simply reading books on the topic will make the difference.
Rather, the reading of various self-help principles only provide the first step towards change and personal growth. After the reading comes the application. I believe this is where the struggle becomes more evident for most people. Breaking old habits; forming new habits; the changing of what has become part of our daily lives and person is much more challenging. Everyone has probably heard the concept regarding forming habits. Quotes, such as the following, overrun the internet:
“We are what we repeatedly do. Excellence, then, is not an act, but a habit.”
Indeed, studies have shown it takes 21 days to form a habit (at least the easy habits). So while we recognize the work required to form a new habit, the amount of effort to improve oneself is not without its challenges.
I am always glad to read a new book on the topic of self-improvement and find great value in the different outlooks and opinions shared by the various authors. I appreciate the sometimes contradictory viewpoints and the encouragement to expand my own thinking. Beyond the simple reading of new ideas I hope the application of what I read becomes more a part of my daily life and informs my habits.
Similarly I hope you will find these book review posts to provide you direction as you seek out new material to consume and new topics to stretch your mind. But this is only the first step in the journey and I would encourage you to continue your growth beyond simple reading or review of others opinions. Take the more challenging path of self-improvement and start forming new habits!
May 31, 2018
Creating MarTech Glue
If you're a digital marketer then you know the struggle. You know the gaps in your marketing stack. Those ever-widening cracks as the MarTech landscape expands. Mautic is creating the future of marketing automation with this new advancement we are calling MarTech Microservices. Want to learn more about what this means for marketer's everywhere? Read this post.
Yesterday I published a post about Filling In The Marketing Gaps and I hinted at returning to a topic I have grown increasingly excited about. I want to share just a few more thoughts and details along with some graphics which I hope will make things easier to understand. I promise, after this post, if you’re simply begging me to stop I won’t post anything further on the topic for a little while. The challenging thing is I’m seeing what I believe to be an invigorating and innovative spark for moving the future of MarTech. And Mautic is positioned on the forefront of it. As a result of all this pent-up excitement I end up thinking about the topic and by extension writing about it frequently. The topic as I’m sure you’re well aware is one we are calling MarTech Microservices. Mautic is creating the future of marketing automation with this new advancement.
The Next Generation of MarTech
There’s a lot of words in there and I realize I’ve completely obliterated the key 6×6 principle (6 words and 6 lines max on a single slide). Let me pull out a few salient points from this particular slide.
Mautic is positioned to become the leader in the MarTech space, based on an open architecture, a flexible framework, and a sustainable path for future expansion and growth.
As I shared yesterday, the very foundational core of Mautic positions us uniquely to step into this role as a leader, pushing the boundaries of what we know to be marketing automation today. Mautic 3 will give our community the opportunity to demonstrate what this future looks like by creating a headless, serverless marketing automation tool. This means a variety of things and I’ve shared it before (ad nauseam?). The purpose of this post is to take those concepts and make them easier to understand exactly what it will look like.
A Complete Marketing Automation Package
This is the first and greatest point that needs to be made with Mautic 3. Mautic will continue to provide the absolute best, most cutting-edge, full-solution marketing automation solution in the world. Even as we explore the many and exciting ways that Mautic 3 will technically change the MarTech landscape and revolutionize many of the services which marketers are already using; we will continue to offer an incredible all-inclusive Mautic product.
Mautic will grow and become better with each release and Mautic 3 will build on the learning as well as the technology of each previous Mautic release. Rather than losing value with this major release we will be able to build upon our history.
Continued expansions through plugins, a renewed vision for the various “builders” (emails, marketing messages, and landing pages) and countless additional valuable improvements through across the platform – some seemingly inconsequential and some more noticeable. (Does this interest you? I’ll share more specifics if this is a topic you find intriguing – leave a comment if you do!)
A Complete Marketing Automation Platform
Okay, this is where things get exciting. This is where Mautic 3 is completely and totally revolutionary. This is where everything changes. This is where the future begins to become the present and ideas become realities. Can you tell I’m getting excited? Because this is the inflection point. This is the Mautic 3 platform.
The title for this section belies the true differences between the previous section and this one. Package to Platform. An incredibly subtle difference in words, but an incredible impact for marketing and technologists. A package is a bundle of things, a group of objects. In this particular case, the marketing “package” is a bundle of two objects: a frontend user interface and an API driven application layer. The Mautic 3 platform refers to these two individual objects. Keep reading to learn more about what this means.
Two Marketing Automation Tools In One
Here is a more direct look at these two completely unique and standalone parts of the Mautic 3 platform. Each one of these tools is capable of functioning completely independently from the other.
This idea of two tools in one sounds far more complicated than it really is. Remember if you get worried or confused — return to the first point above: Mautic is a complete marketing automation package. There’s no need to feel differently about Mautic 3, and certainly no need to worry.
The power of combining two discrete tools affords the marketer the opportunity to be as demanding as necessary for their unique business environments. Mautic is flexible.
If you’re not sure what this bifurcated approach enables then I’d recommend posting a comment or letting me know! But first, keep reading and see if the next few sections explains things better.
Mautic 3 User Interface
The first of these two tools to explore is the Mautic 3 user interface, or commonly thought of as “the frontend”. The user interface (UI) is the part of the Mautic platform the marketers directly interacts with. This involves all the beautiful drag-and-drop functionality of the campaign builder. The powerful and intuitive navigations. And everything related to what is visually displayed in the browser or app.
Feature Highlight: Did you see what I did there? (I said “app”) We have big plans coming for Mautic 3 in this regards both mobile, desktop, and far far beyond.
As the slide above indicates, this marketing automation tool can be used with any “backend” system (you may understand this part more with the next section). Simply put, if you have your data in a different location, or different database, by adding a simple API layer you can take advantage of the Mautic 3 user interface with your own system.
Mautic 3 API
The second tool available in the Mautic 3 platform is the incredibly powerful API. Again, as with the previous “frontend” tool this API platform builds on the previous success of Mautic 2. Rather than a complete rewrite (I trust this will encourage some of you) Mautic 3’s API will expand upon and continue to extend what was done before.
Feature Highlight: Mautic 3’s API is powerful and robust due to the open source nature of the code. Every aspect of the entire platform is required to be available via this API.
When you have an API that is completely and totally capable serving every aspect of the marketing automation system you are capable of using this tool in a wide range of applications. As highlighted in the image above, Mautic’s API can be used to power a variety of other outputs. Regardless of the interface, Mautic can power the backend data processing.
Just as with the previous section, this API can then be implemented by the discerning marketer into a wide variety of different use cases. (For those with a question – this is meaning of a “headless” system)
Diving Deeper into the Mautic 3 API
It is usually at this point we tend to get into the deep and technically challenging part of the Mautic 3 topic and debate and cause some consternation for people. Let’s rehash how we got to this point very quickly.
First, we have a full marketing automation package in Mautic 3, this package can be used as one tool. Second, this package is actually a marketing automation platform consisting of two distinct tools: a frontend user interface, and a backend API. Each of these tools can be used on it’s own. Now, we have gotten to this concept of microservices. If we look at the API tool we can imagine breaking things down with even greater specificity and consider the concept of discrete functionals components.
In the graphic above I’ve highlighted three possible examples of these microservices. The takeaway is simple and incredibly powerful at the same time.
MarTech Microservices are discrete functional improvements which enhance the marketer’s role across their entire digital marketing stack.
These microservices are the glue which bind together the entire vast and confusing MarTech landscape. They can be used independently of the full marketing automation package (point 1 above).
The Mautic MarTech Glue
This is why I get so excited about Mautic 3. We’ve taken a flexible and open source framework and the concept of being adaptable to every marketer’s unique business workflow and magnified it times a thousand. We have the opportunity to take MarTech into the next phase and to enable marketer’s not only through the use of a new and powerful marketing automation package but to seamlessly bring together their entire marketing suite of tools into a single cohesive system with Mautic MarTech Microservices. And this can be expanded even more as we look into the future a bit further.
Mautic fills the gaps between the various and disparate systems in use by a marketer. Mautic does this with the ultimate in flexibility. By no longer existing as only a monolithic platform Mautic is able to fill in the space, adding value, and connecting marketing tools and more across the organization. — Filling In The Marketing Gaps
If you’d like more information not this particular section I recommend returning to my post from yesterday where I shared more detail.
Flexible, Open Source, Connected
Here’s where we bring it all together. Final thoughts on the topic. I’m going to try to summarize the content above and distill it down to the core fundamental points in as clear a terminology as possible. So here goes.
- Mautic is a marketing automation package which offers a full and complete marketing automation experience for businesses to use as an entire system to handle their omni-channel marketing automation needs.
- The Mautic platform consists of two tools: a beautiful and intuitive marketing automation user interface and a powerful and robust marketing automation API framework. Each of which can be used independently as needed in various marketing environments.
- The Mautic API framework contains discrete marketing automation microservices which can be implemented independently of the rest of the platform to enhance existing marketing tools and services.
These three core principles enable the marketer to experience a truly unified digital marketing experience. But it’s important to recognize how these 3 core principles are made possible. This unique ability to be both monolith and microservice at the same time is only as a result of the underlying foundational architecture and beliefs of the Mautic community and Mautic product. Those foundational truths are:
- Mautic is flexible to be used in a variety of means as required by the unique requirements of each marketer.
- Mautic’s open source code means every aspect is available for review, use, and improvement. There are no black boxes. And full transparency exists across the entire system.
- Mautic is capable of providing marketers with a single, unified, connected system for their digital marketing. Being open source and flexible gives Mautic the unique ability to add meaningful value “in the cracks“ left by other systems.
I hope this has helped to make things a bit more clear and also to showcase what Mautic 3 will involve. More than anything, I hope you are beginning to see the vision for what the future of MarTech looks like. Not only the vision of the future, but a better understanding for why this is so important, relevant, and meaningful. The digital marketing landscape is changing, growing, and expanding. What we believe, what drives us to create Mautic 3, is our uncommon, sui generis ability to be the glue to bring it all together and improve the lives of marketers around the world.
May 30, 2018
Filling In The Marketing Gaps
One of the biggest features and benefits of an open source platform like Mautic is the extreme amount of flexibility and customization that is possible. Open source gives incredible power to each business to create a tool that works for them (rather than the business working to fit the tool). Marketing automation historically never had this level of flexibility before Mautic was created and so in that sense I’m excited to see how quickly the marketing landscape has been improved by Mautic.
The crazy part of this Mautic journey personally is the feeling that this has been both instantaneous and interminably long at the same time in achieving this milestone. In reality we’re probably somewhere in between. Mautic has progressed from an alpha release, beta, a stable 1.0, and then a number of releases to the Mautic 2.x series. Along the way we have educated the world about the powers of open source marketing automation and learned a great deal about how to create a world-class marketing automation platform.
Current Status of the Mautic Platform
Today, I am excited to see the widespread acceptance of open source marketing automation as a natural and significant advancement for the MarTech “Forest” (a concept I’ve written about previously). Open source uniquely allows businesses to create campaigns, workflows, integrations, and processes that match their unique requirements. I’ve had the privilege of hearing story after story from those who have found success in a software tool that fits their needs. It’s extremely rewarding to know Mautic is empowering these individuals to do things the way the want to.
Looking Ahead at Marketing Technology
As I consider the landscape today and look ahead at what the future of MarTech looks like I realize there are still ways we can help marketers do even more. What we have done so far is the first step in my opinion. We cannot stop at this point and rest in our success. We cannot pause our forward momentum and progress and consider ourselves to have achieved our goals. This is the beginning. And we must always be looking at what comes next.
The Next Step in the Mautic Journey
I’ve shared the next step recently when I discussed, announcing Mautic 3, and then I shared both technical advancements (yes, I’ve heard this is a highly technical post), and business benefits, timeframes, and even more suggestions based on what I believe is coming next in the marketing space.
There is one particular aspect though which I inherently feel we should focus in on as we discuss marketing technologies, and what moving forward actually looks like. I believe Mautic changed everything by offering an open source flexible platform. I believe being flexible, integrating, and supporting marketers in whatever tools they choose to use from the “MarTech 5000”. This belief compels me to continue to refine and improve what open source marketing automation means. This is some of the reasoning behind my thoughts on Mautic 3. Let me explain with a graphic. This is a sneak peek from an upcoming blog post but I think it perfectly outlines my point.
I love this graphic because it provides a visual representation for a rather abstract concept. In fact, it also provides a picture for the title of this post as well. Mautic fills the gaps between the various and disparate systems in use by a marketer. Mautic does this with the ultimate in flexibility. By no longer existing as only a monolithic platform Mautic is able to fill in the space, adding value, and connecting marketing tools and more across the organization.
Flexibly Adding Value
I highlighted the key phrase in that last paragraph. Adding value. You see, by focusing on filling the gaps Mautic does far more than just connecting various tools in a blind or “dumb” connection. Rather, Mautic enriches the data, adds value, creates additional knowledge, simplifies processes, and improves the marketer’s intelligence into their audience.
Open source gives Mautic the uniquely powerful position in being able to offer this level of customization and separation. Separation in the sense that you can use some of those services without others. I referred to this in previous posts with a term, microservices, and this leads me to the eventual concept and drive behind some of my philosophies for Mautic 3 and marketing automation microservices.
Important: While Mautic 3 has the ability to provide various functionalities as microservices, there is also a full Mautic 3 marketing automation platform as well. (Not to mention an independent robust API platform and an incredible independent UI as well)
Even as I write that I realize there is so many more things I want to share with you on this topic. But I hope this post at least whets your appetite for learning more about Mautic 3 and the reasons behind why what is being proposed for this release is so important. I’ll be writing much more on this topic as well as sharing a full slide deck that highlights the various relationships in more detail. The image above is only one slide in this forthcoming post and I’m very excited to share it with you. Mautic is once again improving the way marketers work and interact with their tools. Stay with me, things are about to get good.
May 29, 2018
Reading List Recommendations
I decided rather than post my weekly reading list update on Friday I would wait and post on Tuesday instead. Given the long holiday weekend in the US I had my expectations that this would afford me a bit of extra time to read. Excitingly enough I was correct and have a few more books I’d like to add to this post. In addition to my usually non-fiction reviews I’m also sharing some of the fiction books I was able to find time to indulge in as well. I hope you’ll find something in here that will inspire, encourage, or motivate you to pick up a new book as well.
Business books & a common theme
Just as I have done in weeks past I’ll start by sharing the three business books I read this past week and after the summary and takeaway from each I’ll share what I believe might be considered a common thread between them. Interestingly enough, this week, as with weeks past, I am not purposefully selecting books that I believe share a common theme. However, I have been once again pleasantly surprised with how these three disparate books and authors have some common themes and relevant points shared.
This book was one I picked up because the subtitle completely caught my eye. The full title of the book is Accelerate, Building and Scaling High Performing Technology Organizations by Nicole Forsgren, PhD, Jez Humble and Gene Kim. The subtitle jumps out at me because of the challenges and opportunities Mautic is encountering as we continue to grow at such a rapid pace. Thankfully I was able to enjoy reading this book as Mautic has overcome many of the early struggles we had handling such great growth. I say enjoy because I wasn’t forced to scour the pages in an attempt to uncover some instant fix in the midst of a crisis!
This book was only recently published and has been receiving quite a bit of publicity (at least in my circles) so I was quite eager to read it, particularly given the individuals recommending it. I can now solidly add my own name to that list and say, if you are in any technology-related position in any organization, you should absolutely pick up a copy of this book. In fact, any time I read a book and discover the amount of my highlighted text exceeds the un-highlighted I know I have read something truly meaningful. That being said I don’t have any idea how I’m supposed to shrink down things into a simple handful of bullet points. Here is the best I can do for you:
- Practical Application: This book has performed incredible studies into real-life use cases and organizations and extracted useful results from them.
- Process Makes Perfect: To twist a common saying, the authors focus on creating the best processes for scaling a successful organization.
- Psychometrics and Surveys: The authors focus on collecting data through surveys (some consider this questionable or too subjective) and then applying science to study the results.
I feel terrible offering three meager snippets for a book of this quality but also recognize I cannot paraphrase the entirety of the book here. I can only suggest you pick up a copy and read it yourself. Whether you’re concerned about deployment processes, employee satisfaction, product stability, or just a better understanding of what other highly successful organizations do, this book is a must read.
The process by which an organization accelerates the development and delivery of software improves profitability, productivity, and market share as well as improved effectiveness, efficiency, and customer satisfaction.
The second book I read this weekend was technically a bit of a re-read since I had read it once before and I don’t frequently take the time to read a book through a second time but this book is one that serves such a practical nature it’s more of a handbook or manual then it is a book. The book, SPRINT by Jake Knapp is a playbook for how to successfully “solve big problems and test new ideas in just five days”. There are many reasons why I recommend this book but let me give you just a few:
- Plan and Execute: The author uses a story-telling narrative as he shares how to organize a team, identify a specific problem, and create a prototype in only one week.
- Pick a Path: Storyboarding, brainstorming, idea sharing all play a role within the team as a path is outlined to solve the problem.
- Prototyping: In this week of incredibly fast iterative development it’s important to recognize the outcomes anticipated and focus on getting insights. A prototype rather than a polished finish product is the week’s goal.
I should be clear: this book is not referring to agile development sprints. Just in case there’s confusion I realize it’s important to mention this book and its outcomes are applicable to any organization and any problem. The author is quick to point out the principles and processes here can be applied to any industry and any problem.
Ultimately, this book provides a fascinating and highly specific 5 day (almost hour by hour) journey through a process to go from idea to customer-tested prototype.
Human + Machine
The last of the non-fiction books I read last week was a more future-focused look at how humans work alongside artificial intelligence. In, Human + Machine, Reimagining Work in the Age of AI the authors Paul Daughtery and H. James Wilson focus on how a future work experience looks like as we begin to realize that we are not competing with AI for all jobs but rather how we will work together in a mutually beneficial relationship to accomplish a goal.
I personally enjoyed this book as I am constantly thinking about and sharing how I believe AI will revolutionize the marketing automation space and what machine learning really means (beyond just fancy marketing jargon that some companies like to throw around).
The authors break the book into two parts, first studying what advancements we have already made in the world of artificial intelligence today. They point to the seamless and even elegant interaction between robots and humans in factories where previously these machines were completely restricted to assembly line motions. They continue to draw the reader to conclude how much “AI” we are already consuming today. This serves to emphasize their point that we are currently already living in this humans and machines symbiosis.
The second half of the book is where the authors take more creative liberties to explore what this future looks like if things continue at their current pace. They explore many of the topics which strike fear however unfounded in the hearts of workers everywhere (The imagined future where all jobs are owned by AI). Instead of such a bleak outlook the writers focus instead on the many benefits and attempt to set straight a realistic view of this future world. This is where things get interesting for me. The book focuses on a concept colloquially termed “the missing middle”, or ways of working which currently don’t exist in today’s economy.
This book is a thought-provoking study into how businesses will achieve the greatest success when machines and humans work as allies to create a process which takes advantage of complementary strengths.
As I selected them and read throughout the week these three books did not seem at first glance to have any real correlation. However, as I read them I was struck by what once again seemed to be a common theme.
The Common Theme: Process
The concept of process was pervasive in these three books, whether in product departments of an organization, in how a sprint is handled, or in how machines and humans work together for the betterment of the business. Across all these different thoughts and areas of focus the singular idea of the importance of a clear process was immediately evident.
Personally I admit I may have been slightly predisposed to this notion as the concept of processes is one I personally study heavily, speak about publicly, and even write about with some frequency (The Importance of Process, An 8 Step On-boarding Process, The Importance of Planning, The Importance of Planning: Practically Speaking just to list a few examples.)
As a result of this personal interest I found these three books to touch on unique yet similar aspects of this concept in fresh ways (or in the case of SPRINT, refreshing ways). If you have not read one (or any) of these books, I would certainly recommend you consider adding them to your bookshelf. I would recommend them in the order in which I’ve written about them here and depending on your field of focus might recommend switching #1 and #2. However, if you’re in the technical side of an organization you simply must read Accelerate.
Too often we get caught up in the details of a particular problem and fail to either look at the bigger picture or more accurately, we fail to see how the part fits into the whole. We lose sight of the process. These books helped remind me that the process is critically important as businesses grow and develop.
Bonus: Fiction Fun
Okay, as I said in the beginning due to the long holiday weekend I was able to read a few more just-for-fun books as well. Rather than doing any sort of write-up on them I’ll just share the titles with you in case you’re curious what else I read.
I’m a bit of a mystery thriller fan and love reading a good book with a “twist”. Regardless of your personal interests, I’d recommend anything by James Patterson, he’s a very easy-to-read fiction author (not to mention phenomenally prolific and I find myself inspired by his drive and work ethic). Whatever your pleasure-reading preference might be I encourage you to find a new book, new author, or new topic.
May 24, 2018
Recently I’ve received more than my fair share of emails relating to my privacy and other businesses. This left me contemplative. I began to wonder what this data might look like in graph form. Given my proclivity for data and data interpretation I decided to quickly create a graph that I felt was truly representative of the situation as I have experienced in my inbox.
I recognize we are all unique and we each have different online habits and subscriptions, so your particular results may vary. Below is simply my estimation from personal experience, although I would believe it feels similar for many of you.
Clearly the situation has escalated in recent days and the result has been nothing less than an overwhelming sense of comfort knowing just how many businesses care about my privacy!
I will admit that some of the subject lines have been slightly intimidating or even threatening but I rest assured this is simply their extreme desire to see my privacy protected and sometimes that heartfelt desire can appear as a threat.
As a result of this wave of interest in personal privacy I realized as the recipient I also have an obligation in this situation. If others are so extremely dedicated to protecting and promoting my privacy and take the time to demonstrate this through a barrage of increasingly frequent emails, then it is not just my responsibility, but my duty to respond accordingly.
In order to put the minds of these many concerned businesses at ease and allow them the freedom to sleep in peace at night without the weight of worry over my personal privacy I am choosing to assume that responsibility myself and relieve them of that burden. I’d encourage you to do the same. Let us allow these businesses the opportunity to focus on improving their products and their businesses instead of how they manage our personal data. Let’s give them the freedom to move forward unencumbered without the albatross of our personal information hung around their necks.
The preceding is my light-hearted response to the influx of emails received in the past 24 hours as “the deadline approaches”; in all seriousness this does present a significant opportunity to evaluate your sharing decisions and the implications of who receives your data — Think about it.
May 24, 2018
May 24, 2018
The Power of Small Words
First, small words doesn't necessarily refer to size, or even length. Consider a different interpretation, eg. brevity, or conciseness. Second, I have a very strong affinity for all things user-experience related; in fact I consider the ability to make a beautiful user-experience paramount to a successful product. I have always considered the UX (user-experience) to be solely-focused on the design and the process flow of the app, product, or website. This week I believe I was corrected in that somewhat erroneous thinking.
I recognize that normally Friday is the day of the week I usually share what I’ve been reading and this week will be no different, but today (Thursday) I simply have to jump into a topic on which I have been reading a significant number of articles recently. A topic which has not only held me captive but also caused me to return to the concept repeatedly throughout the week. Curious? Let me give you a few more hints before we talk more about this particular topic (no peeking ahead!).
First, small words doesn’t necessarily refer to size, or even length. Consider a different interpretation, eg. brevity, or conciseness. Second, I have a very strong affinity for all things user-experience related; in fact I consider the ability to make a beautiful user-experience paramount to a successful product. I have always considered the UX (user-experience) to be solely-focused on the design and the process flow of the app, product, or website. This week I believe I was corrected in that somewhat erroneous thinking. Or better said, not that this thinking was wrong, but it was incomplete.
You’ve got to be at least slightly inquisitive now as to what I may be referring, have you gotten any ideas? I won’t keep you in suspense any longer. This week I have been thoroughly overtaken with the concept of UX Writing.
This idea of UX writing as an area of expertise was something I may have inherently understood and recognized at some level, but this week it was defined, exemplified and emphasized in a whole new way. This mental awakening was both eye-opening and thought-provoking and I simply had to share my thoughts on the subject with you. I hope if this is something you haven’t heard of that you find it equally compelling. if you are already aware of (or better yet implementing) UX writing in your business then I commend you for your forward thinking. Regardless, I hope you’ll find value in my highlights below.
Google Gets UX Writing
The first example I want to share with you was from a Medium article I read which gave several great real-life use-cases for UX writing. I would encourage you to read the full article if you find this topic interesting (and honestly, by the time we’re done — you should). In my opinion whenever I think about good end-user documentation I think of the work Google has done.
Google has come to realize the best way to see something adopted is to provide documentation and guidelines for what they believe to be best practices. This is what they have done in the past with Material Design, Android UI, and a wide variety of other projects. As a result their documentation is rich with examples and real-life implementations (including specific do’s and don’ts) . The best way to explore UX writing then is a specific example as Google defines the topic
This single example perfectly outlines what Google believes is at the heart of good UX writing. Good UX writing is clear, concise, and useful.
Wait, back up, what is UX writing
I gave you the Google example at the start of the post for two reasons, first I thought this was so informative and useful regarding a practical application I simply had to share it first; second, I believe learning by example is one of the best ways to understand a difficult topic.
Here’s a good definition of what UX writing involves:
The topic of UX writing consists of three major components: the UX design & usability, wire-framing, and user interfaces. But this isn’t the only three specific areas. Influencing each of these areas and critical to UX writing as a whole is the ability to relate these concepts with the essentials of behavioral psychology and human decision-making. (Remember my post from last week? Interesting tie-in here).
The core principle is similar to what you’ll find in the work of UX design. The goal is to enhance the user experience, to make them feel delighted, and ultimately, to make them feel knowledgeable about your product (even if they’ve never used it before!) Anything that distracts from that goal is a problem to be addressed.
Microcopy: The concept of microcopy is at the heart of much UX writing, it refers to the short multi-word phrases or sentences that appear throughout a website, app, or product. Button text and links are the most common types of microcopy and the types most marketers typically focus on in A/B testing. But there are many, many more usages of microcopy all around us. And these little words are incredibly important.
Another example of UX writing, in the form of microcopy comes from Airbnb, who does the following on their homepage:
The search bar prompts users to “Try Boston.” This addresses 4 key concepts of microcopy as defined by Adobe XD. It is short (brevity), provides an example (context), encourages a search (action), and speaks to Airbnb’s brand (authenticity).
But, should I really care
I know you’re thinking to yourself, but is this something that really matters. Let’s be real, how big of a deal can something like this really make in the scheme of things? I’m glad you asked. I have read post after post throughout this week highlighting specific conversion increases as a result of proper UX writing. Examples like:
- Changing Book Room to Check Availability lead to a 17% increased CTR
- Changing Request a Quote to Request Pricing lead to a 161.66% increased CTR
- Changing button text from Almost done to Review Order lead to a 39.4% increased CTR
Each of these two-word changes lead to massive increases in the Click-Through-Rate and eventual conversion of a site visitor to a sale. What a massive difference can be made by simply paying attention to the words we use. As I believe Google so aptly stated, clear, concise and useful.
Very quickly, let me add that these specific examples are not prescriptive (don’t go changing every “request a quote” button to “request pricing” and expect to see a CTR spike!) But they are indicative of the value found in good UX writing.
As I said in the beginning, my objective was to simply share a topic I have been fascinated with over the course of this last week and found resonated deeply with the UX goals I value. I hope if this is a new area for you it has also excited you and maybe encouraged you to dig in a little deeper into the topic and how it may help you. If you are already aware of these benefits, I hope this serves as a refresher for you and you’ll step back and look at ways you can continue to improve.
At the end of the day, I believe the best user experience occurs when all of the extra distractions are removed, the user is empowered, confident, and feeling good about themselves and the product. Just as I want to share things which excite me so businesses can find ways to be better, I want to share an experience with end-users that give them that same sense of power and control. Sometimes, those two little words, as small as they might be, can be the difference between a sale and a visitor.
May 24, 2018
May 23, 2018
How do you know when marketing automation is missing…or done completely wrong? This is the type of question that many may wonder about. Well, thankfully this week is the absolute perfect week to explore the successes and failures of businesses with their marketing automation.
How do you know when marketing automation is missing…or done completely wrong? This is the type of question that many may wonder about. Well, thankfully this week is the absolute perfect week to explore the successes and failures of businesses with their marketing automation. Why this week? I’m glad you asked. Because this Friday is the Y2K of the digital marketing era. What we are about to experience is potentially one of the most calamitous or greatest non-events in digital marketing history. I am of course referring to the GDPR legislation which goes into effect this Friday, May 25.
Not what you think
But what does this have to do with marketing automation? Contrary to your first thought I am not discussing the reasons why marketing automation is adversely affected (or even positively affected as some companies attempt to put a positive spin on losing their precious data). Instead, I’d like to focus on a different aspect of GDPR and how you can use this week in particular to determine if the companies you know and love are, first, using marketing automation, and second, using marketing automation correctly. Let’s go exploring.
What is GDPR
Okay, I’ve written about this previously on my own blog, and there are approximately 1 billion additional articles written on this topic from every major (and minor) company on the planet. I am absolutely not going to get into that defining and discussing aspect in this post. I don’t know about you, but I simply can’t handle yet another post on the topic. Here’s the shortest definition I can find:
GDPR gives residents broad rights over how data is handled, including the right to ensure that data is collected in a manner that’s accurate and secure with appropriate levels of consent. Individuals also reserve the right to have data erased, a.k.a. “the right to be forgotten”, and the right to data portability – meaning that data subjects can request their personal data in a commonly used and machine-readable format in order to give it to another data controller, and where feasible can require you to transmit it directly to the new data controller – Source
If you handle European Union residents’ personal data, the General Data Protection Regulation (GDPR) requirements apply to you.
Okay, make it through that? Or better yet, did you skip it because you already read it somewhere else? I’m okay with either answer, to be honest, and I don’t blame you. But read the bold text. That’s what we care about. In fact two words in there jump out: European Union.
My Exemption Clause & Personal Indemnity
Before I go much further I just need to put this little aside in here. I’m not claiming this to be an adamant statement or even that all companies are misapplying things in this way. There are of course some nuances, various circumstances, and reasons for these emails. That is not within the scope of this post and I absolve myself from blame in those cases.
My supposition is that in spite of all the possible excuses there are many companies misusing or inadequately implementing marketing automation due to either their interpretation/understanding of GDPR, their marketing system shortcomings, or their incorrect usage of this software.
The Error in Marketing Automation
PSA, We’ve Updated our policies
— Daniel Jackson (@cloakedninjas) May 22, 2018
The Bad Breakup
The second type of email is the real problem, by now you probably have seen one (or a dozen) and you will quickly recognize it based on the subject lines that read as follows:
“Let’s Stay Connected!”
“We need to talk, let’s not lose each other.”
“Are we breaking up?”
“The clock is ticking”
“Make sure you’re on the list”
“Can we keep in touch?”
Okay, I just can’t handle writing any more out. Needless to say they run the gamut from pleading to threatening in their tone. Tongue-in-cheek, they sound almost like a bad breakup with an unstable ex. This second type of email is where there’s a problem.
If the business is effectively using their marketing automation software then there is tremendous value in the concept of segmentation. This is a feature which lies at the heart of many aspects of marketing automation and demonstrates the true value of the software in the sense of automating personalized marketing messages. If a business is not properly using segmentation and personalization of their marketing messages…well, they’re doing it wrong. And when they do it wrong, the result is email spam. Lots and lots of email spam.
SPAM: unsolicited usually commercial messages (such as e-mails, text messages, or Internet postings) sent to a large number of recipients or posted in a large number of places
You know what this means? Marketing automation is not being done right. Businesses should be segmenting, personalizing, and sending appropriate messages to their audiences.
Please, again, read my caveat, there are valid reasons for mass-sending of the now infamous GDPR email; but there’s also mass abuse of this as well and the result is SPAM. If a business has the capabilities and the right marketing automation software to properly segment their customers and contacts, the result is targeted messages with relevant information for interested audiences.
And that’s the real solution here: proper segmentation should allow a business to send the correct GDPR message to the part of their customer and contact base that is most affected by the regulations and changes. Not everyone needs to get blasted with the same email — particularly when it doesn’t affect them.
The unfortunate results
There’s a couple of unfortunate results which come from this behavior. First, the business is far less likely to get people to click on their email and as a result there is a higher likelihood of removing completely unrelated contacts from their database (unrelated = untouched by GDPR regulations). But perhaps second, and even more important, this SPAM messaging approach gives a less than ideal customer experience and makes the recipient think less favorably about the business. I don’t know about you but each time I get one of those emails now I look twice at who sent it. In many cases my view of the business is diminished as well.
Marketing automation is powerful stuff. Used correctly marketing automation can make the marketer’s life easier and the customer’s life better. However, if used wrong it has the exact opposite effect. And that’s not good for anyone. If you use marketing automation, use it wisely, if you don’t use marketing automation, consider this a strong reason why you should.
May 21, 2018
Wow, we have certainly progressed quite a long way in our mobility and mechanism by which we get from point A to point B. What a wide variety of methods and each one seemingly more advanced, and more technologically improved than the last. What a testament to our achievements as a human race and our ability to create and to innovate! But wait...
Recently this past weekend I was standing at my open balcony doors (the weather was truly wonderful) and I was admiring the sunset and the beauty of the river and road below when I was struck by a most interesting thought. I want to try and share it with you, so forgive me if something is lost along the way or I don’t make perfect sense. I hope the thought will be conveyed.
Here’s what I saw as I gazed out into the world. (And yes, I think it’s an unusual occurrence and one I haven’t actually witnessed before.) On the river, were several people in kayaks, a rowing team out for an evening practice run. Joggers on the running path around the park, several cyclists in full gear pedaling along the edge in tight single line formation, a handful of cars waiting to turn at the intersection while a motorcycle sped through the exchange, pedestrians pushing strollers, the MBTA (“T”) Orange line rumbling northbound, while the purple commuter rail clattered past at twice the speed, and a airplane droned overhead as it pulled away from Boston Logan International airport headed for some unknown distant destination.
It sounds crushing, and a little chaotic, but this is not the picture I want to paint for you. Yes, there was certainly a lot going on, but the noise was not unbearable, the scene not one of pandemonium. As a matter of fact everything moved seamlessly and with a sense of elegant precision.
What I really hope you see in this microcosm is something truly phenomenal. Here captured in within my gaze was a snapshot of the evolution of transportation over the past 200 years. Did you catch them all? I’m sure you did as it was quite the overwhelming paragraph. We had everything from walkers, runners, bicyclists, motorcycles, cars, boats, trains, and airplanes.
My immediate first thought was as I’m sure yours might be too — wow, we have certainly progressed quite a long way in our mobility and mechanism by which we get from point A to point B. What a wide variety of methods and each one seemingly more advanced, and more technologically improved than the last. What a testament to our achievements as a human race and our ability to create and to innovate!
But wait, as I said this was my immediate thought. And it was after this thought that the truly interesting idea began to form. We have all these advancements, the ability to travel literally around the world. And we have an incredible opportunity to not only travel from point A to point B but to do so swiftly. And yet, we don’t travel via airplane everywhere. Clearly airplanes are the fastest means of transportation (in the scene I described earlier). But it’s not the most practical. Similarly, we don’t necessarily always jump on a train, or into a car for every jaunt outside. There’s a reason for this. We use the most practical method for the journey.
Each mode of transportation has different benefits and different reasons which make it an acceptable (and still widely used) method for moving from where you are to where you want to be.
Specifically, you’re not going to hop in an airplane to get from your house to the local grocery store (any more than you would get in a car to go through the park). Or to put it a different way, the time it takes to lace up your skates versus the time it takes to just walk from your front door to the mailbox might make the skates equally impractical. It’s not always about speed in the context of the vehicle, but in the context of the situation.
I apologize for this part of the post but this is something I can’t seem to stop myself from doing: applying these ideas to other areas of life. In fact, I think this is partly due to my instinct to focus on core principles.
Marketing software is evolving at an increasingly rapid pace. The space is growing in complexity and advancing in technology all the time. But speed isn’t everything and the latest technological improvements aren’t always the right choice. Instead, just as with our chosen method of transit — we should use the most practical method for the specific journey.
So the next time you’re evaluating a marketing platform, or a marketing tool, make sure you’re considering the journey you’re on and the most practical way in which you should get there.
May 20, 2018
Marketing Automation and CRM
There's often confusion and questions surrounding the necessity for both a marketing automation platform and a customer relationship management (CRM) platform. This post highlights the values of each and why both are important for business growth, continuity and ultimately success.
One of the more recent announcements in Saelos was in regards to the first plugin written for the Saelos platform. As you can probably imagine, this plugin focused on the relationship between Mautic and Saelos (for rather obvious reasons: I’m a bit of a Mautic fan). But this plugin represents so much more than just another CRM to marketing automation integration. This “Mautic mix-in” forces us to ask the question: what’s the difference between marketing automation and customer relationship management? Should you use both these systems? (and what’s the difference) I know I’ve been asked this question quite a few times, so on the off chance that this is something you’re curious about as well….read on.
What is marketing automation
I’m not going to lie, writing this headline and starting this paragraph I almost cringe a little. I feel I’ve read a million articles answering this exact same question. I really don’t want to go down that same path answering the same question so in order to preserve my motivation to keep writing, I’m going to give you a callout with a definition of marketing automation and then share some slightly different thoughts about marketing automation.
Marketing automation refers to software platforms and technologies designed for marketing departments and organizations to more effectively market on multiple channels online (such as email, social media, websites, etc.) and automate repetitive tasks. — Wikipedia
That’s the Wikipedia definition of marketing automation. It’s a bit dry, possibly a little outdated, and even a bit vague. But this is the same general consensus you’ll read over and over. I think there’s a missing element here. I have heard it touched on when I meet with others, or attend conferences (like the awesome SiriusDecisions Summit).
Marketing automation has an incredible task of also being the manager of the brand. Sharing the voice of the company with the world, as broad as everyone and as specific as each individual. Just as we talk about the customer’s voice – the company has a voice as well. Marketing (in most instances) takes the primary role in conveying this voice to the public, to future customers, and to existing customers. (This is your first hint in answering the question)
What is customer relationship management
If the idea of answering the question about what marketing automation does is a difficult one to write about; then I’m sure you understand the even greater reticence I have regarding this paragraph’s title. What is customer relationship management (or as most everyone in the world knows to be a CRM)? Again, I’m taking the time-saving method of giving you a definition you can find yourself with a 2 second search and then I’ll give you a thought or two about my take on something different to consider.
Customer relationship management (CRM) is an approach to manage a company’s interaction with current and potential customers. It uses data analysis about customers’ history with a company to improve business relationships with customers, specifically focusing on customer retention and ultimately driving sales growth. — Wikipedia
Again, thank you Wikipedia, you’ve given a wonderful definition that’s both highly explanatory and equally difficult to easily digest. (Side note: I love Wikipedia and get sucked into the site at least once a week)
So CRM systems have been created to manage the customer (and future customer) and improve relationships with them. This is probably the point where confusion starts to creep in. It appears that the CRM is doing the same thing as the marketing automation tool. “Manage a company’s interaction with current and potential customers” — yep, sure sounds like overlap. But I actually believe there’s a subtle nuance here to be explored and understood better. CRM systems are focused on customer retention and sales growth, aka closing deals and making sales. (Second hint in answering our question)
Why you should use both systems
Okay, we’ve got excellent “book” definitions of both marketing automation and customer relationship management systems and rather than introducing clarity it seems we’ve only made things more convoluted and increased the questions surrounding potential overlap. But I left you hints along the way, lets get into this now and see why you should have both a marketing automation system and a customer relationship management system.
We read how marketing automation is designed for marketing on multiple channels and carrying out automated tasks. We then saw that the CRM is designed for managing relationships and increasing sales growth. When it’s filtered down to those two sentences there seems to be less overlap. This is step one. We have to understand not what each system does, but what their purpose is. And now that we have this knowledge let’s build on it to understand why you should use both systems and possibly more importantly why they should be linked.
The “Voice of the Company”
If you believe in the marketing automation being the voice of the company than you will naturally agree that messages sent by the company should be shared with that voice. The value of a unified company voice is incredibly important and has been the topic of books and blogs the world over. If you don’t have a strong link (continuous bi-directional sync) occurring between marketing and sales you won’t have a unified voice. But, why is this true? Let me explain.
Brand management & single communication source
Marketing automation handles the brand, we discussed this already and determined that this management of the company voice was one of the key functions of a marketing automation platform. Or to put it a different way: Marketing handles the communication for the company. This leads us to the reason why you should consider using both marketing automation and customer relationship management platforms (Big deep breath, this is what you’ve been reading for…):
A CRM manages your interactions and relationships and your marketing automation is responsible for sending the messages.
This means your sales team should be sending messages to their customers, and future customers, through the gateway of your marketing team (Remember, they manage the brand and the company voice). This is where we begin to see the slightest crack starting to form in the world of today’s software systems and where I believe Mautic and Saelos begin to differentiate. (Does that interest you? You should subscribe to my blog and I’ll tell you more about it in a future article)
Source of Truth
The source of truth for each contact record lives in the CRM, because as we learned today the CRM is responsible for managing the relationship; but this doesn’t mean the marketing automation system should have less information. Instead, the marketing automation platform must know everything about the contact, plus be able to correctly determine the best channel, time, and message to be sent to them. That message might be a marketing message, but it might also be a sales message coming from the sales team directly.
Two systems, two purposes, one connection
All of this understanding and enabling between the CRM and the marketing automation requires an integration or mechanism for this data to be shared openly between these two systems…a plugin (or in Mautic term’s, a mix-in). And this two-way sharing of information between marketing and sales is what happens today, but it’s not complete yet. We have not yet seen the complete integration between the two platforms (primarily because both are fighting, incorrectly, to be the source of truth).
Why data control isn’t the answer is a great topic and I’d love to say more, but I have written entirely too much for this post; expect to see a separate post soon!
And so, hopefully as you’ve read through the purpose and focus of these two systems you begin to see the value in both as well as the extreme importance placed on linking the two of them together. The answer to the question should you use both systems is a solid yes; because each system has a unique, distinct and important focus.
What comes next is even more exciting. I’ve hinted at it throughout this post, so if you want to know how Saelos pushes CRM and marketing ahead elegantly and beautifully you’ll need to keep reading.
May 17, 2018
The Marketing Choice Paradox Resolved
I believe the proper understanding and implementation of human psychology in marketing automation Is missing in many businesses today. This leads to inferior results and increased marketing efforts to achieve success. Alright, I'm giving you half the conclusion, you'll still have to read through to the end to get the other half!
I love to read, in fact I read a lot. I’m in the middle of one book right now that I can’t wait to tell you about, but unfortunately you’ll have to wait to hear about that particular book for another day. Instead, I’d like to share with you something that I’ve been thinking about recently. Something I have spent time pondering and something I think all of us, and especially marketers, would find value in considering.
Are you ready? I’m going to need you to hold on today because rather than going down one of the typical paths I follow I want to take this post and step off-topic a bit. I’d like to share with you a thought or two and draw examples from not just one book, but three that I have finished recently. I’m going to attempt to cram ideas and concepts from three seemingly disparate books into a single post. But I believe each of these share common themes and when taken together prove to be very informative and impactful for marketers.
Before I start pulling bits and pieces from these three books and demonstrating how I believe they are related let me tell you the conclusion (isn’t it great when you get the conclusion first?!). I believe the proper understanding and implementation of human psychology in marketing automation is missing in many businesses today. This leads to inferior results and increased marketing efforts to achieve success. Alright, I’m giving you half the conclusion, you’ll still have to read through to the end to get the other half!
I would never be so bold as to suggest my ideas are new, or revolutionary on this topic and many great marketers, psychologists, authors, and scientists have devoted large portions of their careers to this study and the many nuances of this relationship. But, everyone has a unique perspective based on their background and their life experiences, and so with that lens in place I would like to share with you what I believe is commonly overlooked when exploring human psychology not necessarily in marketing alone, but specifically in marketing automation (you had to know that would be my focus!).
The Paradox of Choice, Barry Schwartz
Let’s dive in with the first book The Paradox of Choice by Barry Schwartz. Barry wrote this book several years ago but the truths have only become more pronounced with each passing year. His premise is around the negative effects of choice. As most would already believe and tend to consider to be “law” the idea that more choices is better. It’s an easy mistake for a variety of reasons but my goal is not to share with you the theories of the book, you may find those for yourself. Instead, I’ll share with you quickly two negative side effects from choice that Barry presents.
First, choice produces paralysis rather than liberation, to many choices makes the decision making process harder rather than easier. And Barry backs up this statement with a variety of studies and surveys from notable and trustworthy sources.
Second, if the paralysis is overcome the resulting decision leads to a less satisfied result. Barry suggests that for a variety of reasons even after making a decision, the greater the original choices the more dissatisfied the individual is with their selection. More options simply means it is easier for the imagined alternatives to induce regret which subtracts from the satisfaction of decision making.
Those are some powerful statements, and leave some question about what a proper balance should be between freedom of choice and limited options. Schwartz draws one humorous conclusion which holds truth (because doesn’t every joke contain an element of the truth). He shares the secret of happiness to be low expectations. There are several reasons for this statement but I’ll leave those also to your discovery as you read his book.
Takeaway: More choices causes a great deal of anxiety, depression, discouragement, discontent, and other negative feelings in the decision-maker.
The Book of Human Emotions, Tiffany Watt Smith
Let’s jump immediately into book number two, The Book of Human Emotions by Tiffany Watt Smith is a relatively recent publication that I thoroughly enjoyed. I am a big fan of words, I’m constantly attempting to expand my vocabulary and Tiffany had some amazing words in this book. As much as I would love to share some with you, I think I’ll keep all of them to myself (unless you read the book!).
Instead, I’ll share with you why those words were in the book and perhaps that will pique your interest just a little bit more. Tiffany suggests that human emotions are more than physiology. Biologies and cultures influence our cognitive emotions as well. She references Lisa Feldman Barrett who says, words and emotions are dynamic. As humans define or discover new words for emotions a rush of new feelings are sure to follow. This is a fascinating concept and the examples in the book are mind-opening.
But how does this relate to our first book with a paradox of choice. I hope you begin to see the thread that’s forming. Our supposed freedom in choice results in a wide range of negative emotions. Understanding those emotions is the next step in our journey. Our emotional languages tell us not just what we feel but also what we value.
Takeaway: When we name our emotions we do more than just define a word; we imbue them with meaning, weighted with our cultural values and expectations and we use them as a vehicle for our ideals. Our emotions represent a powerful connection between how we think and how we feel.
Drive, Daniel Pink
Our final book we will look at today is Drive, by Daniel Pink. I would imagine that this book may be one you have heard of or even read yourself as it has quickly become a classic that sits on many shelves. Daniel does an incredible job defining how we think about motivation. He goes into great detail defining the many facets of motivation before distilling things down into the three main elements of true motivation: autonomy, mastery, and purpose.
Daniel is quick to share his conviction that we must resist the temptation to attempt to control people and instead do everything we can do instill in them a deep-sense of autonomy. The concept of the carrot and the stick approach no longer works in the world. Work is more complex, tasks are more difficult, they evolve constantly, and in many cases are more interesting.
People will spend countless hours to gain mastery in a particular skill with no external financial gain, expensive jobs are left for “meaningful” work in other sectors where the “reward” is not strictly monetary. The motivation therefore is driven intrinsic motivators more than external.
Motivation based on purpose comes when people are passionate about a particular subject. That passion increases engagement and this in turn makes them more motivated in accomplishing their goal.
Takeaway: People are motivated by a number of factors but almost unequivocally across the board all motivation is generated more by internal forces rather than external drivers.
Bringing It All Together
Okay, we’ve dug in through a lot in the last three major points and even without reading the books I trust you have gotten a good feel for the concepts found in each (At least if I’ve done a decent job explaining you should have). So what does all this mean and how do these three very different books relate? The astute reader may have already begun to put the pieces together, if so, then I hope to confirm your suspicions.
I believe a common thread can be drawn between them: Motivating factors come from inside each person where their emotions and feelings guide their decision-making. The effects of human psychology are therefore highly relevant not only to marketing but specifically marketing automation.
Marketing automation today is nothing like what it has the potential to be and very few businesses use it effectively. Why? Because most do not take into account the topic of the first book we reviewed. The paradox of choice.
Marketing automation handles the automation of marketing messages to the contacts, all the messages, all the landing pages, and all the interactions, engagements, promotions, offers that each contact receives. Marketing automation handles this through campaigns. These campaigns are formed from segmented groups of users (typically). And this is where we begin to see the relevancy. Improper segmentation results in an overwhelming number of “options” or messages to a contact with some (or many) being completely irrelevant or off-topic and thus do nothing more than introduce paralysis and decision-making angst.
As marketers we should take full advantage of our knowledge of human psychology not merely to increase our success (though that should be a natural outcome) but to be the most effective marketer possible for the good of each contact as well. Now, let’s get even more practical.
Marketing automation gives us the power to intelligently send the appropriate message to our contacts. Rather than sending an overabundance of messages on a wide variety of topics each message should be tailored to craft the perfect experience for each contact…with the right number of decisions.
Ultimately proper messaging through marketing automation avoids the paralysis of choice, encourage positive emotions, and motivates the contact to make decisions based on their intrinsic positive feelings. And all this comes from the proper attribution of the known traits of human psychology applied to the concept of marketing automation. The marketing choice paradox resolved in a most elegant fashion! I hope this post has been a thought-provoking change of pace from my usual topics and I trust you have derived some value from this diversion.
May 16, 2018
Marketing Automation Microservices
Recently I was on the phone with a good friend of mine, he’s not directly involved in a technology sector and as such it makes our conversations incredibly fun, light-hearted, and many times /not focused/ on the highly technical discussion and debates I normally find myself sucked in to. This particular chat however ended up steering into my work and some of my recent blog articles and he made a comment that caught my attention. He said, “Hey man, at some point can you explain what exactly are you talking about with Mautic 3 and this new version you’re constantly getting excited about?”
I’ve written a good deal lately about Mautic 3, from my initial thoughts on the subject, a business benefits piece, to a pretty technical introspective, and even a timeline for how I think it might unfold (yes, it’s aggressive). Being a good friend he had read all these articles, and this meant he knew what I was talking about and what I was doing, but he didn’t necessarily have a strong understanding of what it meant and what it actually would do. What he was asking was a very good question and exactly what I like to hear.
I get great advice from lots of people, but some of the best advice comes in the form of a question, and comes from those that are not too close to the situation. Those questions are the best for me. They help me to re-focus, or maybe to state it better, they help me to step back and see the forest, not just the trees.
The Marketing Forest
I hope this post will be a less technical and better view of the marketing automation forest as I see it. First, I think this is an extremely important point to not overlook. Maybe you don’t call it a forest, necessarily, maybe you prefer to call it a ‘landscape’.
I need to take a quick moment to tip my hat to the incredible work done by Scott Brinker (@ChiefMartech) and his team creating the marketing landscape each year. If you haven’t taken a moment to appreciate it – do it).
Regardless of what you call the space, it’s overwhelming, and as Scott suggested in a recent blog post the space is only going to continue to grow. There will not be a mass consolidation of marketing tools but instead a proliferation as more and more are introduced. This leads Scott down an interesting line of questioning and thinking. I call it interesting because he begins to touch on the very thing I have been speaking and writing about . I’ll touch more on that in a second, but first, let’s talk about the implications of such an expansive (and constantly expanding) marketing space.
Expansion means competition
What we see occurring in the marketing space is not uncommon nor should it be something to be afraid of. Instead, the increasing number of companies entering this market improves the customer experience. As more and more services are offered the customer will (hopefully) find a better and better solution to their problems. At least that’s the idea. If businesses happen to overlap, competition comes into play and the product will improve. (also there is the side effect of potentially lowered prices as well!) .
I’m always a fan of competition, I believe it has been well proven that such competition results in a better environment and experience for everyone. This also encourages companies to be better and better.
There’s a second outcome I see as a result of this massive and somewhat exponential growth. As Scott suggested, and as I’ve talked about many times previously – with so many options and companies available in this space there becomes a greater problem to be solved, a greater need to be met. This is where Mautic is uniquely and (dare I say it) perfectly poised to meet the need.
I recently read an article published by KPCB recently which shared the number of marketing tools that a single enterprise business uses. It’s mind-blowing. Care to take a guess? If you guessed 10-15, you’re off by a mile. If you thought 25-50 you’re getting closer (and by closer I mean halfway to right). The number of different marketing technology services, platforms, or products that an enterprise uses is nearing 100 unique systems. This is the product of an 8,000 tree “marketing forest”. But while some may see a problem; I see an opportunity – a massive opportunity.
I see an opportunity of epic proportion that only an open source, agile, API-driven marketing automation platform can attain. You see, a proliferation of tools means there needs to be some manner for communication between them, some exchange platform for the data to be shared, and other advanced data transformation to be performed.
What this marketing disconnect needs is a connector. Something that can seamlessly integrate with all those tools, fluidly fill the gaps between them, complement them, and improve the marketer’s experience. But this shouldn’t be another app with a fancy UI. Even more importantly this can’t be another platform seeking to be the “data holder”. The one place where all data must be kept (i.e single source of truth)
Side Note: This is a point worth more consideration. Almost without exception every existing platform seeks to be the source of truth. They believe only by owning the data are they able to “win” the competition to be best. Therefore, everything they do is to protect and extend this perceived trophy.
Big Data Is Not the Answer
This point is a big one. Many businesses today focus on big data (or at least they used to). What do I mean by big data? I’m glad you asked. Big data means collecting as much information on as many people as possible. Once all that data is held the theory is that predictive analysis and data scientists can extrapolate potential results and thus make smarter marketing decisions. But there is a shift in the tide and this commonly held belief is wavering.
Interesting Read: If you’d like to learn more about what causes this change in thinking, I’d suggest reading this article: Mastering the game of Go without human knowledge.
If the collection of more and more data is not the answer, what is? What is the solution that makes marketers more successful and handles the overabundance of different and disparate tools currently existing in the marketing forest? Enter marketing microservices.
I realize there are some that fully understand what a microservice is and what value it offers. For those I apologize if I make it sound too simple or oversimplify the technical nature of the definition. My goal is to summarize in such a way that everyone feels comfortable talking about marketing microservices.
Personally, I’ve always seemed to learn best with examples and clear instructions. The simpler the better. (The popular subreddit: explainlikeimfive is a personal favorite of mine as you might guess.) And so I’ve picked a hypothetical marketing microservice to be used. And as you might imagine this is something Mautic is preparing for part of M3.
A Marketing Microservice Example
Almost every marketer I know and every system of record (you know, the place that wants to be the source of truth we explored earlier) has a common dilemma. In fact, marketing automation platforms in particular struggle with this issue on a daily basis. The problem is recognized but the problem is not easily solved. Curious? For our example, we’re going to assume the issue is contact record de-duping. The ability to recognize and remove (or merge) duplicate contacts in a database.
This is a problem everyone wants to solve but everyone takes a slightly different approach and everyone has found equally varying levels of success. A marketing microservice would allow a marketer to send contacts to a headless, marketing automation microservice provided by Mautic, which would de-dupe the records and return the result. Everyone wins.
The result is a marketer with a cleaned database of contacts, existing platforms don’t have to worry that another tool is “fighting” to be the “source of truth” and Mautic has provided a valuable microservice to fill-in a gap. Once again we have the idea of filling in the gaps. A clear opportunity for a fluid connecting of marketing microservices providing highly relevant, extremely efficient, valuable, results.
Side note: Interesting side effect, when the data storage is irrelevant the marketer is empowered to do things better, without worrying about switching costs, data privacy concerns, and which platform is /the/ platform for their data. This changes everything.
And this is only one very simple example of the power and capabilities of a headless marketing automation platform. Don’t let the slightly unusual terminology throw you off – it’s only a technical way of saying, a platform which fits in with other existing tools seamlessly and painlessly, complementing, strengthening, and simplifying existing marketing stacks and allowing the marketer complete control over where and how their data is stored, manipulated, and displayed. But that’s a lot of words! So I shortened it to headless marketing automation.
I hope this has helped to showcase what a marketing microservice is and how it can completely revolutionize the industry. All of the incredible power of marketing automation where and when its needed. No more data security and storage concerns. An improved experience for marketers. Finally, a solid, robust way for 100 different and disparate systems to begin effectively talking to one another and improving each other. This is the type of thing Mautic 3 is prepared to handle. This is the opportunity Mautic, an open source marketing automation platform, is uniquely able to address.
If you haven’t taken a look at Mautic, I suggest you do so now! Maybe after reading this you have some great ideas for other ways marketing microservices can add value in the overwhelming marketing landscape. Join in the discussions being held, add your voice to the Mautic 3 development process and become a part of something bigger than yourself, something that will truly improve the lives of marketers everywhere, and change the way the landscape is viewed.
I’ve been to a fair number of conferences so far in my life and I don’t see the trend slowing down any time soon. Between the excitement of the Mautic – Open Marketing movement and the ever-growing community supporting the world’s only open source marketing automation product, I’m on the road a lot. But don’t think I’m complaining. Not for a second. I enjoy the opportunity to share Mautic with the world. But that’s only half the joy. I also get the tremendous privilege of attending conferences and seeing how others think about the MarTech landscape and the business of sales and marketing.
But every once in a while I have the chance to attend a conference that goes a bit deeper. It’s always fun when that realization dawns on me that I am witnessing an event that has been organized down to the smallest detail and attention has been placed equally on every part of the experience.
This last week I had the tremendous privilege of attending SiriusDecisions in Las Vegas for their 2018 Summit. Now I should preface that I had built a bit of a preconceived notion about this particular event. I had heard the stories. The quiet whispers that this was the marketing event. And of course I took these suggestions in stride and with a sense of reserved acceptance. Not until I was able to witness this conference for myself would I make my decision on its ability to deliver on these lofty reviews.
This was the mentality I had as I landed in Vegas for the conference kickoff on Tuesday. What followed was a 3 day showcase of precision, skill, and aptitude on the topic of sales and marketing. Every aspect of the conference was focused on maximizing outcomes for attendees, sponsors, and speakers alike. I had the great privilege of spending one-on-one time with incredible individuals like, Chris Frank from Cisco, who took his time to explain to me how he leads the complex demand generation strategies for WebEx with revenues north of $1bn. Hearing his thought leadership on the ways he saw the marketing landscape and how businesses should be positioning themselves for the future of marketing left me contemplating strategy for hours to come. Or, Becca Shaffer from LevelJump who shared how the scrappy startup life was the ideal breeding ground for quick innovations and success. These individual meetings “serendipitously occurred” due to the intentional and strategic workings of the conference organizers.
And then there were the sessions. Case studies from global industry leaders openly sharing their successes, and their failures, all for the benefit of everyone else. This open spirit of sharing resonated deeply with me as I often say I default to open and sharing everything with others. This was the mentality and attitude of the speakers and presenters at this event. What a refreshing change of price to hear a global multi-billion dollar corporation share “lowlights” (as opposed to highlights). This attitude made me think of a quote I of which I am particularly fond:
“Be humble to see your mistakes, courageous to admit them, and wise enough to correct them.” — Amine Ayad
I forget when I first heard that quote but it has stuck with me, this is the open and honest nature I strive to hold myself to and I was surprisingly pleased to see this same concept on such display at Summit 2018.
Beyond just case studies, and thought leadership though, Summit 2018 gave me excellent practical applications which I could immediately begin to apply to my own thinking and work. This is where I began to realize the true value of an event like this. Show me others who have been successful and I admire it. Give me something to think about and I appreciate it. Teach me how to do something better myself and I am forever changed. That’s the promise Summit 2018 was able to deliver on; with precision and forethought.
Perhaps one of the greatest highlights of the entire conference was the keynote presentation by the world renowned photographer, Platon. His ability to tell a story through his photography and to carry the audience on a journey though laughter, anger, sadness, and a sense of inner resolve was masterfully delivered. He challenged us to think about what a true leader looks like. He told story after story carefully weaving a common thread of servant leadership throughout. Picture after picture, individual after individual he unfolded and shared a philosophy on leadership which kept everyone on the edge of their seats until the very end.
Tony Jaros, president and chief product officer for SiriusDecisions introduced Platon with an almost prophetic statement when he stated, “You’ll want to put your phones away for this next hour. I promise you.”
The next 60 minutes flew by in a mesmerizing showcase of personal stories and deep inner reflection. It was truly a memorable experience. We were changed as an audience, transported from global destination to destination. As Platon anticipated and masterfully orchestrated, our differences were put aside, and we were collectively moved by a singular feeling of compassion. Regardless of personal convictions, biases, and beliefs, we were united under this common cause. When the lights finally rose at the end of the session breaking the spell the room sat in hushed, almost reverent respect for what had just occurred.
My respect and appreciation for the staff and organizers of SiriusDecisions has been raised to new heights and I find myself whole-heartedly agreeing with the reviews and feedback I received from others before I attended. It will remain to be seen what level of ongoing benefits will come from the many meetings I had with others, but I am confident tremendous value has been returned on this investment. The relationships and connections formed go far beyond a casual business relationship and extend deeper into an intrinsic long term value.
If you have an opportunity to attend a future SiriusDecisions conference I highly recommend you do so. Whether it be for learning strategy, finding encouragement, or changing your thinking SiriusDecisions will deliver.
May 13, 2018
Saelos Sunday Update 2
Here we are on the weekend again; and I love the weekends. Partly due to the fact that the schedule tends to be more relaxed, and partly because this means I get to spend some time on Saelos! If you’re just getting to my blog then you should do some reading on other posts before continuing, check out the Saelos announcement, a peek at the technical advantage, the previous update, and then let’s talk about what’s coming next.
Today I want to do two things, first give everyone a quick update on the status of Saelos today (hey, this is an update post) and second, I want to share a little bit about a benefit that Saelos provides and why I believe it’s so incredibly important in the world today.
Saelos Growing Organically
Okay, so first is an update on where Saelos is today. Things continue to progress at a pretty good rate. I wrote last week about a Saturday project I undertook building a dashboard for watching a GitHub repository and monitoring growth. I applied it to Saelos to get an idea how things were looking. Here’s the screenshot:
Here’s the lowdown from that snapshot. First, Saelos downloads are exploding! The growth is tremendous with over 250% increase from the previous release. Second, 2/3 of the issues have been addressed already in the last release and working through the rest as quickly as possible. Lastly, Saelos has a total of 50 stargazers and 9 forks already. This is ridiculously fast uptake and I’m very excited to see this kind of growth continue. Oh, and by the way, the downturn in that one release was because we pushed the next one so quickly there was no time for the Beta 3 to be adopted!
Monopoly Should Only Be A Board Game
All this growth is exciting and the fact that, yes, there is a real need and desire for a super strong open source CRM. Honestly, just a super strong CRM (open source just happens to be the best mechanism in the world). But not a run-of-the-mill standard customer relationship management software that only functions in a small business environment. (Don’t get me wrong Saelos works brilliantly for SMB.) No, what everyone really needs is an option.
There’s nothing worse than a monopoly in a market. And let’s be honest with each other. Currently there’s a bit of a monopoly in the CRM market. And this has lead to stagnation, lack of innovation, and an overwhelming sense of despair. Why? Because when you’re an 800lb gorilla (or maybe that’s a bear named “Codey”…) you keep iterating on the same outdated mentality and philosophy and grow by acquisition alone. The result is frustration, despair, and heartache for businesses and sales teams everywhere.
So how does a cartel get overthrown? By no longer buying their product. But let’s be more realistic. It’s not quite that simple because businesses need a CRM. They need some system to manage their customers and those relationships (not to mention potential customers). And so simply walking away from a software platform is not an answer, something must fill the gap. Enterprise businesses should have options, reliable, capable options which can function at scale. This transition isn’t going to happen overnight. Rather, I believe, the best method for opening the floodgates for businesses is to create an alternative that offers immediate successes. Consider small wins. Super small wins. In fact, maybe we call them micro wins.
CRM Micro Services
Let me be the first to say I dislike talking about other software because what I prefer to do is talk about our software and why Saelos is different. And why Saelos is better and ways in which Saelos stands apart, and functions differently than other systems. And so let’s talk about Saelos and the future of the customer relationship management space. I hinted at my ideas at the end of the last paragraph and in the title to this one.
As technology has advanced we’ve ridden the waves of box software, to hosted software, to software as a service. Even the irony of a ‘no software’ software company is hard to overlook. But as we continue to move forward in technology and software we see the landscape continue to change.
If we step out of CRM and look at technology in general we see the shift from hosted software, to containerization, and then server-less software (or functions-as-a-service).
But specific vertical markets like CRM have not made these same advancements, in part because monolithic software companies have found massive profits in their markets and have not been interested in pushing the limits of technology (or even keeping up-to-date with those technology advancements). There’s a second reason why some of these same improvements haven’t been applied to these markets and that’s due to the inability of closed source software to be able to fully capitalize on these changes.
This is why open source software has a particular advantage for businesses. Run your own containers, run your own server-less infrastructure, or even your own function-as-a-service with open source software.
I believe Saelos as an open source server-less CRM gives rise to the future of customer relationships management. I believe we will (and should) see a proliferation of micro-services in the field of CRM. Use the tool that’s right for the job, pick and choose the best parts of each platform to make your business successful. And in this way, Saelos brings immediate success and improvements to businesses that have existing CRM systems already.
And if by chance a business or organization does not yet have a good CRM in place, or is ready for a complete overhaul and change to their current system, than Saelos provides an amazing platform upon which to build. That’s the true beauty of Saelos, use the frontend, cutting-edge UI, use the advanced API backend, or simply use the functions you need. Saelos works perfect in each of those settings.
I am really excited about the future of Saelos and all it has to offer. If you haven’t yet taken it for a spin, I suggest you look for yourself and see what the future holds.
The last thing I’ll leave you with for this quick update post is a very simple and easy call-to-action. If you like this content and want to be kept in the loop regarding all things Saelos then you need to fill out this short form and you’ll get an update newsletter direct in your inbox each time once is created.
That’s it. I’ll do my best to keep the Saelos Slack channels updated as well as the newsletter and if you are following my blog here, you’ll also get updated whenever I post something here too.
May 11, 2018
May 11, 2018
Mautic 3 Proposed Timeline
The next major topic everyone is very interested in relating to Mautic 3 is the proposed timeline for when things will be worked on…and maybe more importantly when they’ll be available to user. I totally understand this desire and want to do my best to answer this question but I truly hope that everyone understands this is not a black-and-white topic and something that can be easily answered. Why? I’ll answer that quickly and with two words: because developers. I say that in jest but the reality is not too far off from that joke.
In an open source community the release of new versions of Mautic are completely and totally reliant on the time and attention of the volunteers in the community. This is a massive strength for us because we have such a large number of volunteers, but can quickly become an Achilles’ heel when it comes to timeframes. Volunteer work as they are able to. This means while I will propose a series of steps below for the Mautic 3 timeline I will not attach highly specific deadlines or timeframe (at this stage).
Now in the future as we begin to move through this process and as we begin to accomplish certain milestones or goals we will have a better understanding of how things are flowing and can at that time begin to establish some rough timeframes for completion.
With this disclaimer in place let’s take a look at the various steps in a Mautic 3 release timeline and what is involved with each step.
This is where we’ve been living. This is the active ongoing discussion that has occurred in the core channel of our Slack group and if you haven’t been involved in that process, I recommend logging in and sharing your thoughts. This phase is anticipated to have controversy, differences of opinions, and different strategies proposed for how everything comes together.
I’ve written a fair bit lately on this topic as we discuss different options. Starting with a discussion about what Mautic 3 might look like, to the technological advances Mautic 3 might achieve, to the business benefits created by Mautic 3.
The desired outcome from this phase is a shared understanding and an agreed upon vision for what we want to accomplish as a community. And I would merely suggest compromise is important to keep in mind as we all work together for the good of the whole (I’m speaking that admonition to myself as much as anyone else.)
The next phase after the discussion phase is a team formation. This shouldn’t take very long but there will be a time period where we want to evaluate who is involved in this team. Anyone in the community can be involved but there are certain traits which will provide greater value to the team. Things such as a strong ability to see solutions in addition to problems. We want problem finders, but not without being solution finders too.
Side note: Problem finders are critically important to our success but if there are only problem finders are also /critically detrimental/ to our success. We must have problem solvers.
Secondly, having technical abilities and interests are vital to this team as well. I’ll try not to make this sound too obvious, but without developers we can’t create Mautic 3. I’ll be the first to tell you, I’m not writing this one on my own!
Consensus on Course
I know it sounds silly to appear that we’re returning to the discussion phase but that is not the idea behind this step. In this step we are taking the outcomes from the discussion and beginning to outline how we (as a team) tackle those challenges and begin development. We also identify what is possible and not possible to complete in a timely manner.
Did you catch that? This is the point where we begin to discuss overall timing for successful release of Mautic 3.
We discuss where we want to go, what resources we have, and what is a reasonable time frame to get there. This is what I mean by consensus on course. The direction is set previously; here we focus on timing and specifics.
Core Areas And Distribution Of Tasks
Next the team begins to identify those specific items that each developer or couple of developers is interested in focusing on. I think this is a particularly important phase because we will make the most progress and find the greatest success when everyone is working on something they love. If you feel passionately about a particular area you will put everything you can into it, and will be able to take incredible pride in the end result. And you’ll know that the end result is something that has been done well. Because you care about it.
I am driven by this mentality on seeing others doing what they care about because I do what I love every day. I am committed to seeing others in our community free to focus on the things they are passionate about as well. Do what you love or move on to something else. This isn’t a duty, Mautic isn’t a chore, it’s an opportunity. Yes, at times Mautic may be a /challenge/ but that only makes the outcome better.
Key things to be examined at this stage will be specific areas and leaders for each: Every functional and foundational part of Mautic will need to be addressed. Examples: Campaigns, Segments, Contacts, Companies, Email Builder, Landing Page Builder, Messaging and Channels, Plugins, etc… Let me be clear that is not an exhaustive list. Not by any stretch.
Technology Proof of Concept
Once all the areas have been identified and work is clearly defined the next step takes place rather quickly. In my opinion this is a key validation step in the entire process. The idea of a proof of concept is focused on creating a representative example of the final product.
The goal of a proof of concept should be to confirm the path and technologies chosen to be implemented or clearly identify the ways the current approach is wrong and what should be done instead. That last sentence is super important. It’s more than just showing something doesn’t work. In the case where there is a misalignment of expectation and outcome, an alternative approach should be identified. (Remember earlier? It’s not just problem finding, it’s problem solving)
Once as a core team we are able to evaluate whether the proof of concept has given us the necessary results we can move on to the next step. Keep in mind that each major component must meet a minimum level of expected result for the progress to continue.
Go Go Go
This is the exciting phase. This is where everyone is turned loose to start creating Mautic 3 code. We have a direction, we have a plan, we have a solid proof of concept and we are prepared to create the future.
As we create new things it is critically important that we include testing at every step. This something that was not done as effectively as well as it should have been done during Mautic 1 and even Mautic 2. I can only imagine there was a collective groan emitted by everyone when reading this part. Writing the unit tests and functional tests associated with new code is only interesting to a very select few. (I hold massive respect for those who find pleasure and personal fulfillment in creating these test processes and procedures.)
This phase is also where collaboration is important. Without proper collaboration we will find ourselves working in silo’s too much. We can’t work without collaboration and sharing of information. Do not let the importance of this collaboration be lost as we look at the next phase below.
Silo Alpha Testing
Because we will be creating tests as we build new software we should be able to test our code as we go as well. I’m referring to this as silo testing because it can be done within each functional unit without having to be applied to the greater product at the same time. Again, an API driven micro-services marketing automation platform gives us the ability to do this silo’ed testing
During this stage we will also be refining and modifying this code as we go either to make sure it functions optimally or because we have seen additional improvements we can make as we create Mautic 3.
Bringing It All Together
Everyone gets excited at this particular step. Here we are bringing each of the individual pieces together and begin to evaluate what Mautic 3 looks like. This community core team gets the first sneak peek at what Mautic 3 will present to the world. Yes, this will be an exciting day.
As part of the process of bringing all the pieces together we will repeat some of the steps we undertook during the Silo Testing phase above. We will again evaluate and refine the product based on the interactions between the various parts and identify ways in which the whole of Mautic 3 can be improved to be more than just the sum of the parts.
Important: This should not yield any massive surprises to the team because it is understood that communication and collaboration has been occurring frequently through each of the previous stages.
Alpha Release Deployment
This is the first of several celebration stages! Here the core team wraps up and presents to the community the alpha version of the brand new Mautic 3. This is a milestone moment not just for the core team, and not just for the Mautic product, but for the Mautic community and the world of marketing automation at large.
The Alpha release is the first fully packaged version of the final Mautic 3 product. It will not be without issues. Did you read that? If you’re following the process of Mautic 3 development and you’re not part of the community core team creating this product it can be easy to miss everything that has gone into this process. And it can be easy to point to problems. May I encourage you to exercise discernment and caution as you do so. Feedback is of course welcomed and encouraged. But everyone should maintain the proper perspective and understanding of the status of Mautic 3 at this point. This is an Alpha release with known issues to be found. Do not use in production.
So, if you’re skimming through this article looking to find specific dates I’m sure you’re disappointed. But you shouldn’t be. Instead let me encourage you to scroll back up and read through the points with a bit more intentionality. Then you’ll understand why the dates are not listed. It will not be until we have reached Consensus on Course that we will have a better understanding and a first attempt to outline specific dates.
Let me reassure you, when we get to that phase, we will absolutely and unequivocally share some preliminary dates and deadlines. Without a clear goal we will meander without enough of a sense of urgency.
Now, if you’re still reading and want just a ballpark idea of dates, the following is my opinion on dates and relevant release points.
- Discussion: May 15
- Team Formation: June 1
- Consensus on Course: June 7
- Core Focus: June 15
- Proof of Concept: July 15
- Go: September 30
- Silo Testing: October 7
- Alpha Release: October 30
Disclaimer: This is my personal opinion only and is not a finalized roadmap. If anyone attempts to quote these dates as “official” you’ll be immediately and unequivocally corrected!
Please also notice I am not showing beyond the Alpha, as we get this far into the future it becomes more and more difficult to identify deadlines and milestone dates. I have ideas and goals in my own opinion which I think would make for an amazing 2018 but will not share those with you yet. I believe as we move along these steps we will be able to gain more clarity into what is possible and along that path I will feel more comfortable to share specifics on other areas of Mautic 3.
I hope this helps give you greater visibility and understanding into what I believe would give us an incredible future and the path I believe would help us get their. Don’t be disillusioned this will not be easy; but I am confident that the rewards we will reap will be well worth every day spent, and every problem tackled. I hope you’ll agree and you’ll join me as we create the future.
May 10, 2018
The Business Benefits of Mautic 3
Longer posts are always an undertaking. It involves a lot of thought and attention to detail to make sure the information I share is clear and easy to understand. There’s a lot of work that goes in behind the scenes for a finished post to come across as simple. So, usually before undertaking a post like this I like to take a deep breath, a big stretch, and smile. Something about staying positive before wading into the deep end once again.
I should say also, the smile comes from the amazing volunteers in this outstanding community. Together we are building an amazing platform that stands out from the crowd and differentiates us in a number of critical ways.
One of the biggest ways we can demonstrate our expertise lies in our ability to push the envelope and advance new thinking in the landscape of marketing automation. Yes it may be a daunting task, but I would suggest that our community, and our open source approach to marketing automation is the only way this level of growth can be achieved in a stable fashion. We have an opportunity that no one else has. And it’s our duty to push this space forward. It’s our obligation to change the world of marketing and give everyone the tools to market effectively using the latest in technology.
With that quick bit of motivation to get us started, let me dive into the business benefits of Mautic 3. I’ll follow that up with a proposed timeline for this product improvement as a separate post.
Let’s start by exploring the business benefits by making this shift to the next major release of Mautic software. I want to highlight that these six benefits I’ll suggest are not necessarily distinct only to a Mautic 3 release. However, in each case I believe the greatest growth and leap forward would be realized in a major version release.
Stay with me to the end; I’ll discuss in a little more detail tomorrow the idea of migrations and how those would and should be handled with a transition like this.
Speed (Should I say Agility)
At the risk of sounding extremely cheesy I noticed as I typed up these benefits that many of them ended in the same suffix and sounded like they fit together. The marketer in me could not help but then adjust the one outlier (Speed) to also fit this same mnemonic. Thus, for point 1, we have agility, or speed, as an improvement that the end user would experience and thus become our first business benefit. Faster is better (in almost everything – yes, I realize there are exceptions to every rule). Moving to Mautic 3 for our platform will enable us to completely gut parts of the system that have experienced significant slowdowns in the past. Those areas where we see bottlenecks in processing times can be alleviated and the problems with overall system performance can be improved.
Of course we could see improvements in the current branch (Mautic 2), however, due to the discussion that has been held it has become evident that the greatest improvement to speed can be done with a re-write of several areas of the platform. This begs the question – if we must re-write core parts of the platform regardless of the branch in order to improve our speeds, should we not make the necessary improvements to improve speed everywhere and better structure our underlying architecture for the future at the same time? The argument is an easy one to make, in particular when considering our existing infrastructure is reaching end of life for support and we have fallen significantly behind the latest current release (by multiple versions). This must be addressed.
An improvement in our overall speed continues our competitive advantage as we already enable businesses to complete processes in a faster manner than other marketing automation platforms today. This furthers our lead in this area.
The second area where a Mautic rewrite gives us a business benefit lies in the flexibility of the platform. We already built Mautic in an open source way that allows businesses to create a marketing automation workflow that suits their unique business needs but that was always step one in a multi-step plan. The next step in that journey involves giving the business even more flexibility to manipulate and control their data.
Mautic 3 enables businesses to take advantage of existing data stores, and other sources of truth beyond the Mautic database by enabling the separation of frontend from backend code and functionality. Any database that incorporates the necessary API endpoints will be able to take advantage of the Mautic 3 frontend (and vice versa). I spoke specifically to this point in a separate blog post which I would encourage you to read if you’d like to know more about this point.
Mautic was created from the beginning with the concept of mixins – the addition of functionality to the core platform through a Mautic Marketplace which closely resembled a CMS extension directory. This was a fantastic first version and demonstrated that the desire and interest from a community and business perspective clearly existed. With the launch of the new Mautic.org website at the beginning of 2018 we saw a massive uptick in the number of integrations and their downloads.
Businesses wanted this ability to integrate. We wanted to continue in this direction with an overhaul to the existing mixin (plugin) infrastructure and architecture in Mautic 2. But this is still only a step in the journey. Extraction of the existing mixins from core and the unique repositories linked to each mixin allowed for faster development and release of individual integrations. Mautic 3 pushes the software even further in this regards. This is done by doubling down on the API integration layer and the manner in which these mixins talk to the backend (and frontend) of the platform.
I’ll touch on this point in greater detail below as this serves to become a very unique selling point for Mautic and a massive differentiator for our platform in the market. Let’s look at that next as we discuss defensibility.
One of the most challenging obstacles in any company (or community) is understanding and identifying the manner in which the software being created is defensible.
Side note: When I use the term defensible I am referring to our ability as a community to offer something unique that our competitors will never in reality be able to achieve or offer to the same extent as we can.
Understanding what makes a product defensible is a challenge in and of itself and often is very difficult to do in the earliest days of a community. Therefore Mautic 3 is the opportunity where we can begin to apply our learnings in the marketing automation space and begin to clearly define those areas and functionalities where we are unique and defensible.
And this is where the excitement builds for me. This is the culmination of our learning, our open source core, and our ability to push the marketing technology landscape further. Our defensibility is found tucked into many of these business benefits I’ve shared already and will share in the next two points. The underlying mechanism and ability for our open source platform to be split and used interchangeably either from a frontend UI or as a backend API gives us the unique and defensible ability to be the first ever truly open source, API driven, suite of marketing automation micro services.
I know you’re probably very interested in hearing more about this but I’m going to simply say, you’ll have to wait for that specific blog post if you’re interested in digging in. I promise you I’ll publish it soon, because when something is this exciting I have a very hard time keeping quiet for long.
The concept of extensibility as different from integrability is nuanced and tenuous at points. But I would suggest the differentiation is clear enough to allow extensibility to be a separate business benefit. Just as integrability allows the software to work seamlessly with other tools “plugged into it” the idea of extensibility allows for the core functionality of the Mautic platform to be extended to additional areas and implementations.
This underscores the notion that an open source API driven marketing automation micro services platform can do far more than any monolithic platform ever could and allows for the functionality of the platform to extend far beyond the limited reach of existing tools.
Extending the platform requires an API first approach as recommended for Mautic 3. This level of abstraction provides the tools and system interoperability necessary for this business benefit to be properly realized.
The final point I’d suggest as a business benefit for moving to Mautic 3 is a tricky one, particularly because it requires more than simply creating new software. In order for Mautic 3 to be substantially superior to the existing latest release of Mautic and provide additional business value in the sense of a superior stable product implies several fundamental truths. First, Mautic 3 can’t be merely “new code” – it must be tested code. By this I mean while the code may be new, this does not require it to be either untested or unstable.
New Mautic code will not be merged into Mautic 3 until it has the appropriate unit test coverage and functional tests. Otherwise we run the risk of experiencing the same flaws and bugs as Mautic 2. Very fast releases of new features but this surpasses the number of fixes provided to reported bugs.
Therefore, in a release of Mautic 3 we can create a solid, and fully-tested platform capable of being improved upon as needed without fear of the potential to break something unrelated with each new feature release. Overall the stability of the platform is massively improved, the documentation excels, and the usability demonstrates an excellent product. (Read this post I shared recently on the topics of stability, why I think it’s important and what benefits it will provide us.)
May 8, 2018
Balancing Startups and Stability
I’m constantly talking about startups, but also about stability. It sounds like two things that are constantly fighting with each other in an ongoing back-and-forth struggle for supremacy. There’s benefits to either force taking control, however when the balance is struck between the two I believe you see true power and velocity. As a result, rather than letting one “win” or spending all your energies pushing one over the other, it’s better to keep up with a balancing act. Here’s what I think that looks like.
There are so many excellent aspects of living like a startup. Of course the startup mentality has been glorified and turned into this unrealistic standard by which every dreamer or entrepreneur with an idea strives after. What is this startup mentality? Incredibly fast development times, lots of PR and buzz, excitement, energy, passion, working around the clock, releasing new features all the time, oh, and let’s not overlook…breaking things. Constantly.
Based on that list of ideals let’s expand on them a bit to draw some conclusions about the specialties and shortcomings of the startup mentality.
- Fast Development Times: This is one of the greatest strengths of a startup. No other business can hear the voice of the customer and respond with quite the same speed as a startup. Whether that’s because of the closeness to the customer (Every customer is the only customer to a startup), or the flatness of an organizational structure where changes can be made practically in ‘real-time’, or due to the relatively small existing customer base where changes don’t have to take into consideration existing use cases.
- Passion: Startups exhibit a passion for accomplishing the outrageous. This feeling of incorrigible confidence in their ability to change the world (though often mocked) is the foundation upon which a startup is able to legitimately re-imagine how things should work and improve them.
- New Features: The last specialty of a startup I’ll mention is their ability to create new features. This relies heavily on the first two points, passion mixed with fast development/response times creates new and improved features and never-before-seen things. Startups are particularly adept at this and often are able to unseat older more established businesses as a result.
But there is one aspect of the startup that I do not highlight as a specialty or a positive aspect. Breaking things. That’s right, startups break things. all. the. time. Not a strength. In fact it’s the opposite – which is why I consider stability to be the yin to the startup yang.
The benefits of stability are deep and obvious but I’m going to address them anyways. Whenever building software that people come to rely on, one of the biggest and most important issues relates to stability and usability. In fact, stability is considered of such importance that it serves as the underlying foundation for a variety of other business attributes: usability, user experience, stickiness, reliability, excellence, and even success. Now for symmetry’s sake here’s three defined a bit more:
- User Experience: When software isn’t stable the user experience is often one of the first and most notable things to suffer. If the user isn’t able to do what they expect because of bugs, broken things, or problems the result is a negative experience that ends in a lost customer.
- *Excellence: Just as the user experience is affected by stability so too is the general consensus around the quality and excellence of a product (and ultimately the company). If a product continues to break or lacks stability the company’s image and brand suffers drastically.
- Success: As mentioned this is the end result of a cumulative effect from everything listed above. Which means lacking stability ends up in failure. Success is contingent on a number of factors, but stability is without a doubt one of the greatest. A stable, growing product promotes a positive user experience, it speaks to excellence, and it ends in success.
For these clear benefits stability is of great importance for a business of any size, even the startup business. Therefore it stands to reason the greatest success comes from balancing both of these concepts.
There’s several factors that require consideration when striking a balance and while this is not the one and only reason I’ll share with you one important factor you should take into consideration.
But first, there’s an important lesson to be learned here: This balance is not a 50/50 split. That’s right, in this case balance does not have to be an equal, straight-down-the-middle split between stability and startup thinking.
One aspect that needs to be strongly considered when balancing these two involves the target audience. Here’s what I mean. If you’re creating a product for the consumer (end user), for example an app, a service, or a low-price per transaction product, you will address this balance differently than if you are focused on an enterprise level, higher cost of acquisition product, goods, or service.
It seems obvious, but I think many times we tend to forget this difference. Please take note: I am not advocating low cost does not need to be stable. Instead, it’s still a balance but with a greater priority placed on the startup side of things rather than the stability side of the scale. Make sense? If you’re only spending $50 on something you’ll appreciate the speed of development, new features, and passion of the team and community more so than some minor stability issues. You’ll be more forgiving of them. If however, you have a $50,000 purchase you expect it to be absolutely stable, reliable, and excellent. Again, you still want new features, passion, and speed but you discount those items in favor of the user experience and a stable, reliable product.
So, the next time you’re considering your own balance between startup thinking (throw new features at the wall and see what sticks) vs stability (make your product excellent and bug-free) – consider your audience.
Have other ideas or ways this balance can be evaluated? I’d love to hear your feedback in the comments below.
May 6, 2018
Growing with GitHub and GraphQL
I wrote yesterday about Learning Something New and thought that maybe a great example would be living by example and take just a very quick post today as a follow-up to share what I learned!
Picking a problem
I’ll start with the problem. Mautic is growing at a tremendous pace and has a great foundation. (I laugh as I write that because doesn’t that sound like the most perfect problem to have?) But those words are the “pretty” way to say what is very much more real and more raw. Mautic is growing so quickly that it becomes a massive chore to keep things organized and focused. (And that’s a very real problem, for quite a few reasons.) In addition, a great foundation suggests longevity. The Mautic Community is getting some history.
Fast growth comes with all types of growing pains, and without being in state of constant and continual focus things will get lost, or broken, or simply done ineffectively. Yep, growth has its downsides.
Longevity comes with the implications of technology problems. And this can mean a variety of things: outdated technologies, or non-standard implementations, or just flat-out missing software. A history and a “way of doing things” can be problematic for the future.
Okay, so now we’re on the same page (at least a little I hope) about a few of the struggles that a growing and solidly built community encounters. As I wrote the article yesterday these are some of the things also floating around in the back of my mind. So I decided to see what I might be able to learn to help with those problems.
Sorting out a solution
I fully recognize I’m not going to solve all the things in a single Saturday learning exercise. Nor am I going to be able to learn everything on a topic that I need to learn for my own personal edification and since I’m hate feeling like a failure I wanted to pick something manageable. It didn’t take me long to find something to settle on: metrics.
For those who know me, I love facts, snippet-style facts, and specifically numbers. Therefore, having an easy dashboard for viewing statistics about the Mautic community and software. I am also particular about design and the user interface/user experience. And so I set my sights on my target for my project: Build a dashboard view for Mautic metrics made available on GitHub.
And so I started by creating a plan. Here’s the very, very simplified version of what I scribbled down:
- Understand GitHub and what it provides
- Pick a technology for consuming GitHub data
- Display that data beautifully.
Wow, that sounds so incredibly simple. (I thought) I’ll be done with this in 30 minutes! (I was wrong, but that’s another blog post on project estimating probably.) Hindsight is 20-20 and truly ignorance is bliss; all of which is a very good thing because I felt confident and unstoppable (an important way to begin any project). And so armed with a problem, a solution and a plan of attack I got started.
I have a secret…for some rather undefinable reason, I don’t like the word grok (definition here). Regardless, it fits here so I’ll use it. I wanted to get to know how GitHub stored and shared the data from the repositories I was keeping with them. I was fairly familiar with GitHub already due to the amount of time I spent on the platform but didn’t really know as much, at least not detailed, about what information GitHub made available for reading programmatically.
I knew they had an API so I started my journey (and eventually my code) from this source. I would later come to realize something else (as the title suggests) but this is the first example of where for my personal knowledge set I was evaluating their bleeding edge offerings, and starting with what I knew. Remember – the goal with bleeding edge is to move fast and break things. So I set out deep-dive exploring their REST API endpoints and beginning to figure out what data I wanted to retrieve and display eventually.
Designing the Data (The Tech)
Designing the data involved how to store the information I retrieved. I wanted real-time information and I believed most everything could be either pulled directly or done so with very little programmatic modifications. As a result I decided on going database-less and using a true API-backend (in this case GitHub) as my only datasource.
At this point I was building a very simple React App that interacted with Github’s REST API and would then display the information in an easy to ready, beautiful manner. Next slide please…
Displaying the Data (The Look)
Once I had a good idea what data might be available I set out to figure out a way to lay it out and make it beautiful … while still being highly relevant and meaningful. There are thousands of resources available for frontend design so this part of the process is of course highly subjective and I chose to create something that appealed to my tastes and layouts. As with several other spots in this project, I had the advantage of taking creative liberty.
This point is truthfully the one where I recognize my own tendencies to get lost completely. I know the look in my head and will take as long as necessary to get there … pixel by painstaking pixel.
Putting the Pieces Together
All the pieces were in place, it was time to implement. I created code, designed pages, and built my proof of concept app for what I wanted it to do. And I was pleased with it, but ran into roadblocks. (Not surprising) First, roadblock to overcome was the limiting of API calls done by GitHub. I was working with a React app on my local machine that would hot-load any changes to my local site every time I saved a file. Every time it hot-loaded the page it would re-call the API calls. Thus (as you can imagine) I very quickly hit the non-authenticated API endpoint limits.
First Challenge: Implement a more advanced API call that included a personalized authentication token.
After that was resolved I continued on my quest for data supremacy and the all-knowing snapshot of our Github repository. Things continued along nicely but I found that I was retrieving far more data in some instances than I needed and in other cases I was simply unable to pull out the information I needed. I was getting frustrated.
Second Challenge: Data was incomplete or too much in the wrong instances and was not allowing me to do what I wanted.
So I walked away. That’s right, pushed my chair back, went for a stroll, cleared my head. And came back with a fresh outlook. I knew the end result I wanted so I started to step back and re-think my thinking about how I was building things out…and that’s when I decided to explore GitHub’s GraphQL implementation.
And here, this is where I had to give up my own comfort of a very familiar REST API and look at doing something different. And so I began to break things. I quickly commented out all of my REST calls and began building out GraphQL calls instead.
Pro Tip: I always start with a soft delete whenever possible so as to be able to use my knowledge again later should it prove to be helpful.
Third Challenge: Learning GitHub’s GraphQL implementation
That challenge feels very short but let me tell you, it packs a punch. And it took me some time to implement — partly this is due to the fact that every software product is different and thus their implementation of something rather standard (GraphQL) still involves understanding all the data available and the manner by which you navigate their structure to retrieve it. GitHub’s documentation was incredibly helpful in this area.
Bonus: Documentation will make your break your product. As much as you like to think it’s intuitive. It’s only intuitive to you. Good documentation wins wars.
I’ll save you a significant amount of time at this point and fast forward to my current status in this “quick” creation and my “learning something new” experiment.
Displaying the Data (The Product)
I’m excited to share with you this screenshot of what I built. It’s not complete…quite yet. There are still improvements to be made and I certainly want to explore ways to continue to optimize performance. I’ll be putting the actual site up for everyone to use in the coming days as a contribution to the community. So keep your eyes peeled for that announcement.
As I said before, there’s certainly more to add and even as I share this I am thinking of improvements I want to make.
It’s important though to achieve small victories. Find the win. I think this was a successful Saturday and certainly forced me to learn something new. Finally, I debated back and forth about including various sources, websites, repositories, example code snippets, that I found useful along the way but decided against this due to the sheer volume of links that would involve. Not to mention the many , many dead ends and wrong examples I followed as well which might be more difficult to suss out of anything I were to share. If however, you are interested in knowing more leave a comment and I’ll be happy to answer. Oh, and there’s a bit of an Easter egg in that screenshot too. But I’ll leave you to figure that one out.
I’m off to enjoy the rest of my weekend and I look forward to seeing what you create as you continue to grow and become better. Don’t be afraid to learn something new.
May 6, 2018
May 5, 2018
Learning Something New
Part of my job is staying aware of all the new technologies and then evaluating them to ensure that things I work on stay on the best path in regards to our future technology stack. All this tech is usually labeled with a rather aggressive term: “Bleeding Edge“. I’ll use this throughout the post, so if you aren’t familiar – read up real quick (remember: keep learning…)
As I work with these different frameworks there are a few criteria I realized I was almost unconsciously applying to each platform I worked on. I realized since these were criteria I used when evaluating things it might be interesting to share and offer it to you to do with as you please.
Advice for bleeding edge technology
Remember that today’s bleeding edge code and methodology will be yesterday’s standard. However, I would recommend caution in this part because as with anything else, you have to pick the right horse (not a racetrack gambler myself but I think the analogy holds true). This can be tricky because it’s frequently very hard to know or to determine. But there are ways to make an educated guess.
Don’t get distracted by shiny objects
Even as I write the title to this section I feel slightly hypocritical even suggesting such a recommendation. I am very easily distracted. It takes constant attention and focus to ensure I don’t get off track. Things like ProductHunt, BetaList and others are constantly proffering the latest and greatest shiny new toy and they pull on my /need for new/. Fight this urge (as I do) until you have the free time to explore these wares for your own entertainment. Shiny objects don’t automatically equal great tools or even the best tool you should consider for implementation. For this reason I suggest not getting distracted by these at all.
Do listen to what others are talking about
The best source of information is the trusted source. Those friends, colleagues, and leaders you look up to. What do they recommend, what are they talking about, what are they excited about. Those are the bleeding edge things you should explore. These aren’t shiny objects (usually) when they are being talked about by others. There is confidence in a multitude of advisors. These are the tools you should keep an open mind towards.
That’s important, don’t overlook it. I’m speaking from personal experience here and I’m embarrassed to even mention it but I will for your benefit: I have ignored incredibly valuable advice more times than I care to admit because I failed to /listen to what they were excited about and predicting to be popular/. Don’t make this same mistake. Listen.
Problems using bleeding edge
But working with bleeding edge software is not always unicorns and butterflies. There’s all sorts of issues. Sure, you feel like a hero when you get something right but 99% of the time you’re absolutely about to blow a gasket because you can’t get it figured out. And it’s not always your fault even! Here’s a few of the common problems I’ve come across working with bleeding edge software.
Most bleeding edge software has terrible documentation
No joke, I know it’s common for engineers and technical circles to make jokes about how much they hate writing documentation. And then there’s the common line, “my code is so clean you don’t need documentation” (I love that one.) So user docs are usually non-existent and technical docs are basic at best. Don’t lose heart. This shouldn’t stop you from pushing ahead – just prepare yourself to become a master of your search engine.
Bleeding edge software changes constantly
I can tell you with authority, almost every single bleeding edge product I have used has experienced changes rapidly. In fact, there have been times that between the time I close my laptop in the wee hours of the morning and when I open it again only a few short hours later the code has changed, the method improved, or the result different. This can be absolutely exasperating. Again, don’t lose heart. The reward is worth the pain.
Okay, I’m going to stop at two, I’ll lose my own desire to keep “fighting the fight” if I continue to list the negatives and the problems. (I’m speaking tongue in cheek of course) So now that we’ve seen a few reasons for bleeding edge and a few problems we might encounter let’s look last at a few tips for working with bleeding edge software.
Tips working with bleeding edge
Working with bleeding edge is both challenging and rewarding. Overcome the challenges and you’ll find deep and visceral satisfaction with your successes. Here’s a few tips to help you.
- Seek out multiple sources for information: If the software has met the criteria listed earlier (not just a shiny object) then you’ll be able to find multiple sources, implementations, and most importantly (at least for me) several different examples.
- Move fast and break things: I recently wrote about the balance between startups and stability. This is one of those cases when you simply must move quick and break things. You’re more than likely working on a local environment, don’t be afraid to try something different. Use proper Git versioning and you can easily roll back changes that don’t work right.
- Be prepared to re-think your thinking: Sometimes you’ll find yourself unable to perform what you expected following your preconceived idea or strategy. Instead of giving up, or forcing a situation. Stop. Re-evaluate. Explore alternative ways to reach the same goal.
- Know when to walk away: Don’t become so entrenched in what you’re attempting to do that you abandon common sense. There will be times when you need to write your work off. Chalk it up to experience (You will have gained knowledge) and move on.
Your takeaway should be simple: Bleeding edge code is exciting and significantly rewarding, but the risks, pitfalls, and failures are inevitable. If you remain self-aware in this regard you will find the adventure very rewarding. (Sounds a bit like a cheap fortune cookie, and I apologize, but the sentiment is genuine.) The last word I’ll leave with you is a simple reminder. Sometimes all you need is a clear head. Get up, take a stroll, let your ideas and your problems soak for a bit, then come back and look at things with fresh eyes. Keep learning. Keep asking questions. I’ll leave you with a question: What is something new you’re learning now?
May 4, 2018
Mautic Release Strategy 2018
The Mautic community has a history of various release schedules and timings as we’ve sought to find the best strategy that works for our devs and our users. This tends to be one of the biggest ongoing challenges facing software projects everywhere regardless of the size. We don’t want to create a strategy that is too intensive for the users to maintain and stay current. We don’t want to stuff too much into a single release and hurt our testing strategies or sacrifice our QA process. And on the other end of the spectrum no one wants to wait for years for a release.
This constant back and forth struggle will more than likely continue and I don’t anticipate that we will solve it here today. But I want to share what I believe is the best release strategy for Mautic today.
Side note: Mautic follows semantic versioning. If you need a refresher on what this means, read this article. In summary, Mautic releases three types of releases (X, Y, and Z) and our versions are numbered accordingly: X represents a major release (1.0, 2.0 etc…) this release may break backwards compatibility. Y releases are minor point releases (2.1, 2.2, etc..) these releases introduce new features but maintain backwards compatibility. Finally, Z releases (2.1.1, 2.1.2, etc…) are sub point releases which address bugs and fix issues without introducing new features.
Now, rather than going into the historical study of what Mautic has done in the past we’re going to look at a strategy for future releases. I’m basing the following on discussions I have held with many in the community, observations from other successful open source projects, and my personal experience releasing software to large audiences. I
Major Releases (X) are released on a bi-annual to annual strategy. This time frame may fluctuate depending on the volume of work to be undertaken and the code to be modified. Sometimes this process may require extensive testing and significant discussion. Due to these factors major releases are scheduled for either every 6 months or 12 months.
Minor Releases (Y) are released on a monthly basis. There isn’t a set in stone date specific for these releases either, but rather a relative time. Minor releases, when they are released are always released on the last Tuesday of the month. Some months may not have a minor release.
Point Releases (Z) are released bi-weekly. These releases are quick, really quick. These releases only touch bug fixes. There are no new features being added through a point release. Some of these releases may have only a handful of fixes, and others may be packed full of quick fixes. These point releases should be easy to apply and even easier to test.
This should give everyone a clear understanding of what we are doing and when we release new versions. Now since we’re all on the same page let’s get out there and push Mautic forward faster.
Recently I wrote about Mautic 3.0 as the next major release for Mautic. While this is an important step forward for our community and our code there’s something that we have to be very mindful of in the process.
Mautic 3.0 will not happen overnight. While that phrase may seem obvious here’s what it means. Just because we’re talking about and building excitement around the next major release does not mean we are ignoring Mautic 2.x or discontinuing development on the next Minor and Point releases of Mautic. Because the time to development for a major release undertaking (like Mautic 3) will be significant and lengthy we won’t be halting development on the current series during that process. I told you it sounded obvious but it’s worth remembering.
Mautic 2.14 is the next release to be announced and it includes a great number of new features and bug fixes. All of these need to be tested and applied before we can merge and release. And then we will begin working on 2.14.1 (or 2.15 depending on the features we want to include as a community).
Simply put, even while Mautic 3 is exciting and on the horizon we will continue to fix issues, release new features and improve Mautic through the current release 2.x until 3.0 is announced Stable. Are you interested in learning more about how to get involved in Mautic? Testing the next release is an excellent way to start to learn the codebase. Need help setting up a testing environment? Let me know and I can point you in the direction of good resources.
As we move forward in our community-lead releases it becomes more and more important that we test and re-test each new feature and each bug fix to ensure it meets the quality that our community demands.
May 2, 2018
May 2, 2018
Headless Marketing Automation
Yesterday I released a blog post entitled Looking Ahead at Mautic 3. This blog went into great detail on why I believed a Mautic 3 should be considered next on our product roadmap and then I outlined the problems (as well as some solutions) that we could solve with this next release. One of the features I shared received a few more questions than the others so I think it deserves a little bit of specialized attention.
An API First Headless Application
First of all can we all admit that is a mouthful to say? We can break it down and make it a bit easier to understand and then let’s dig into what it means and why I believe it’s a valuable step for Mautic’s future.
API First implies that every function of Mautic, every call to the database, and every interaction has to be “call driven”. This extracts the front end user-experience from the data layer (or API). This also means that the only way that the user interface (design, page layout, display elements) interacts with the data is through a series of API calls. These calls are the glue that holds the data together. API first means the system has been created in a way that the API is the only way these things happen, and every API return is formatted accordingly.
Headless: This concept is a funny one to discuss when working in software and applications. We’re not getting into the Ichabod Crane story /(though admittedly for some reason a character on a horse holding a pumpkin is inevitably the first thing that comes to my mind)/. In the software universe the concept of headless means something quite different. Here’s a definition:
…the front-end is a stand-alone piece of software, which through API communicates with a back-end. Both parts operate separately from each other, and can even be placed on separate servers, creating a minimum version of a multi-server architecture. The bridge between both parts is the API client. The endpoints of the API are connected to each other….
— Headless software – Wikipedia
Earlier in that same page the first sentence distills it down even further. Headless software is software capable of working on a device without a graphical user interface. (Wikipedia)
By these definitions we see that headless makes sense particularly when discussing things such as API first.
Now, let’s take that thinking and put it into more of a practical application. Why is a headless marketing automation platform useful and desirable. Why should Mautic consider this something worth undertaking in the next major release of our software? Here are my three main points to justify such a task.
In my opinion, the first reason to consider undertaking a task of this size is based on the concept of improving our flexibility as a platform. If our goal is to be “open” (more on that later) then the best way we can do that is by having a platform that is flexible.
Flexibility, to me, means continuing the great work we stated where a business is able to use the software in a way that is best for their business (rather than the situation that 90% of other software operates). We want to give people the ability and the flexibility to be in complete control of their information, their data, and their software. Software flexibility comes in a variety of ways; in Mautic we’ve considered our platform flexible from the very beginning. Custom fields, highly customizable and configurable campaigns, and the ability to create software practices that match a particular business have been part of the product from the start.
The next logical step in this effort to be flexible and to continue to push the limits and lead in this area involves looking deeper at other areas where we can implement more flexibility. Separating the functional layer from the user interface allows just that. A platform where you can consume the data from any interface you desire means you have a marketing automation platform prepared for the future. Your data, made available in any manner you need. API first, headless marketing automation gives you the power of marketing automation in any visual, end product you desire.
The second reason I believe we should focus on a headless approach to marketing automation is for future sustainability. I don’t mean sustainability of Mautic necessarily, but more importantly stability of your data. If you are locked into a single user interface then you’ll find yourself duplicating data, moving between different databases and potentially losing information. You’ll also be tied to a more narrow focus and implementation strategy for your marketing automation because you’ll only be able to use Mautic in the manner envisioned by the Mautic community and its developers.
While this isn’t necessarily a bad thing (we’ve got a pretty good roadmap and vision for where marketing automation should be), I believe the ability for a business to use their data in multiple outlets gives a sense of sustainability to the database and security in knowing the functional aspects of the software is capable of being implemented in a variety of ways. You move from a singular marketing automation-platform-only to a situation where your data (and your marketing functionality) is able to be consumed everywhere by any other service or device.
The final reason I believe that a headless marketing automation platform is beneficial is for the sake of being more open. Mautic is built on open source. We are steeped in the knowledge that our code is readily available to anyone to review, to use, and to improve. This means that every function is understood (or could be), and that every action the software performs is easy to observe. If we continue this line of thinking it stands to reason that in much the same way, the data, and the output from those functions be easy to view, to use, and to improve. By extracting the user interface from the software and making the underlying infrastructure (API) available to be consumed by other sources we make Mautic more open.
No other marketing automation platform gives you this API-first, headless ability. You are essentially “locked in” to their user interface and their experience. (And we don’t even need to start talking about the limited API abilities of marketing automation platforms in general.) Closed marketing automation constricts and restricts your abilities as a marketer. You are forced to understand their interface, and to only view your data within the bounds of what they believe is marketing automation and how they believe you should access your information.
Mautic has always sought to do more, to be more. To provide you access to everything — after all, it belongs to you. Shouldn’t it be able to be used any way you want?
For these reasons I believe it is in best interests and the future success of Mautic to become API-first and truly headless. I hope this shares my thinking in a bit more clarity and if you were unsure before what headless meant you now have a good understanding about the topic.
If you have ideas or other ways in which a headless marketing automation platform can change the landscape and improve marketing I would love to hear them. We’re building this together, our robust and global community of marketers and developers working together create Mautic software and we have the power to envision and create the future. We are changing the landscape and we will continue to do so. It’s an exciting time to be in Mautic.
Special thanks to Don Gilbert for his help with this post.
May 1, 2018
Looking Ahead to Mautic 3
Mautic 1.0 was released out of beta on March 10, 2015. Then Mautic 2.0 was officially released on July 5, 2016. And that’s where we have continued to make improvements. This means we have been improving and iterating within the 2.x release for almost 2 years. This holds both positive and negative connotations. I’ll start with the positive.
This duration of a major release demonstrates the significant improvement to overall platform stability we have seen. It also speaks to the flexibility of the existing platform to be improved and built on top of, without major breaking changes needing to be introduced.
But there are also negatives resulting from a lengthy release cycle like this. We’re building software for the internet, the rate of change of software on the internet is growing exponentially; the technology is changing; and the landscape is shifting — drastically. By remaining in a single major version we limit the ability to take advantage of those technological advances (if we are unable to make those changes without breaking backwards compatibility).
I’ve discussed the versioning for Mautic previously, if you want to review that information but the tl;dr is we use semantic versioning.
For these reasons the time has come to begin exploring the benefits (and potential downsides) to beginning development of a new Mautic 3.0 release.
The first thing we need to identify is the reason why we would want to move forward with a Mautic 3.0 release. We don’t take these large transitions lightly and there must be sufficient difficulties needing to be overcome and/or new features made available by such a move. To that end, the following are the areas (in part) where a 3.0 release may prove beneficial to the Mautic product.
This might possibly be the greatest reason for beginning our discussion around a Mautic 3.0 release. Currently, Mautic requires Symfony 2.8 and only works within the 2.x series. This series of Symfony reaches end of support for bug fixes in November 2018. Meanwhile Symfony current LTS is 3.4.9 and current released version is 4.0.9. This is a very large problem that we need to resolve. A migration from the current Symfony requirement to even the long term support version (3.4.8) requires a large overhaul to our codebase and framework due to some of the deprecated methods. (I can elaborate on this in more detail in a separate post should it be of interest)
We’re learning as a community through this process and some of the design/architect decisions we made in the early days of Mautic have been improved upon and reconciled so as to not lock us in to specific releases of a framework in the future. Regardless, this upgrade plays heavily into the remaining evaluation of an imminent restructuring and release of a Mautic 3.0 version. And as such opens the door for further discussion around framework implementation.
The first item to be considered as an issue that Mautic 3.0 is capable of resolving involves the front-end interface. Mautic’s interface has remained relatively consistent – even through the Mautic 1 and Mautic 2 series transition. But as mentioned, the existing interface has been in place for nearly 3 years now. This clearly points to the success and clean approach that we took when designing the initial Mautic interface. However, at this point it’s time to consider an update, or facelift, to the user interface.
The frontend modifications are more than just surface level though. Currently Mautic 2.x frontend code is deeply integrated throughout the codebase. While we attempted to isolate the code to the /views folder within each bundle we have inevitably had HTML generated and output from other locations as well and this does not lend itself to a clear separation of frontend and backend. Only with a Mautic 3.0 can we overcome this and resolve this intermingling of views.
Mautic’s API is fairly strong, and absolutely open and flexible – you can review it here: https://developer.mautic.org. But as mentioned in the first item above, Mautic is not truly architected as API first. It pains me to say this because our API is so strong, but it’s not complete. There is more we can do. We need to take our API to the next level and make it truly headless.
The modifications necessary to our API to enable this would also require modifications to many of the functions and classes within Mautic. Touching this many areas of the system is risky and poses additional potential problems which is best mitigated during a major version release.
One of the greatest issues we’ve faced with Mautic 1.x and 2.x has been implementing at scale. I’ll address speed in particular in a future point but there are two main contributing factors (primarily) to our latency. Our current database ORM structure is one of those factors. Please understand what I’m suggesting. I don’t believe the ORM is necessarily the problem (though there have been open discussions about the implementation of an ORM as causing speed issues in other situations). More so I am referring to our specific implementation of Doctrine ORM. Many places suggest that ORM should be used for smaller projects with smaller amounts of data or for jumpstarting development as a scaffolding before moving on to a full-fledged data schema.
The three greatest problems with ORM-based development are as follows: First, performance degradation due to metadata, DQL, and entity processing (this adds greater overhead than simply fetching the data). An ORM often makes sacrifices in native performance features of a specific platform because of the way it “forces” a one-size-fits-all approach.
Second, Doctrine does a lot of things behind-the-scenes and without any control by the developer. In these instances, the ORM is treated as a bit of a “black box” where functions go in and data comes out with little to no idea how the actual queries are structured, or how they can be refined. Hours upon hours are quickly lost attempting to debug this data and extrapolate what’s happening “inside the box”.
The third point is closely related to the first: an ORM is quite limiting from a developmental perspective. You are unable to properly optimize your database platform for your specific use case and all queries are in this way forced to be “basic” while at the same time the associations are forced to be overly complex due to the way that the ORM manages the relationships.
The second factor which has greatly impacted our speed relates to our entity hydration. The method by which we make our queries, hydrate the results and return them is often bloated and more than necessary. As a result of this overkill we experience latent page loads. Evaluating our use of entity hydration suggests we are doing far more than we should be and this drastically effects our API call query time.
This affects our API call time due to the way the entities are hydrated. Let me explain, when we fetch and format an API payload we create DQL that Doctrine then translates into SQL and then hydrates those entity objects using \Reflection which we then pass through a serializer that reverse-engineers the entities into arrays and removes the elements we don’t want. This process also involves going back into nested associations and removing those unnecessary items as well. Finally we then package up that outcome, encode it as JSON and return it. (Can you say overworked?)
This same process also goes into our forms and the majority of our UI output. Most of the time we only desire the data, but unfortunately we are returning full objects of data that’s been converted a half-dozen times into different PHP objects and arrays before it ever reaches the UI.
Our integrations is one item that understandably needs improvement in Mautic (either 2.x or 3.0). This is as a result of our incredibly fast-paced growth and our attempt to stay ahead of the curve. There’s no denying that as a result we sacrificed some of our “code beauty”. If you haven’t explored our integrations code existing in Mautic then I’d recommend taking a look. What has happened is understandable and yet inexcusable. We’ve added far far too much to the core package and not properly abstracted the integrations as they should be. This failure to decouple properly leads to several problems.
First, this makes plugin upgrades inextricably linked to a Mautic release. This means that at no point are we free to improve upon and release new versions of a particular plugin without waiting until the next version of Mautic is released. There’s no reason to continue this discussion as the problem here is blatantly obvious.
Second, the current integration situation adds bloat to core. There is no reason to bundle plugins with Mautic core while enforcing other plugins to exist in a plugin repository (or Mautic Marketplace) to be downloaded and installed by the user. All plugins should function the same way, reducing the overall Mautic footprint and providing a clear path for installation of desired plugins without extra baggage for unused or unwanted integrations.
While there is a path where integrations can be improved upon iteratively within the 2.x series, this is yet another factor to be weighed when exploring the potential of introducing a 3.0 release.
One final point to address when discussing existing challenges relates to the overall platform speed. I think it fitting to close this section with this point because ultimately this plays a major factor into the roadmap for Mautic in the future. Currently Mautic performs quite well in a variety of environments.
Mautic has been tooled very well to work for small to medium size databases and while the functionality services every business equally there were some limitations that began to emerge when working with large-scale database implementations. This had lead to a slowdown of various functions within Mautic and requires workarounds to improve.
Secondly, due to the entity hydration and Doctrine ORM implementations done within Mautic (partly to speed up release timing and create software faster) the overall architecture suffered. This isn’t immediately noticeable but does come to light with larger datasets and more intensive query objects (e.g. within campaigns or when creating complex segments).
Lastly, all of the above speed-related issues roll up into a degraded user experience. The goal has always been 300ms page load speeds within Mautic. While this may seem aspirational it does not necessarily mean its impossible. A rethinking of the underlying architecture gives us the opportunity to explore ways to achieve these aggressive goals and deliver an outstanding user experience.
Now that we’ve highlighted several of the challenges we’re facing in Mautic it’s time to explore how we solve them. This involves keeping an open mind and looking at every possible solution path. Some of these may be far-fetched, some may be irrelevant and some may seem overwhelming. The goal in this section of the document is to review all of them with an open minded approach.
I’m going to outline the four ways I see this being addressed and hope this serves as the beginning for further discussion. It’s also important to keep in mind that these solutions are not completely mutually exclusive. There is the potential for a combination of these solutions to be implemented for the final desired result.
There are both pros and cons to each approach and rather than attempting to highlight those options in this post I will leave that for either a future post or for group discussion. Instead I’ll merely outline what each solution entails so we have a better understanding of what each represents.
Re-write on existing framework
The first option we have is to rewrite on the existing framework. At first glance this sounds the most logical and least stressful of the solutions for Mautic 3. This would involve a significant review of the existing code and a harsh look at what should be re-written or even removed. At this time, there’s not a definite answer on the amount of work involved with a framework re-write on Symfony and this will need to be explored to have a better understanding of the level of effort involved.
Selecting a new framework
A second consideration at a major release point like this is to re-evaluate the framework that has been incorporated so far and determine whether it is the best framework moving forward. This also involves a great deal of work (obviously) as the code would need to be re-written. This is precisely why I suggested you keep an open mind at the beginning of this section. We need to objectively evaluate what is the best solution with all things considered. We must step back from looking at just the code but consider everything in its entirety that would be involved with something of this scale.
Another area where we must evaluate current Mautic 2.x versus Mautic 3.0 is the database architecture. Our existing structure has served us well but if we are exploring the undertaking of a 3.0 series we are defining a release where we have the opportunity to make significant improvements and/or adjustments to the database architecture as well.
Currently our table schema has presented a few problems (though minor) which may be served well by a refresh. This will allow us the opportunity to improve indexing, table columns, and even the overall structure of data. (Need an example? Currently we refer to contacts, however the database table is called leads, while this may seem minor it is a remnant of a speedy release earlier in the 2.x series that should be rectified).
API first architecture (headless)
The last item I recommend be considered as we explore this stage in our development cycle is a return to the topic of API’s. I mentioned this previously in the problems definitions section. We must reconfigure our existing structure and modify our existing product to be API first. This means we need to evaluate every endpoint, identify which are missing, and extract end-user code from the output (i.e. all responses should be JSON strings).
Mautic 3.0 is the first major opportunity we have to make this improvement. Regardless of the framework selected (after evaluation which we will discuss next) this is the time we should make the improvements to our API. We must make this a priority in order to ensure that Mautic is properly headless. (Interested in why headless is important? Let me know and I can make a separate post describing the value.)
Next comes the step where I need your feedback. I’m looking for end-user feedback, always, but more importantly I would like technical feedback on specific solution outcomes. This discussion has begun in the core slack channel of our Mautic Slack. I would encourage you to join the discussion there should you be interested. While opinions are welcome, those with use cases, specific data, and or use cases based on historical data will be given greater credence.
Let’s explore a few of the items to be handled by this evaluation process.
Whenever there is discussion over switching a framework there is usual an instant and visceral response. This response comes from a good place but often times is not backed with the correct factual information. As a result, during the evaluation process in order for everyone to keep “feelings” out of the equation (as much as humanly possible) I want to make sure we back up our opinions with benchmarks and statistics (again, as much as humanly possible).
I recognize that the best benchmark is one that involves our own software written in different frameworks and other factors all kept as control in order to provide a clean comparison. I also recognize this is highly unlikely and presents numerous challenges and as such we must do our best to mitigate these other factors from contributing to the result. This doesn’t take into account the impossible undertaking of writing the same code on multiple frameworks simply for the purpose of extracting benchmark data.
Based on this information it is deemed appropriate to find existing benchmarks for other platforms built on each of these framework at various degrees of scale and using those as a baseline for comparison.
Specific use case evaluation
Once we have some basic benchmarks we can begin to explore specific use cases and implementations. This is where we take the best of the best and begin to build out a plan for how the various pieces might work together. Again, the goal is a non-subjective approach to the information and presenting varying use cases for evaluation.
This should not be extremely time-intensive but rather a precursory step prior to the next phase where a proof of concept is mocked up.
Proof of concept
This step is often where I get most excited myself. Sometimes others may see me arriving at this step and not fully realize I’ve worked through all of the previous steps already. I trust in this particular instance we will make this journey together and share in the excitement of a proof of concept.
As a word of caution, the proof of concept is not a final or even functional application. We simply want to test our hypothesis and theories that we have drawn from the research, benchmarking, and use case evaluations. This is the point where we create code. We build out an example of what it would entail to create Mautic 3 using the solution as defined.
There are several key things to look for with a proof of concept. Code style, readability, implementation methods, and database architecture. This proof of concept should give us visibility into each of those areas as well as a good understanding of the implications of this solution as it relates to page speed and the API results speed.
Subjective item scoring
The last part of the solutions exploration involves scoring the results from each of the solutions identified on a number of criteria. This will be certainly challenging for our community based on the first word of the heading: Subjective. It’s never an easy task (and an oft avoided one) attempting to rank outcomes where the answer is not a clear black-and-white, yes-or-no. Instead we have to consider all potential benefits and detriments to each solution. We have to weight them according to their perceived merit and potential value.
There are a number of factors that contribute to the success of a solution and while I have highlighted the technical solutions first in this particular post there are others to be considered as well. I will be writing an additional post that will focus on the extraneous factors and how they affect the Mautic product either through a 3.0 release or implementing an update to the 2.x series.
So, now that we have this outline for what we are looking to accomplish and evaluate from a code perspective with a Mautic 3.0 release potential we need to begin focusing on how we best accomplish these goals. Here are the first three steps I am recommending we take as a community as we push forward with exploring Mautic 3.0
Organize a team
First, we need to organize an evaluation team. This should be a team with technical ability primarily as the majority of the items listed above are highly technical in nature. There will be a time and a place where the greater community will be able to voice their input and opinions and the subjective feedback from the community at large will be desired at that time. This initial team should be developer-centric given the tasks at hand.
Formulate an evaluation matrix
Once we’ve gotten a team organized and we have carried out the steps for the potential solutions listed above we can begin to draw some results and conclusions. The best way to do so is to compare an evaluation matrix where we can properly identify the pros and cons for each solution recommended. This will help to remove the subjectivity and allow us to focus on the best and most strategic paths forward.
When creating this matrix we will also consider additional items such as time to implementation and community involvement. In addition to picking the most technologically sophisticated solution we must also match that with the existing skills of our community and determine if we need to reach out to other communities for assistance as we seek to grow properly.
The evaluation matrix will not be evaluated at this point and a conclusion drawn but rather be the culmination of the work done to date and distilled down to a meaningful format which can be easily shared in the final step.
Prepare an RFC
The final step in this evaluation of the Mautic roadmap involves preparing an RFC for dissemination to the community. This is where we seek to get feedback, support and buy-in from everyone. We want to ensure that our community as a whole agrees with the decision made and more importantly agrees because they have received the proper factual information. This is where the evaluation matrix will offer a great deal of insight and information.
This will be a great milestone for the Mautic community as we continue to push the boundaries on marketing automation and the technology used in our software. We are capable and equipped for defining the future of the marketing automation space and this is our next big step in that direction. I hope you can tell the excitement I have not only for the outcome but also for the journey as we grow. I look forward to seeing what comes next!
Special thanks to Alan Hartless for his feedback to this blog post
April 29, 2018
Saelos Sunday Update
Well this is an exciting update to share. Saelos was announced and released on April 15. Today is April 29, exactly 2 weeks later. Because everyone is busy I’m sure you haven’t been able to keep up with the progress the same way that I have been so I figured the best thing to do is to write a short update post to give you a sort of a status update on how things have been progressing.
This is of course very early beta software (some would even call it alpha, simply due to its newness) but the status of the code causes me to suggest that we have moved much quicker into beta software status.
These numbers are constantly changing as you can imagine so please don’t put too much faith in any one metric. Rather I’d recommend looking at them as a brief snapshot or glimpse into the growth being experienced. And let me be the first to tell you that growth is evident and exciting. Saelos is moving along at an excellent pace and perhaps even more exciting growing we’re moving forward in a very sustainable fashion. You’ll see why after I share a bit more information.
Okay, here’s a quick stats list:
- Downloads/Sites Created: 264
- Releases: 5 Beta Releases
- Slack: 22 members
- Website: 49 members
- Pull Requests: 0 open / 7 closed
Wow, those types of numbers and to be only 14 days old is quite exciting. Perhaps the last statistic is the one that speaks the most to me. As an engineer at heart I am always looking for indicators that other developers are also interested in and willing to contribute to a project where I am involved. The number of pull requests submitted by community volunteers in the very first couple of weeks of this project is indicative of several things – including the ease of readability of the platform and code.
In fact, even better, I saw 4 community created pull requests in the first 24 hours! (Of course a couple of these were minor issues, but still, the point remains the same: the software is easy-to-read and modify.)
I should also mention the new website just briefly since I realized I never shared anything about that earlier (I’m not lying, the time is just flying by these days). I also launched https://www.saelos.org this past week which gives an online home for conversations, announcements, and other things related to Saelos. You should join in so your voice is heard and you’ll be able to share your ideas for future releases of Saelos and begin getting involved yourself (Are you interested in documentation? If so, we should talk).
Beyond the highly notable achievements listed above occurring within the first 2 weeks of release an additional exciting contribution came in the work of Luiz who has already created and taken lead for maintaining a Saelos Docker container. This makes installation and setup of a new Saelos instance incredibly fast and simple (and significantly encourages new users to try Saelos).
The next obvious question is “now what?” What release comes next and when? This question is a little harder to answer simply because when dealing with beta software new issues or uncovered all the time and the desire is to create as stable a product as possible before releasing a 1.0 stable. Currently there are about 10 issues open in GitHub but of course they vary in difficulty and time to implementation.
The next more imminent milestone is the release of an RC (Release Candidate). At this point I’ll have a pretty good idea of what the 1.0 Stable will look like and this release will be a pre-packaged version to begin fixing any last minute bugs before release. This RC should be fairly close to stable. At the moment I don’t have a solid date for that release because we may iterate through a few more – Beta releases first as we knock out issues and make system improvements.
The next beta will more than likely be released next Friday afternoon or Saturday as time permits. I am hopeful to see a number of the open issues resolved with this beta and I can share those fixes as they are merged.
The last thing I’ll leave you with for this quick update post is a very simple and easy call-to-action. If you like this content and want to be kept in the loop regarding all things Saelos then you need to fill out this short form and you’ll get an update newsletter direct in your inbox each time once is created.
That’s it. I’ll do my best to keep the Saelos Slack channels updated as well as the newsletter and if you are following my blog here, you’ll also get updated whenever I post something here too.
Have a great rest of your weekend and I’ll see you in Saelos!
April 28, 2018
April 28, 2018
April 26, 2018
April 24, 2018
Mautic and GDPR
One of the hottest topics circulating the internet these days is the upcoming legislation surrounding GDPR being put into effect on May 25, 2018. Companies of all sizes are closely watching what this legislation means and taking a hard look at their software to see what is affected. Given the hefty fines, this scrutiny and concern is completely understandable. Mautic, as an open source marketing automation platform and community also holds these concerns and possibly to a much higher degree than others. Our community has hundreds of thousands of businesses running Mautic, and our software is powering their marketing automation effort and customer data collection.
As a result, Mautic is of course highly interested in not only understanding, but also complying with any and all new regulations put forth that promote openness and transparency. Interested isn’t really the right word – more like /actively engaged/. We are dedicated to ensuring that our software not only complies but stands out as a model by which others gauge their own level of implementation.
Before I get too far into those details, let me give a very brief refresh on what GDPR means and what it represents.
GDPR, or General Data Protection Regulation, is a new European regulation that enforces the protection and accessibility of personal data for all European citizens. Read more
Four basic user entitlements
- Every individual is allowed to know what data is kept by any business; why that data is kept and for how long it’s stored by the business.
- Every individual has the “Right to Access” their own information and data.
- Every individual has the “Right to Data Portability” of their information (they can request a copy of their data as it’s stored.)
- Every individual has the “Right to be Forgotten”. (Request a business change and permanently delete any stored data)
Now you may be one of the shrewd ones and recognize a specific phrase in the original definition: that’s right the word European. But if you’re reading this from the US, you’re not off the hook just yet. Keep reading.
This new regulation applies to European citizens regardless of where they are located at any time. US companies must abide by these guidelines for any and all customers, contacts, accounts associated with the European Union.
There is one last aspect of the GDPR we need to consider before getting into some specifics. What is personal data? That’s right the GDPR is concerned with the data so obviously we need to understand what that data is. And this is where things get a little bit muddy. Here’s a short list of the most commonly recognized types of information that falls under this regulation.
- Online identifies (IP addresses, mobile device IDs, browser info, MAC addresses, cookies, account IDs, and other forms of system generated user identifiable data)
- Racial or ethnic origin
- Political opinions
- Religious or philosophical beliefs
- Trade union memberships
- Health data
- Sex life or sexual orientation
- Past or spent criminal convictions
- Genetic & biometric data
- Location data
- Pseudonymized data
Whew, what a list! Now that we have a bit of a handle on what the GDPR is about (at least at a high level) and you may be sufficiently uneasy about your current software I want to share how Mautic as a product is already compliant and continues to seek the best and most proactive approach in these new guidelines.
Based on the four principles listed above let’s look at an optimal Mautic configuration that complies with them. There are two options that existed for Mautic and my desire was to set a precedent for our community, our product and the entire marketing automation space. As I dug into this issue I met with more individuals in our community and in business than I could mention. My desire was to get a better understanding of the regulations and their implications myself. And I am excited to share with you the conclusions I’ve come to. And of course I’m always interested in more discussions on the subject and welcome the opportunity to chat with anyone that has questions, ideas or thoughts on this subject. It’s an important one.
Okay, with all that said, let’s dig in. As I mentioned there are 2 paths we can take. The real trouble lies in the uncertainty. I alluded to it earlier when I mentioned the “muddy” aspects of the data. There is a balance that must be struck. Mautic should be proactive and a leader in the implementation of these new guidelines. But time spent on unclear work, or without good direction is wasted and the time of our community developers is far too important to waste.
In order to make the absolutely best use of the developers in our community’s time; and in an effort to make the wisest decision in time and resources I believe the smartest strategy is to take a dual-prong approach. This is exciting because Mautic software can be easily configured for GDPR regulations today with just a few simple steps.
Instant GDPR Compliance
This dual prong approach involves an immediate step and a longer term software feature enhancement. The first step is quick and relatively painless. And with the implementation of a few simple changes to how you currently setup your Mautic instance you’ll be instantly compliant!
Here’s all you will need to do:
- The very first thing is to plan how to convey and accept explicit data collection consent, usually done through a focus element in Mautic, this step is potentially already being done in the case of cookie collection. As such you may only need to modify the language of your existing focus item.
- Configure two new segments within your Mautic software, name these segments, Request to be Forgotten and Data Requested.
- Setup a new form that allows an individual to submit their name/email and select the options they wish to submit (Request for Data, Request to be Forgotten)
- After each form submission associate them with the correct segment and take the necessary steps to either delete the contact from the database or export their record to a CSV.
- Notify the individual of the action taken.
One of the biggest (and simplest) mistakes I hear is people getting caught up in the thinking that this process needs to be instantaneous. While of course each request does need to be handled with expediency, nothing states it needs to be automated. To the best of my understanding, the above 4 step process gives you a GDPR compliant Mautic! Congratulations, you can sleep a little easier.
GDPR Mautic Software Improvements (Future)
Of course being compliant in this manner is only the first of the two-phase strategy. The second involves some modifications and improvements to the Mautic software. And while this is yet to be fully determined I can share a few ideas that have been circulating.
- New configuration section for GDPR.
- Configuration options that add the necessary acknowledgement checkboxes to forms automatically.
- A semi-automated contact deletion process
This is just for starters and only a few thoughts I’ve had as I’ve listened to some of our European community members share their concerns and their ideas. As I stated earlier I would love to speak with you and continue this discussion. Mautic is committed to being a leader in this regard and demonstrating to others how proper GDPR should be handled. We have the knowledge of a global community and the power of a flexible and open source development platform enabling us. Our software can be proactive and our software can demonstrate how others should consider GDPR compliancy. I trust this helps, join our Slack channels to learn more and make your voice heard.
April 22, 2018
April 22, 2018
April 21, 2018
Saelos CRM: A Technical Advantage
One of my greatest undertakings of this past year has been the development and subsequent release of the Saelos CRM (still in beta of course!). I was able to use my knowledge and experience gained from Mautic (a world-class marketing automation platform) to create a complementary platform for relationship management. I expect if you’re reading this you’ve probably already read the original announcement post (if not, go check that out before continuing). Otherwise, let’s take a few moments to explore what an open CRM looks like and what it means for the future.
By the way, if you haven’t looked at [Mautic](https://www.mautic.org) you should definitely check it out. The open source marketing automation platform is second to none and does incredible things for your marketing department.
The purpose of this post is to showcase just a bit of the Saelos CRM technical advantage. I’ll touch briefly on the methodology and practices implemented as well as the reasons for various technical choices made along the journey.
As a brief overview, Saelos has been written in two distinct sections. A frontend and a backend. This was done to make Saelos completely headless. (I’ve jokingly made the comment that not only did we create the first headless CRM, but also the first bodiless CRM as well – I’ll explain that in more detail later in this post) Creating a CRM in two sections like this allows for the absolute maximum flexibility and customizability in the future by an incredibly wide variety of use cases.
By default Saelos runs smoothly and seamlessly as a single app, so for most users this distinction of “frontend” and “backend” will hold little meaning. But for those more technically minded or for those use cases where it is required Saelos is capable of meeting those advanced requirements.
Without any more delay, let’s start by exploring the backend system for Saelos.
Saelos backend (not to be confused with admin or config) is the code platform which interacts directly with the database. This backend manages all the code and logic related to the data and then provides a full API by which the Saelos frontend (and other systems) can interact with this data.
Saelos was written in the “API first” mentality and as such every functional aspect of Saelos is controlled and manipulated via an API. That’s a pretty big statement and gives us the ability therefore to offer Saelos as a completely headless app. Any interface can interact with the CRM simply by referencing this robust API.
Finally, here is a quick note on the technology involved with the Saelos backend. This platform is written in Laravel (Laravel 5.5) as the base, and follows the 12 Factors of recommended methodology for apps.
The Saelos frontend is the UI platform which the user interacts with directly. This visual interface makes functional calls to the API to return the information in a user-friendly format. This interface is cutting-edge and incredibly intuitive. And that’s not just marketing speak. The Saelos UI responds instantly and is declarative as well as component-based.
The Saelos interface is able to cache responses, storing data in the client’s browser for improved query speed, only making server calls when the data is changed. Doing this takes full advantage of modern browser local caches and makes page load speeds lightning fast (and in many cases non-existent).
Just as the backend is able to function independently of the frontend; so the UI can function independent of the backend. This means, as I joked in the beginning – Saelos CRM is completely bodiless. You can take the Saelos UI and connect it to your data source provided your admin backend implements the same API endpoints.
Again, as a final note on the technology involved. The Saelos UI is written completely in React. This compiled with axios, redux, and lodash provides one of the best frontend platforms available today.
The outcome or result of this approach to a modern CRM and sales enablement platform is abundantly clear. Lightning fast, incredibly flexible, and infinitely customizable. No other CRM or sales enablement tool gives this much freedom. Saelos, a single powerful application, with the ability to exist as two complete platforms, capable of being independently as needed.
To be clear, Saelos does not replace Mautic in any world. Instead Saelos is a beautiful and perfect compliment to an outstanding marketing automation platform. The lessons learned from Mautic have been applied to make Saelos incredible, but it doesn’t stop there. Already, Saelos is giving back, allowing the Mautic community to begin expanding and improving our code for version 3 (already in the works!). This is a beautiful symbiotic relationship where two open source projects and communities are able to work together to improve each other and I am so excited to be a part of each.
April 19, 2018
April 16, 2018
April 15, 2018
Announcing Saelos Beta
Wow. I’m a little in shock that this day has finally arrived. It feels like months and months and months in the making. (Probably because it has been). And I couldn’t be happier with the result. What I want to share with you today is the result of untold nights and weekends. Long days and quite literally thousands of hours of time. I’ve talked about it before, but time is our most valuable asset. We can’t buy, beg, borrow, or steal more of it. As a result there’s nothing that costs more than time. With that thought in mind, what I am about to share with you is a gift. A gift of my time. It will cost you nothing. I give it to you completely for free. But wait, before you think that’s the end of the story. Let me stop you and share with you something I believe is even greater than a free CRM. This gift I’m giving you, the one comprised of my countless hours of time I will never get back – this gift is more than just free. It’s open.
This is now completely and totally available for you, for me, for everyone to continue to improve upon. This creation now lives freely available and completely open in front of you and the rest of the world. No one has seen anything quite like it before. Every line of code is available for you to review and improve upon.
As with any software this project starts its life as a beta. Now I believe you will be hard-pressed to find other beta software with the feature richness and depth that you’ll find in this one, but I am sure you will find bugs. Please remember, this is beta software.
I would be remiss if I didn’t specifically mention one very important individual who has joined me for this ridiculously challenging journey. From the beginning there has been one person that deserves special recognition for his willingness to tackle any problem, to identify the best solutions, and to build anything he was asked to build. I’d like to thank Don Gilbert for his tremendous contribution and his dedication to this project, without him I would not be announcing what I’m announcing today. Thank you Don.
I am sure by now everyone knows what I am about to share with you. I’m sure you’ve read the previous posts, heard me speak, or gotten some other insider scoop into what I want to share with you today, but that doesn’t mean it’s any less exciting or any less monumental of a moment. Today, I am pleased to announce that Saelos, Open Source CRM, is officially available for download.
The Saelos repository links will be shared at the end and the website will also be immediately available as of today to give you the download.
But let me first tell you a little bit about this amazing software which I’m sure you’re dying to know more about.
An Open CRM
Saelos is customer relationship management re-imagined. It almost pains me to call it a CRM. It’s more a beautiful blend of sales enablement, customer relations, and incredible intelligent relationship management. I knew when I started thinking about this system I wanted to solve a problem. A problem I faced. It seemed every time I wanted to find out something about someone I was stuck logging in, clicking through what felt like a million links, staring at a hideously ugly screen, and ultimately being presented with some table layout of information that was disjointed, outdated, and difficult to search through.
What I wanted was a way to see the people that mattered to me, to easily see (and update) their information, to be told what things they were related to, and to be able to instantly connect with them. All I wanted was intuitive, beautiful, fast, access to the people I cared about. I believed I should be able to have this. I believed the relationships in my life mattered and I shouldn’t have to waste my time trying to maintain them.
This meant designing modern software capable of solving this problem. This meant rethinking everything I knew about existing systems, taking the pieces, and creating something new. The trick always lies in attempting to create something new and yet familiar. I believed whatever I built had to feel comfortable. I wanted you to sit down, log in and feel at home. You just know where things are, you know how they should work…and they do, beautifully.
So, what can you do with Saelos? I’m glad you asked, let me show you a few features I think you’re really going to like.
The first and most obvious area in Saelos are the contacts, you’ll notice I’m using terms you’re probably familiar with, and immediately you know what I’m talking about. The contacts gives you a blazingly fast list of your contacts, and wow, is it ever beautiful. You’ll probably want to know how it’s so fast and what the software is behind this platform. I’ll tell you more about that in a bit, but first, let’s just look around the contacts to see what all we can do.
In the middle of the screen you’ll find all the details about the person you’re looking at. You see their address, and other important information right at the top, and then convenient groupings of other fields below. These fields are customizable and easy to create in the config section.
Sometimes my memory fails me for a second and I need a reminder about what’s happened with someone in the past. It’s embarrassing to ask and it’s time-consuming to hunt through old messages to try and figure it out. In Saelos you simply click the arrow at the top of the right panel and you’ll instantly see everything that’s happened with this person. Every field update, every interaction, every status change, everything.
Activity & Conversations
I mentioned interactions a second ago, and you’ll probably notice I slipped right over the top row of icons. Let’s look at those real quick. Sometimes you want to give someone a quick call, it’s as easy as clicking a button – one button. And you’re connected via your phone. But that’s not all, with a simple config setting every call can be recorded and attached. And it‘s not just phone calls, you can send text messages (and receive them) as well as send email. And you can do all of these tasks without ever leaving the page.
If we look underneath the person you’ll find a record of each conversation (phone call, email, text) instantly and easy to review, Saelos CRM makes your conversation tracking effortless.
I love how everything is logically laid out and easy to find. Everything working together at the speed of my thought. This is revolutionary.
Beyond just contacts, it’s important to keep track of the accounts and companies where your relationships work (and worked in the past). Keeping track of all this information as well as any opportunities, tasks, and notes associated with each account can be overwhelming at times, but Saelos helps you manage them all by placing them directly on the page along with the company information. You’ll never have to go far to see these details. Which brings me to the next area to explore: the details.
The panel on the right is full of valuable information you can use to easily jump from one thing to another. Your mind works incredibly fast, you process relationships and connections almost instantly, and now you can get information delivered to you at that same speed. Companies, opportunities, tasks, and notes are all conveniently located right next to your person. You can see and manage the status of the relationship instantly as well in Saelos CRM. (Need to add more statuses, again, an easy config option)
But managing my people involves more than just their personal details. I also want to know what opportunities (another familiar term) I had with various contacts. I wanted to know what stage those opportunities are in and what next step is best to take. Just like with the contacts we can easily scroll through our opportunities to find the one we’re looking for (or use the advanced search filtering to quickly narrow the list). More custom fields can be added here and I can easily see all the related information here as well. Creating and managing these opportunities has never been easier.
The last thing I want to draw special attention to involves beautiful, incredibly functional tags. Tagging in Saelos lets you quickly link items that might not be linked anywhere else. You can pick a name, pick a color, and even add an emoji. Then, you can easily see people, companies, opportunities, and tasks associated with that tag. It’s ridiculously simple and yet surprisingly powerful.
There really is so much greatness captured in this system it’s hard to highlight only a few of them, but it wouldn’t be any fun if I didn’t let you discover some of them for yourself. That’s the beauty of a system like Saelos where everything is so intuitive, it really is like a fun opportunity to discover something new and exciting.
Here’s a few hints for things you should definitely check out:
I hope by now that you’re sufficiently prepared for what you are about to find. But before I let you go and use Saelos for yourself I want to share some of the incredible tech that supports this system.
Finally I mentioned earlier that this is beta software and that you will undoubtedly find bugs. I also mentioned that this was started as a gift made available to you, free and open source. But this is not the end, it doesn’t stop with an a gift given. No, this is the beginning. Now you have an opportunity. An opportunity to make the gift better, to continue the act of generosity and improve this software for yourself, but more importantly for others. Be patient as you implement but hold Saelos to a high standard at the same time. Gather issues and report them. Take the next step and fix them. Become a part of this community that is now forming and take an active role in forming the foundation for this open source project.
Now, with all that information shared, and without any future awaiting. I am proud to give you immediate access to Saelos Beta. Here are your download links:
Full Package Download: https://github.com/saelos/saelos/releases/tag/1.0-beta
Code Repository: https://github.com/saelos/saelos
Please be sure to star this repo and share it with others! If you have questions, drop me an email. I’ll be sharing even more documentation in the coming days. For now, the repository has step-by-step setup if you’re building your own. The download package you simply unzip into your web folder.
What are you waiting for? Start exploring Saelos CRM! Tell others, tweet about it, facebook post about it, share on LinkedIn; just please help me spread the word! Let’s change the way we think about relationships in business!
Interested in the slide deck? Download the PDF here.
April 13, 2018
April 13, 2018
Open But Not Inclusive
This week I attended DrupalCon in Nashville, TN. I always enjoy open source conferences and this event was no different. There were hundreds of sessions available over the 3 day event and it’s always tricky to navigate the feeling of “information overload” when attending a multi-day conference like this.
One of the tricks I’ve learned over the years of attending these events is to take one session slot each day and not attend a session. Instead I find a quiet location somewhere and jot down my thoughts on what I’ve been hearing and learning. This helps me to keep from getting conference brain where I’m sitting in a session but not hearing anything. This also gives me a chance to catch up on other messages so when I /am/ in a session I can give it my undivided attention.
I’d like to share with you is the result of one of those reflection sessions. This nugget of greatness came from the opening keynote on Day 2. Steve Francia, @spf13, was sharing his story and it was full of helpful information, anecdotal advice, and stories from his personal journey. It truly was an amazing keynote. As he spoke there was a few slides in particular he shared which caught my eye and attention. They specifically addressed an issue I am constantly aware of with the Mautic community.
You’ll have to forgive my sketching, and trust me when I say his slides were much prettier. But I imagine you’ll get a fairly good idea of the concept. Not to mention, if you are that interested; you should have attended!
Here’s the basic concept: Open NOT Inclusive.
The idea was one that Steve mentioned he discovered while working with Google and the Go community. What he saw was that the core team (Google) was doing all the contributing to the code and the community was observing and consuming without being actively included or taking active leadership roles. As a result the true power of the community was left untapped and the internal team was a limiting factor.
I was struck with the similarities to the Mautic community and as you can tell from my sketch I self-identified with our team in a similar fashion. At this point I found myself agreeing with Steve’s problem statement and as such was eager to see what he shared next. Below is again my representation of the slide that followed.
Steve offered a simple solution. Well, it appears simple, but the implications are of course much greater. The suggestion as outlined above involves Distributed Control – when the community is able to make leadership decisions and assume roles of responsibility the dynamics change. This seemingly obvious change to /inclusive/ gives a sense of ownership to the community. It makes the community truly empowered and in control of it’s own destiny. What a fantastic and exciting future.
While I believe that the Mautic community is working hard to assume positions of leadership and my intent is to see this growth occur as soon as possible this served as a valuable reminder to me what we are all striving for. Steve pointed out that the Drupal community was an excellent example of this inclusive open community functioning properly and looking around at the thousand or so in attendance I would have to agree with him. I look forward to the Mautic events in the future when we can say the same thing and demonstrate it with the many community leaders taking an active role in the future of our project.
That’s all for this post, but I will continue to share my thoughts from my reflection sessions in the near future. In the meantime, let’s not forget this valuable lesson and keep striving to make Mautic the most amazing community it can be.
April 7, 2018
April 7, 2018
April 5, 2018
March 25, 2018
Sunday Saelos Update
Since it’s my weekend project and since today is Sunday I feel it’s an appropriate time to publish a quick update on Saelos. I’ve done the unthinkable. In the world of software development and releases some might say I’ve done the unimaginable. I announced a release date. That’s right, in case you missed my previous blog post (catch up here), I have announced a date when I’d be releasing my passion project Saelos.
I’m not repeating that date here, if you’re curious about when it is…go check out the previous post. Let’s just say under my current level of stress and the number of hours left in my weekend it’s going to be a bit of a hard deadline to hit. But I’m committed. And just in case announcing something like an actual date of release isn’t stressful enough – the response I’ve received so far has been insane. Far more than I anticipated.
I’m a stats kind of guy, and as a programmer the numbers and equations are kind of a thing for me. I love to see and find patterns and since my little side project is just getting started I figured I’d set the stage right by sharing various stats as I go and as I get closer to a release. Because there’s something else that defines me; besides just being into the numbers and the patterns. I am open. I believe in open source to my core and that same openness pervades other areas of my life too. I hope you find the inside view refreshing and informative. Let’s get rid of black boxes.
Okay, so here’s some information coming at you: Since I published the blog article on March 14 (roughly 11 days ago) there have been 472 individuals that have submitted the form requesting more information. We can also take a quick look at geographic information and see 35 different countries are represented by those known contacts with the majority of those originating in the United States. The website has tracked more than 5,000 unique visitors. And that’s just a couple of the numbers.
In case you’re curious: I collect these types of details (and much more) using Mautic, an incredible open source marketing automation platform.
In regards to the blog article, it has exploded into the top 10 most visited pages of all time on my website (interested in the first?) . And this is after only 11 days of being published. I find this exciting and intimidating at the same time (no, not being trying to be cliché). It’s awesome because it means there’s a real interest and a real concern. It’s terrifying because I put a date on it! What was I thinking? And why on earth am I wasting my weekend hours writing a blog post instead of working on it?
I guess because I want you to be as excited as I am about what’s coming and I want you to know what’s going on behind-the-scenes. The numbers are fascinating and exciting. The interest is very real and I want you to be a part of the entire journey, start to finish. All in all, things are progressing nicely and I can’t wait to share more with you. If you do want to know more, check out the splash page, throw in your email address, and get notified when something new is shared. (You can also sign up on my blog here on the left to be notified).
Now, I’ve got to get back into things. I’ll do my best to share a bit more with you in the days ahead. But don’t sit around waiting for me! Sign up to let me know you want me to reach out and then go out and get something done (or enjoy your relaxing Sunday)! We’ll be talking again soon.
March 21, 2018
March 20, 2018
March 20, 2018
Market Smarter Not Harder
I think a lot about what’s coming next in the world. I focus a good bit of that time on the area where I spend most of my waking time – Mautic and marketing automation. When I set out to create Mautic I wanted to create a marketing automation platform that had never been seen before. I wanted to give the world the tools and the power of a platform that not only excelled in feature and functionality compared to existing proprietary products but also did so in a revolutionary way.
I am excited to see and hear the growing and continual positive response that Mautic receives. The reviews keep piling up and the compliments speak to the fact that we are accomplishing our goal (notice the verb tense? Active. Because we’re not done yet). If you haven’t had a chance to explore the Mautic marketing automation campaign canvas then you’re really missing out.
What we’ve created is something that was more robust, more functional, and quite honestly more beautiful than anything marketers had ever seen before. And that’s not just marketing speak. The blank white canvas you start with is a breath of fresh air. From here you can create a simple or complex marketing campaign with the ease of dragging and dropping items onto the page. It’s just like sketching on a whiteboard (and we all know how much fun that can be).
But this is only the very first step in our marketing automation journey. There is so much more to be done. We have to keep digging deeper and we have to continue to explore what should be done with marketing automation and doing smarter marketing.
What follows are my ideas. They are incomplete, they are my sketches and my thoughts. I want to engage you in my future-looking focus. I want to encourage you to expand your mind and think more about what the future might look like.
Let’s talk about old marketing first. I know I’m calling this old marketing but unfortunately the oldest of these sketches is what some current marketing automation platforms still sell today. Mautic v1 was the revolutionary marketing automation platform our community created over 2 years ago. Today it is still one of the most talked about aspects of our platform.
So, with all that hype why am I considering V1 and V2 to be outdated? Let me explain. Marketing automation should be automated. We all agree with that concept. The above marketing campaign solved some of the problems with marketing automation but not all of them. Mautic did some amazing things with multi-channel messaging. We also created some really advanced campaign canvasing that allowed marketers to send those segments down a variety of paths with different channels for communication.
But there’s a fundamental piece that has been overlooked. We also all agree that marketing automation should be personalized. With that in mind why do we continue to do marketing in groups? (By groups I mean of course segments)
This is where I believe the next step in marketing need to be realized. Let me elaborate.
First, I want to be sure that I don’t think I’m suggesting something new that’s never been thought of before. There are many smart people that have done bigger and better things before. I want to make it a reality. I believe Mautic and the open source community is capable of making those ideas a reality. The above sketch is what I believe the future of marketing automation looks like and in the next 6-9 months I am confident the Mautic community can achieve this.
Okay, now what does it look like? Let’s get real. Instead of the marketer having to create these elaborate paths that segments or groups of contacts have to navigate together there should be a more personalized route Here’s what that looks like broken down.
Marketers should instead create marketing messages which are a number of variants of the same message created for several channels (e.g. email, sms, web push, mobile notification). These variants are collectively called a marketing message. The marketer outlines an objective and success for each message. Finally, the marketer then creates a number of these marketing messages. After creating these messages the marketer defines what success for the campaign should look like. Success does not necessarily mean 100% completion of every message. Instead a marketer may decide upon a number of outcomes based on various percentages of completion.
This may sound mildly familiar and somewhat similar to existing marketing but here’s where it gets different, very different. Marketers shouldn’t have to market to entire groups as one; better that each contact received a personalized marketing campaign based on their particular specific interests. Mautic V3 does this.
Because Mautic v3 creates customized journeys for each contact based on their preferred contact channel. In addition to sending the message on the preferred channel, Mautic also accomplishes one other important marketing objective: right time.
I know, it sounds a bit like a marketers dream – right time, right message. But that’s exactly what Mautic offers and we’re able to do this because we’ve been planning for it all along. We launched version 1 with multi-channel messages. We released version 2 with the ability to create marketing messages as well as a preference center for contacts to select their preferred channel. From day one we’ve been carefully creating a marketing automation solution that is world-class and second-to-none. Mautic version 3 continues that journey and brings about the next step in amazing marketing automation.
March 19, 2018
March 18, 2018
March 14, 2018
Introducing Saelos: A Personal Project
Some of you may have noticed that it’s been a little while since I posted a longer piece on my blog. That’s not because I haven’t wanted to but because of some other things I’ve been pouring every spare second into. Literally every spare second. We won’t get into a discussion on the topic of sleep habits (maybe I’ll come back to that one – it’s interesting) but suffice it to say, the time I’ve spent has been all-consuming.
But that’s what happens when I am passionate about an idea and want to see it developed. I lose myself in it. I can’t help but think that’s normal though right? Don’t you do the same thing when it’s something you’re incredibly excited about? Regardless, I’ve come up for air now and decided it’s worth taking a few minutes and letting you in on my personal project. This is just something I personally believe the world needs and a shift in a current status that I think can improve lives and business for everyone.
If you’ve never read the book What Do You Do With An Idea? you should stop right now and pick up a copy). It’s a children’s book so don’t fret – you can finish this one in a few minutes.
So, what do I start with? The solution? The problem? Oh, wait, I know. I should start with why. Let’s do this:
I’ve watched people keep lists my whole life. I’m a list maker. I love making lists of things and keeping track of how I’m doing as a result. So when computers came around people wanted to create lists on it. Natural progression. As is always the case with software one list became multiple lists. Then people dreamed up the fabulous idea of using those lists for showing more information. What a beautiful thing. Now my list of a sentence could be an entire paragraph or more. What if I wanted to define fields and then allow other people to edit and update my lists. At a very high level this concept of a list item gradually turned into the idea of a single record with lots of data in it.
Okay, everyone with me so far? I’m going to jump ahead a few steps so keep up we have to start moving faster (I have a thing for speed). Companies began to create software to help with managing these records. They all started with this idea of building a list and adding more and more fields to each record. Display the record differently, use different names for the list items (or objects) then package it as a different software product. Rinse and repeat. This was the state of the world and then the internet came along and these companies all moved their products to the web. Same product, same thinking, but a different medium. (C’mon people, this is “the internet”)
But the thinking that built these platforms was inherently the same (for the most part). One company even went so far as to attempt to use a “No Software” logo, which attempted to suggest a new paradigm shift in business work, but this was the same thinking, different platform. The software was never the problem. The thinking about how it was built and the implementation of how it functions is.
This problem of record management was something that I both heard about and experienced myself. A world of “apps” all performing the same CRUD tasks (Create, read, update and delete – Wikipedia). Then you could even build your own app on top of an app to add more of the same with different fields you wanted to track or different functionality you wanted to have. But the underlying system was faulty. And though the underlying code was constantly being added to and tweaked, it was the same framework. And I believe people need a change. I believe software today is fundamentally different from software of yesterday. Below are my fundamental principles about software.
- Be modular not monolithic.
- Be extensible.
- Solve specific problems.
- Be active.
- Be open.
Those five fundamental beliefs shape the work I do and the projects I work on. I absolutely believe this. Let’s look at each very quickly.
Software should be modular and not monolithic.
My statement here is more than just the concept or idea of bolting more pieces onto a base. That’s the app tacked on to an app tacked on to an app idea which businesses today attempt to do. By modular I mean the core functionality should be able to be removed, replaced, rebuilt and improved upon.
An example of this lives in the Mautic platform. Mautic functions as an omni-channel marketing platform. Fancy words, simply put, Mautic lets you market across email, sms, social, web, mobile and more. The channels are fundamental to the software, but they are completely modular. Want to use SendGrid instead of SparkPost to send your email, no problem? Have a different ESP? Drop in your credentials and go. What about SMS, Team Twilio or Team Plivo, the choice is yours. Mautic is fundamentally modular in it’s approach.
Software should be extensible
I believe the idea of extensibility is broken in many cases. This idea is commonly misconstrued in the world through the proliferation of “App stores” within product companies. (/I’m not referring to Apple or Android which provide applications to be run on an operating system./) Software being extensible means something quite similar to the first point. Modular software can be easily extended to include additional functionality while not losing its core purpose. But extended to a different ecosystem (or app) through the open exchange of data.
Software should solve specific problems
Too many software companies today try to be all things to all people. The world is not your target market. I believe in the idea that software should be accommodating and flexible but this doesn’t mean it’s a one-size-fits-all approach. Flexible means the software should fit your business rather than your business conforming to the software; but the problems to be solved are unchanged. This means the processes might vary, but the solutions remain the same.
Software should be active
I know this point sounds funny but the majority of today’s software is passive. It responds to requests, it dumbly regurgitates what it has been given and spits out a mangled version of an answer … when asked a question. I call this passive software. In contrast, I believe software should be active. It should proactively assist me in performing a task or reaching a goal. (These many software assistants are absolutely passive but that’s another post.) Software should be helpful and active in enabling the user to move faster and do more, intelligently.
Software should be open
I left this one to last because it’s the foundation. It’s the belief on which everything thing else is built. I believe software should be open. There are countless studies, reports, and white papers on the reason why so I won’t sidetrack this discussion. I believe in open. An open software empowers people and enables the other points above.
All of that brings me to a problem I face. I needed something to help me manage relationships. But everything that existed in the world was old, bloated, slow, inflexible, and closed. Yep, pretty much the exact opposite of everything I listed above. It’s frustrating. But solvable. I believed I could create a platform that managed relationships but was built on the principles I believed in. So I started working.
I wanted to create something blazingly fast (regardless of the number of people) being managed. Something modular that could be easily extended, something that solved some very specific problems, something active in its interactions, and most importantly something open.
I’d like to introduce Saelos. An open platform built on the software principles I shared. The purpose: customer relationship management. That’s a tricky one to say because instantly I’m sure you conjured up one (or more) companies that offer a solution under this label. But Saelos is different. Very different. Because Saelos is something I’m calling active software. By this I mean that not only does it manage customer records differently but it also actively helps you maintain connections, build relationships, and accomplish your goals by actively assisting you. Task completion, recommended actions, process improvements, and intelligently created reminders are just a few ways that Saelos will do things for you.
Let me be clear: Saelos does far more than just incorporate another workflow builder and follow simple step-by-step procedural tasks created by a user. Saelos builds them for you, and then executes them. And informs you along the way, all the time enabling and empowering you to do more of what you should be doing with the right person at the time you should be doing it.
Possibly the best part of this entire project is that Saelos is built on the right foundation: open. This means Saelos can be downloaded, self-hosted, installed, configured, and improved upon by everyone.
I have so much more to share and I can’t wait to show you what’s been created. I’ll be giving early access to the project I hope by the end of the month. (Friday, March 30 2018). I know it’s forbidden to set a date in software development…but I’m feeling pretty good about this.
Are you interested? Do you believe in the same fundamental principles as me? Would you like to experience something different in how you manage and interact with people? Sign up for early access here, and let me know. Oh, and subscribe to notifications on my blog to be on the insider’s list. I’ll be posting more information and (hopefully) screenshots in the days and weeks leading up to the release. It’s coming fast, I hope you’re as ready as I am.
March 14, 2018
March 10, 2018
March 7, 2018
March 6, 2018
March 5, 2018
Blockchain Bonanza or Bitcoin Bubble
I didn’t post anything in 2017 about the concept of blockchain and I’ve been diligent in not posting anything so far in 2018. Now I’m finally going to break my self-imposed silence. I’m choosing to now because it seems that the initial craze has worn off a bit and thing are finally starting to normalize. (At least that’s the impression I’ve gotten in recent days/weeks). Sure there’s still plenty of news and publicity surrounding the technology and there’s the occasional doomsday post but the rabid chatter that the everyday individual engaged in seems to have faded.
As a result of this decline I think it’s finally time to share some of my thoughts and opinions (not to stir things up again but because I believe my post now won’t be seen as my feeble attempt to jump on any bandwagon). The concept of blockchain technology is profoundly revolutionary to our world but you have to look far beyond the early beginnings of a cryptocurrency and the current proof of work mining efforts.
If you are not yet caught up on the topic, there are literally thousands of articles to help you. This one is a great read, but my personal favorite is this article: WTF is The Blockchain? – Hacker Noon. After you’ve read this (and hopefully others) then you should have a much better understanding about how the blockchain works and functions and maybe a hint about why it’s so important for the future. (And no, that’s not just hype talking).
Now, as is usually the case, anytime something new is announced you get the first rush of early adopters. In some situations those early adopters are quiet, excited enthusiasts doing fun things, exploring the limits of the newest frontier on their own and happily doing so. In other situations those early adopters see the potential in something and begin shouting their praise every way they can. When those situations happen the rest of the general population can’t help but notice and begin to pay attention. Again, nothing incredibly new or different here. But every once in a while in rare instances something else comes into play. Money.
That’s right, blockchain might have happily been created and begun to spread in the usual manner, but instead bitcoin was the primary vehicle by which the technology was propelled into the spotlight, and the money changed everything. Not instantly, but when it took off, it really took off.
But this post isn’t about the history of the blockchain or even the debate over bitcoin bubbles. Instead, as I began with, I am excited to talk about the future of blockchain and explore what the blockchain might be able to provide for different verticals besides cryptocurrencies. And no, I don’t consider CryptoKitties | Collect and breed digital cats! to be the full extent of the possibilities. Although I do admit to owning a few myself.
I truly believe in the fundamental concepts behind the blockchain. Maybe that’s partly because it seems to be the next generation of open source. We’ve seen the world gradually come to accept open source software as the new normal and the studies are in: open source software is eating the world. Almost every major company and organization participates and uses open source software in some manner in their business. And what I see in the blockchain suggests that this will be the future next generation of open source. Decentralization. No single source of controlled power. Democracy ruled and available for everyone to participate in. Sound familiar? It does to me.
Open source and blockchain share a lot of the same principles (along with some of the same, familiar opposition). And I am excited to encourage and push the boundaries of the blockchain much in the same way as open source. We can do this by examining what ways blockchain can be used “outside the box”. If we look at blockchain applications (and there are many already) we can begin to see how versatile the platform is and how it can be used. But just like the saying goes:
”…it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.” – Abraham Maslow
This is referred to as the Law of the instrument and is a common cognitive bias and is especially important to consider when exploring new technologies (like blockchain). Just because it’s new doesn’t mean it’s right for everything. So while it is important to think outside the box, we must still at the same time also consider the most effective tool for a job. It’s more important to identify the job and then pick the right tool then to take a tool and try to find a job it will do.
This frames my thinking about blockchain and the future of software as I see it. I believe this is a powerful tool and will be the basis for many new innovations in the future. I also believe that with this tool we will be able to improve security, openness, transparency and trust in software systems. And finally, I believe that blockchain is a fantastic tool, but it should be treated as a tool and selected only when it is right for a particular “job”. We should push the boundaries. We should explore new technologies. We should do this thoughtfully and intentionally. Join me and let’s begin creating the software for tomorrow’s internet.
Interested in hearing more about what I’m thinking and working on? Let me know and I’ll write a follow up post with some greater detail; otherwise I’ll share it with you when it’s ready.
March 5, 2018
March 5, 2018
February 25, 2018
Release with Purpose
One of the topics that frequently gets discussed in engineering circles (or maybe I should say product circles) is the concept of when to release. I say product circles because engineers I am convinced would be happy to keep a project in continuous improvement forever. It’s in our blood. We have this innate desire to continue to make something better and every time we look at a project we’ve found a half dozen ways we can continue to improve it before we call it a product and release.
This is a blog for everyone though, not just engineers so let me take the back a level and make it more of a general concept discussion.
The perpetual debate that happens in any company who releases software or ships a product is about when to ship and when to perfect. And there are a million different pieces of advice and ways to look at the situation. Apparently, based on the majority of those, most people tend to hold on to things too long and never ship. As a result the most common advice is to Release early, release often and iterate. Great companies have pushed this mantra in the past and possibly one of the most well-known of the modern era, says this:
Hackers try to build the best services over the long term by quickly releasing and learning from smaller iterations rather than trying to get everything right all at once. To support this, we have built a testing framework that at any given time can try out thousands of versions of Facebook. We have the words “Done is better than perfect” painted on our walls to remind ourselves to always keep shipping.
“Done is better than perfect” and “Move Fast and Break Things” are two of the common phrases associated with the Facebook movement. Both of these focus on this same sentiment. Speed and early releasing is more important than waiting for perfection.
I understand the mentality. I agree with the sentiment. And I encourage others at Mautic and in the community to think this way as well. There’s truth in saying that “we must quiet our fearful ‘lizard brains’ to avoid sabotaging projects just before we finally finish them”. But, it’s also important to not release prematurely. While this caution doesn’t need to be issued as often (as discussed above) I was discussing a tool improvement yesterday with one of our engineers, shout out to Don Gilbert for being a weekend warrior, and the conversation subtly shifted back into this debate. He looked at me and said, “We don’t want to delay a release for perfection.” My immediate response was, “We do want to delay a release for purpose.”
What I meant by that statement was simple: When releasing a product into the market, or really releasing anything (marketing materials, sales decks internally, literally anything) we should release intentionally. And if there’s something fundamental that needs to be improved or changed before a release, then hold the release for a purpose. A specific purpose. In this way you’ll release early and often, but you won’t release a problem. If you have a real and definite purpose for delaying a release you’ll fix that reason and still release. It will still be fast and it will still be frequent. But it will be polished.
February 25, 2018
February 20, 2018
Cyborgs and AI
I am almost embarrassed to write this due to the lateness with which I am apparently reading this particular blog post, but for those that have beat me to it I beg for your patience while I get a bit excited in sharing my personal discoveries. Okay, with that being said let me dig in and get a bit more specific.
I recently stumbled across this article, Neuralink and the Brain’s Magical Future – Wait But Why and it’s done wonderful things for putting real words to some of the thoughts I have been entertaining regarding the future of AI and humanity. If you have a free 30 minutes (maybe an hour or two) then I can think of very few things more worth the investment of your time. Take a deep dive into this line of thinking and expand your horizons.
I can tell you that a few of the concepts here touch on topics that I have personally been very excited about and have begun discussing with those that work closest to me. I agree with the observations concerning the direction of our current technology and I also agree with the concept of how we successfully navigate the perceived dangers of AI. Bottom line: An integrated AI is where I place my hopes and intents for the future. And although there are a couple of areas in the post where I take a different line of thinking from those shared in this article there are many others where I agree. A fully integrated tertiary layer that improves upon our “output” will revolutionize our future. External vs Internal supplemental AI seems a moot point that society will need to reconcile in time.
If you’d like to read what I’m reading and are curious what my thoughts are about where we go from here, then this article gives some great insights to get you started. Read it and lets talk. Read it and challenge your own thinking. Read it and challenge mine. As I shared on my short form post, Opinions this ability to form, express and differ in those opinions is what will improve us all.
February 20, 2018
February 18, 2018
February 16, 2018
February 15, 2018
Exploring Serverless PHP
I love reading about cutting edge technology and exploring what will be coming next in tech. Most recently I have been reading everything I can about serverless architecture given the growing number of articles and discussions surrounding this trend.
Most recently I read this article, Rise of Functions as a Service: How PHP Set the “Serverless” Stage 20 Years Ago which very clearly discusses the changes in our technology even if it is several months old. I really liked the comparisons to the early days of PHP and how it relates to where we go from here.
I am eager to see how things like serverless architecture can be implemented in modern software applications like Mautic, or others, but continue to struggle with the fundamental disconnect between these FaaS platforms and a PHP-based software application. I am beginning some exploration in this regard through the use of some different connectors (like the one shared in the article above).
Anyone interested in learning with me (or showing me what they have already done) I have begun my experimenting with this framework: Serverless Framework – Build applications on AWS Lambda, Google CloudFunctions, Azure Functions, AWS Flourish and more and plan to update my blog with my progress as I explore this in greater detail. So far I’ve discovered several libraries that offer integrations and/or frameworks for PHP and have settled on using GitHub – araines/serverless-php: PHP for AWS Lambda via Serverless Framework this resource for starters (don’t hold me to it as I may change this later). I liked this one because it uses Symfony components which is what Mautic uses in core already.
I don’t know if this will be something that we use with Mautic, but I am proud that we currently use the most well-recognized (and still considered cutting-edge) software with Kubernetes. There are always challenges when building out large-scale applications particularly when you want to balance contributing to an open source distributable platform and also create a world-class SaaS platform based on that same code. Kubernetes and Docker containers have given us the ability to do this and I’ve been incredibly pleased with the results so far. (If anyone is interested in hearing more about that I think it might make for an interesting topic for a future post).
For now, I’ll continue to explore how Mautic (and other PHP applications) might be able to take advantage of Functions as a Service frameworks to scale even faster.
February 10, 2018
Phone Screen Experiment
Recently the hype has been growing surrounding the removal of various social media apps from cell phones. Whether the action is due to social pressure, personal resolution or otherwise the outcome is the same – reduced social media usage. I’ve read story after story of people doing this either as an experiment or as an attempt to overhaul their time spent on social media.
In fact, most recently I was excited to hear my good friend, Dries Buytaert also started a blog series outlining his process in replacing his social media posts with more relevant and meaningful posts on his own blog. Personally I think this is the best approach I’ve heard of so far.. Studies have clearly shown that removal of one social media app merely causes a corresponding rise in use of a different one. Dries’ approach carries many benefits not only in the decrease of social time spent but possibly the greater value lies in the increase of quality content that he is now placing on his blog. I’m also a huge fan of the furtherance of an open web mentality that comes as a result of his decision.
I removed the various social media app from my own phone late last year and have found it to be an excellent decision. I’m spending more time on what I consider meaningful activity. But as I’ve progressed this year I’ve continued to read blog posts (like this one) that would suggest the replacement principle is still at work even in my phone usage and even in the absence of social media. And so I am going to continue on my own journey of exploration and hopefully self improvement. Let me explain.
Many individuals like to share the home screen of their phone. It tells everyone what apps they deem most important and what apps they want to be able to access quickly. Here’s my current home screen.
That’s not a mistake. Not only is this my home screen (because I know some of you will think I’m cheating and using screens to the left or to the right) this is my only screen.
My current phone of choice is a Google Pixel 2 XL . I’ve been using the Pixel line for 2 years and love it This means I’ve been using the Android OS for a while and it allows this level of customization. Let me explain my thinking and the reason behind this change.
I should begin with the problem I wish to solve. Too many times I have found myself grabbing my cell phone and tapping an icon simply to occupy myself. Whether that’s out of boredom, awkward shyness, or habit. None of these are acceptable reasons and yet countless times a day these feelings would trigger my action to grab my phone, unlock it, and tap an app. I believe this is a complete waste of time, and more importantly a waste of brain power.
Secondly I’ll share my idea around a solution. I found that 9 times out of 10 my mindless phone usage was begun by opening an app on my home screen. Now, I’m sure you can already guess why I made the adjustments to my home screen that I did and although drastic I’d like you to read about my observations before coming to your own conclusions that I’m crazy or pointlessly radical.
By taking this drastic action I now had to click the home icon (the middle button in the screenshot above) and then scroll down to the app I wanted to open.
Side note: In addition to changing my home screen I also downloaded and applied an icon pack to all of my icons. This keeps the apps from looking familiar and forces my brain to actually look at each app’s name to find what I’m looking for. I may write a subsequent post on this due to some additional interesting finds.
Now I know you’re thinking that I’m wasting valuable time by forcing myself to jump through the hoop of opening up the app screen and scrolling for the app I wanted to use but the truth is actually quite different.
I discovered that the majority of my legitimate phone usage came from responses to notifications. Keep in mind that I’ve removed social media apps from my phone so the notifications I see are now mostly surrounding email, Slack, text, or other personal and relevant communications. So first observation: I was not significantly hindered in my interactions with others as a result of this home screen decision. In fact, my engagement levels were the exact same on tasks that involved actual phone tasks (as opposed to the mindless phone usage).
Secondly and perhaps even more alarmingly I discovered just how frequently I would grab my phone and unlock it without having a purpose to do so. I’m sure everyone knows this is obvious but now that my apps were a two step process further away from my finger it broke the mindless app tap that normally existed after opening my phone up. Instead now I found myself staring at my blank home screen unsure what I was actually doing. This was amplified by the times that I actually tapped the home screen button and found myself staring at a list of apps with no idea why I was there. Wow. For me this was a huge wake-up call. I had no idea the overwhelming number of times I was mindlessly opening my phone.
There are all types of excuses for not doing something drastic like this but I’d suggest ignoring your dopamine-addicted tendencies and consider radical action. 😉 I can tell you from personal experience that so far this experiment has been an incredibly eye-opening opportunity and one I plan to continue. I’ll share further observations in future posts as I continue this journey into proper phone usage and how to take back control of my time and my mind. And of course I would love to hear your thoughts and opinions in the comments below regarding your own phone decisions and radical action.
January 27, 2018
The Importance of Process
Moving fast often has many side effects; whether you’re driving fast in a car, skiing down a mountain at high speeds, or falling from the sky with a parachute, all this speed has side effects. Our goal is to minimize the negative side effects while maximizing the positive ones. (If you don’t know what I mean by a positive side effect of moving fast then stop right there. Go figure this out first. The adrenaline rush is second to none.)
But instead of talking about the highs that come from moving fast I want to spend a couple minutes looking at the lows. I want to explore those negative side effects that come up whenever we’re moving fast. And rather than exploring the entire range of ways we can move fast I want to focus on just one area that is becoming more and more common in today’s world and one with which I have personal experience. I want to share a sure fire way to minimize negative side effects caused by moving fast when building a product.
This is important because of the myths and cliche statements we hear commonly shared in the mindset of today’s startups. These phrases are tossed around as common vernacular and lingo that every startup should claim as their ‘mantra’ for existence. But this mindset is dangerous and potentially deadly for longterm success. Here’s a common example that many of you have probably already heard:
“Move fast and break things.” – Facebook
This thinking is a pervasive cancer that if followed without discretion and proper context leads to those dangerous side effects I mentioned earlier.
To be clear, the problem is not in moving fast, nor is the problem in breaking things. The issue is deeper and more subtle. Moving fast is a requirement for success in the startup scene today. It seems with every advance in technology so the pace of a startups rise to success must also grow exponentially. Speed is equated with success and the giants who paved the way seemingly preach this gospel without regard for side effects. But I’ve gone long enough without providing more context for what I am suggesting. If moving fast is not the problem what is?
The problem does not lie in breaking things either. There’s nothing wrong with breaking things as you move fast. It’s naturally an inevitable side effect and I would suggest it is not a negative side effect. But now we’re getting closer to the true issue.
We must learn from what we break and we must move fast in fixing them when they do break. As we move we have to build in proper processes. These processes help to govern our speed and shape our direction. And this is where the fault becomes evident. If a startup or a business moves fast without the proper process than mistakes will snowball and problems will grow into an insurmountable obstacle. And that is why processes are so important. But let’s get specific for a bit and evaluate what those processes look like practically speaking.
1. Get Past Repetition
The first process that needs to be established in your quest to move faster is to get past repetition. This process means when you fail and break things you want to protected yourself from doing it again. You don’t want to fall into the dangerous trap of repeating your past failures. Failing is acceptable and part of the process. Repeatedly making the same mistake or breaking the same thing is not acceptable. This means you need to diligently set up a process to help you guard against this. Now you may be wondering what this looks like. The first and possibly greatest way is listed as another separate process below (Document Failures).
Here are a couple practical ways you can get past repetition.
- Share information within your team. Whether this is done through regular and frequent all-hands meetings or done informally in chat conversations. It is important that everyone knows how the company is doing where you have succeeded (and failed). Knowledge truly is power.
- Train New Team Members. Much in the same way that the first point educates everyone on the team by giving them current information about the status of the team success, newly joined team members need to be brought up to speed on those conversations. Create a powerful and robust database of the company’s history (and I don’t mean the marketing story about how the company has risen through startup struggles to be a powerful force to be reckoned with.). Make this down and dirty. Make this real.
2. Use Positive Reinforcement
The second process you should setup as you move faster in your startup involves the implementation and use of positive reinforcement. This is incredibly important because failures and mistakes can be discouraging. Team morale may falter and if this is not guarded against this will lead to a downward spiral, increased discouragement, and ultimately failure. Positive reinforcement means looking at your failures not as catastrophic and dismal but merely a part of a greater journey. Positive reinforcement encourages failure for the sake of growth.
Now of course I don’t mean go seek out failure so you can grow. That would be crazy! Instead, when failure occurs (and it will) seek out the lesson to be learned, the means by which that breakage can make you stronger for the next time. Encourage your team members by reminding them of the big picture. The best way to rise up from a fall is to turn your eyes towards where you are going.
3. Ask the Right Questions
The next process to build out involves a standard to be created at every point when a failure occurs. Don’t ignore failure, but don’t blindly encourage your team either. Instead, do a proper post mortem on each failure point. Know why you failed and know what you can learn from it. But I didn’t name this particular process Error Reporting. Instead when you break something you need to be able to diagnosis it properly. This means above all else you must ask the right questions after you break something. This can be tricky because who is to determine the right questions?
Asking the right question meanings that you must first have a strong understanding of the objectives. But thankfully, when the above processes have been created (using positive reinforcement and protecting against repetition) then everyone knows what the goal is. And knowing the goal means you can ask the right questions. As you can see these processes are linked. They work together.
4. Redirect Appropriately
When moving fast and breaking things there’s another important process you need to create. Redirect as needed. That’s right, moving along at breakneck speed doesn’t mean doing so blindly or without direction. Only a fool would not take the experiences and failures and learn from them. Learning from them is more than asking the right questions, it’s more than telling the team, and it’s more than staying positive. Learning from mistakes means acting on the knowledge gathered and using that knowledge to redirect or change course.
I’m sure this is more easily understood than the other processes and its different for every startup. But the takeaway is the same regardless. Learn from your mistakes and change your path as a result.
5. Document Failures
Finally, the last process I’ll describe for you is one that has been hinted at repeatedly through a variety of the other processes. As I suggested earlier many of these processes are interlinked and co-dependent. Of course you can establish a few of them without the others. But implementing them all will give you a significant advantage. And it should be said that you may already be doing some of these processes already just with different names or implementations. Ensuring that your startup in one way or another follows these processes will increase your likelihood of success and growth.
So, the final process is documentation. Writing down what happened, when it happened, and most importantly why it happened. By having this level of detail in your documented mistakes you’ll prevent yourself from creating the same ones again (or at least guard against it). It all ties in together.
Write it down, share it, learn from it, encourage one another, redirect as necessary. Follow these processes and you will not just blindly move fast and break things. But you will instead move fast with a purpose and break things as you make them better.
This simple acronym, GUARD, will help setup the right process and allow you to move fast and break things…the right way. With intentionality and proper direction you can accomplish incredible things and truly accelerate your growth. Without these processes and guidelines you’ll fall victim to the same trap as so many other failing businesses who think moving quickly means constantly failing. Build the right processes and watch your productivity explode. Who knows, maybe something you say will be the next ‘mantra’ that everyone is quoting.
January 3, 2018
The MIRROR 2017
Well recently I wrote about my New Year’s Resolutions and I admit my post was a bit of tongue-in-cheek and felt it only fair to share something with a bit more substance. I figured the best way to do this was to share something meaningful which I spent a significant amount of time writing. This was meant for internal use only but in the interest of openness and transparency I’m going to share with the community.
Every end of year provides an opportunity to reflect back on the previous 12 months and identify the successes and the stumbles that occurred. A good look at oneself is hard but extremely helpful. Knowledge is power and if we have a good understanding of what we truly know we can be more powerful. Honestly there’s few things worse then to be “in the dark” about something and if we don’t know what happened in Mautic or what others are doing then we are completely clueless.
Below is a document I created that will help you understand every aspect of Mautic. If you’re involved in Mautic then this document will give you a great review over what all has been done in the past year. If you’re not yet a part of this incredible community then maybe this deep look at every aspect of Mautic will help you understand why Mautic so special. And even better this may give you some ideas on how you might get involved in the Mautic community.
I will probably comment about various aspects of this doc in future blog posts but for starters I’m merely going to share the doc. Enjoy the reading!
January 2, 2018
New Year’s Resolutions 2018
This time of year the talk of resolutions, of change, and of self-betterment seems to take center stage. Everyone focuses on the things they want to better in themselves for the coming year. But why do we do this? Why do we take this time to lament our shortcomings and set goals for the future?
The last question gives us a good hint at the reason. The “death” of one year and the subsequent “birth” of the next year is a perfect opportunity for us to put to death the bad habits we identify in ourselves and try to set in place those habits we wish to maintain.
Did you know the tradition of making these resolutions dates all the way back to the Babylonians? They held a giant multi-day party and made oaths to the gods to repay any debts they owed to others and return anything they had borrowed. They made these promises full-knowing the massive consequences of failing to keep these vows: death (because displeasing a god surely meant death). I think that might keep you on that treadmill for a day or two more. Or at least keep you from making a promise you don’t have 100% resolve in keeping.
A study performed in modern times demonstrated that less than half of those making New Year’s Resolutions were able to keep them beyond 6 months.
But there’s more research (of course there’s more) due to the extensive and timeless nature of these resolutions. In fact there have been numerous studies and reports created surrounding this concept of resolution-making and new habit forming. And with modern technology some interesting observations have been made.
With the rise of social media there has been an interesting phenomena observed:
”Identity-related behavioral intentions that had been noticed by other people were translated into action less intensively than those that had been ignored.” When Intentions Go Public
Whoah, did you catch that? In plain English, when you tell others about your intentions you seem to think of that as partial success and then don’t both with actually putting those words into action! Or to put it another way, if you want your resolutions to be successful…don’t tell anyone. Don’t broadcast your goals all over social media and consider yourself better instantly.
If you have the time, the study I quoted above is a fascinating read and speaks to some interesting characteristics of the human psyche. It’s a good warning for what so many others tend to joke about: show discretion with what you share on social media. This seems to be particularly true if you want to improve yourself and make some new resolutions for the coming year.
Given our newly discovered knowledge I’ll share my New Year’s Resolutions for 2018 below and I would encourage you to do the same:
- xxxxx xxxxx xxx xxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xxxxx xxx xxxxx xxxx xxxx xxxxxxx xxxx xx xxxxxxx xx.
- xxx xxxxx x xxxxx xxxxxx xxxxxx xxxxxxxx xxxx xxxx xxxxx xxxxxxx xxx xxxx xxxx xx xxxxx xxxx xxxx.
- xxxxxxx x xxxx xxxxxxxx xxx xxxxx xx xxxxxx xxxx xxxxx xxxxx xx xxx xxxxx xx xxxxx xx xxxxxx xx xxxxxxxxx xxx xxxxxx.
And though I may not approach these with the same fervor and fear that the Babylonians may have held, I do hope I’ll be able to share my success with you as 2018 comes to a close. Whatever you may choose to do for your own resolutions and your goals for the new year that lies ahead of you – I wish you all the success and best of luck as you strive to be the best version of yourself.
December 21, 2017
Re-Launching Mautic Meetups
Recently I received an email letting me know that my subscription to Meetup.com had expired and as a result the Meetup groups for which I was listed as organizer were now listed without an organizer and in danger of being shut down.
This got me thinking; if I had a problem with keeping up with one more subscription then I imagine there were others as well. Digging in even deeper I discovered there were other Meetups not forming simply because of the costs associated with the existing platform. As a result Mautic was fighting for consistency and a unified platform for the community merely due to the tool being used! Our community was limited from growing properly not because of the community but the tool we were using. Quite contrary to the very reason we were using the platform!
This gave me an idea. What if there were a better way? And just like that a new Mautic initiative was undertaken. I reached out to a few of the community who I suspected would be interested in working on building something better and we got to work.
Identifying Our Needs
The first thing we knew we needed was to clearly identify what we needed from a group networking and meeting solution. As it turns out there is not necessarily a long list of requirements that we simply must have in a tool.
Our current groups were semi-organized, gave people a way to join them, share upcoming event details, and in some cases share photos from past meetings. That doesn’t sound like something too difficult to find in a solution. Oh, and there was one more objective that was ranked quite highly on our list. We were intent on finding a solution that held to the same core beliefs and standards that Mautic holds. This meant we wanted an open source solution. Based on the list of our needs we believed this was completely doable.
Aside: I believe strongly in using open source solutions. I do so when the tool is the best at what it does and performs better than other solutions available. In other words, open source is not (and should not) be the sole deciding factor when selecting a tool.
Evaluating The Alternatives
The next task we undertook was to evaluate the various solutions available keeping in mind the list of requirements we wanted to see. The list was surprisingly shorter than anticipated. There was the obvious incumbent that we had used before and we knew the shortcomings associated with that platform. Then there were a variety of hybrid solutions where we could make something work if we cobbled a few different tools together or if we chose to neglect different aspects from our requirements list. That sounds rather problematic especially when our list is rather short and honestly quite simplistic.
Finally, after some thought and much review we settled on something far easier and quicker than we anticipated. With the help of a plugin for our existing website we could extend our current CMS to enable groups. This met the needs we had, increased our community opportunities, and finally much to our delight was an open source solution.
Once the decision was made the process of implementing was undertaken. This solution encouraged us to think about two more questions we hadn’t initially expected. The first question was quite relevant to our current initiative and the second question was far, far more existential.
- What do we call our community meetings?
- What is the main purpose for Mautic.org?
I’ll answer them in reverse order. The second question came about because we recognized that with the integration of groups directly into our website perhaps now was a time to evaluate the purpose and reason for our main website. What purpose does it serve and how does it enable our community to be bigger and better? Our current goal was to identify a way to enable our community meetings and not answer such a large question but there are a few minor steps we could take to better prepare ourselves for the future so when the time came to answer this question we would be prepared and ready.
The first question was one we new we had to answer and wanted to create something that resonated with our community and also hat-tipped to the many other open source projects that had paved the way for our success. And of course, it never hurts to create a name that’s unique and special to our community.
I am excited to share that after only a little deliberation we chose to call a community meeting a MautiCamp. These MautiCamps are a way for our community to meet in person at cities around the world on a regular basis. MautiCamps are organized and lead by local volunteers. Our existing MautiCamps are an incredible list of locations literally around the globe. It’s amazing how fast they have grown even in spite of a difficult community platform. I believe that this new open source platform built directly into our website and available to everyone completely free will make our community grow so much faster.
There are many more ideas and suggestions related to our MautiCamps that I want to share. Ways to make them even more successful and ways to empower volunteers to get involved. I can’t wait to share more. If you are a current MautiCamp organizer I would welcome the chance to talk with you, get your ideas about what’s been working and what needs improvement and share some of my initial thoughts for your feedback.
If however you are not yet in a MautiCamp or don’t see a MautiCamp close to you, or focused on a topic you’re interested in, then I have a challenge for you. Why not organize one yourself? There are resources available (and more coming as I suggested) to help you create a vibrant local community. You’ll be amazed at how many others may be close by already and interested and what better way to find new friends, learn new things, and grow your business then through the awesome power of Mautic.
December 16, 2017
Upcoming Mautic AMA
2017 is drawing to a close and it’s been a whirlwind of a year. There’s been so much going on in the Mautic universe it can be a bit overwhelming. Whether you’ve been around for the entire ride, or just joined us I have no doubt that you may have a few questions about things.
As you may have begun to notice I’ve been ramping up my efforts on sharing information. One of my focuses as we close out this year and start the next year involves how to empower more people in our amazing Mautic community. To that end I have been working on the best way to share information, organize my thoughts, and help get everyone on the same page in terms of Mautic: where we are, where we’ve been, and possibly most importantly – where we are going. I’ve shared several posts recently on my blog (here, here, and here) which give a few insights but I believe there are even more ways I can improve. Because I think there are probably still questions outstanding that haven’t been answered yet.
So, in order to help with that I am preparing to do something for the first time in Mautic history. I am excited to announce our first ever AMA (ask me anything). This will be an opportunity for you to ask your questions directly and hopefully get immediate answers. There’s general guidelines for the session and of course any deep technical questions or bugs you just want solved are not really the purpose of this time. To put it bluntly I won’t be “live fixing” anyone’s website. 🙂
However, questions about how Mautic should be used, ways to get involved, questions about the roadmap, our community future, leadership structure, GitHub projects etc…these are all welcome topics and I will do my best to give you good, clear, concise answers. And I give you my word, if I don’t have an answer – I’ll be honest enough to tell you I don’t know and point you to a resource that might be able to help.
The goal of this AMA is to ensure our global community, and you as an individual, feel confident in what we’re doing and also where we’re going. I hope this will be a fun, enjoyable and informative session where we can all learn and improve.
And lastly, if all goes well I hope we will hold more of these in the future. I’m not going to dig into specifics about what to expect (Remember this is our first one, we’re going to be learning as we go). But here’s what you need to know now:
What: Mautic’s First Ever AMA
Where: Mautic’s Slack Channel – # ama
When: December 21, 2017
Time: 10:00AM EST (The World Clock Meeting Planner – Details)
What To Bring: Your questions!
See you there!
Oh, and if you can’t make it you can still send in your questions.
December 13, 2017
Standardizing GitHub for Product Management
GitHub is a fantastic tool for organizing code, handling issues, and tracking feature requests. Mautic has always used GitHub for its code repositories and more. But there are struggle that come from tools like this and without proper organization or structure it can quickly make a project become a chaotic jumble of questions, feature requests, and code. A lack of standardization destroys an otherwise useful system.
I am proud of the organization that Mautic has around issues and the use of labels. This has historically been something we’ve done somewhat well. We’ve also made extremely good use of the basic code repository and release functionality. You can see this well-organized approach by diving into the Releases tab and noting how every release going all the way back is documented and tracked. It’s refreshing to see things like that and speaks to the consistent attention to detail we’ve worked so hard to maintain.
But I firmly believe there are always things that can be improved and our GitHub usage is no different. So I sat down and looked at our repositories and began exploring ways we could improve our organization and structure around our already amazing product.
Improving and Explaining Labels
I shared at the beginning that Mautic is very good in its use of labels as it relates to issues and pull requests. But I think sharing what those labels mean and how they are applied is helpful as we discuss a standardization of our GitHub account and organizational structure. Plus, I’m not sure it’s been clearly outlined recently how those labels are used.
Here’s a current list of our existing GitHub labels, when they are applied to issues, and how they should be interpreted.
- Backlog: Applied to any issue left in an open state longer than 6 months, not automatically applied yet but will be in the future.
- Bug: Applied to issues directly related to a bug in the production code.
- Code Review: Applied to issues that require additional review of code by core and community developers before merging will occur.
- Duplicate: Applied to issues that have already been submitted. New issues will be closed in deference to older ones.
- Feature Request: Applied to new features or modifications to functionality that is different than originally intended.
- Has Conflicts: Applied to PR’s mainly that conflict with other parts of the Mautic codebase. Must be resolved before merging.
- L1: Applied to issues where the fix is deemed lowest level of knowledge to create. Alternatively applied to PR’s where the testing is considered minor in time and intensity. Considered a Level 1 item.
- L2: Applied to issues where the fix is deemed to require a moderate level of knowledge to create. Alternatively applied to PR’s where the testing is considered moderate in time and intensity. Considered a Level 2 item.
- L3: Applied to issues where the fix is deemed to require a significant level of knowledge to create. Alternatively applied to PR’s where the testing is considered significant in time and intensity. Considered a Level 3 item.
- Needs Automated Tests: Applied to pull requests submitted without the appropriate unit tests. Every pull request requires unit testing of code.
- Needs Documentation: Applied to pull requests submitted without the appropriate documentation. Every documentation requires accompanying documentation.
- P0: Applied to issues considered critically important to resolve. These issues are ‘showstoppers’ and ‘break’ the entire Mautic system.
- P1: Applied to issues considered detrimental to Mautic functionality. These issues are important but do not stop day-to-day operations.
- P2: Applied to issues considered annoyances to Mautic functionality. These issues are high priority to fix but do not restrict usage.
- Pending Feedback: Applied to issues or pull requests that require further information or discussion before being added into work queues or testing.
- Pending Test Confirmation: Applied to PRs that still require a second successful test confirmation. /Every Pull Request requires 2 successful +1 tests before merging./
- Ready To Commit: Applied to PRs that have been tested and are ready to be merged.
- Ready To Test: Applied to PRs that have been submitted with completed code and are ready for community testing.
- Translations: Applied to issues that are related to translations. /All language translation strings are handled by Transifex/
- User Experience: Applied to issues and PRs that are related to how the end user uses Mautic and experiences the platform.
- User Interface: Applied to issues and PRs that are related to the user interface directly, typically these are cosmetic problems.
- WIP: Applied to PRs that are not ready for testing. These are Work In Progress and represent work actively being done by another individual.
I recognize that list feels long and possibly a bit daunting but I trust the somewhat exhaustive explanation will help clarify how Mautic applies labels to issues and pull requests and makes your life a bit easier as you contribute to the Mautic platform. Other labels may be added in the future either for temporary usage or as additional labeling is needed.
Improving Feature Requests
The way that Mautic handles feature requests is quite simple at the moment. We have a label marked Feature Requests which is applied to every issue created that represents a new feature request (See I told you it was simple.) There are a few problems with this basic approach to feature request tracking. First, this drastically clutters and increases the total number of “issues” on the project (notice the screenshot above – 728 Issues). This number actually includes 314 Feature Requests and inaccurately skews the number of issues. Second, with the current system feature requests are lumped in with every other issue in the system and it makes it exceedingly hard to identify what features have been requested and which are the most popular. This leads me to the first standardization I am recommending we implement in GitHub.
Standardize Feature Request Voting
Moving forward I recommend that the somewhat new “reaction” feature in GitHub be used for feature voting.
Specifically, only the following two reactions should be used for feature request voting: 👍 and 👎. A thumbs-up indicated a +1 vote on the feature and a thumbs-down indicates a -1 vote on the feature.
This will then allow anyone to quickly view the issues on GitHub and with the proper query be able to see a list of feature requests sorted by popularity. To make it easier for you here is the exact link you can use:
As a bonus side effect of this standardization we will be able to programmatically pull this list of issues via an API and allow us to inject a Top Feature Request List in other locations as well.
Improving Pull Request Testing
The second area where I think a bit of standardization may be helpful involves the testing of pull requests. Currently there is a core team in the community managing the testing and committing of pull requests. This ends up appearing to be a bit unclear and not as visible as it should be to the community as well as not demonstrating a clear path for community volunteers to grow into various leadership positions. The core team is open to community members who demonstrate their ability to properly test and merge code contributions. However, the privilege of that responsibility has to be earned through a building of trust. That trust can’t be established without some method of consistent demonstration of personal reliability.
This brings about my second recommendation for GitHub standardization.
Standardize Pull Request Testing
Our Mautic community needs greater empowerment as I shared above in playing an active role in which pull requests are merged. Our volunteers also need the opportunity to grow into greater leadership roles and become critical parts of the core team. This means community testing of pull requests. Specifically, a +1 listed as a comment on a pull request implies that the developer has tested the PR in accordance with the test procedures listed in the pull request description.
Alternatively, adding a -1 comment signifies the developer has followed all the same steps and procedures outlined in the pull request but did not find the fix to successfully solve the issue.
Notice in the above comment additional text was added (this is acceptable as long as the comment begins with the appropriate +1 or -1 designation.
And you guessed it, as a bonus we can programmatically use the comment text to extend the use of GitHub to other systems and improve communications as well as automations.
It may not sound like a terribly fancy system, or even a huge difference in how we manage our GitHub account currently but these little improvements and standards in how things are managed make our entire development process better and more streamlined. And the more organized we are, the more efficient we can be. The more efficient we are the better and faster we can grow.
You now have all sorts of new knowledge and insight into Mautic development, go find your favorite feature requests and 👍!
December 11, 2017
Creating The Mautic Credit System
Recently I published a blog post Recognizing Mautic Code Contributors. If you haven’t read that post I’d recommend taking a few minutes and reviewing it before continuing. I want you to review it because there are good things and bad things in that article. While any level of tracking and metrics is better than none there is always room for improvement.
In fact, one of the things that I have been most focused on in recent months has been properly tracking volunteer activity across Mautic. As you read Github does provide some nice metrics to allow for some level of acknowledgement and recognition (purely as it relates to issues and pull requests) but this is such a fractional and minor view of the Mautic community I knew we still had a long way to go. I also knew my good friend Dries Buytaert recently shared a blog post about the credit system implemented in the Drupal community and this reminded me of the work that had already been done in this area. (What better way to build a system then on the shoulders of a giant.) And so we began crafting a Mautic credit system.
The Idea of Merit
As with any system we wanted the Mautic contributions to be recognized in a special and unique way. After consideration of both fun names as well as common names we settled on something that made logical sense and also had a fairly nice benefit of being an ‘M’ word. In the Mautic community a volunteer can earn Merit through a number of different ways. Below I’m going to outline some of the ways a community member can earn Merit.
Community Involvement: GitHub
We wanted to look at community involvement across a wide range of metrics beyond just GitHub, but at the same time recognized that there was much more activity going on in our repositories besides just issue creation and pull requests. And so we set out to create something special. I’d like to share with you some of what we’ve created so far and then outline what we plan to create next. Please keep in mind that everything is still very much in a beta stage and changes will continue to be made as the system evolves.
In the beginning we recognized those volunteers who contributed issues simply as a matter of volume and frequency. With the introduction of Merit we have taken that rather rudimentary beginning and created something much more intelligent. A volunteer can receive Merit based on a number of factors when opening, editing, or closing an issue. These factors include the level of difficulty of the issue, the thoroughness of the issue report, the adjusted status of the issue, the number of comments on the issue at the time of the status change and other factors. Sounds incredible? That’s because it kind of is.
Similar to issues the early days for pull request attribution and recognition revolved almost entirely around the creation of a pull request. The Mautic credit system again allowed for a fairly massive improvement to this basic implementation. Mautic contributors can receive varying amounts of Merit based on complexity of the pull request, the creation, and subsequent merging of the pull request (and other factors as well).
The very nature of comments on issues and pull requests is a tricky one as this can be the most abused area within a credit system. Volume of comments does not necessarily equal quality contributions. Merit attempts to intelligently recognize the value that a comment brings to the issue or pull request. I will be the first to point out that this area will require the most refinement and improvement as we learn what represents value. Merit will get better over time.
Community Involvement: Forums
But I knew we couldn’t stop with just the code in Mautic. In fact, this was only the beginning. The second area where Mautic needed to create some reward system was in the forums. Just as with the GitHub facet of the community I was interested in gaining a much more detailed understanding of how the community was growing and improving as it relates to our forums. And as I have shared before – the better our knowledge the better equipped we are to improve.
In the Mautic Credit System we provide Merit for a wide range of activities. One of the most obvious ways to gain Merit through the forums is by creating a post. Each post creation gives a certain amount of Merit to the forum poster. While this is the most obvious way it is also the lowest weighted method (again due to the nature of determining value associated with a specific post).
Forum Post Solutions
The greatest way to earn Merit through the forums is by solving another posters question. When a forum post is marked as a solution Merit is credited to the solution’s author.
Community Involvement: Slack
There is also value to the Mautic community knowing the activity of volunteers as they engage in conversations within the community. Volunteers in Mautic receive Merit when they log in to the Mautic Slack team, when they log in for consecutive days, and when they login and post messages to channels. As with other ways of gaining Merit the Slack engagement method is a constantly changing algorithm and will improve over time.
Community Involvement: Meetups
Mautic Meetups are offline events but they can still be (and should be) a way for community volunteers to gain Merit. Clearly a community member that attends a Mautic Meetup, or even better organizes and leads a Mautic Meetup should receive Merit for their involvement. The Mautic credit system accounts for these events and offers Merit for them.
Community Involvement: Translations
Translations in Mautic are a huge part of our community and an aspect that makes Mautic truly impressive. As a result we wanted volunteers to be rewarded for the value their translations bring to Mautic’s global initiative. We use Transifex for managing language translations and the Mautic credit system will be deeply tied into this platform so Merit can be given based on involvement on translations as well.
New strings added to an existing language, language string reviews, new languages created, and language moderation are all parts of the Transifex translation system that are monitored for Merit.
Community Involvement: Blog
Mautic volunteers are active in many parts of Mautic and writing articles that are published on Mautic.org is an additional way to help share the Mautic name and be involved in the community. As a result Merit can also be earned for blog article contributions.
The Future of Merit
As you can probably begin to tell from the above list; Merit is a constantly growing and improving concept. I don’t claim it to be perfect and I certainly don’t think the work on this new Mautic credit system is complete. Every day brings new challenge as well as new opportunities. I have numerous other ideas where we can implement Merit. The beautiful thing about our current technology is the seemingly never-ending list of APIs.
And so the Merit system will continue to evolve and grow and improve. We will learn which of our existing systems needs to be tweaked and make changes based on our understanding and how the community grows.
Merit Implementation Team
Because openness and transparency is a cornerstone principle within our community and because (as I just shared) the future of Merit involves constant improvement and growth, a team is being created within the Mautic community help establish this initiative and make the result something the entire Mautic community can be exceptionally proud of.
Merit Open Source
You had to know this last paragraph was coming right? Mautic is one of the leading open source companies in the world. We build incredible open source software and we distribute it to the world for everyone to benefit from. Open source is in our DNA. Open source is how we see the world.
We are building the Merit platform as an open source tool so that other communities in the future can also implement what we believe will soon be one of the most robust volunteer recognition system ever built.
If you’ve ever experienced the Mautic community or used the Mautic marketing automation product you will already know that the products we create and that our community is responsible for are beautiful, sophisticated, powerful and yet easy-to-use. The Merit system is no different. This means it may be a little while before we tag a version 1.0 but it doesn’t mean we won’t be sharing our progress and incorporating feedback along the way.
Next Steps with Merit
I am excited to lead the Merit Implementation Team and help organize volunteers around this effort. I shared in the beginning of the post that we had already begun this initiative and I will be sharing frequent updates on this blog as progress is made. If you are involved in the Mautic community you will begin to see signs of Merit appearing in the various channels I outlined above. And finally your community member profile on Mautic.org will begin to showcase all your volunteer work.
I hope you will be as excited as I am about Merit as you begin to see the system we’re building and the ways it will recognize the invaluable contributions of our volunteers. Mautic is one of the best open source communities in the world and now we will have a practical and specific way to recognize and reward the great volunteers that make it up.
December 8, 2017
New Themes in Mautic
Unique landing pages and email templates are incredibly popular and critically important to most businesses. These are ways for the business to make an impression with their audience that stands out. They want to create a look that is specifically their own. And they want to make sure their brand is represented across all of their marketing efforts. Whether it’s a landing page, or email and form, or even something as simple as a notification Mautic wants to make that seamless with the rest of the brand.
Mautic has always been acutely interested in creating a platform that allows each marketer and each business the opportunity to create their brand experience across all their digital media.
From the very beginning of Mautic we created a way for there to be an infinite number of custom themes within Mautic. These themes included all of the elements I listed above. We wanted the marketer to have complete control over the entire marketing outreach; regardless of channel. This meant creating a way for marketers to use their own themes. And a way for developers and others to create additional themes and add them to Mautic .
Extending that even further there’s an opportunity in the future for community to create and then share their theme packs. This concept is nothing new to anyone coming from an open source community in the past (content management systems such as Drupal, WordPress and Joomla are notorious for their plugin systems and marketplaces). In Mautic we do things a bit differently since these theme packs offer more than a website theme or template. But the underlying principle remains the same.
The creation of this marketplace is the topic for another blog post which I’ll publish in the near future (hint: we’re getting things ready and we need your help!) For now I want to turn our attention back to themes and share with you some exciting news.
In the 2.12 release of Mautic we are including additional core themes. Keep in mind that usually themes are added to core only once in a great while. And this will be the case for Mautic in the future too, however, 2.12 is a special release. Since we have not yet launched our marketplace and there are so many using Mautic (Over 100,000 now using Mautic) we wanted to make sure we had incredible default themes available for everyone use. And we wanted to improve on the ones that were already existing in core. I’m so excited to announce that we will be including not just one theme, but four new themes in Mautic 2.12.
I won’t keep you waiting any longer, below are a few screenshots of those themes. But first here are a few things to keep in mind.
- Every theme is fully responsive and works on all device types
- Every theme includes layout and design for emails, forms, and messages
- Every theme is completely customizable
- And lastly: Every theme is completely free and available for immediate use
And now, check out these new themes:
These are some beautiful, responsive Mautic themes. Marketers will be able to take these four highly flexible and customizable themes to build a unique and special digital experience. I couldn’t be more pleased with these themes and I am thrilled to see them included in Mautic 2.12.
I’d like to offer a very special note of thanks to GaberNeighbor · GitHub for his time and creativity with these themes. And this gives me the chance to encourage others to do the same. Mautic is a great way for designers and developers to share their creative talent. Themes in Mautic are seen and used by over 100,000 businesses. Creating themes is an exciting way to get involved in Mautic.
If you’re interested in getting involved in this way be sure to check out the Mautic #design slack channel and read the Mautic Developer Documentation for other helpful theme creation resources.
December 6, 2017
Improving Mautic Query Speeds
Creating robust applications capable of scaling to handle millions of records in any industry is difficult. Often as a startup there is a focus on speed and agility in development, but that same speed comes at a cost. Fastest development does not always equate to best development. In the startup life we are focused on creating a product people want. Actually, scratch that, we start by thinking about creating a product people want; but in reality we quickly realize we have to create a product that people will love. And we have to do it immediately.
And whenever a startup moves that fast they focus on today’s issues. Most of the time that’s valid. Very rarely does a startup have to face massive scale problems. Those are tomorrow’s problems solved another day. Mautic was no different. We built our Minimum Lovable Product (MLP) and began an incredible journey. The speed at which Mautic accelerated while exciting is not (or should not be) surprising. Powerful free software performing tasks never before offered as an open source downloadable product is certainly something to be excited about. And the world was excited. But this acceleration has happened to others before and so in that sense Mautic wasn’t alone. Which means the problems and challenges we have faced (and the solutions we arrived at as a result) are also not unique.
I don’t say any of the above as an excuse, but instead as background. An introduction because Mautic developers are some of the finest in the world. My previous post recognizing the Mautic code contributors attests to the work they have done and continue to do. But there is a different type of thinking that comes into play when taking software to the next level. Things like query language becomes critically important. Here’s an actual example from Mautic.
$q->from(MAUTIC_TABLE_PREFIX.'leads', 'l') ->andWhere(sprintf('NOT EXISTS (%s)', $dncQb->getSQL())) ->andWhere(sprintf('NOT EXISTS (%s)', $statQb->getSQL())) ->andWhere(sprintf('NOT EXISTS (%s)', $mqQb->getSQL()))
This partial query is used whenever you attempt to load up a list of emails in Mautic. Normally this isn’t a big concern and the query above would have no issues. However, when dealing with a large number of contacts the above query results in significant slowdowns. What’s the solution? Well in this specific case,
howlinghuffy (Nick Hough) · GitHub came up with a rather simple and seemingly equivalent query that yielded drastically different results.
$q->from(MAUTIC_TABLE_PREFIX.'leads', 'l') ->andWhere(sprintf('l.id NOT IN (%s)', $dncQb->getSQL())) ->andWhere(sprintf('l.id NOT IN (%s)', $statQb->getSQL())) ->andWhere(sprintf('l.id NOT IN (%s)', $mqQb->getSQL()))
That’s right, by replacing
NOT EXISTS with
NOT IN the query yields the exact same results. But from a speed perspective the results are far from the same. Before the modification when Mautic managed 500,000 contacts this page took approximately 200.5 seconds to render. After the query was changed the same query takes 1.04 seconds. That’s right, 200 seconds down to 1 second. That’s a 200x speed improvement.
Are there other queries within Mautic that should be evaluated and re-written? Absolutely. And the Mautic community is best equipped to handle this challenge if they know what they are looking for. This was one example. Let’s go find others!
December 5, 2017
Recognizing Mautic Code Contributors
Recently I decided to do a little digging into Mautic’s contributor logs to see who was doing big things when it comes to Mautic’s marketing automation code. I also wanted to compare how we compared 2016 to 2017 since we’re fast approaching the end of 2017. It seems hard to believe that we’re almost ready to close the book on another year!
I thought the best thing to do would be to look at a variety of stats first comparing different metrics between last year and this year. One thing that I believe is very important to mention at the beginning before we start looking at specific numbers is how much of Mautic community growth can NOT be measured by a number or a specific number of lines of code. The following metrics simply report on one aspect of the overall community and should in no wise be considered indicative of the community as a whole (good or bad). The code aspect is merely one facet of our community.
Number of Developers
The number of developers contributing code to Mautic can be viewed in several different ways so I’ll share a few of them and let you draw your own conclusions.
This first graph shows the growth of developers and reviewers over the past two years. As you can see we have a steady increase in the number of “contributors” over the past 24 months. This time period covers Mautic versions 1.2 through 2.11 and does not include the month of December of this year, 2017. There are significantly more reviewers than developers but this is expected and both are still considered contributors as Mautic requires reviews to be done before a pull request can be merged. The Mautic company is identified by the dark grey in the chart as well. You can see that although proportionally Mautic the company (MCO) contributes the greatest number of developers than other companies there are increasingly more and more months developers and reviewers from the community.
There is an important side note that should be considered when reviewing the number of contributors and the relationship between MCO engineers and community developers. The amount of code contributed by MCO engineers comprises approximately 82%. This means that although the number of developers in the community is increasing MCO is still the largest single contributor by a significant amount.
But just to give a bit more recognition I’d like to share a specific list of the top 20 individuals who have contributed code to Mautic in the past year. This list isn’t exhaustive; there are many more (as the stats above demonstrate). But these individuals deserve a special specific callout for their work. Here is a list of the top 20 individuals and the number of lines of code they have contributed to Mautic.
- alanhartless*, 91179
- escopecz*, 55362
- dongilbert*, 39954
- mqueme*, 33581
- stollz, 22008
- virlatinus*, 20850
- GaberNeighbor*, 12113
- Maxell92*, 10950
- kuzmany, 6768
- thecodeine, 5525
- drmmr763*, 5287
- npracht, 3783
- MarkLL, 2541
- mikegillis677, 2309
- Woeler, 1546
- shulard, 1439
- jordan8037310, 964
- isleshocky77, 750
- lightweight, 678
- Dreiser*, 634
But code contribution is more than just lines of code. (I’ll be the first to suggest that the number of lines of code may be a terrible metric for judging activity…more on that later). So here is a second list. This list recognizes the top 20 individuals and the number of merged pull requests to the Mautic code. Again, they each deserve recognition for their contributions.
- alanhartless*, 628
- escopecz*, 390
- mqueme*, 150
- dongilbert*, 98
- kuzmany, 83
- virlatinus*, 76
- mbabker*, 37
- MaxWebmecanik*, 27
- drmmr763*, 23
- Dcoutelle, 18
- isleshocky77, 16
- arulrajsm28, 12
- phil-davis, 11
- shulard, 11
- SamWebmecanik, 11
- chandon, 10
- jordan8037310, 9
- Woeler, 9
- npracht, 9
Comments & Pull Requests
The second chart I would like to share with you is in relation to the overall comments and pull requests that the Mautic codebase has received over the previous 24 months.
This chart highlights the pull requests (in red) and the comments (in blue) as they have occurred since January 2016. Here again we see a gradual increase in contributions (trend lines added). As you would expect the amount of discussion surrounding code contributions increases over time and there is a gradual increase in the number of pull requests submitted as well. Peaks typically correspond with the various release dates of the Mautic code.
Code Comment Growth
The next chart demonstrates a comparison between comments on code between last year and this year (again keeping in mind that this year we are not showing data from the month of December).
I share this chart because it signifies the engagement aspect from the community. Again, comments and involvement increases around release times as you would expect, but the overall trend line demonstrates increased discussion occurring around the code over time.
Of course all of these charts above are specifically related to the pull requests submitted and as a result there is a significant portion of the contributor engagement that is not represented by these charts. The reason for this lies in the feature request section of GitHub. Feature requests are ideas generated by the community for future consideration within Mautic. Because they are not associated with a specific pull request they do not show in the above stats.
Current Code Status
Let’s now take a look at our current GitHub status and repositories and draw some conclusions about where we have come and where we are going to go from here. This is also a chance to identify ways we need to improve processes and new areas of focus for 2018.
Currently in GitHub there are 726 issues and 103 pull requests. Breaking the issues down further we have the following stats:
- 321 issues marked as Bugs
- 308 issues marked as Feature Requests
- 171 issues marked as Backlog
- 98 issues not labeled
- 20 issues marked as Pending Feedback
There are several conclusions we can draw from this. First, because we use GitHub for our bugs and feature tracking there is a slight skewing of perception when viewing the open issues on Mautic. Instead of there being almost 730 “bugs” in Mautic code, it is better to view this list with the appropriate filter applied. When you do this you’ll find that the relationship of bugs to pull requests is much closer to a reasonable ratio with 1 pull request existing for every 3 bugs.
The second item that is a problem for Mautic is the 98 issues that are currently unlabeled. This means someone has written up an issue but it has not been reviewed by anyone with appropriate permissions for applying a label. This is a problem. There are two possible explanations. Either we don’t have enough active community members monitoring the GitHub repositories to mark new issues with the appropriate labels or we don’t have enough community members with the knowledge to apply the appropriate labels and therefore they don’t add them.
Side Note: There’s also the problem presented by GitHub repositories and permissions that allow or disallow access to label creation and application of those labels. This is something Mautic has not yet solved successfully.
In the future we need to educate community members on reading and assigning labels to issues so that they can be correctly categorize as they are created. We also need to determine the number of community volunteers actively monitoring GitHub repositories. One of the first ways we can determine this number is by looking at the number of reviewers we saw in the charts earlier. This number gives a suitable estimates of those contributors capable of responding to issues and therefore also capable of attaching labels to issues.
There are several advantages to correctly categorizing issues. With proper categorization we can more readily identify which bugs need to be resolved first and which are feature requests instead of actual bugs. This will increase productivity from the developers writing pull requests as well as clarify public understanding of the project’s status.
Lastly, from the list of issue stats we can see that there are a significant amount of feature requests. We can draw a conclusion or two from this metric as well. Feature requests can mean the software is not completely fulfilling everyone’s ideal marketing solution (though this is a more delicate issue as Mautic should never attempt to be all things for all people). More importantly the relationship between number of feature requests submitted and number of pull requests submitted suggests that the community is made up of more end-users (marketers) or implementer types of users rather than coders or developers. In fact, when we take this ratio and compare it to the downloads from Mautic.org of the software we find a fairly similar breakdown of user types. This means the assumption we draw from the feature request submissions is accurate.
Understanding the make-up of our community when it comes to the Mautic code helps us to continue making improvements and growing. I hope that as you have read through this you’ve been able to get a better understanding of how I look at things and what the different metrics you might see or hear actually mean. Once we have a shared understanding of how to look at the Mautic codebase we will have a greater opportunity for moving faster.
January 24, 2017
A recent Simon Sinek talk has been making its way around the internet and if you haven’t watched the video I’d encourage you to take a few minutes and listen to what he has to say. But before you jump on the bandwagon about how much you like or dislike Simon I want you to stop and think – regardless of your feelings about a person or their views consider the value in listening. Not hearing, and certainly not agreeing, but merely listening. Too often I think we form our opinions and then filter what we truly listen to as a result of our own way of thinking. But you don’t have to take my word for it…
Bunny Trail: As a kid I grew up watching (and admittedly liking) Reading Rainbow with Levar Burton. This was a classic tv series that even now I remember bits and pieces from. As I am writing this post I’m reminded of a phrase Levar would say every time before the “book reviews” section of his show. He would always introduce the reviews, provided by other children, with the same line. “But you don’t have to take my word for it.”
Obviously the idea of hearing opposing views and actually listening to them existed long before I ever suggested it. In fact, even one of the greatest philosophers of all time shared something similar. Socrates, the Greek philosopher and one of the founders of the entire concept of Western philosophy said this phrase:
“Wisdom is the ability to hold two opposing views in mind at the same time.” – Socrates
There are many times when we talk about wisdom and knowledge. And sure, we know the difference between the two: knowledge the ability to recall facts and figures; wisdom the practical application of knowledge. But there are almost always areas where identifying and demonstrating wisdom is incredibly difficult. Situational wisdom as it applies to every day living seems quite easy to understand. Basic example – I know how to change a tire. Raise the car by placing a jack under the mount near the flat tire, remove the hub cap, unscrew the lug nuts, pull the tire off the vehicle and replace it with a new one. (Boy, that sure sounds simple but trust me…every single one of those steps has about a million ways in which it could go wrong, terribly terribly wrong).
Those steps I just shared are knowledge. I have the knowledge about how to complete the task. Now when I actually have to change a tire and I realize that unscrewing the lug nuts take a significant amount of torque and the longer the tool I use the easier the job becomes (I’m ignoring the mechanics and their air drills for the moment); I’ve not only taken that knowledge but applied it to a specific instance. I’ve inferred more into the process and I have a deep understanding now not just of the steps but also how to perform them. This is knowledge applied, this is wisdom. I trust we can all see and agree with that. I’d call that situational wisdom, it’s knowledge applied to a specific situation.
The other type of wisdom I think about (and the one where I believe we struggle more to see practical application) I’m going to call abstract wisdom. This is knowledge applied to an abstract concept. In these situations there’s not evidential or tangible product by which we can judge whether or not wisdom exists (knowledge has been applied). These situations are the ones I am referring to when I talk about demonstrating wisdom.
We all laugh about the internet and this world of opposing views where everyone has an opinion. Take this meme for example:
This is all too common of a scene, and no I don’t mean dressing up in pirate gear and running along the beach. But the underlying principle of how we address opposing or conflicting views.
By now I hope you’re starting to see what I’m suggesting. One way we can actively demonstrate our abstract wisdom is through our ability to not just hear but listen to opposing views; to actively hold them in our minds and consider them thoughtfully. Rather than jumping to conclusions based on our opinions or previous experiences (or how we feel about the speaker’s hair) we can demonstrate wisdom through thoughtful consideration of opposing ideas. As you browse the internet, engage with co-workers, or even sit around the table with friends and family keep this thought in your mind. Be quick to listen and slow to speak. Process what you’re hearing and form an opinion based on knowledge. When you do this you’re demonstrating wisdom. You’re applying your knowledge to the conversation.
Have ideas on other types of wisdom? I’d love to hear them. I’ve only briefly touched on two forms. Agree? Disagree? Let me know what you think, I’m listening. (See what I did there?)
“Most people do not listen with the intent to understand; they listen with the intent to reply.”
― Stephen R. Covey
January 17, 2017
Social Media: Personal vs Professional
We all know those people on social media who are incredibly proud of their small business, startup, or work ethic. And of course we know those Facebook friends who share every intimate detail of their day and their life. The question that interests me is which is a better use of social media and which is more appropriate. Even as I type that last sentence I struggle with such a harsh and complete distinction of a right vs wrong use of social media. Let’s look at the pros and cons for these two approaches and then see if we can draw a conclusion about the right approach to a social media strategy.
There are many different types of social users and I still vaguely recall reading a humorous post at some point in the past about the top 10 different social profiles. Although that post was shared with light-hearted joking there was value in the labels. And so even though I am only drawing attention to a couple of those profiles I want to focus on them for the sake of comparing and contrasting them.
The Eternal Professional
This is the person who is forever posting business advice, their tips for success, or re-sharing the latest Simon Sinek video with the cliche comment, ‘this is how we do it at my company”. The eternal professional is constantly seeking new ways to say the same thing. “Here’s my business, you should be interested.” The problem with this approach I believe is the failure to understand their audience. How many people truly want to see what you’re doing in your business on a daily basis. At what point does sharing your business dealings become a cold and impersonal advertisement? The risk of the eternal professional is a lack of interest from their friends and followers. Gradually you’ll lose their attention, they will scroll past your posts faster than you can say, “business brag”. But there has to be some upside to this approach to social media right? I believe there is. Just like the old adage says, “the squeaky wheel gets the grease”, there is certainly some value in being the loudest proponent for your own startup. You’re actively putting your brand in front of the eyes of your fans. Whether they read your post or quickly continue their phalangeal flicking their eyes and their brain have been imprinted with your business brand. Congratulations you’re becoming a master of subliminal marketing.
The Exasperating Personal
This social sharer is the friend or family member who believes the world is fascinated with their every mundane life detail. No personal problem is too big or too small to be broadcast to the universe. Their posts show you how much they love their coffee, their breakfast, their kids, their wall color, their animals, their…well, you get the idea. Everything is shared. The problem with this is similar to the professional’s problem we looked at first. There comes a point when a little filtering and self-moderation becomes a good thing. Do your friends really need to know about the color of your toenails this week? Do you believe their lives are better as a result of seeing your breakfast burrito? The risk of the exasperating personal is alienation from your followers. When everything is shared, nothing is special. You don’t want to be labeled as the self-interested, self-obsessed social sharer. But there’s a positive here too. Connection and endearment are the two biggest benefits of sharing personal stories. You have the opportunity to connect with people. They see your life details and feel as though they know you and can relate to you. You may bring a smile to a face, share a laugh, or even possibly begin to build a relationship.
As I look at these two personas I realize I’ve oversimplified things to an extent. As I shared previously there are more than two profiles and variations on those as well. But there’s value in a quick introspection of your social persona as it relates specifically to these two types. I too struggle with this dilemma. After writing the above descriptions I believe I fall more solidly in the Eternal Professional category. And I see the pitfalls of that approach. I am also strongly against the overtly personal approach as well. But as any good, self-respecting writer must do, I must draw a conclusion.
There is no decision that we can make that doesn’t come with some sort of balance or sacrifice.
– Simon Sinek
The truth of the matter lies in a familiar and frequently shared topic on my blog: balance. Once again, as with so many other areas of life;
balance is key. Being able to identify your tendencies will allow you to focus your time and attention on improving your balance. In this case don’t be so focused on the professional that you lose touch with your personal side; or contrary to that, don’t be so passionately personal that you neglect to share things of worth or value to others. There is nothing wrong with building a brand, sharing business advice, and growing your followers for your startup; but be moderate. Think of your audience. Write your posts with your followers in mind instead of yourself.
Therein lies the second observation: focus. Focus on your friends and followers instead of yourself. By shifting that focus you will be mindful about what you share and even when you share it. Be relevant, be interesting, be inspiring, and be entertaining.
I know being able to identify my own tendencies is the first step in improving myself and so I expect in the very near future you’ll see a better balance in my posts. I trust this post will help you evaluate and improve your social profile in the future as well. What kind of social sharer are you? Do you think you should change? Find your focus and be more balanced? I look forward to hearing what you think.
January 10, 2017
The Importance of Planning [Practically Speaking]
I wrote previously about the importance of planning and gave 5 simple reasons why planning is critically important. Since I wrote that article I’ve received hundreds of comments on the topic and thousands of views. Clearly this is a topic that people are interested in. As I re-read the article though I discovered something was missing. Practical application. Yes, there is definitely a need for having solid reasons why planning is important, but there’s also a great deal of usefulness found in applying those reasons to everyday life and identifying how that planning can be put into practice. In this short article I’d like to give you a follow-up 5 ways that you can implement planning in your daily routine and through your actions demonstrate why planning is important for success.
Practical Step One: Keep a Journal
Previously I wrote about the importance of writing out goals. I’ll touch on this more in a future point when we look at setting daily goals. In this first practical step though I want to encourage you to begin keeping a journal. There is tremendous value in writing down your thoughts, your ideas, and your feelings. Ooh, did that last one get you? Not everyone like to write down feelings. In fact I understand it can be quite challenging to be honest with yourself and actually make your feelings ‘real’ by putting them in writing. This is a very important process. Journaling is in fact critically important to your planning process. Let me explain. By putting your ideas and thoughts down on paper you are keeping a log of your days and your time. What better way to plan your future than to have a record of your past and present.
Still not understanding? Think about it like this. The next time you start to make a plan and you have a question about the feasibility of your idea, or your timeframe, imagine you’re able to glance back in your journal and see how long something similar took you in the past. You could see your idea as it unfolded, your feelings about the process and a realistic idea of how long it took you to accomplish (or abandon) the idea. In this way your past directly influences your future and advises your planning.
I recently discovered the Best Self Journal. It has some excellent features which allow you to do all of the above and even some things I’ll touch on later in this post. I don’t recommend many products directly but I’ve found this journal to be incredibly helpful. Have you found a journal that works particularly well? I’d love to hear about it!
As this relates to time and a daily routine we can easily move into our second point for daily applications of planning.
Practical Step Two: Maintain Your Calendar
The second step I would recommend when it comes to the importance of planning and what that looks like in a daily routine is maintaining your calendar. The best way to prepare, to plan, is to be organized and intentional with your time. Schedule your days and your meetings. Be specific in what you want to accomplish throughout your day.
I remember once reading that Warren Buffett never scheduled meetings more than 24 hours in advance. He did so because of the very real possibility of schedules changing and things becoming less relevant the farther away they are scheduled. Obviously this is a bit of an extreme on one end of the spectrum but it proves an interesting point which we’ll discuss in in practical step #5 below.
For now I would suggest a more balanced approach. Rather than no schedule (or a one-day schedule) maybe look at a weekly calendar. I’ve personally found that anything longer than that tends to make the meeting and the information shared less relevant. If it’s important then make it happen. Maintaining your calendar and prioritizing your time is critically important in your planning process.
Practical Step Three: Organize Your Email
The third practical step in planning to implement on a daily basis involves that dreaded disaster, the maelstrom of messages. You guessed it – your inbox. Ugh, I have no doubt we all struggle with email organization. I’ve seen innumerable methodologies and processes for achieving what some like to call “inbox zero”. If you’re unfamiliar this is the state where your email inbox holds zero messages. And this state is not achieved because you mass delete them all. No, every email is to be processed, responded to, tagged or tucked into a folder. While this is certainly one method of inbox organization I don’t believe it’s the only one.
My email is one of the central ways I plan and organize my life. I use my email as my brain in many ways. What that means is for me I appreciate having my emails present in one place (the inbox) and easy to scroll through. For me this works well. I can jog my memory about tasks to complete, people to contact or meetings to schedule (see Practical Step #2 above). As a result of this way of using email it’s not helpful for me to have a zero message inbox state. What is far far more important is to have a zero unread message state. That means my emails may continue to live in my inbox, I may flag some as important to make sure they catch my eye later, but I don’t archive them all. Sure, I will archive irrelevant messages, delete the junk ones, but many will continue to live in my inbox. The important thing is they are read. I have reviewed the contents and am aware of each message.
I understand this method might not work for you either. The important thing to consider is not the exact method you use, but rather that you use a method. Keeping an organized email inbox means you are in control of your thinking and your time. You are actively planning how you respond to people and how you manage your time.
I know I’m going long on this point but since email is such a major part of our lives I feel the need to mention one last practical point. Don’t let email control you. By keeping an organized email system you are planning your email time effectively and ultimately planning your life more productively. Don’t spend your days in your email. Keep it organized, plan your approach, and be intentional about it.
Practical Step Four: Set Daily Goals
The fourth point involved in practical daily planning involves setting daily goals. I briefly touched on this earlier when we discussed maintaining a calendar (and even a bit with the journal).
The thing I love about these practical steps is how they are intertwined and connected. Each of these daily, intentional items work together to make your planning better and your success inevitable. They are important.
The journal I mentioned previously gives a great daily layout which includes a spot for daily goals. This is a fantastic way to organize and plan what you would like to accomplish TODAY.
The idea of daily goals is a very fun and practical way of implementing planning. With daily goals it’s easy to see success or failure. Over time your goal-setting will become better and better and you’ll find yourself becoming an expert in knowing what is capable of being accomplished in a day. The more you know abut your own abilities the better your planning becomes. This may well be the most practical and easy-to-understand point from this entire list. Setting daily achievable goals directly demonstrates the importance of planning. Set. Achieve. Replicate.
Practical Step Five: Build In A Buffer
The final practical step I want to share with you relating to the importance of planning through practical application involves building in a buffer. Don’t be so incredibly strict in your planning that you fail to plan for the unexpected. Life is unpredictable. Humans are by their very nature prone to fluctuation and last-minute changes. If you plan too meticulously you’ll end up failing miserably.
Building a buffer into your planning allows you to be flexible and still achieve everything you have planned. Since this is practically speaking here’s what that buffer might look like:
- Allow for extra time between your meetings on your calendar. Don’t schedule things so tightly that you have no time for delays in a meeting. Have you ever been in an entire day of meetings without a single delay? I doubt it.
- Plan extra time for your journaling. Some days the words will flow and others will be a struggle. Again, scheduling things too tightly will lead to a higher stress level and a less creative approach.
- Even your daily goals should have a buffer. As you look at your goals for a day and how they relate to your work week, consider how these may shift from day-to-day. Don’t build up a domino chain where a single failure will make your entire week unsuccessful.
As I hope you can see these are five practical ways to demonstrate the importance of planning through your daily routines. Putting these items into practice each day won’t guarantee you success but will absolutely demonstrate the importance of planning. You will quickly see the results from these real-life simple steps. The importance of planning is something you absolutely should not neglect and I look forward to hearing your stories about how these steps help you take a more intentional and planned approach to your work and ultimately your life.
December 2, 2016
Determined or Workaholic
Some people try to label me a workaholic. They seem to think that because I stay up late or get up early to get work done that I must be a workaholic. But there’s a difference. I realize not everyone will see it and you might not agree but let me see if I can persuade you to think about it differently.
The dictionary definition of workaholic is as follows: A person who compulsively works hard and long hours.
This means anyone who is compulsively working long hours or hard hours is by very definition a workaholic. However, let’s dig into that definition a little bit more. The interesting word in that sentence is: compulsive. Compulsive means a result driven by an irresistible urge, especially one that is against one’s conscious wishes. And now I hope you see the real root reason why I would fundamentally disagree with the label of workaholic.
If you’re in a situation where you are working obsessively on something, but loving what you do, you are driven to see its success and you are hyper-focused on seeing your work brought to completion…that is not a workaholic. That’s focused, intentional, and deliberate choices made for a very specific purpose.
In those late hours (or early mornings) when I am diligently striving to create something never before seen I am motivated and driven by a goal and a vision. My “why” statement is the foundational belief upon which I build my work schedule and my calendar. I am consciously and willfully making choices which will enable and empower me to accomplish the goals I have set. This is the exact opposite of compulsion.
Compulsive behavior by its very definition is an irresistible, uncontrollable urge to work, regardless of desire, motivation and purpose. This behavior lacks the fundamental basis of “why”. Therefore, workaholics are not driven by their goals and their desires to accomplish something, they are not driven by an innate inner fundamental belief, instead they are controlled by an external force. Workaholics have lost their basic human right to freedom.
So as I hope you can see, I very strongly object when someone would suggest that I am a workaholic. There is no situation in which I would consider myself a workaholic. Yes, I spend a lot of time creating something incredible. I pour myself into what I do and I am highly motivated to see its success. But it’s a conscious choice. It’s a daily decision I make to wake early, stay late, and change the world. I’m driven by my “why” and my vision. And I hope you are as well.