Home » website

Tag: website

Developers like us do things like this…

Developers like us use version control because we understand the value of being able to roll back.

Developers like us do backups because we understand our customer’s need for safety and insurance.

Developers like us have a process because that is key for delivering quality results consistently.

Developers like us ask questions because we understand the pitfalls that come with assumptions.

Developers like us understand business because the perfect solution, delivered too late, is no solution.

Developers like us are good communicators because we don’t expect the client to navigate technical jargon.

Developers like us are honest, simply because honesty is good for business.

Developers like us own our mistakes because it is the way to build trust and get hired again.

Developers like us don’t hide bad news because it shows care for the client to let them know you will not meet the deadline. It gives them time to plan accordingly.

Developers like us value privacy because the client needs to know their private data is safe in your hands.

Developers like us are generous because helping others along the way makes things better.

Developers like us are flexible because it is not always possible for the client to adapt to our workflow.

Developers like us are more expensive because we always deliver more than we got paid for.

Developers like us minimize risk because they understand the client has their reputation to consider when she places it in our hands when we deliver a solution.

Developers like us work fast because we don’t reinvent the wheel and use the best practices available in the field.

Developers like us never stop learning because we know first hand how fast the software world changes.

Developers like us future proof their code because it is never safe to assume how it will be used later on.

Developers like us prioritize customer needs because the final product is for them, not for us.

 

Note: this is a manifesto based on Seth Godin’s idea of “Tribes”: people like us do things like this.

Automated “downtime” alerts

Do you know that frustrating moment when you realize that your website has been offline for three days? Or that your shopping cart stopped working last week? 

That moment is also valuable because you now know that something is broken, so now you can fix it. But at the same time, you wish you learned of this faster!

On a community website, this may not be an issue, as your users will let you know when the site is broken, but that is not the case for a blog, or an online store, or a landing page that is collecting leads. 

You could set a daily reminder to check things are OK, but that will chip away at your precious time, and it quickly becomes boring, so you will begin to forget to do it or begin to think that you don’t have to monitor the website anymore. 

I am all about automation, so let’s automate this! 

Google Analytics

The easiest way that is also free is to use Custom Alerts from Google Analytics. The logic is simple. You have an expected value of daily traffic (based on historical data), so you create a custom alert to let you know if it drops below that. Of course, you need to have Google Analytics installed on your pages for this to work. 

Pingdom

Another way is to use a tool like Pingdom. I have used them for a long time in the past. They no longer have a free tier, but the value you get from the service I think is well worth the $10/month they ask for it. I like Pingdom because they provide more than just “your web site is down” notifications. They provide performance analytics too, which, as we know, is a factor in how your website ranks in Google searches. 

But the real power of Pingdom is transaction monitoring. Transaction monitoring helps you know if a process is working, not just a page: a process like the signup form, or progressing through making a purchase. These are incredibly difficult things to set up tests by yourself, and you get that for $10/mo.

In House Tools

You can also write mini scripts that load your webpages and inspect the results for clues to determine if the page functions as you intend to. Since I am a software developer, that is what I use today for most of my projects. 

The downside is that you have to write these scripts, test them, and maintain them. Depending on your team composition, that may cost you more than using something like Pingdom. 

The upside is that since it is your code, you can do all sorts of interesting things with it, not just email notifications. You can use that to trigger different processes and even attempt an “auto-fix” by restarting relevant processes or clearing out the caches. 

A more powerful subset of this is writing automated tests for your web apps using a tool like “TestCafe” to simulate a user interacting with your web application going through a purchase or signup process. 

You can create custom monitoring and analytics tools to aggregate data from multiple signal sources that can provide insights not readily available in Google Analytics. For example, you can monitor how a campaign is affecting not only your website but also social media engagement across all the networks you care to track. 

What does the client want?

Some time ago…

Some time ago, the conversation with a potential client would be something along the lines of:

“How can I help you?”

“I want a website to sell my products.”

“OK, great, this is a price and you’ll have in a month.”

A month later…

I’d show her the site, and the reaction would be: “Well, this is not even close to what I had in mind…”

I had to change the game and ask more questions 🙂

“What colors do you like?”

“Red and blue.”

“Great, and font wise?”

“I want something elegant, precise!” 

“For images?”

“Oh, something joyful and warm…”

“Excellent! This is the price; you will have the site in a month”.

A month later…

I’d show her the site, and the feedback is: “This red is not red enough, and now I realize the red and blue are a bad combination! Can we try yellow instead of blue? And the font is too girly for what I have a mind. We are going to need new images as well. The top one is ugly, and the rest don’t match the brant at all.”

Oh, the frustration.

At some point, I’ve spent two weeks back and forth, trying to nail down the shade of blue. That was a waste of my time and the client’s time!

I had come to believe that the clients don’t know how to communicate (I had a much shorter description for this). I had resolved that I would never even discuss with someone who could not write a technical specification that we can agree on, and that I could deliver. 

This decision blocked many customers, but more importantly, blocked important learning. 

The Breakthrough 

I was watching a video from Chris Do. He’s a designer who also teaches business, and I admire his style. To me, it feels like he is talking to me specifically. The kind of decisions you need to make in design apply in software and for anyone who uses creativity to solve a problem. But I digress. 

Back to the video. 

He was taking questions from the audience, and someone asked: “How do you deal with clients who don’t know how to communicate what they want?” Ah! The golden questions! I had the same struggle. I perked up, waiting for the knowledge to be bestowed on me. 

Chris looked into the camera, and you could tell that the question was really testing his patience. Hm… And he said: “How many times do I have to tell you that the good-communication is on you! It is your responsibility to help your client articulate her problem and then discover if you can help her.”

All the pieces began to fall into place in my mind. I suddenly understood that in blaming the client, I was not only asking the wrong questions, but I was not developing a critical communication skill. 

In the present time…

When a client wants to work with me, they better be ready for a ton of questions :). As someone jokingly said, they need to feel like they’ve been to the shrink after the first discovery session. 

Here is how the conversation might look like:

“I want a site that can help me sell my products.”

“Sure, that is something that I specialize in, but out of curiosity, what problem are you trying to solve?”

“Well, I need to increase my revenue, obviously”

“OK, that makes sense. How do you know that having a website is the best way to solve this problem?”

“I don’t know… everybody does it… what other options are there?”

“I am glad you ask. Before I can answer that, I’d need to know more about your business. It’s OK if I ask you a few questions?”

“OK…”

“At the moment, how do you generate your revenue…”

And this would go on for a while. 

In the end, what I need to know is:

– what is the biggest problem that this customer is facing 

– how can I help them discover this problem if they don’t know it

– how can I help them articulate their underlying needs 

– in the end, are we a good fit? Can I help her with what she really needs? Can she afford me? Do we like each other well enough to work together for a few weeks or months? 

And by the end, the client would also need to know

– how do I work

– can she trust me

– what is my price range

– what kind of a solution can she expect

– is hiring me the right choice for her

In Conclusion

Make sure you correctly diagnose the problem before you prescribe a solution. If the solution you’re thinking of is not the right one, you need to find out as soon as possible, not at the end of the process.

If you found value in this article, let me know in the comments below or on Facebook. This feedback will help me understand what to focus on in the following posts. 

Go create the New Paradigm today!

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. 

The Power of Using APIs

Many years ago, I had set up my very first website. It was a Sudoku generator based on a selected difficulty level.

To promote the website, I wanted to have a newsletter so I could email my subscribers a daily puzzle to print out.

At the time, I was using AWeber as my newsletter service.

I was very annoyed with the fact that to capture the email of my visitors I would have to send them to a new AWeber page where they would fill out a form, and then instruct them to go to their email to click the confirmation link, and that would get then to a confirmation page on AWeber, and then finally back to my website.

Those were way too many clicks to get yourself a printable sudoku puzzle!

What I wanted, was a way to plug into the AWeber service, and communicate with them, on my visitors’ behalf, while the visitors were staying on my website. What I wanted was an API, which is short for Application Programming Interface.

They did not offer that at the time, so I decided to simulate one by using a “fake browser” to make it “as if” the user has opened their page instead of my mine.

I was very proud of my solution, and it worked very well for about ten days until my account was banned for violation of terms of service.

Today they do offer an API, so I don’t have to resort to “shady tactics” to keep the users on my page.

I use this little story to make it evident why APIs are so powerful. I am all about automation and integration and the APIs make all this possible in a way that is reliable and makes sense and does not violate any agreements 🙂

I don’t think it makes sense to create an online service in today’s world and not to develop an API for it. Interconnectivity and interoperability increase the rate of adoption of your service. And you open it up to be used in ways that you may not even have imagined before and if you connect it, for example, to a platform like Zappier.

In conclusion, I feel that all software development is moving towards building APIs that will talk to each other. Even the front-end of websites will be a templating API making requests to a back end API.

This change will bring about dramatic shifts it what software developers do and will open the doors for non-developers to be even more expressive and sophisticated in their creations. Add AI to this mix, and we can only guess at the limits 🙂

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 🙂

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. 🙂

Are you thinking of creating a multi-language website?

Creating a multi-language site can be a challenge.

I have had the opportunity of doing a couple of those. I am not happy with either of the solutions, but there are a few things I’ve learned along the way.

If you have a newsletter or a store, your customers expect that the entire process is translated into their language. This translation process must also include support. Because not all the plugins or software has multi-language support, this can be difficult to achieve. 

You will have to choose between using subdomains for our other languages or prefix your URLs. 

https://fr.example.com/your-page.html
versus
https://example.com/
fr/your-page.html

I used to employ a prefix before, but using a subdomain, I find it gives more flexibility if, later, I want to separate the languages into different, independent websites. A subdomain also helps keep your home page link clean:

https://fr.example.com
instead of
https://example.com/fr/

Using subdomains also offers more in terms of performance optimization, if that is important for you. 

You need to consider that the effort to manage your website increases with each language. It is almost like every new language is a new site you have to worry about. Because of this, you need to consider carefully if it is worth the effort of having a multi-language setup. 

Let us look at an example

Let’s assume we have English and French as our languages. 

You have two options: 

1. Create two separate websites, one for each language.

2. Create one website, and use a translation plugin to create the translation website, on top of the main language website.

Two Separate Websites

A two-websites option gives you the most power and flexibility. And because the sites are separate, if you decide to give up on one of them or completely change direction, it will not affect the other. 

The downside is that all effort is duplicated: setting up, updating, maintenance, backups, and on top of that is keeping the websites in sync manually.

One Website – Two Languages

This is the option I have used most. You set up the website in the primary language. Then you install a translation plugin (like PolyLang), and you translate the site into the other language in small increments. The upside and downsides are flipped compared to the first option. 

There is considerably less effort with updating, maintenance, and backups. The two languages are kept in sync automatically. But because the two languages are tightly connected, they are a mirror of each other. So if something goes wrong with one, it will affect the other. This option also has a performance impact; for every page load, a translation decision has to be made to display the content in the correct language. 

The ideal solution

In my view, the ideal solution is two have two websites. Each one is maintained by a person who is fully responsible for their language: including support, customer care, updates, and so on. English would be the master copy, and the French language would mirror that as closely as possible. But the French website also has the flexibility of creating content or an experience that is much more specific to the French audience. The obvious downside here is that you have to have double the people who take care of the site, and that could add a lot of costs.

Potential Pitfalls to consider

Newsletter signup experience needs to be translated.

All the email campaigns need to have content in all the languages you are offering unless you choose to ignore on purpose those who don’t use the primary language of the site.

You need someone on staff to be able to respond to support requests in all the languages you offer.

Caching and SEO plugins don’t always work well with a translation plugin.

There are some technical aspects of how the webpages are rendered in a multi-language environment. Things like configuring the right language code, encoding, and locale options become important. 

Timezone is another thing to take into account. 

If you use a store, it may make sense to have the local currency for each of the languages you plan to use. This feature adds a layer of complexity when setting up the store and in connecting with your payment gateway. 

If or when you plan to migrate to a different framework for your website, multi-language content becomes very difficult to move and work correctly, especially when using a translation plugin to keep the pages in sync.