Home » How To

Category: How To

Working from Home – Choose to embrace it

I didn’t plan to write about current events, but maybe this will help. 

I have made the transition to work from home a long time ago. The fact that I decided to do that and was not forced to do it, I am sure helped, but here are some things that I have learned that I would like to share with you.

I am also going to assert that you care about your work, and you want to continue, instead of merely taking time off now that “nobody is watching.” 

Your working Space

You need to have your distraction-free working space. It helps you with the discipline of “going to your office” every day. 

Your working Mode

Now that you work from home, you may be tempted to binge-eat while you work, to stay in your PJs, browse the YouTube, and latest news. Don’t do that. It will mess up with your focus and with your ability to do something productive for the day. 

As time passes and you get more disciplined, your working mode may include PJs and peanuts, but don’t start with that. Continue to “dress for success.” All of this is more of a “mind game” than anything.

Do not overwhelm yourself

The home office is a big change. Most humans don’t generally like change. The outside world is also going crazy. Be honest with yourself. Your energy and your ability to focus is not the same as it was before this change. Don’t overcrowd your workday. You are only setting yourself up for disappointment and burnout. 

There are many ways to do time management, but that I would suggest for this time is “the promise for today.” This way, you promise to do one important thing that can be done in a day and you do it. Yes, I said “ONE” (not ten). But I also said “important.” Trust me, drip by drip, you will make steady progress instead of burnout after burnout. 

Take care of your body.

It’s common sense, but let’s make it common practice. Drink water, take some pauses to stretch and walk around, look in the distance to relax your eyes, or better yet close them for a few minutes. This time is not an excuse to get out of working mode and binge on distractions. 

There is a tech solution for almost everything.

I don’t know what your work involves, but there is likely an app, a service, a new way of using technology to help you work from home. From remote access to files, to voice over IP, to Zoom calls and screen sharing, find your tools that can help. It can be done. If you don’t know how to do it, ask for help. Asking for help does not make you an idiot; it makes you efficient. 

We are all in this together.

It can get lonely when you work from home. Setup video calls with your team, even if only for 5 minutes after lunch. Call a friend for a “one on one – how are you doing conversation.”

But most of all, be compassionate and patient. The person at the other end of the line, computer, phone, service is in the same situation as you. They also are going through a big change, they also have family members to worry about, they are also concerned about the unknown future. Humanity first, business second. 

Keep positive

I am a strong believer in keeping your immune system in high gear. Stress can affect it dramatically, so stay positive as best as you can. Take things one day at a time. Make room for humor and play in your work. And when you are done working, I invite you to help another. You may have skills that are needed, knowledge than can be shared, but also a smile, a warm hug, or a deep “I see you” connection can go a very long way. 

“Live long and prosper!”

Using WordPress as a Prototyping tool

Creating a prototype for your product or service is an excellent idea. It allows you to do some research before you commit to a specific solution. You can test various layouts, various interactions, and you also have something to show to your investors or your target audience to check with them if this is something they would spend money to buy. And the cheaper the prototyping, the more tests you can do, and the more information you will have when you want to build the real product or service. 

A prototype has only very basic functionality, and it is used to get an idea of what the user interaction will be like and what possible challenges may show up in future development. Because it is so simplistic, you can choose any technology you want to create your prototype. It does not have to be the same tech you will use for the real product. And this is important because you can choose something free, or something that you know how to operate.

In this article, we will focus on WordPress. Why? Because it is free, it is a common platform, it has a rich plugin environment, and the new block editor makes it ideal for quickly creating complex layouts. 

All you need to do to get a free WordPress site is to head to WordPress.com, create an account, and start a new website using their free plan, and now you are ready to begin prototyping. 

Go to your website’s dashboard and create new pages using the block editor. It is almost like using lego pieces to build something. 

You can create multiple layouts for the same test page; you can create links between pages, simulating a user interaction, you can test how it will look like on a mobile screen, play around with various font faces and sizes and so on. 

As a bonus, you can activate the comments feature and use that to document feedback on the pages you are putting together. 

Using the Free plan on WordPress has some significant drawbacks:

  •  you cannot use custom CSS to finetune your design
  •  you cannot install plugins 

Depending on the complexity of the prototype, you may not need either one of them, but if those are important to you, then you can install WordPress on a shared hosting plan and unlock the full power of the platform. 

Closing Notes

I know that WordPress is not a prototyping tool. For more advanced use-cases, you will find it limiting. In those situations, you are better off investing in some dedicated tools like WebFlow, or Sketch, or Figma.

But as a playground, when you want to get a feel for how your idea will look like, and you want to have something to show to your investors or your audience, give WordPress a try.

Finally, all prototypes should be discarded when you go build the real thing. There is a big temptation to use the prototype for the live product, but please don’t. When you need to make something that is production-ready, start from scratch and do it right.

Building a learning community website

The Challenge

Build a learning community website with the following requirements: 

  • subscription-based (behind a paywall)
  • forum for discussion
  • library with classes and materials
  • live calls with the students and the teachers
  • newsletter 
  • easy to use for both the young and older audiences 
  • accessible 

The solution

– base platform: Joomla!. In my experience, it is more secure than WordPress. It is component-based, which to me, makes more sense when you want to build a platform. Also, because it is component-based, it can be faster than WordPress that has to load all the plugins all the time.

– for the forum, I’ve used Kunena. I cannot say I like it a lot, but it was the natural choice for a Joomla! based platform. The interface is also common enough to make sense for an older audience. I have considered using Discourse, but it failed for the accessibility requirement.

– DocMan was the choice to manage our document library. The good part is that it can protect documents from being publicly accessible. The bad part: it feels clunky to navigate on the front end, and for some reason, the download feature is not working correctly on iPhones (but that could be Apple’s fault)

– after trying a couple of things, Zoom is the clear winner and choice for the Video Live Call that we have at least once a month.

– for the newsletter, the AcyMailing component is the professional choice. I like the flexibility of it better than MailChimp, and we get to have all the data. The challenge here was that our server is not doing well with email deliverability, so we did have to get an external mailing service like Mandrill (from MailChimp) to plug into this component. A big lesson learned here: if email deliverability is important to you and your users go PRO with a paid service. It will save you a lot of pain and headache. And in the long run, it may actually save you money by simply providing a reliable experience for your userbase. 

– ease of use was accomplished with custom modifications for the mobile version and by using a user experience that most people are accustomed to. For example, I have discovered that Discourse tends to not make sense for people used to the older forum software.

– accessibility meant we could not use Discourse. And to also consider a high contrast theme for specific users.

– for handling the subscriptions, I have used Community Builder and their CB Subs plugin. I cannot say I love it, but after a lot of customization work, it does the job right and reliably.

Add-ons and Customizations

– added a calendar to help better organize events in the community. DPCalendar does a great job with this.

– added a private messaging system – Udeimm – the code base is super old, and it tries to maintain backward compatibility with older Joomla! software. But it works. And with some custom work, it works very well. I like the fact that it integrates with CB and Kunena. (Oopsy… looks like development for this component has ended. Which is a shame. It was the best PM solution for Joomla!)

– for the forum, I had to code it a tagging system to allow users to tag each other using the @username system. This increases engagement and makes it easier for the users to let each other know if there is something of interest on the forum

– I have installed JChatSocial – it was a “cool thing” in the beginning, but I don’t see it as a popular feature. Also, it is not accessible, and the developers do not plan to make it so. With this plugin, I also have some performance concerns. I don’t think it can work for large communities. 

– added a custom made notification system to make it easier for a user to know when something important is happening: like an event, or announcement or someone tagging them or sending them a private message

– added web push notifications (for those that use Android or the desktop) – allows for better engagement and for users to more quickly respond to what is happening on the platform

– added a custom Joomla component to allow users to track their progress through the material on the website: the classes, the events, and assigned homework

Why a custom build? 

If I were to start again today, I would probably look for a platform that has all my requirements built in. I would also consider a hosted service. This would free me up from having to maintain, update, and secure the software. And I could use the free time to engage in other community-building activities. 

However, I am a nerd at heart, so I would miss the flexibility that I currently have to get my hands dirty and customize the entire experience in the way that I or our users like it. Because of this, the platform has grown and adapted to our users instead of forcing the users to adapt to a “ready-made” solution. 

This is a choice that I constantly have to make: do I want to be “the developer” or “the manager.” The developer can feel more rewarding as it appeals to my coding skills. But the manager is enticing too as get to focus more on the human aspect of it, and less on the technical side. 

I will conclude that I am proud of what I have built for WalkWithMeNow.com. 🙂

The DEATH of FTP as a deployment tool

Some years back, a client of mine was having issues with her order confirmation emails not being delivered to her clients. 

Testing the website, it looked like the process was suddenly stopping right after the payment confirmation. The webpage was blank, and the logs were incomplete — classic symptoms of a fatal or critical error in the code. 

The problem was that on my local copy of the website, I could not reproduce the issue. Everything worked fine. 

Many hours later, out of desperation and frustration, I decided to a full comparison between my mirror and the live website. If the code and the database were the same, then I had to get the same results. Since that didn’t happen, I had to conclude that something was out of sync. 

The code was in sync, but some of the files were present on the live server that I was missing on my test machine. Those files present on the server were causing PHP to load a different set of classes than what I would have expected. An older version of code was used that was not compatible with the newer shopping cart.

So how did this came to be? 

Eventually, I realized that by using FTP to deploy my code, I would be able to create new files or update existing ones, but I had no idea that some files had to be removed. 

FTP uploads were always additive. Old, unused files never got removed, and sometimes, their simple presence on the server would mess up with how the code was being loaded and executed. And this issue is rather difficult to discover and debug. 

I tried to manually keep track of files that should be removed before the upload. That works with simple, small projects, but it quickly breaks down when you need to deploy tens or thousands of files. 

I realized that with FTP uploads, I was never sure that my local work was in perfect sync with the LIVE software.

Transitory states

There is another scenario where FTP uploads cause issues. 

Imagine a popular web application with a shopping cart. If we need to update this application with some significant changes for plugins or core updates, using FTP to upload the files one by one creates this problem: for a couple of minutes to half an hour, some of the files are new, and some are old. Visitors who are in the middle of using the web app or making a purchase will suddenly notice all kinds of strange error because the code is in a transitory state: old files mixed with new and not always playing along. Depending on your project size and target audience, this may not be an issue, but if you have a high traffic web store, you may be losing money and also looking un-professional if you do updates like this. 

The final nail in the coffin

I have had this happen to me a couple of times. I am fixing something or working on a new feature. I am testing everything thoroughly to make sure nothing breaks. Once I am confident, I push the upload button on my FTP program, and I watch the progress bar impatiently. When finished, I load the LIVE website, and disaster strikes… errors all over the place, even on the home page. 

My mind races to come up with a possible quick fix, but it comes up blank. How I wish there were a “revert” button in my FTP program! It takes me some very long minutes to manually revert the FTP upload with the previous files and get the site working again. And then I am left with this puzzle: it still works on my test machine, it fails on the LIVE server, but I don’t have a way to test why, without breaking the web app while I am doing my investigation. And that is not very professional in my book. 

A faster, safe, better way to deploy your work

Wouldn’t it be nice to have a “deploy” button that would create a perfect mirror of your work on the live server, with no extra or missing files? And wouldn’t it be nice if this would happen with ZERO downtime for the LIVE app and no transient state for the code? And if disaster strikes wouldn’t be lovely to have a “revert” button and get everything near-instantly back in working condition?

Is this even possible? 

Of course, it is. I think everything is possible in the software world!

Enter “Deployer”

In my quest to find a tool and a workflow that would allow for perfect and zero downtime deployment and the ability to rollback my changes in a precise and complete way, I found a PHP tool called Deployer

And their idea is quite simple actually, but brilliant. On the live server, you don’t have only one copy of the code, but instead multiple versions. 

When you deploy your changes, a new version gets created from your updates, and when this process is complete without any errors, the web app is instantly flipped to the new code! 

If there are problems, there is a “revert” command that instantly flips the web app to the previous working versions. 

To use “Deployer,” you need a certain kind of workflow. 

My favorite is using git and GitHub to get my new code published on the live server. Using git in your workflow means that you need to be able to run git commands on your live server. Another requirement is the ability to use “composer” to download or update the third-party vendor libraries directly on the live machine, significantly reducing the time necessary to create the new version of the website. 

What this means is that you have to choose your hosting carefully (here is my affiliate link to SiteGround) and to make sure that your workflow is compatible with using a versioning system like git. 

This process takes a bit of getting used to and some setup time in the beginning, but the fast, safe, and revert-able deploys will give you peace of mind and speed up the time you roll out your updates or fixes. 

It is time for the FTP Uploads to Rest In Peace.

How to run vBulletin 4.x on PHP 7.3

Upgrading vBulletin 4.x to run on Php 7.3 it is not easy, but it is possible. 

Unfortunately, there no one-button-click fix that can do this update for you. You have to be a PHP developer yourself or hire one. I have already done this for a friend of mine, so I know from experience that it is possible. I can say that it is worth it, especially for the performance boost that you get with PHP 7.3.

The technique I used to update the forum was to create a mirror on a test server. On this test server, I have changed the version to PHP 7.3, and I have “debugged” the forum until it was working, and it was secure again. 

To make your work easier, you need to enable some configuration options. You need to be able to flip PHP versions on your server quickly. I used a .htaccess option for that. And it would be best if you also turned on all the debug options in PHP like displaying or errors and warnings and logging them. 

I have also focused initially on the most important pages: the home page, the forums, and categories page reading a discussion, creating a discussion, and posting a reply. 

Working on this, you will quickly discover that there are only a few kinds of issues that you need to fix. And as you fix them, you begin to see them and fix them faster and faster. Those are unquoted strings, querying undefined global constants, the “/e” deprecated modifier for “preg_replace” and the old style of defining a constructor by using the class name and there some cases where “sizeof” is used on a variable that is not an array

Obviously, these are all a result of the deprecated features from the old versions of PHP. 

A particular challenge with updating the code is the template system. This code is stored in the database, and it is executed using the “eval” function. Evaluated code makes locating the problem and fixing it more difficult. For this case, I have created a helper debug function that I could use to print you the template name and the template code that would show a problem. I would then update the template using the Style Manager available in the vBulletin back end. 

Removing the “/e” modifier in “preg_replace” took a bit of testing a playing around. But you can use “preg_replace_callback” to get the same result. You have to pay attention to what arguments to pass an in which order. Again, once you fix one of the deprecated calls, you will be able to fix the rest. 

vBulletin is a major piece of software with a lot of plugins available. The size and complexity of it are what makes is so difficult to create a simple patch tool for the entire forum that will take care of all the problems. And probably why the original developers did not create such a tool. In my particular case, I have focused on the most used features, so the forum continues to be usable for my friend and his community and also remains secure. Working like this will make the scope of the update more manageable and will give you more time to fix other less used features later on. 

Some tips

Working with AJAX requests can be tricky because it is not apparent where the problem is. For those scenarios, make use of the Web Developer tools available in your browser to inspect the response of the AJAX request, where you will be able to see the problem more clearly. The quick reply feature is the one that you will find being broken by warning outputs.

Another tip I have for you is to keep the new code backward compatible with the old version of PHP. This approach will allow you to incrementally patch the LIVE forum as you work and make the transition seamless for your community.

The final tip is to address the temptation to disable the display of errors as a way to “fix it.” That is not fixing it; it is just hiding it and kicking the problems down the road. I strongly recommend that on your test server, you have full debug on and work until you get no more warnings or notices. Then your code is ready for the future. 

Why not just upgrade to vBulletin 5.x? 

When I was considering upgrading to 5.x, the new code was unstable and buggy. It was not ready for a production environment. In my mind, the choice was clear: stay with 4.x – a time tested and proven solution that works. 

If 5.x is now stable, there are still more things to consider: how easy it is to migrate your community to the new version? Are you able to port all of your customizations? The signup process? What will your community think about updating the software and changing something that they are very familiar with? Some communities prefer the “new thing” and would gladly embrace and be curious about vBulletin 5.x while other communities would rather stay with what they know and with what works. The later communities would greatly benefit from a seamless upgrade of the old code to work with PHP 7.3.

In short: what is important for you and your budget will determine what to do next: upgrade the code, update to 5.x or move to a different forum software altogether. 

If you plan to do this kind of migration yourself and you get stuck, feel free to drop a comment below. I might have some insight as I have spent a couple of years working with and customizing vBulletin 4.x.

SSO – Single Sign-On – One Ring to Rule them all!

I am sure you have noticed most of the software services today that require you have an account allow you to “Login with Google” or “Login with Facebook.”

That is very convenient for your potential users and customers as Facebook and Google are so ubiquitous. 

The process above is a form of Single Sign-On. The user logs in only once into Google and then uses that login to authenticate themselves into various other software services that accept Google as an “identity provider.” 

The term “identity provider” is what Google and Facebook do when they allow you to use their services to authenticate your users. 

I was reluctant to use an external identity provider before, because I had assumed that it would mean that you do not “own” your user base, but instead Google does, and they could cut access on a whim. But that is not the case. If you request and are granted access to the user email, you can still get in touch with them, even if Google or Facebook will refuse to do business with you anymore, for whatever reason. 

So it makes sense to add such a feature to your service because it will make it much easier to adopt. 

For larger companies that manage multiple applications and services, it is possible, and it makes sense to implement their own Identity Providers to create the Single Sign-On capability.

Potential Pitfalls

A big challenge that I found with using Identity Providers is “session management,” which means keeping track of the “logged in user.” For example, if the user logs out of Google and logs in with a different account, your application needs to be able to spot this and create a new session for the new account. Otherwise, you risk exposing private data to the wrong person.

The Technical Side

Implementing Identity Providers and consumers it is relatively easy now because they are standard, so you can find ready-made libraries that will make the connection a breeze. 

The libraries I have worked with that I can recommend are:

For Php Composer:

– The PHPLeague / OAuth2-Server 

– The PHPLeague / OAuth2-Client 

WordPress Client Plugin:

– OpenID Connect Generic Client (this required some modification as it was not implementing all the requirements out of the box.)

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.

What does it mean to add value to your customers?

“How can I add value?”

This is the question I write at the bottom of my daily planner almost every day. Why? Because I want to train my brain to think in those terms. Why? Because I hear this is the key to success.

I never managed to answer this question adequately. And I had the insight that I need to answer a different question first! And that is:

“What does it mean to add value to your customers?”

Looking at this question, I realized that my efforts have been selfish. I was concerned with “my success.” The reason I wanted to add value is that I become successful by doing so. 

This question forces me to face the fact that I don’t know what “value” means for my customers. Yes, I can make guesses, but I don’t truly know. 

So many times, I have been tempted and followed through with this idea: what I do is valuable to me, so it must be valuable customers too. And if they didn’t see the value, that was their loss! This approach has resulted in projects that are too complex or in features that I thought were cool, but the customers did not care about them. 

And this has happened because I never paused to ask: “what is valuable to my customer?”.

Value is very subjective, I have discovered. I don’t handle loss very well, so I have a reliable backup policy. But others are much more willing to start over again, so backup is not essential. 

I value aesthetics and elegant design. But most of my customers value ease of use and the ability to manage the website themselves. 

I also have discovered that I am biased. And my bias is not the same as my customer’s bias. 

The first step in discovering what it means to add value to my customer is to be humble enough to admit that I don’t know and that I need to have a discussion. In this discussion, I need to ask the customer what is valuable to them, and if required, to help them discover their values in that process. I also need to set my bias aside and truly understand where the other person is coming from. 

The second step is for me to determine if we are a good fit. Based on what I now know about my customer’s values, can I truly serve them in their best interest? And sometimes the answer is no. And in this case, I have to send them away. 

But there is a way to refuse to work with someone that is not selfish. You can still add value by making a recommendation and send them to a specific someone else (your competition), instead of simply turning them down. This way, interacting with you has still got them one step closer to solving their problem, and you have been generous and trustworthy enough to recommend another person for them to work with. You may have lost a client, but you have earned trust, and in today’s world, trust is precious. 

So how can I add value to my customers? It first starts with showing empathy and meeting them where they are at. And in some cases, it means saying “no” and pointing them in a different direction.

Credits: my viewpoint on marketing and adding value is shaped in great part by people like Chris Do, Seth Godin, and Blair Enns.

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.

You have a great idea? Make sure your audience thinks that too :)

Some time ago, when predictive text typing was a “thing” on mobile devices, I had this great idea of adding the exact same features on desktop computers too. Just type in the first few letters, and the computer will make suggestions to help you finish the word. You would type faster and make fewer mistakes. What a great product, right?

I have spent one year creating and polishing the product, building the website for it, and also spent some money to have magazines review the product. 

What was the net result of all this effort? 

It was exhilarating to build this thing and overcome the tech challenges, but in business terms, it was a disaster. I sold just about three copies of this software. 

There is a valuable lesson I learned from this: test your ideas first, before actually building the product and service.

The good news is, in today’s world, you can test your idea for free and with very short setup time. And this post, I will share some tools to get you started. 

Social media

Social media is the most accessible medium to use and the quickest to get feedback on. Write a post about your idea, and ask for comments. Do you get any engagement? Are there any enthusiastic fans? Does it make sense to start a group around this on Facebook? Before you know it, you have your cohort of fans that will support you in building the “real deal.” And you will also have some precious feedback about how to build your service to serve your audience best.

A free website

Before investing thousands of dollars for a pro website, test it out with a free service.

WordPress.com is a good tool to use. Start with their free plan. WordPress is the one I use the most for myself and my clients.

Wix is another platform that has a free plan. I haven’t used it myself, but I’ve seen it working. If what you need to test out requires you to show some sort of design and less text, then I would go with Wix because of their powerful design editor that is not available in WordPress.

WebFlow is new to the game. It has a free plan, and it is aimed more at designers who what to greate outstanding pages without having to write code. If you are a designer, you will love WebFlow over the other options. 

Some important tips to consider

Intellectual propery

If you do not want to test your idea because you are concerned, someone else might steal it consider these: maybe your idea is not different enough, and that makes it super easy for anyone else to replicate? In which case, you may be better off pursuing a more innovative idea. Also, even if someone “steals” your idea, they don’t have you on the team with your insight, thoughts, and experience. There is a long road from an idea to a mature project :). 

From testing to an actual service or product

Regardless of what platform you choose, think about how will you grow if the idea turns out to be viable? You need to be able to export the content you have created for your tests. And it could be images, articles, or the design itself. It is always a good idea to document what you are doing for two reasons: if it has not worked, you will be able to learn something from it. And if it does work, you will have built a library of resources to help you launch the mature website/product/service.