Home » performance

Tag: performance

Automation with Zapier

What do you value most? I hope that your answer is: “TIME.” 

Time is our most valuable resource because it is non-renewable. Wasted time is lost forever. And it could be argued that the reason we work so hard is to have enough resources. Resources that will allow us to spend more time doing the activities that we enjoy: activities like following your dreams, working on your business, spending more time with friends and family. 

I don’t know of any better time-saver in the online environment than automation.

Automation means to identify and formalize processes for the flows that make your business work and then use various tools to set them on “automatic.” This way, they can work even when you are not paying attention. It is like having an employee that is almost free and never sleeps or rests. 

In today’s world, the leading tool for automation online is Zapier

The idea behind Zapier is quite simple and yet profound because of the market they are speaking to. 

What happens is that in the online world of business, you have your website, your store, your payment gateway, customer engagement, webinar, emails, and so on. All these components need to talk to each other. What used to happen before, is that you, as the business owner would have to create and manually maintain this communication, usually based on email notifications you would get from various systems. 

The alternative was to hire someone to do it for you or hire a developer to write a custom program that would automate these processes. Both options could get pretty expensive.

There has been a shift in the past few years. Each of these services exposes an API. This API allows them to talk to each other in a clear and standardized way. With this option available, you would need somebody to integrate these APIs. To connect them in ways that make sense for your business. 

Here in comes Zapier! The beauty of it is that they have put together a platform that allows non-developers to visually express their processes and to connect all these components in a way that makes sense. This flow is testable (which is very important, you want to make sure that your automation works as intended), and you have analytics and an overview of what is happening.

There is a free tier for Zapier, but I want to get into the paid one because I think that is where the power is. You may shy away from paying them the monthly fee. So let’s explore that a bit. 

The way to think about choosing a paid plan is to make a business decision. Would paying Zapier a monthly free enough time and generate enough sales to cover for the costs and then some?

If you get their $20/mo plan, you need to only generate an extra $20/mo in sales for this option to make sense to you. But not only that. Also, consider the free time you now have to do something else, and how much you value that. Consider the money you would spend on a developer to set this up for you and then have it maintained. (By the way, I am not an affiliate for Zapier, I am just using them as an example to talk about automation)

In conclusion, we live in exciting times, where with a bit of patience and thinking through your processes, you can build your website and connect the required components with no need for a developer if you use a tool like Zapier. And this excites me because it enables even more people to express their creativity cost-effectively!

If you are reading this and you are a developer, then seriously consider exposing and API for your services and products and have them seamlessly integrate with Zapier. 

Using Visual Builders for your website

I used to hate visual builders!

They looked great on the demo page, but as soon as you would like to do something somewhat different and custom, you would end up fighting with all the constraints put in place.

Because of this issue, I would almost always design my pages from scratch in HTML code and CSS style. Oh, the power and flexibility!

In recent projects, I have been forced to use visual builders because the end client wanted to be able to update the design themselves later on. They insisted that it had to be easy, so I had to go the visual builder way.

What I have learned is that the builders have come a long way since I have first looked at them, and they offer great flexibility within the constraints of their design.

And the constraints are a good thing. It keeps your look consistent and makes it a breeze to create layouts for various screen sizes. That is always a big challenge when writing code from scratch without any design system in place that limits your choices but maximizes compatibility.

The Builder I like the most so far is the one that comes with DIVI, the WordPress theme. Once you get to know it, you can build exciting layouts pretty fast.

There is a problem I have with it, though. That is performance. And sometimes, the output code seems to be unnecessarily complicated, making the size of your page bigger than it needs to be.

So there is always a trade-off.

How do I choose between one or another?

For large projects, I prefer to create my custom template and design systems for the performance and flexibility benefits.

And for smaller projects, I will use DIVI or something similar to create the design faster and visually.

We go back to the saying: use the right tool for the job 🙂

Event-Based Programming

After you work long enough on software projects, it will become self-evident why complexity is your enemy. Pieces of code that are highly dependent on each other will result in a maintenance nightmare. You cannot change or upgrade anything without risking to break the different parts that are tightly connected to it. 

The solution I have found that works best is “Event-Based Programming.” I did not invent it; it has been around for a long time. I discovered that adopting this pattern has made maintenance much more straightforward. 

In a nutshell, your program is no longer a collection of functions that call each other in an ever-increasing web of complexity. Instead, you have components that talk to each other by raising or listening to events. 

This breakdown allows you to change each event generator or event listener individually, and as long as the event format does not change, you don’t risk a break down in communication. 

An event generator will say: “Hey, something interesting has happened, and here are the details.” And it does not care what happens with that announcement. It could be that nobody cares, or it could be that many will take action on that event. 

An event listener, on the other hand, does not care how an event was generated. As long as something interesting happens, it will act on it. 

This decoupling makes debugging super easy too! Because you can test components independently by merely looking at the kind of “chatter” they generate. 

If you’re reluctant to adopt “events” in your codebase, now it’s time to make the jump.

The Importance of Architecture and following best practices

As a young programmer, I was eager to dive in and get my fingers dirty as quickly as possible—no need for a plan or a direction. I knew I could figure it out as I went.

Fast forward some years, add higher project complexity over a more extended period, and the lesson became clear: sometimes if you want to run for long, you need to run slower and have a plan!

Figuring it out as I went worked fine for one-day projects or one-week prototypes. But when bigger projects came my way, I got to a point where I could not remember anymore what my initial think was, where was I headed and why, and how to present my idea to new members on the team.

Although nobody likes to write documentation, I began to make a habit out of it, and I knew it would come a day when I will thank myself! By now that day has happened many times 🙂

What would I tell my younger self?

Writing docs and making plans is not sexy, and in general, your clients do not care for them. They need working software, not documentation. But if the project is longer than six months, a few problems will begin to crop up:

– you forget why you took the decisions you made with the initial design

– if you will need to refactor your code, and if it is not well documented (and if it lacks automated testing) the job of refactoring will take a long time, and you run a high risk of breaking functionality

– by using best practices, you future proof your code – you make sure that you at least don’t make the same mistakes that others made before you. You will make new ones, for sure, but your overall code will be much more stable, easier to maintain, and upgrade.

In conclusion, there is a time to be quick and messy (when you are prototyping), but then you need to slow down and think things through.

CakePHP and WordPress

I’m not too fond of WordPress and yet…

Most of the websites I have built are using WordPress.

The reason I am using it is simple: The final customer enjoys the ease of use that WordPress provides. It empowers them to maintain the content of the website and (to an extent) manage the website themselves.

WordPress is excellent for what it was built for: a blogging platform. As soon as you begin to “add on” to it and make it into a complex web-application, things break down in terms of performance, stability, and security. It pains me to see how every plugin is downloading its own set of libraries and code, creating an app, with-in an app, with-in an app.

This problem shows up because each plugin developer has to make sure that all the code they need is there, and they don’t know if you have it from other plugins. So the code base gets fatter and fatter with duplicate code, and the website gets slower and slower.

Maybe in the future, the core of WordPress will be re-written from scratch to address these issues and to have a shared library folder or use some dependency manager (like composer).

In contrast, for the more complex web applications, I have been using CakePHP. The reason: I love Cake, and I like PHP!

Joking aside, CakePHP is a framework that allows rapid application development using modern design and technologies. Because it is a framework and not a full app (like WordPress), there is much flexibility on how you want to do things, what libraries you want to use, how do you want to integrate it with the rest of the world, and so on. This approach makes for much cleaner logic and code and better performance.

The downside is two-fold:

First, the customer needs a tech person to maintain a CakePHP app. There are no simple “update everything” buttons.

Second, for better or worse, you lose the considerable plugin ecosystem that WordPress has to offer. And some plugins are super useful, like Yoast SEO.

The Best of Both Worlds

(no, this is not about the Star Trek episode)

What I have ended up doing in some cases is to have a CakePHP app developed alongside the WordPress app for the clients that agree to have me as their tech person. This setup allows them to use WordPress for more frequent and simple tasks and enables me to deploy the power of CakePHP to manage automation, monitoring, and reporting for their business. Win-win!

Case Study

For a big WordPress site where things needed not to break down, and that specific metrics are met every month, I have developed a custom CakePHP app to monitor the WordPress site. It would generate charts and analytics for sales, visits, engagement, and other metrics. It would issue alerts when needed and generate reports daily, and monthly that would make it easier to diagnose any potential problems.

Yes, everything could have been written in WordPress as a plugin, but that would have meant making a fat code base even fatter, and it would have linked the two very tightly. Having a separate application allows me to update them separately, and if one stops working, it does not upset the other. A side benefit that I got, later on, was that the same app could link into other WordPress (or Joomla!) powered website for aggregate data reporting.

If you have the skill or the resources to hire the skill, it may be worth considering creating your custom development in CakePHP instead of WordPress.

If you’re interested in the technical details, leave a comment, so I know to write about it.

How much cheaper is an expensive freelancer?

There are two types of readers that this article is for.

1) you are already considering hiring a freelancer, but you are still on the fence about it, and you hope this information will help you decide.

2) you are a freelancer looking for a way to position yourself in front of potential clients.

The short answer to the question in the title is that if you had the time and the skill, you would do it yourself. It would save you money, and you would not have to deal with communication issues. 

But here you are. And this means that either you lack the skill, or more likely, you lack the time. If you had enough time, you could acquire the skill and deliver before the deadline. 

The right freelancer will save you both time and money. 

You will save time in two ways: you don’t have to wait until you build the skills, and you can do other work while the freelancer does theirs. 

Saving money is not always that obvious. I can best illustrate it with a story. 

A couple of years ago, someone reached to me to help them with their site. After the initial discussion, I estimated that the project would cost them around $3k. 

They respectfully told me that it was too much for what they wanted to do, and we parted ways friends.

Fast forward four or so years, and I hear again from this person. They were desperate now. They had spent over $15k hiring help, and their site was still not working. 

Paying $3k to someone you trust looked like a bargain right now. 

Part of it was my mistake for not knowing at the time how to explain the value they were getting. 

And this brings me to another point: the price of hiring a freelancer is not the same as the cost of hiring them. A lousy experience means you need to hire someone new. That means more money spent and more time lost having your work redone. A good experience means you get it right from the start, and you recoup the money quickly from your working website. So which experience ends up costing you more? And what if you consider the cost that is not financial. Like a stressful relationship vs. smooth sales. 

And of course, this begs the question: how do I know if this freelancer is the right one for me? Is expensive, necessarily better or cheap, necessarily bad? 

Let’s deal with cheap/expensive first. Indeed there is no guarantee that expensive means better or even the right choice. But let’s look from the viewpoint of risk. Why would a freelancer charge you less money than another? It could be for a variety of reasons:

  • they desperately need the job;
  • they are new on the market, so they need to earn trust and build experience;
  • they self-evaluate their own ability to deliver as lower than other freelancers;
  • they have turn-key solution ready for you, so their cost is nearly zero;

It is a gamble. They could be outstanding but out of work and needing a job right now. (But this would beg the question, if they are so good why do they have trouble finding work). Or they have a turn-key solution ready to deliver. The catch here is to make sure that this “ready-made” solution actually fits your custom needs, or you would be left trying to fit a round peg into a high-quality and cheap square hole. Can you afford to take this risk?

With a more expensive freelancer, they could be bluffing, but they could also invest in themselves and have better training and a better experience. They could deliver the work with higher quality, faster, and with a lower risk for having to redo it again with someone else. 

Now back to: “how do I know if this freelancer is the right one for me?” 

It comes down to trust. What have they done that they can show you to prove their experience? What have they created and put out? Who is talking about them? How did you find them? Has anyone you know recommended them? 

My argument is that if you trust them, if they come with recommendations, and if you can see past work from them that is in line with what you want to build, then it makes sense to pay a premium now and have the peace of mind that comes with lower risk.

Choose wisely. 🙂

Business Automation

When you start a business, you do it because you have something to say, something to share, or a service that may benefit others. So there are a lot of opportunities to be creative and to express yourself. 

But once you start getting some traction or you have been at it for a while, you begin to realize that many of the activities you do are business administration tasks, and not so many creative tasks. 

Some people enjoy this, but most creatives tend to feel drained by it. 

If you can afford it, a solution is to hire someone who cares to help you. 

Another solution is to automate as much as you can. 

We live in the age of Artificial Intelligence. If you wonder: “Is there a way I could automate this” the answer is very likely to be “yes.”

Here are some of the things that can easily be automated:

  • order fulfillment for downloadable products
  • thank you notes
  • providing support and guides about how to use or access your products
  • ask for feedback or testimonials
  • subscribe customers to your newsletter service
  • backups of your important data
  • weekly or monthly reports
  • health checks of your systems
  • posting on social media

Zapier is one of the most powerful automation tools that I know. It allows you to connect apps and services that do not talk to one another and create all kinds of workflows that will run automatically. 

And if you are thinking of building an online service yourself, it may be worthwhile to integrate it with Zapier as this will increase the rate of adoption. Many other services will be able to connect with you without having to write custom code. 

There is a caveat to all of this: your customers and visitors are humans, and they crave a human connection. Automate the repetitive tasks, and for the others, let your creativity and human nature shine :).

The Successful WordPress Recipe

In almost all of the cases where I was hired to help with a website, I had to deal with a WordPress setup. I have done this often enough to discover some patterns and to create a “WordPress Recipe” that I can use and apply really fast and that was proven to work!

Why the recipe?

WordPress’s power is that it is simple to install and set up by a non-technical person. But that is also its weakness. It is easy to conclude that after a successful install “you’re done and ready to go”, but that is usually not the case.

The common elements

The online store. Most of the websites today sell a product or a service. The most flexible solution that I know of is to use WooCommerce, connected with PayPal. And of course, there are all sorts of add ons you can use to customize the store to your needs.

The newsletter service. As a business, you need a way to stay in touch with your customers and to get leads. The best way I know how to do this is by capturing emails and using them with a newsletter service. MailChimp is a common choice. Contact Form 7 is the plugin that connects MailChimp with your site.

The contact form. If you are selling a product, you need to allow your customers to ask for support. Also, prospective customers should be able to reach you with presales questions. You can solve this with a contact form done right. What do I mean by “done right”? Two things: first you need some sort of spam protection so that only genuine contact requests get to your inbox. And secondly, you need to save these requests in a database in case your email happens to not be working.

Website Analytics. It surprises me how many website owners do not have any analytics reporting setup. If you don’t use analytics you could be missing out on potentially vital information ranging from technical problems with your website to discovering how your customers find you and where, in turn, you can find them. The best tool for this is Google Analytics. It is easy to set up and does not require any maintenance. Once you have it on your website any time you need to make a big decision about your business you can consult the analytics data to determine what the impact may be on your traffic and customers. Usually, the WordPress theme has a way to add this code. If you need something more advanced then PixelYourSite is the tool I’d recommend.

Search Engine Optimization. This a very broad topic, but a good start can get you a long way. At the very least choose a theme that is SEO friendly and properly configure your website structure through permalinks. Also, install the free plugin from YOAST and follow the configuration steps to make your pages more “google friendly”. I should add here that starting with 2018 the mobile users have surpassed the desktop users (in the data I have access to), so the website needs to look great on mobile first and desktop second! This is a big departure from: let’s make a great desktop website and then we’ll fix it on mobile.

Social Share. This is one is optional in my mind because I am not very convinced that it helps. If you know better let me know in the comments below. Some themes do provide this feature as do some plugins, but I have not found anyone that I could recommend. What I usually end up doing is to create custom code to add social share on the pages that I need to.

Website Security. Unfortunately, none of the websites I was hired to work with had good security in place. In fact, many times I was hired to try and salvage a hacked website and that is not always possible. WordPress is notorious for being easy to hack. This is not actually their fault. The paradox is that the software is so easy to use and install that many people who use it are unaware of the online security pitfalls so they fail to take the required steps to secure their website. To get you started you should only use popular plugins that have a good reputation of high quality. And you need to install and configure a security plugin. The one that I use and I recommend is All In One Security. Your hosting can also help here if they provide a malware scanning service.

Backups. I have learned the lessons of good backups the hard way. These days I don’t even take on clients if they don’t agree with a backup policy. It is too risky and so easy to make a mistake that costs both me and the client. I don’t have a plugin to recommend here. I personally have a backup server, with custom code, where I keep version mirrors of my work and my client’s data. This allows me to do quick restores in case of trouble and to work fast, knowing that even if I make a mistake, I can always roll back.

The WordPress quick setup Recipe

  1. Install WordPress
  2. Install a theme. I recommend DIVI (with some caveats)
  3. Install WooCommerce and connect it with PayPal (or Stripe)
  4. Install Contact Form 7 and connect it with MailChimp
  5. Setup the contact form in Contact Form 7 and also install Flamingo. Configure spam protection with recaptcha. Do a test of the contact form to make sure it works.
  6. Add the Google Analytics code in your theme
  7. Install and configure YOAST
  8. (optional) Install a social share plugin (or use custom code)
  9. Install AllInOne Security plugin and configure it.
  10. Setup automatic, versioned backups.

A note about choosing a theme

As you know I recommend DIVI from Elegant Themes. What I like about it is that you can quickly have a beautiful website that is mobile friendly, it is super easy to update and it’s very customizable without having to write any code.

But all this comes with a price!

I am not very happy with the performance of the theme. Sometimes it feels bloated. But there are ways to mitigate this problem. Another much bigger issue is that you are locked in with this theme. If you decide to use DIVI you might as well purchase the lifetime package because it will be incredibly hard to change to another theme down the line. If you think this may be an issue for you then you may want to look into Beaver Builder.

Custom Web Application versus WordPress

Have you ever had this problem of wanting to create a specialized service for your clients and not being able to implement your vision because of the limitations of your website?

Have you ever wished your website was more flexible and more customizable so you can easily differentiate from your competitors?

Let us explore together a way of thinking about this.

When you hire someone to build your website to deliver your products and services, you may be faced with the decision of building on top of a standard WordPress install or creating something totally custom.

So how do you decide what to choose?

To discover the answer you need to consider a few factors:

  1. What are your business goals
  1. How will you manage your site
  1. How will you update your site
  1. How fast do you need to be ready to go live

If your business goal is to have an online presence via a blog, a newsletter and a store then it may make sense to go with something standard like a WordPress based website.

WordPress was built for blogging. It is a very popular choice, so it has a big community developing plugins and extensions that will allow you to have an online store and a newsletter subscription very quickly.

A big advantage to using WordPress is the ability to apply automatic updates and the user-friendly administrative dashboard. With very little training you can learn to manage your own website and apply the updates yourself.

Another big advantage is the large range of templates and themes that you can use to quickly customize how the website looks, without having to hire a designer.

WordPress looks like an amazing choice. Why not use it all the time?

Paradoxically, WordPress’s strengths are also its biggest weaknesses.

WordPress strives to be useful and easy to use for a broad range of users. And because of that, it has to be very generalist in nature and make a lot of assumptions about how it will be used. And while you can use plugins to add features to it, ultimately WordPress is a blog platform that has been optimized for blogging. It some cases it can feel bloated with features that you may never use.

But if your business adds value through a custom service it provides, then that works against what WordPress was built for. Yes, you can do it by extending the platform, but the performance and flexibility of what you can do will suffer.

This is where a custom solution shines. Like a bespoke suit, a web application built just for your customers will be optimized to deliver that service. The obvious advantage is differentiation. You will be able to offer a user experience that may not be possible with WordPress. If built properly another advantage is performance. Since you know what this web application is supposed to do, very specific optimization strategies can be employed.

What are the disadvantages of a custom web application

Custom web apps shine when it comes to delivering your business goals and the flexibility to implement specific user experiences for your customers. But how do they fare when it comes to managing the website and updating the website?

Since it is custom work, you will have to rely on your developer for updates and maintenance. And the administrative dashboard may also have to be built from scratch to serve your needs and your customers. This adds some risk to your business. If you ever need to change developers the new one has to be comfortable and knowledgeable enough to be able to take over and maintain the website.

A custom solution also adds a higher cost with managing the website. It may not be as user-friendly as WordPress. And if you want to get the administrative backend to be super polished it will add to development time.

Another risk added by a custom solution is the higher probability of unforeseen problems and bugs. WordPress has such a large user base that the problems are likely to be discovered quickly and dealt with. That is not the case when you build a custom solution that only you are using.

It is not all bad news. Most of these risks are mitigated by using time tested frameworks, best practices, and standards when building the custom website. Just like with bespoke suits, you don’t have to reinvent the industry to have something custom-tailored and of very high-quality.

How fast can you go live with a custom website? Not as fast as with WordPress, that is for sure. If you are in a hurry, custom work may not be the way to go.

Conclusions

If you only need an online presence and the ability to blog then just go with WordPress. It is low cost, it is fast and easy to manage. And if you have some free time on your hands you can do it yourself.

If you need to put something up quickly and time is of the essence, stat with WordPress and plan for an upgrade later on.

If your goals are more sophisticated, then we need to talk about value first. How much value will the website bring into your business? The more you base this on data and research the better. If the yearly revenue from the site covers the costs of a custom solution (including development and maintenance) then I would suggest you go with a custom solution because of the flexibility and growth opportunities. Otherwise, go with WordPress and plan for an upgrade later.

A word of caution

There is an advantage to being quick and show up on the market place. A simple but fast website launched quickly is much better than a perfect website launched too late.

That being said, too many times I was hired to fix a website built on a shaking foundation with obsolete technology that was very limiting to the business.

What I suggest is a good practice is to give yourself a deadline. Something like: I need to launch this month, but I know that will have to build something more complex and stable so I will plan and prepare to do it in 12 months.

In 12 months you will have learned a lot about your business and your customers, so when it’s time to “get serious” you will have a much better understanding of what it needs to be done and that will dictate the choice of technology. You will also not be in a hurry, so you can do things right.