My Experience Working Remotely in the States

Published in Inside Nelio.

Today I’d like to get away from the usual blog posts I write (which, as you know, are very focused on WordPress) and share something a little more personal. Specifically, I want to tell you about my experience living in the US for three months and what my absence meant for the Nelio team and me.

Adventure Time in the US!

In the middle of this summer my wife told me that, as part of her MBA, she was considering an exchange program with an American business school, the Babson College. I thought it was a great idea, since being able to complement your studies in another country is always very positive, and even more so if we take into account that the opportunity she was given was awesome: it’s one of the best schools in one of the best states (in terms of education) in the United States: Massachusetts.

Picture of a plane flying in the sky.
Flying from Barcelona to Boston.

I had never visited the country before, and I had always wanted to live abroad, so the idea of living in the US for a while sounded great. And that’s exactly what we did: from August 20, 2018, to November 17, 2018, I became a citizen of Boston.

The Arrival

Leaving Spain for three months to live in another country is not easy, especially when we take into account that you have your own company and you’re leaving two partners “behind.” But we’ll talk about work logistics later on. Right now, let’s focus for a moment on the fun part of the subject 😁

I lived many fun adventures during my stay in “the land of the free and the home of the brave.” But the one I remember most fondly was my arrival on American soil.

As soon as you get off the plane, you have to pass the border and customs security check. Usually, the interaction with the officers there is pretty straightforward: they look at your passport, ask you what you’ll be doing in the States and how long you’ll be there for, and… that’s it! You’re good to go. So when it was my turn that’s what I did: I told them I was going for “leisure” and that I intended to stay three months and return to Spain.

“Are you traveling alone?”

“No, I’m with my girlfriend,” I replied.

“Do you have a job in Spain?”

“Yes, I’m self-employed.”

“What do you do for a living?”

“I’m a computer scientist.”

“And who do you work for?”

“I have my own company. It’s just a couple of partners and me.”

“OK. Just wait here for a moment. Another officer will come to get you and ask a few more questions. And don’t worry about your passport; I’ll give it to my colleague when he gets here.”

Police freeze by South Park
So I had to wait for another officer to come and take me somewhere else. They were very polite, but I couldn’t help but think they didn’t trust me at all… Image by Southpark on Giphy.

What? 😥 Why? Almost everyone gets through this security check smoothly, and I just didn’t!

Anyway, I waited for 20 minutes until the second officer arrived. He took me and a few more passengers to a separate room, where several officers were interrogating travelers and their reasons for being in the US. Oops! 😖 At that moment I was already a little nervous because I didn’t quite understand what was going on. Honestly? I thought they might send me back to Spain in the next flight…

“David Aguilera,” someone called.

“It’s me!”

“So, you’re here with your girlfriend, right?”


“And she’ll be in a University?”

“Yes. She’s studying an MBA at Babson.”

“You have your own company with two partners… is that correct?”


“Do you have a business card?”

“No, I don’t. But you can take a look at the website.”

“And you’ll be here for three months, on vacation?”


“And what do they partners think about it? Are they OK with the idea of you being on vacation for… three months while they’re working?”

Aha! So that was it! That’s why they pulled me aside and wanted to ask me more questions about my stay…

“Well, I plan to work remotely while I am in the United States. I’m a computer scientist, and a laptop is all I need to work.”

“I see… Do you already have your return flight?”

“Yes, sir.”

“Do you have some cash with you?”

“I do. $1,500.”

“Good. OK, then. Here you have your passport. Have a nice day!”

And that was it. Welcome to the USA!

David and Boston's Skyline
Look how cool Boston is!


During my stay in the United States, I took the opportunity to travel as much as I could: Boston, New York, Chicago, Washington, and Las Vegas were the cities I got to know. More or less, one city every three weeks 😊 Obviously, I would have liked to see many more, but I had to slow down because, let’s be honest, flying and looking for a place to sleep is anything but cheap.

Night in New York
New York is a beautiful and colorful city, isn’t it?

Being in the US for three full months gave me the opportunity to not only visit cities but also meet a lot of people and live a different culture. One of the things I liked the most about my time there was Halloween. It felt like being in a movie!

Halloween decorations
One day I went out for a walk and… Halloween was already there!

Remote Work

And now that you know how much fun I had, let’s get back to business, shall we? What is it like to work remotely? How has my experience been during these three months? Is it easy or difficult? Well, I hope to be able to answer all these questions 😇

The first thing you should keep in mind when considering whether or not you can work remotely is the type of work you have. If you have a job where you need direct contact with clients, then maybe you can work from home but not go to another city or country. But if you’re a computer scientists like I am, you can probably work remotely and have no trouble. After all, all we need is a computer and an Internet connection, right?

In my case, it was clear that I could work remotely, but I needed the approval of Ruth and Antonio – going to the United States was not only a change of location but also a change of working hours. Luckily, they both thought it was a great opportunity for me and were happy to “let me go.”

My Workplace

When you’re going to work abroad, you need to make sure you have the tools you need with you. Don’t fool yourself into thinking that digital nomads can work anywhere around the world, looking at spectacular landscapes and living unforgettable experiences… What if you end up in a place where there’s no Internet connection?

David's desktop in the US
That was my desktop for three months. Not the best, but useful enough.

When we were looking for a place to live in the United States, I knew it had to be a flat or a house where I had a desk in my own room. I needed a quiet space, away from the other members of the family. And a good Internet connection, of course! In the photo above you can see what my “office” was for three months: I had neither the best chair, nor the best table, nor the best light… but, hey, I had everything I needed!

Synching Schedules with Barcelona

A significant part of working remotely is your compatibility with the rest of the team. Even if you can work most of the time autonomously, you’ll have to schedule a meeting or a Skype talk from time to time. And since you’re the one that’s abroad, you’re the one who’ll have to adjust his schedule to the others’.

Luckily for me, the time difference between Barcelona and Boston was only 6 hours, so my working hours in the morning were Antonio and Ruth’s afternoons. Thanks to this, the deferred work worked perfectly: we could chat with each other daily.

I have to admit that my staying in the United States was even more positive than it first seemed! As we have already mentioned in the blog, most of our customers are American, so suddenly, for three months, Nelio‘s support schedule coincided perfectly with that of our customers. Thanks to this time difference, we were able to cover more support hours: from 8 am in Spain to 6 pm in Boston (that is, 12 pm in Spain). Cool!

What About WordCamp Barcelona 2018?

The only thing that made me especially angry about my American adventure was that it coincided with WordCamp Barcelona 2018. As you know, the three partners of Nelio were participating as organizers of the event. In my particular case, I took care of the website, promoting the blog on social media, and designing and ordering the swag.

A couple of weeks before WordCamp Barcelona arrived the workload just skyrocketed. There were a lot of tiny details to fix and polish, and we were all slightly overwhelmed: boost ticket sales, organize sponsor packages, manage the swag… but I was abroad!

As I just told you, one of my responsibilities as an organizer was to order the swag. Specifically, I had to place the order and validate the designs of the prints. The schedule was extremely tight, so I had to make sure that my conversations with our provider were smooth and fast. The problem was, as you can imagine, the time difference: they were in Barcelona, and I was in Boston…

What did I do? Adapt my schedule to theirs, of course! For a couple of days, my day started at 3 or 4 in the morning, just to make sure I was available during the working hours of our provider. It wasn’t ideal, but that’s what it takes!

In Summary

And this was my experience living and working in the United States for three months. I hope you enjoyed my adventures and you learned something from my experience. If you’re wondering whether it’s a good idea to live such an experience: it is. If you’re ever given the opportunity, and you can afford it, go for it. You’ll have to adjust your schedule and routines with your partners’, but it’s worth it.

If you have doubts or are interested in knowing anything, don’t hesitate to ask me; I’ll be happy to help you!

Featured Image by Mimi Thian via Unsplash.

PoorNot badGoodGreatExcellent (1 votes, average: 5.00 out of 5)

5 Amazing Tips to Get Rich Using Clickbait Titles That Marketing Experts Want to Keep Secret

Published in Online Marketing.

It’s time to confess—I lied. I don’t have 5 amazing tips to make you rich 🤷. I don’t know if they exist either, but if they do, I doubt marketing experts would keep them secret instead of charging for sharing them, right? 😇 So why does this post have the title it has? 🤔 Well, it’s a clickbait, of course.

Chris rock what
Click-what? Source: Giphy.

Clickbait Titles

The amount of information that is generated nowadays, minute by minute, is incredible. Videos, news, blog posts… it’s just overwhelming! To give you an idea of the magnitude of the tragedy, just look at the stats: 500 hours of video are uploaded on YouTube every minute. 😲 And more than 83.6 million posts are published every month on alone. That’s 2,000 posts per minute!  😱 So it’s normal content creators are looking for new ways to capture the attention of their audience. One of these formulas is the use of the famous clickbait titles. And they’re an epidemic. But like it or not, clickbait titles work, especially when it comes to sharing content: “59% of people who share articles on social networks have not read them.”

Writing is not easy—you’ll have to invest a lot of time. Source: Giphy.

As we can read in Forbes, the titles that are considered clickbait are those that promise more than what they actually offer with the intention of getting lots of clicks. For example, if you see a tweet sharing a post with the title “The 5 Most Surprising Tricks for Blogging” and when you get to said post, the tricks aren’t there or are just plain stupid… well, I guess you’d be a little disappointed, right? (I hope you noticed the irony in the post you’re reading right now 😉). These types of titles can be good for attracting traffic, but if you don’t meet expectations they are a disaster in terms of keeping that visitor on your website.

Some Clickbait Examples

Like I was saying, clickbaits are an epidemic. Open almost any website and you’ll find promoted posts using them:

Examples of Clickbait Titles from Buzzfeed
Examples of Clickbait Titles from Buzzfeed.

Come on! “Pick A French Dessert, And We’ll Reveal What You’re Like In Bed.” 🤣 This is clearly a stupid thing… but it has something that’s luring our mouse, right? Click on that link and you’ll find this:

Example of the content behind a clickbait title
Example of the content behind a clickbait title. Click, click, click! Keep clicking, goddammit!

A stupid list of French pastries. That’s it. That’s all there is. Or, wait, can I click one of those pastries? Of course I can! Sites using clickbait titles want to keep you engaged for as long as possible, so they’ll apply this tricks to retain your attention. Well, I’m afraid I’m not interested in this… so “Hasta la vista, baby.”

Oh! And in case you’re wondering… I clicked on éclair and you won’t believe what I got (clickbait style):

The results of a stupid test
This is what you might get when you take that stupid test… 😅

How to Spot Clickbait Titles

Clickbaits are somewhat similar to what the U.S. Supreme Court did in 1964 when it defined what pornography is: “You know when you see it.” Clickbait titles are exactly the same—they’re difficult to describe, but when you see one, it’s obvious what its intentions are. In Buzzsumo they analyzed the most (and least) shared articles on social media and came to several interesting conclusions:

  • The most successful combination of words that received likes on Facebook was “will make you”, getting more than twice as many clicks as the second one on the list. Headlines with this formula tell the reader why they should be interested in the article and try to create an emotional response before they read it. For example, here are titles like “13 Travel Tips to Make You Feel Smarter” or “Who Looks Better? Pictures that will make you laugh your head off.”
  • Formulas that appeal to feelings work better than others. “Tears of happiness”, “goose bumps”, “a cutie”,  or “‘you can’t stop laughing” are some of the examples we find in this category.
  • Any combination that arouses our curiosity and voyeurism is also a good way to get the desired click. “What happened next”, “Twitter reacts to”, or “What everyone says about” are strategies that tell you just enough to trigger your curiosity.
Cry crying
Appeal to feelings and you’ll probably succeed. Source: Giphy.

Considering all this information, I think the line between a clickbait title and a title with the potential to become viral is very thin. In principle, using these formulas to get more visits doesn’t have to be wrong, as long as the article then meets expectations, right?

In Summary

As we have seen in today’s post, most clickbait formulas appeal to people’s most basic instincts: joy, sorrow, curiosity, morbidity… and that’s not necessarily bad. If we want to arouse the interest of our readers we have to use formulas that we know work. But it is also our responsibility as content creators to create quality articles that truly meet the needs of our readers.

Now, tell me, what do you think? Do you use clickbait formulas? Is this what the Internet will look like from now on? Anything goes to get readers? Leave your opinion in the comments and we will discuss it 😉

Featured Image by Sharon McCutcheon on Unsplash.

PoorNot badGoodGreatExcellent (1 votes, average: 5.00 out of 5)

How to Be the First Result on Google with 5 “Easy” Steps

Published in Online Marketing.

The question every blogger and webmaster has is how to rank high enough to be at Google’s first result page. Or, even better, how to be the very first result. And it’s a very logical question: nowadays the web is so big that “being online” is not enough—people has to be able to find you or else you’re wasting your time.

If you’re here today it’s because you want to know the recipe to be the first result on Google… and I have some great news—that’s what I want to share with you! Now, keep in mind that this isn’t a magic recipe that will grant you all your wishes without effort—you’ll have to work hard and for a long time to get that first position. If you’re ready to do what it takes, let’s start with the basics…

What Is a Search Engine and How Does It Work?

Whenever I’ve searched for information about Google, SEO, SEM, and search engines in general, all I’ve found is confusing and complicated information. Weird terms, nosense about Google‘s algorithm and how it evolves… Boring! I honestly think all these discussions are crap—the concept of a search engine is way simpler than that and, therefore, so it is writing content that can reach first position. So, come on, let’s ask the simplest question possible: what is a search engine and what is it for? 🤔

Chicken looking
The essence of a search engine isn’t scary—it’s all about common sense! Source: Giphy.

A search engine is just a system that indexes all the content available on the web in order to find the best pages that talk about the topic a user is looking for. That’s it! Easy, right? Now, take a closer look at that definition, because it contains all the clues you need:

  1. Search engines index the content on the web. The reason is simple: if we want to find results fast, we need the information to be properly indexed. And this simple fact has some big consequences: search engines won’t have the latest version of your site up-to-date at all times—it might take some time to reindex your site after you change something.
  2. People look for content. In the end, your website and the Internet in general is no more than a collection of millions of pages of information. As the owner of a website, your priority must be to make it possible for people to find your content, and this means it has to be useful, relevant, and great.
  3. Users search. Quite obvious, isn’t it? When a user needs certain information and doesn’t know where to find it, they ask Google to find it for them. So, yeah, there you have it 😎
  4. The search engine aims to find the best content available. This is the key of everything: finding the best, most useful content that the user is looking for and needs. That’s what search engines exist for.

As you can see, the job of a search engine is to convert a user’s query into a set of relevant and quality results. So, now that we know what we’re talking about and what we’re aiming, let’s try to answer the following question(s): how would you and I create a search engine? What criteria would we take into account to determine what should we show a user when they search something? How would we prioritize those results?

As it turns out, it’s all about common sense.

The first thing we have to do is find the most relevant results from the millions of pages we have indexed. The relevant results of any search are those that cover the topic the user is interested in. Duh! Don’t get me wrong—implementing this step is extremely complicated, and I don’t want to get into it… but just assume you and I can do that. For example, if I search on “WordPress“, pages containing the keyword “WordPress” are likely to be relevant. And perhaps also those who talk about CMS in general, hosting, blogging, and so on.

Now this step is one of the things that many SEO and positioning strategies tried (and try) to exploit. That is, there’s people who reverse-engineer the criteria by which Google and other search engines consider a page relevant, exploit them to deceive the system and boost the page into the first result page. In the past, for example, webmasters filled their posts with tons of (not-always-that-relevant) keywords to make Google believe their website was very relevant to a certain search query… But I’m sure you’ll agree with me that this is a poor trick that benefits no one other than the cheater (and thank God it doesn’t work anymore). As search engines become more and more “intelligent”, these techniques are less effective, so don’t waste your time here.

Well, let’s say we’ve already found the most relevant pages that talk about a particular topic. Doesn’t matter how we did it—we just have them. If we’re honest with each other, this means we probably have thousands or even millions of results to show… how do we sort them? Which ones have to go first and which ones last?

The first criterion could be the quality of the copy. The better and more complete a result is, the higher priority it should have. And how do we measure “quality“? The length of the post could be a criterion (longer posts seem better). Another criterion could be the number of times it appears in other pages and websites—the more pages that link to a certain post, the more likely it is that this post is good (this is what Google PageRank does). We could also take into account the number of times content was shared on social media. We could even take into account the author’s experience on the subject: if they are an author whose posts speak about the subject we’re interested in and we know they’re experts in the area, what they say is probably more accurate, right?

Now, what if we apply all these criteria and we still have hundreds or thousands of pages to choose from? Can we find other criteria for further prioritization? 🤔 Of course! 😎

Think about it for a moment…. Given two equally “good” pages in terms of content and relevance, which should we show first? Well, you could take into account the speed at which the page loads (users don’t like to wait), if it’s mobile ready, its publication date (people tend to prefer more recent results), the accessibility level of the website, and so on.

The Recipe to Reach First Position in Google

Now that you fully understand how a search engine works it’s time to exploit this knowledge. Apply the following 5 “easy” steps and you’ll get there sooner than later.

#1. Focus On Your Content First

You should already know this: the content is the holy grail of search engines. Therefore, this is the first thing you have to work on if you want to make it to the first result page. The problem I think many web owners have is that they write for Google and forget about their end users. Wrong! You have to craft content that’s relevant to your users—if you do it right, Google will end up indexing you


Checking golden retriever by AFV Pets
Don’t waste your time with Google‘s internal behavior… Picture by afvpets via Giphy.

In this blog we’ve talked a lot about the importance of content and, in particular, how a good editorial calendar will help you get fresh, quality, consistent content on the blog. Practice makes perfect, so write assiduously and strive to improve. It’s like the gym: it’s not only about paying 20 bucks a month—you’ll have to work hard if you really want to get in shape.

Quality content, long copies (as recommended by Neil Patel on his blog), linking to other authors and building a quality-link network… all these factors will affect your final ranking, so take your time to address them all. Don’t spend 3 minutes on your blog and hope for the best, because that’s not how things work. If you’re going to make a living with your website, you’ll have to put in some big time!

Nelio Content drag-and-drop editorial calendar
Nelio Content drag-and-drop editorial calendar

On the other hand, don’t forget to clearly define the main theme of your blog. Remember that your goal is to become the expert in a particular area, so the contents of your website should revolve around it. Avoid being a learner of everything and master of nothing—we want our users and Google to know that we are the source they should be reading when a certain topic pops up.

#2. Help Search Engines

Writing content should be your top priority, but helping search engines understand what your site is about comes second. The idea is that good content will end up positioning correctly in search engines without you doing almost anything, because if it contains the information that users are looking for and is the best possible answer, the search engine itself is interested in your page being among its results. However, we have already seen that indexing and classifying the Internet is not easy, and so all the help we can offer Google is more than welcome:

  1. Install a plugin like Yoast SEO and fix the SEO of all the pages you write. Put a meta title and a meta description optimized for the search engine. Decide what the main keyword of your entry will be and make the content revolve around it (for example, in this post the word could be “first result”).
  2. Implement Latent Semantic Indexing. In other words, don’t get obsessed over the keyword you’ve chosen. As Neil Patel says in his blog, LSI is basically about using related concepts to help Google understand what we’re really talking about. For example, if we talk about Social Networks (and that’s our keyword), Google won’t be surprised if you use other keywords such as Twitter or Facebook at some point in your content.
  3. Install a plugin such as WordLift and create an ontology. If Google’s goal is to index information, let us help it determine what our content is about by marking the concepts that are covered in it.
  4. Link to your blog as well as to other websites. Help Google find content related to your post on your own blog and other blogs. These links give more context to the search engine and allow it to better determine its quality. Also, links to your own website encourage your visitors to keep surfing it… 😉

#3. Optimize Your Website

Great content alone doesn’t cut it—you also need to focus on the medium in which it’s delivered. In this case, you have to focus on your website. Make sure it works fast and smoothly by taking into account things like:

  1. Load time is as small as possible
  2. The website is mobile ready
  3. Images have the proper dimensions and file size
  4. Scripts don’t slow down your site significantly
  5. Your pages are accessible to all users
  6. and so on

If you don’t know where to start, use PageSpeed Insights by Google to analyze how well your website is doing and discovering what needs improving.

#4. Boost Your Ranking with SEM

Everything I’ve told you so far is to enhance your organic positioning. In other words, to reach the top position simply because of the quality and relevance of your content. Unfortunately, there’s a catch with this approach: it takes a lot of time to craft good content and build the reputation you need for Google to rank you among the best.

While waiting for your SEO strategy to take effect, you can consider complementing it with a Search Engine Marketing (SEM) strategy. With SEM you can rank your site higher using sponsored ads on search engines (with Google AdWords, for example) and thus generate quality traffic to your website.

Depending on the market you are in and the level of competition, advertising can be very expensive… but if you have the capital or in your sector the advertising is relatively cheap, try to invest for a while to attract traffic. Oh! And keep in mind SEM strategies are not easy either—you might need to hire an expert there 😉

#5. Invest Some Resources in Social Media

Finally, I couldn’t finish this post without dedicating a couple of lines to social media. If the goal of getting the first ones on Google is to attract more traffic and readers, we can’t forget the role that social networks play when it comes to doing the same thing. I do recommend you invest some timein promoting your content there. Using a tool such as Nelio Content you can easily share the contents of your website and reach a wider audience.

Being active on social networks and getting reshares and retweets will definitely improve your traffic figures. And, who knows?, maybe Google also takes into account the number of times a certain page is reshared on social media to determine its quality… 😇

Wrap Up

Today we just scratched the surface of a very complicated topic. But I hope that my tips help you reach your goals. I know I’m asking you to work hard, but as the saying goes: no pain, no gain. Start your blog today, put into practice what we have explained here, and tell us how it worked.

Good luck! 🤗

Featured Image by Sean Patrick Murphy on Unsplash.

PoorNot badGoodGreatExcellent (1 votes, average: 5.00 out of 5)

WordPress, Drupal, or Joomla! Which One is The Best in 2018?

Published in WordPress.

In 2016 Antonio compared WordPress, Drupal, and Joomla! (in Spanish) and focused on different aspects such as ease of use, multi-language support, or the community behind each platform. According to Antonio’s analysis, WordPress was the winner, albeit very narrowly and closely followed by the other two. In fact, some of you contributed very interesting points of view in the debate. One of the comments I liked the most and that really sums up the feelings of many users is the following:

Both WordPress and Drupal are excellent Content Management Systems, each triumphing in a different sector.

Drupal is far above WordPress in terms of potential and flexibility, but requires a much larger learning curve. (…) WordPress was created to develop blogs or simple pages without much programming knowledge, but one can use it today to create larger and more complex portals.

It’s been two years since then and many things have changed. That’s why we thought it would be interesting to revisit the comparison, see how WordPress, Drupal, and Joomla! have evolved over the last two months, and try to determine which one has the greatest potential for success. Shall we start a new flame war?

1. Ease of Use

Honestly, I don’t want to go into too much trouble to discuss again the differences in the overall user-friendliness of the different CMSs. A lot of people have already covered this topic, and the general consensus is that WordPress is more user-friendly for beginners. However, I’d say that today the three platforms are very usable and, once you get used to them, relatively simple.

One of the things that Drupal is always criticized for is its steep learning curve. But that makes perfect sense—Drupal was designed to create more complex websites and platforms. What I don’t like about this statement is its implications—we use it as an argument to justify how easy WordPress is compared to Drupal, but you know what? WordPress can be very complex and cumbersome to use too!

Best gif wtf
C’mon! Do you really think WordPress is difficult? Source: Giphy.

Yup, that’s exactly what I’m telling you. Actually, Antonio wrote about this topic a few months ago, when he looked into the question: “is WordPress as easy as we think it is?” And the answer was it isn’t. By default, WordPress is simple and effective and beautiful. As soon as you start installing plugins, page builders, and themes, that simplicity disappears and all that’s left is a (potential) mess!

Let’s add some context…

We (WordPress lovers) should be more careful when it comes to preach the simplicity of WordPress—problems arise quickly when we add third-party plugins and a lot of functionality on top of a vanilla WordPress installation. But there’s a catch: you’ll find this very same problem in any other CMS—as soon as you start installing more and more stuff on top of your CMS, it’ll become more complex. Therefore, it’s the responsibility of plugin and theme developers to make sure that their work fits elegantly and effectively into the WordPress Dashboard (or your favorite CMS).

In this sense, I think we have to highlight the efforts of the WordPress community to create a friendly, powerful, and context-aware user interface. I’m obviously talking about Gutenberg. If you take a look at the toolbar of the current WordPress editor, you’ll see that there are a lot of options, many of which you probably don’t need in 99% of cases: scratch out text, copy and paste, indent text…

TinyMCE Toolbar
The toolbar of WordPress’ Visual Editor has a lot of different options. Most of them are used seldom, but there they are… Can’t we do better?

Gutenberg changes this classic approach and proposes a completely different solution. The contents of your pages and posts are blocks (we’ll talk more about this topic next week) and the available actions depend on the active block. Too complicated to follow? Just look at the following example:

Gutenberg Paragraph Block
The actions for editing a Gutenberg Paragraph are only those that really matter in this context. No more, no less.

When you are editing a paragraph-type block, the actions you have are the typical ones used in that context: text alignment, bold face, underline, links… Everything else just vanishes and only the important things remain.

What if we change the block we’re working with?

Gutenberg Title Block
The list of actions you can use in a title are similar to those found in a paragraph. However, you now have the option to change the title hierarchy (H2, H3, and so on). How cool is that?

Actions change too! In this case, alignment tools disappear (how a title looks depends on your WordPress theme) and, instead, you now have a few buttons to change the title hierarchy (H2, H3, and H4). Easy and simple.


Currently, the three CMS are quite similar in terms of user-friendliness. Sure, WordPress is probably simpler for beginners, but once you get used to it and start installing more functionalities, its complexity also grows. In my opinion, though, WordPress is the one that is making the most efforts to innovate—although Gutenberg is still very green and I don’t recommend your using it in production, the pace at which it’s advancing and the new paradigms it brings are amazing.

2. Plugins

In our original analysis in 2016, we compared the virtues of the different CMSs according to the number of plugins and themes each one offers. But I don’t know if “raw numbers” is a good metric for deciding which one is better. Instead, we should be talking about their quality and the level of support you get on each platform. Unfortunately, these metrics are way more difficult (even impossible?) to address, so I don’t know how to call a winner using any of those either 🙈 Maybe you have an idea and want to share it in the comments section?

Anyway, from what I’ve seen in Barcelona, there are great professionals working on each platforms, so I assume you’ll find great plugins and themes everywhere.


Let’s assume we have a technical tie, shall we? WordPress has the largest market share and, therefore, it should be easier to find the right tool or professional… but more doesn’t always translate to better, so… 🤷 What do you think?

3. Localization and Internationalization

The eternal blight of WordPress! It’s 2018 and we don’t have native i18n capabilities yet.

Shame embarassed
WordPress, it’s a shame, shame, shame you don’t have native i18n capabilities yet. Source: Giphy.

Unfortunately, in these two years things haven’t changed much and WordPress is still way beyond the other two when it comes to multi-language. There are multiple plugins to add multilingual support, but it’s a shame it still isn’t a native functionality.


Little can I say here: in terms of internationalization, both Drupal and Joomla! humiliate WordPress. Nonetheless, you should keep in mind that WordPress can be multi-language by installing a simple plugin (just take a look at our website, which is also available in Spanish), but it’s a shame that we have to resort to third-party solutions for something like this in 2018.

4. Security

One issue that tends to be of great concern to all webmasters around the world is security. In this case, all three platforms benefit from an active community that takes care of fixing bugs as they appear. So you can rest assured regardless of the platform you end up using—if you’re up to date with WordPress, Drupal, or Joomla!  your website will be secure.


Technical tie. While it’s true that WordPress is a honeypot for attackers (let’s not forget that it powers almost 30% of the web!), the speed at which its community fixes its vulnerabilities makes this threat harmless.

5. Community and Support

The three platforms are in good health and have a strong community behind them. They often hold meetups and conferences, support forums are active, users help each other  and are very welcoming… in short, it doesn’t really matter which CMS you choose—you’ll never feel alone. But if I had to choose one CMS because of its community, it’d definitely be WordPress.

This should come as no surprise, for WordPress has an outstanding market share, powering almost 30% of the web. This means there’s an impressive number of people who use WordPress and, therefore, are part of its community. And you can feel it when you look at all the events they hold: regular meetups are held in many cities around the world, and not only in large urban centers, but also in small and medium-sized cities. In the Barcelona area alone, for example, there are 7 meetup groups! Not to mention the numerous WordCamps that are held in each country (in Spain we have had and have in Santander, Seville, Madrid, Barcelona…) and also macro-events such as WordCamp Europe, where professionals and users from all over Europe and the world come together for three days. It’s just unbelievable!


WordPress is the clear winner. Its market share and, therefore, big community makes them the right choice if you want to connect with users and professionals of this CMS

Final Remarks

WordPress, Drupal, and Joomla! are great platforms for creating a website. In most areas, I couldn’t find a clear winner, but there are two things in which I think WordPress excels: its community and its ability to innovate. WordPress is is the platform with the most users in the world and their commitment to implementing a new user interface like Gutenberg demonstrates their eagerness to innovate and change the way websites are made.

What do you think? What CMS would you choose and why?

Featured Image by Johann Walter Bantz on Unsplash.

PoorNot badGoodGreatExcellent (No Ratings Yet)

10 Reasons to Start a Blog in 2018

Published in WordPress.

In the era of social media and immediacy, where millennials no longer write but send voice messages, is it still a good idea to start a blog? We believe it is. Having a blog in 2018 is something that can bring you many good things.

We still are at the beginning of the year and you might be evaluating your goals for 2018. If you’re wondering whether a blog makes sense today and need to be convinced, in this post I’m going to show you 10 reasons why you should start a blog in 2018.

#1. Getting Started is Easy And Cheap

Nowadays, setting up your blog is easier than ever. You don’t need to spend a penny to get started, because you can find several free options out there to create your blog. And yes, I thinking of, but you also have other options like Wix or Medium that you might want to consider.

rich free money GIF by SpongeBob SquarePants
You don’t have to swim in money to start a blog. Today it’s even free!

But if you want to have full control of your content, I recommend you to manage a blog in WordPress directly on your own server. You have several options in the hosting market for less than $4/mo. A ridiculous investment, considering all that the blog can do for you.

The major investment you need is your time and effort. That’s right, writing on a blog takes time and dedication. But if you decided to start your blog as a personal project for this year, you’re more than ready for it, aren’t you?

#2. Improve Your Communication Skills

Writing regularly is the best exercise to improve your communication skills. Just like when you do sport after a long time without doing it, you’ll feel stiff at first. But believe me when I tell you this, practice makes perfection.

busy jim carrey GIF
Constant writing is a great way to improve your communication skills.

Furthermore, by writing regularly you will not only improve your communication skills, but you will also be more capable of organizing and structuring your ideas and thoughts. All this is part of the basic skills that many companies are looking for these days. Put it into practice by writing on your new blog and you’ll see your progress over time.

For example, if you take a look at older posts in this blog, the quality of the writing was probably much worse than it is now. We’ve improved, and so can you.

#3. Feed Your Soul Writing About Your Passion

It’s proven that our daily routine is much more comfortable if we have hobbies that help us disconnect from time to time. You might not be interested in creative activities like underwater rugby, stone skipping, or even bog snorkelling, but they’re cool topics to write about. So, why don’t you create a blog and talk about what you really like?

cat writing GIF
Do you like cats? Make a blog where you write about it. You aren’t the only one that loves them…

Unleash your passion by writing articles about your hobbies. The most important thing here is to choose a topic that inspires and motivates you to keep writing over time. Managing a blog is a good way to disconnect from your work every now and then. Unless your job is to write on blogs, of course…. But even in that case I’m sure you’ll find a different topic to write about in your free time 😄.

#4. Meet New People

One thing leads to another, and writing on a blog will lead you to meet more people interested in the chosen topic. In our case, opening the blog about WordPress and web development has allowed us to meet other professionals in this field. We’ve even been able to interview a lot of them!

shake hands superman GIF
Take advantage of your new blog to meet new people with your same interests.

In addition to this, thanks to the blog we have actively participated in the WordPress community by attending events such as meetups and WordCamps. And there we’ve made new friends. So don’t underestimate the fact of opening a blog as a way to make new friends.

#5. Be a Leader

It sounds like magic, but when you write in a blog there are people who read you and will even take you as a reference in your field (as long as what you say makes sense). Influencing others is much easier than you think.

standing ovation applause GIF
When you post on your blog, you reach an audience. Eventually, they’ll see you as the expert you are.

Write on your blog, post to social networks, mention other experts in your field, and you’ll see how quickly you join the elite group. Having a blog is a great way to grow your personal brand or that of your company.

#6. Stay Up-to-date

Having a blog and writing about a specific topic implies being technologically up-to-date. You should be familiar with content management tools, such as WordPress, and have knowledge about marketing and social media.

fairly oddparents knowledge GIF
A blog will keep you updated. Knowledge is power!

The blog is the perfect excuse to be more connected and expand your SEO knowledge through tests with your content. In short, with a blog you’ll surely learn something new every day. This proactive attitude in information and communication technologies is highly valued today and can help you grow personally and professionally.

#7. Create Content That You Can Reuse in The Future

Maybe you have the feeling that writing on a blog won’t do you any good. Once written, your articles will be lost in time, like tears in rain…

blade runner GIF
Don’t get depressed. Your content can have more lives than a cat.

This doesn’t have to be like this. Today you can re-use your content and transform it into other valuable content. For example, you can take some of your articles and turn them into videos for your YouTube channel. Or set up an ebook that you can give away to your visitors in exchange for their email. Or create a presentation with some of your content that you can then send to an event (such as a WordCamp) where you end up attending as a speaker.

There are a thousand options available. For instance, one that I liked very much is Morten Hendriksen‘s who decided to write a novel in 365 days writing every day on his blog in WordPress.

#8. Help Others While You Help Yourself

A blog is a window to the world. Take advantage of it and try to change it. How is that? Very easy. You’ll get comments. Many. Most of them will be spam, but among them you will find some interesting pearls. Read them because some will ask you for help, or will show you different opinions than yours.

good morning help GIF by Satisfied Customer
By helping everyone who comes to your blog, you will improve your image and grow as a person.

You must take advantage of this to try to help the one who needs it and to understand the different points of view that exist. All this will help you to improve as a person and to see things from other angles. There is a lot of talk nowadays about personal growth… well, having a blog can help you get a better version of yourself!

#9. Build an Additional Source of Income

Making money with a blog is neither easy nor should it be your sole objective. But it’s clear that if you see your blog gaining audience and you can monetize it, you’d be an idiot not to do it.

get your billion back make it rain GIF by Billion Back Records
It’s not going to fall money from the sky, but with effort you can make the most of your blog.

There are many options to make money with your blog. From the typical ad-based ones, to much more elaborate ones, such as creating hidden content only available to those who pay a fee. Choose what you feel most comfortable with and be patient. If you do it well, you’ll be able to get a small bonus to support your work and increase your motivation with the project.

#10. Blogs Aren’t Dead

Nowadays a Twitter thread is much more viral than a blog. But while the average life of a tweet is just a few minutes, your blog posts remain easily accessible much longer.

dawn of the dead zombie GIF by Maudit
Blogs aren’t dead. Check it out for yourself!

If blogging was bad, there wouldn’t be any blogs today. And that’s not the case. In 2018 blogs are not dead. They are more alive than ever and your audience will continue to appreciate you providing them with valuable content. People keep posting content frequently because others keep reading it. People like you and me. So, what are you waiting for?

Featured Image by Neven Krcmarek from Unsplash.

PoorNot badGoodGreatExcellent (2 votes, average: 4.00 out of 5)

The Limits of the Support You Provide for Your WordPress Plugins

Published in WordPress.

WordPress is a hostile environment. After several years of developing plugins for this platform, I have no doubt about this. If you don’t follow the development guidelines and skip the good practices, you’ll make a mess. But worst of all, even if you’re careful and do things right, there are a lot of problems out there that can affect the quality of your product. And most of them, in an open source environment like WordPress is, are out of your control. Welcome to the web development world!

If you’re a regular reader of this website, you may already know some of our battles. Like that time when another plugin broke our style. Or when I had to work wonders until I found a third-party JavaScript breaking the installation of a client that had one of our plugins installed. And there are many more stories, believe me—but not everything can be explained publicly! 🤫

Are we getting older and like to look back on the past? It’s possible. But I hope these posts will help you and other developers to avoid making the same mistakes. That’s the reason we share our experience. And, trust me, what I’m about to tell you today is pretty interesting too.

Customer Support: A Daily Challenge

One of the most important aspects of a business like ours (small team selling WordPress plugins) is the support you provide to your users. This is where you really gamble it all. If you’re not able to help someone who pays for using your WordPress plugins, it won’t be long before they abandon you and run away to fall into the arms of your competition (which will likely have more resources than you do). So keep in mind that every support ticket is a business opportunity and don’t screw it up!

Thanks to support you can win those users/clients who have a problem by helping them as they deserve and solving the conflicts they may have with your product quickly and effectively. But it’s not always possible. Allow me to illustrate it with a recent example….

Sometimes you have to investigate some pretty freakish problems.
Sometimes you have to investigate some pretty freakish problems.

A few days ago we received a support ticket from a customer explaining that she had problems with Nelio Content. If you don’t know it yet, this plugin allows you to share content from your WordPress site in the most popular social networks. The ticket went as follows: when content was shared on some networks, such as Facebook or LinkedIn, the message displayed on those networks did not show the featured image of the content. Therefore, the result ended up being something like this:

Message on Facebook with correct information but whose image returns a 404 error and therefore does not appear.
Message on Facebook with correct information but whose image returns a 404 error and therefore does not appear.

We had faced this specific problem on other occasions. Usually, this occurs when the client’s website does not correctly define the Open Graph metadata (Ruth wrote a post about it a while back). Given our past experience, this was the first thing we checked… but all meta tags were there. What was wrong?

When sharing content on Facebook, Nelio Content, like other similar tools, only shares the URL of said content—that is, it’s Facebook who accesses the URL and tries to extract the title, description, and featured image out of it. In the case of our client, both the title and the description were correct, and only the image failed.

After much research, it turned out that the cause of the problem was a server module that was activated in certain requests and returned a different URL for the images. Apparently, this module served a reduced and optimized version of the image that improved the loading of the web… Unfortunately, the server wasn’t properly configured and alternative URLs of your images were only served occasionally. And, even worst, they resulted in a 404 error!

How Far Can I/Should I Help You?

In a case like the one described above, helping to solve the problem involves managing, monitoring, and administering the client’s hosting in order to avoid incorrect configurations that affect the behavior of your plugin. And also of external services that access your website, such as Facebook or LinkedIn. This is what requires the typical maintenance contract that any web developer will offer you to ensure that your web remains alive and updated over time. At the cost of a monthly fee, of course. But this isn’t our business.

The problem here is how to explain the situation to the customer. Why you can’t help them. On such technical issues, the client doesn’t care if the problem occurs because the server is configured incorrectly—after all, it’s your plugin that’s not sharing content well on social networks. That’s what happens to them and you’re not fixing it. Even if you explain it in detail, this is often the case.

Making your clients understand that you are not guilty of what happens to them can be complicated.
Making your clients understand that you are not guilty of what happens to them can be complicated.

But your plugin works perfectly! It passes the proper URL to social networks. And these are the ones that can not access your website correctly and extract the appropriate data to show it on their platform. But this is not true either, as social networks access this information accurately. The problem is that such information is incorrect. And the cause is your customer’s server, which isn’t properly configured and returns invalid URLs from time to time. So who’s to blame? Is there really anyone? 🤔 Truth is, it doesn’t really matter.

When such a problem occurs, what really matters is your customer—they don’t know what’s happening, they just want the issue gone. If you don’t help them, they’ll get a bad impression of both your product and your support service, and you may lose them. But if you agree to go in and try to fix his problem, if you provide support outside your area of responsibility, your business might suffer.

How many times have we had to fix problems in WordPress sites of clients that were apparently caused by our plugins but were not? More than we’d like to say.

Sometimes you will receive support tickets that have nothing to do with your services.
Sometimes you will receive support tickets that have nothing to do with your services.

In situations like this, as in everything else, sincerity is essential. We always try to help in everything we can, explaining the technical details as well, without hiding anything. If we are guilty of something, we assume it. We’re not perfect and we don’t intend to be. Our code has errors, like everybody else’s. So when we fail, there’s nothing left but to apologize and fix it.

But it’s also important to set limits on the support service you provide. If the problem is caused by a third-party plugin, we contact the developer directly and advise the client to do the same (the higher pressure, the higher the chances of receiving a response). But if what happens is out of reach, unfortunately there’s little we can do.

Final Thoughts

As I said at the beginning, WordPress is a hostile environment. As a business, we don’t have the resources to defend ourselves against plugins of dubious quality or incorrect server configurations. The number of different variables that can affect the correct performance of a WordPress plugin is so big that being resilient to all this is almost impossible.

So, even if it sounds like resignation, we do what we can. Sometimes even more. But this is not very comforting, since many times we are left with somewhat bitter feelings because of how everything works and not being able to help more. How many users have we lost over the years due to problems beyond our control? Better not think about it 😫. The life of the web developer is hard 😅.

The life of the WordPress plugin developer is hard.
The life of the WordPress plugin developer is hard.

What can we do to improve the situation? Will there be a day when all you have to worry about is your code? Where are the limits of the support we provide to our customers? What do you do when your plugin doesn’t work, but the cause of the problem is beyond your responsibility? None of these questions has an easy answer, but I would love to know your opinion. How do you manage support for your users? Leave a comment below 😉.

Featured image by Annie Spratt via Unsplash.

PoorNot badGoodGreatExcellent (2 votes, average: 5.00 out of 5)

What People Say About Your WordPress Plugin

Published in WordPress.

When you release a new plugin for WordPress, you have to be ready for the reactions it might generate among your users—criticism, joy, requests… Communication with your users may take place from several channels. The most common ones are social networks, email, and the WordPress plugin directory. And you’d better be aware of them all so that you can find out what’s going on and provide an answer as soon as possible. Being a small team, as in our case, it’s not always easy to be aware of everything, but believe me, we try.

Tracking feedback from your users is essential to understand the problems they have with your plugin, what they like, and what they need. Turning this feedback into improvements in your products is the key to making your business grow. If you ignore what your users say about your plugin, you’re dead. With our premium plug-ins, Nelio A/B Testing and Nelio Content, we have been lucky enough to get a lot of feedback. Sometimes positive feedback, and sometimes negative. And that’s normal, it’s not always easy to please everyone.

Receiving positive feedback is always satisfying—your users love your product! There’s no higher buzz as a developer than this. Look at some of the tweets we’ve received about Nelio Content. Every time we get one of this kind, maximum happiness floods the office. 😁

We’ve said this many times, but taking care of your users is very important. The support you provide is synonymous with the type of company you are. And at Nelio we put a lot of effort into providing the best possible support. If at a time of need you are able to give the right answer to your user, this will be rewarded in the future. Sometimes they’ll even surprise you with tweets like this:

All this positive noise in social networks can lead other people to end up discovering you and give your plugins a chance. This is not an easy thing to achieve, but with patience you will be able to expand your audience. And then, some day, you can find this kind of messages where a user meets us by chance and also compares us positively with our direct competition:

But It’s not all a bed of roses. You should be prepared to receive negative reviews as well. And this is the hardest thing to digest. After all, your plugins are like your children. You have seen them being born and you have been making them grow with all your love in the form of PHP, JavaScript, and CSS. Seeing someone showing rejection toward them can bring out the worst in you, so you’d better breathe before responding.

Don’t take negative criticism personally. Try to understand the problem behind each criticism and transform negative feedback into something constructive. If life gives you lemons, make lemonade, as the saying goes. But there are times when a few criticisms get on your nerves. Look at this example, which we received in the WordPress plugin directory, for Nelio Content:

A bad review of Nelio Content. You can see it here in the WordPress plugin directory.
A bad review of Nelio Content. You can see it here in the WordPress plugin directory.

This user directly accuses us of lying. When you get something like that, it hurts—there’s no other way to put it. In addition to the 1-star rating, which ends up affecting the plugin‘s final rating (luckily, in our case we have enough 5-star reviews to compensate for the final score), the use of capital letters and the overall tone of the message isn’t very friendly. If you want to get help from a developer, being nice and friendly is probably a better approach, don’t you think?

Anyway, all we can do in cases like this is to reply the user right there and hope they’ll see our response at some point (even though I doubt it). Here you can see David’s answer:

David's reply to a negative review, trying to help and always with education and good manners.
David’s reply to a negative review, trying to help with education and good manners.

Remember, stay calm and don’t get carried away by your warm blood. Always respond with politeness and patience. No matter how harsh the criticism, be friendly. Otherwise, you’ll just fan the flames and, believe me, you don’t want to do this. The image you give as a developer is very important, both for your current users and for the possible ones that may come in the future.

If you do things right, positive opinions will always end up counterbalancing the haters’ messages. You’ll even get pleasant surprises like the next tweet:

In this case we were delighted to see the time Jeannie spent writing an article to explain her first impressions of Nelio Content in detail just after installing the plugin. Step by step, Jeannie’s article explains what’s she likes, what she doesn’t like, the problems she faces, and so on. Having this kind of feedback is pure gold for a developer!

Thanks to this comment and other users, we have evolved our plugins. In the case of Nelio Content, we recently added the possibility of being able to view unscheduled posts in a calendar sidebar, a functionality we didn’t think of until several users asked for it. The result of listening to them is wonderful:

And the same when we added additional features to export your calendar in different formats:

In short, remember that, as a plugin developer, your audience is people, not WordPress installations. Keep in mind that sometimes it’s not easy for them to understand how your plugin should work and it’s possible that, after getting frustrated, they’ll send you a negative review. Take the opportunity to turn the tables and improve your product. Transform criticism into opportunity. And when you get a positive review from your WordPress plugins, celebrate it. Seriously, do it. You never know when the next one will come. 🤣

Featured image by Nicholas Green via Unsplash.

PoorNot badGoodGreatExcellent (1 votes, average: 5.00 out of 5)

How to Manage your Ideas for Future Blog Posts

Published in Online Marketing.

“We have to increase our reader base, so we’re going to write two interesting, extensive, and high-quality posts per week.” I don’t know who had the brilliant idea (I guess it was Ruth), but I have to admit that it’s paying off: since we made the decision and started writing regularly and consistently, the number of visits has been increasing continuously. The problem? There are times you don’t know what to write about! Sometimes the ideas just don’t flow… and when they do, it seems you’re writing what somebody else already wrote about 😫.

But don’t worry, that’s completely normal—all bloggers face this problem from time to time. That’s why we often talk about the idea generation process and the importance of ideas, where you basically seek inspiration, write down all your thoughts, and eventually materialize them into beautifully-crafted blog posts. Easy peasy! 😜

Time to think!
If you have to think what you’ll be writing about just a couple of days before a new post has to be published, you’re doing it wrong.

In my opinion, the most important thing to generate quality content is that you dedicate a few minutes of your week (or month) to plan the content you’ll deal with in the future, so that, when the time comes, you can focus only on writing. In our case, we usually hold a meeting every month or two to think about the editorial line we’ll follow over the next few weeks. So, for example, at the time of writing this post, we already know what we’ll be talking about until mid-January next year:

Calendar of December 2017
There you go, a glance to the future of our blog (in Spanish). These are all the topics we’ll be covering during the next few weeks 👌

List of Ideas (or Drafts in WordPress)

Nelio Content’s editorial calendar offers a fantastic view of the contents of your blog (or the absence of them). As I was saying, at Nelio we like to have several weeks ahead of us and know in advance what topics we will deal with and when. But not everyone is like us; there are people who prefer to have a list of ideas—a list of “unscheduled” posts separated from the calendar, if you will—and decide on the fly what’s going to be published next.

Until recently, you had few formulas to manage your list of ideas: either you used external services (such as Evernote or Google Drive) to write them down, or you created drafts in your WordPress installation. In my opinion, the first solution is cumbersome, as you have to be passing information from one tool to another. The second solution, on the other hand, solves the problem of “multiple tools” by using a more natural approach within WordPress. Unfortunately, you’re forced to manage the list of drafts from the WordPress interface (which is not the friendliest in the world):

Posts in WordPress
The list of Posts in WordPress can be a good place to store your ideas but… well, the UX is not the best in the world, is it?

Ideas in Nelio Content’s Editorial Calendar

One of the most powerful and simple tools included in Nelio Content is its editorial calendar. The calendar offers a unified view of all your blogging and marketing efforts, telling you at a glance how well you’re doing. But, because of its timely nature, it didn’t allow you to see the entries that were not scheduled for a specific date… something that, apparently, some of you wanted:

The thing for me was that I really would like to have a place to keep my future post ideas stored. Like a list of unscheduled drafts. A backlog would be a good way to put it. (…) [Something that] allows me to drag & drop unscheduled drafts from a container to a calendar in the same view.

Nelio Content User

This user even shared a mockup of what he wanted:

New Feature Mockup: Unscheduled Posts in the Calendar
One of our customers sent this mockup. When we saw this, we knew we had to implement this feature!

and, well, I don’t know about you, but I think it’s difficult not to help a user that’s worked so hard to make himself clear, right? So there you have us, working hard to get this feature included in Nelio Content (with its own AJAX-based search bar):

Unscheduled Posts Section in the Editorial Calendar
Listen carefully to your users and you might hear some awesome ideas. Here you have an example: our editorial calendar now includes a section of unscheduled posts, just as one of our customers suggested. Cool!

As you can see, the new area is perfectly integrated in our calendar and its behavior is quite natural: you can move posts from the calendar to the unscheduled post area and viceversa just by dragging-and-dropping them. Easy, fast, and simple. And best of all is, people already like it:

You no longer have an excuse not to use an editorial calendar and organize your ideas like a pro. What are you waiting for to get started?

Featured Image by Aaron Burden via Unsplash.

PoorNot badGoodGreatExcellent (1 votes, average: 5.00 out of 5)

The Future of WordPress Plugins with Gutenberg

Published in WordPress.

Gutenberg! The future editor of WordPress that will help us write posts, create beautiful layouts and finally get rid of the infamous page builders. Well, at least that’s what they’ve promised us, because even though it looks very nice, it’s still pretty green.

If you don’t know anything about the project (are you serious?), there’s plenty of reviews out there discussing the pros and cons of it. The Gutenberg review at WPLift is a pretty good introduction to the project:

Gutenberg offers a completely different take on the default WordPress Editor. Instead of one long input box that basically acts the same as a Word document, the Editor is now broken up into individual blocks. One block may contain several paragraphs of text, another an image, and another a button. So and so on.


I think Gutenberg is an improvement for casual users who like to write their content in the WordPress Editor. But as someone who writes and uploads multiple posts per day from Google Docs, I don’t see any benefit to Gutenberg based on how I work. All it does is make it a heckuva lot harder to bring in content from something like Google Docs.

Colin Newcomer – WPLift

So, it brings a new paradigm for creating content (blocks), which might be an improvement for casual users. But such paradigm shift might not be what you need. Only time will tell us if Gutenberg was the right decision or not—I personally think and hope it will, for it’s an interesting idea with a lot of potential (an opinion shared by some of the people we’ve recently interviewed in our blog, like Caspar or Alice).

Be that as it may, Gutenberg is clearly a hot topic and we couldn’t let another week go by without discussing it. As I just said, it’s a promising project, but there are some issues that concern us. Specifically, integrating plugins (yes, I’m thinking of Nelio Content and Nelio A/B Testing) with the new editor looked complicated until recently

Gutenberg—The New Editor

The current WordPress editor is an old acquaintance. Although it has received some face-wash in recent years (especially with the advent of WordPress 3.8 and the integration of the MP6 project), truth is it’s still the classic TinyMCE-based, WYSIWYG editor, with its toolbar at the top and a style that tries to imitate what our users will see when they access the post:

Screenshot of the current WordPress editor
Screenshot of the current WordPress editor.

Gutenberg changes the paradigm completely and “modernizes” the way we write posts. As we’ve just seen, the main novelty of this editor is that all the post’s copy is organized in blocks: a paragraph, a quote, an image, a gallery… all independent of each other, with their own contextual editing tools and with the ability to move them around easily:

Screenshot of Gutenberg
Screenshot of Gutenberg, where you can see several blocks and the contextual actions.

As you can see, Gutenberg has a much cleaner and more minimalist interface than the classic editor. I personally love this design, because the simpler the user interfaces, the better—a prettier UX will help WordPress to attract new users and to re-engage the less active ones. But, as pointed out by Colin at WPLift, it radically changes how we create content, so I still don’t know if professional copywriters will welcome Gutenberg or would rather keep using the old editor.

Today, though, I’m not interested in reviewing Gutenberg and its functionalities again. Instead, I want to focus on something very, very important for the WordPress ecosystem—the integration of WordPress plugins with the new editor. In case you haven’t noticed, the WordPress edition page doesn’t just include the editor—it’s full of boxes with extra functionalities. Many of these boxes are features included by your plugins, such as the Social Media or References boxes added by Nelio Content:

Meta Boxes in the Edit Screen
Screenshot with several WordPress meta boxes. In particular, there’s a fragment of Yoast’s SEO box, Nelio Content’s References and Social media boxes, and the Category meta box.

Integration Problems—Editor (Meta) Boxes

The first versions of Gutenberg didn’t deal at all with the meta boxes issue (it wasn’t a priority) and there simply was an issue in the project’s Github repo commenting on the need to integrate them at some point. The problem of such integration is that it’s much more complicated than it seems. On the one hand, we have that Gutenberg‘s development team is using quite modern technologies for its implementation (basically, they’re writing everything from scratch with React, a JavaScript framework), so porting the current meta boxes (defined in PHP) to the new editor can be quite complicated. On the other hand, the project didn’t define where and how we would put those boxes either (remember that nowadays there are basically two possible areas: smaller boxes on the side and bigger boxes under the editor).

How can we solve all this? For now, the Gutenberg team has prepared an area (Extended Settings) under the editor where, in theory, we can put our boxes. In fact, a couple of days ago the team announce that Gutenberg 1.5 includes “an initial pass at supporting existing meta-boxes without intervention”. This is clearly a great step forward, but it made me realize that Gutenberg is actually reinventing the wheel and going back to what we already had: an editor with extra meta boxes around it. Therefore, was it really necessary to rewrite all the post edit screen?

A few days ago I was reading Yoast’s blog and saw that the issue of integrating plugins with Gutenberg is something that also worries them. In their post, Joost highlights what I’ve just told you: Gutenberg and block editing will revolutionize WordPress, but its implementation doesn’t have to change the entire UI all at once. In fact, it would be enough to change the editor itself from the classic TinyMCE to Gutenberg and keep the editing screen as it is, with its “old” concept of boxes around it:

Alternative Gutenberg UI proposed by Yoast
Alternative Gutenberg UI proposed by Yoast. Basically, this proposal maintains the classic edit screen and simply replaces TinyMCE with Gutenberg.

With this proposal, we are looking at a more familiar and fully backward compatible interface (at least on paper—the truth is that I don’t know if there would be any problems at the internal/implementation level). Following the idea of Yoast, it’s very simple to think about how a plugin like Nelio Content could look like inside Gutenberg:

Integrating Nelio Content in Gutenberg
Nelio Content integrated in Gutenberg using Yoast’s proposal.

Undoubtedly, a simple, elegant and functional solution. The only drawback that some people might see is that we are not really “innovating”—we’re still with the same old solution and, therefore, with the same old problems. But I sincerely believe that this is not an inconvenience, but a virtue. Using this type of solution allows us to introduce Guntenberg taking baby steps, replacing the components one by one: first the editor, then the boxes, etc.

If you’re interested in seeing some “innovative” solutions, there are some in Github that somehow eliminate the “meta box” concept and integrate these “additional adjustments” into the editor itself:

Custom Fields in Gutenberg
Integrating custom fields in the editor screen. To separate them from the actual content, the proposal adds a diviser between the two.

but I’m not particularly attracted to them… there’s too much information (front and back end data) in the same component!

The Power of WordPress as a CMS

If WordPress is where it is today, it’s thanks to its enormous versatility. WordPress has been more than just a blogging platform for many years now, so we can’t redesign its editor based solely on blog entries (which is what Gutenberg looks like at the moment). For example, Kevin Whoffman shares the following screenshot of a quite common UI for custom post types:

Editing a Custom Post Type
Editing a Custom Post Type using current WordPress editor. How would this look like in Gutenberg?

As Kevin tells us, we are dealing with a personalized content that depends solely and exclusively on custom fields. This type of content does not even have the classic WordPress editor, so what’s the point of using Gutenberg? How could we adapt this to Gutenberg‘s current proposal?

Registering support for Gutenberg in CPTs has not been confirmed, and honestly it feels more like avoiding the problem of meta boxes rather than solving it.

Kevin Whoffman

Using Yoast’s solution, this scenario wouldn’t be a problem—we’d still have regular meta boxes and the (Gutenberg) editor would still be optional.

That being said, I must confess that the current solution of the boxes doesn’t convince me completely either—you can end up with so many boxes in the edit screen that the goal of “being simple” simply vanishes. One possible solution to this explosion of registered meta boxes is using views for grouping them. The current Gutenberg editor allows you to switch between a visual editor and a text editor, through a small menu in the upper right corner (in Yoast’s proposal it is in the upper left corner):

Gutenberg view modes
Gutenberg has different view modes available. What if we had more?

Well, we could add new “views” in that menu so that the interface presented to the user (that is, so that the set of boxes/tools they see) depends on the view they’re using at any given time. The set of views available could entirely depend on the plugins or be pre-set in 4 or 5 main categories. For example, I’d start with something like this:

  1. Visual Edit. Here we would have the visual editor along with the typical boxes: categories, tags, publication, and so on.
  2. Raw Edit. In this type of editing, we would have by default the text editor/HTML, along with, again, the boxes in the visual editor (yes, the same box could appear in multiple views). In custom post types such as Kevin’s, there would be no option to select the Visual Edit view and the Raw Edit would not include the text editor—it would only offer the box created with Advanced Custom Fields to edit the meta fields.
  3. Analytics. Here we could have boxes like the ones included in Nelio Content, with information from social networks, Google Analytics, Yoast’s quality analysis, and so on.
  4. Social. Boxes that deal with reader interactions would appear in this view: social messages from Nelio Content, WordPress comment boxes, etc.
  5. Meta. Here you’d find any other boxes that don’t fit anywhere else.

What do you think? Which ones would you put?

In Summary

Gutenberg is a very ambitious project with a lot of potential. The idea of blocks is fantastic and, although it may have to be polished, I think it’s the future of WordPress. The only problem behind it is the fact that it aims to change more things than needed.

Gutenberg has not yet been able to give a convincing answer so that plugins can be integrated. Many solutions are being considered in the project’s Github to guarantee backwards compatibility. Some people want a step-by-step integration, replacing the different components of the editing screen little by little. In this sense, I believe that Yoast’s proposal is the most realistic and effective, precisely because it’s the most conservative.

I understand that the Gutenberg team wants to take WordPress to the next level and, therefore, they feel that it’s a good time to “start from scratch”. But I think we have to be careful, and that’s why I propose the idea of views as a formula to “change what we have while keeping everything unchanged”. That is, I keep the WordPress boxes, but add order and cleanliness with the views.

What do you think?

Featured Image by Mr Cup / Fabien Barral via Unsplash.

PoorNot badGoodGreatExcellent (5 votes, average: 5.00 out of 5)

Clean Code–Tips to Become a Better WordPress Developer (II)

Published in WordPress.

A few months ago, I shared my opinion with you about “The pragmatic programmer: from journeyman to master”, a book that, as I said, includes good advice and best programming practices. If you haven’t read the book yet, go ahead and do it right away–it’s very enjoyable and instructive. Anyway, in my previous post I also told you I had a second book on the shelf waiting for me: Clean Code, remember? Well, I’m happy to say I’ve already read it and I like it even more than “The pragmatic programmer”! Let’s take a look at the book and what I think its best parts are, shall we?

Book Overview

Clean Code is based on a very interesting premise: “even bad code works”. That is, even if the code isn’t clean and tidy, if it’s chaotic and difficult to understand, if it’s poorly written… none of these things have to have a negative impact on its functioning–the code can work as it’s supposed to. Now, you’ll agree with me and the author of the book, Robert C.”Uncle Bob” Martin, that dealing with such code would be a big problem for any programmer, right? 😱

Software components play an extremely important role in any company. If your source code isn’t clean and tidy 😵, the amount of time and brutal resources you will have to invest in it every time you have to change, adapt or correct it will be brutal and might even wreck the company’s finances. That’s why this book teaches you how to write clean code and how to detect code that can be improved.

The book is divided into three parts. First, it describes the principles, standards, and good practices that make a source code clean. In the second part, you have a lot of case studies (increasingly complex) where you start from poorly written code and polish it little by little until you reach an elegant and efficient solution. The last part is a list of heuristics and “smells” gathered while creating the case studies, which help you to detect when and how a fragment can be improved. In other words, it’s a knowledge base that describes how to write, read, and clean code.

If you read the book carefully and you try to learn all the lessons it includes, in the end, you’ll come away from it understanding:

  • How to tell the difference between good and bad code
  • How to write good code and how to transform bad code into good code
  • How to create good names, good functions, good objects, and good classes
  • How to format code for maximum readability
  • How to implement complete error handling without obscuring code logic
  • How to unit test and practice test-driven development

Pretty cool, huh?

The book is organized into the following chapters:

  1. Clean Code. An introduction to the difference between unintelligible code and clean code. I think the image that opens the chapter is pretty funny and clearly depicts what to expect from the book:

    What the Fucks" per Minute
    The only valid measurement of code quality: WTFs/minute. Source.
  2. Meaningful Names. How to make sure that our functions, variables, classes… in short, all the components of our code are intelligible and self-explanatory.
  3. Functions. Tips to write better functions: short, atomic, simple, few parameters, no side effects…
  4. Comments. A chapter that basically tells you why you shouldn’t use comments. Why? Read the book! 🤓
  5. Formatting. More tips to format code (spacing, indentation, and so on). If you’re reading this book to become a better WordPress developer, you can skip this chapter—WordPress already has some great style guides that address this.
  6. Objects and Data Structures. Several tips and principles on data abstraction to reduce (or even eliminate) coupling.
  7. Error Handling. A great chapter (one of my favorite, actually) with some useful tips on how to efficiently add error handling into our code. In essence, it covers a sad reality: error handling is accessory—we need it, but it’s probably unrelated to our software’s main functionality. As a result, adding it into our code makes the code look “dirty” and unnecessarily complex. Well, this chapter teaches how to do it cleanly.
  8. Boundaries. One of the toughest problems that programmers face (and this is especially true in WordPress) is our dependence on external libraries or services—if they change, things can stop working. This chapter identifies different scenarios in which we may have compatibility problems when relying on third-party solutions and shows you how to eliminate or minimize their impact.
  9. Unit Tests. There’s little I can say about this chapter—we’ve already discussed its content thoroughly in previous posts.
  10. Classes. During the first chapters, the book covers the building blocks of coding: functions, data structures, variables, and so on. Since clean code requires good organization, the book also devotes a couple of chapters to discuss this topic. In this chapter it focuses on object-oriented programming and its concept of classes, giving some basic advice on “size” and “responsibilities”.
  11. Systems. This chapter is more abstract than the previous one because it explains the concept of “a system”, the interactions between different components, the challenges it entails… Even if it’s more complicated than the rest, it’s worth it (especially if you work with larger software components like, you know, WordPress Core).
  12. Emergence. In this chapter, the author gives four guidelines. Follow them and your code will be cleaner. Essentially, a design is “simple” if it follows these rules:
    • Runs all the tests
    • Contains no duplication
    • Expresses the intent of the programmer
    • Minimizes the number of classes and methods
  13. Concurrency. A chapter devoted to the problems found in concurrent systems and their solutions.
  14. Successive Refinement. A case study in which the author presents a bad code and refines it step by step until it becomes clean code.
  15. JUnit Internals. Another practical example. In this particular case, the author dives into JUnit source code and presents some possible improvements.
  16. Refactorizing SerialDate. Finally, yet another case study. In this case, we start with a code that Martin defines as “good code”. But this doesn’t stop him from proposing several improvements.
  17. Smells and Heuristics. A fantastic compilation of heuristics and smells that’ll help you to identify the components in your code that should be improved. You shouldn’t just read this chapter—you should keep it close to you and use it as a reference. I think these smells and heuristics are priceless!

The 3 Best Tips

This book is fantastic—it’s very well written and has a lot of tricks that I wish we all knew and applied when writing code… but I guess that reading the book and being willing to apply its lessons are the first step towards becoming a better programmer!

Now, as promised, here you have the 3 best parts of the book:

🥉 Bronze. “Comments Do Not Make Up for Bad Code”.

As Martin says, “one of the more common motivations for writing comments is bad code“. Think about it: you’ve just written a new module and, well, it does work, but it’s basically a mess. So you look at it and say to yourself: “Ooh, I’d better comment that!” No! You’d better clean it!

One should never need a comment to understand a piece of code—it should be self-explanatory. And that’s because a comment in your code creates more problems than it fixes. On the one hand, the comment may be out of date and not correspond to the code. But even if that’s not the case, changing the code means you’ll have to update the comment so that it’s “in sync” with the comment… and that’s extra work! On the other hand, comments can end up being a nuisance.

For instance, consider this tiny fragment:

// Check to see if the employee is eligible for full benefits
if ( ( employee.flags & HOURLY_FLAG ) && ( employee.age > 65 ) )

Isn’t the following way better?

if ( employee.isEligibleForFullBenefits() )

It only takes a few seconds to explain most of your intent in code. In many cases, it’s all about creating a function whose name says the same thing as your comment does. And that’s how you make your code cleaner and better.

Disclaimer. Sometimes, you’ll have to comment your code. For example, if you’re creating an API, it’s obvious that it has to be well-documented so that your users can effectively use it—after all, they may be oblivious of its internals. But, anyway, your function and parameter names should be as self-explanatory and clear as possible.

🥈 Silver. “Functions Should Have No Side Effects”.

“Side effects are lies. Your function promises to do one thing, but it also does other hidden things“. I couldn’t agree more with this statement. When a function depends on and manipulates global variables, it’s very difficult to analyze, understand, and fix an erratic behavior. And that’s something we see a lot in WordPress Core—there’s plenty of global variables and objects. That’s why I think this tip is so important for all WordPress developers—we should avoid side effects whenever possible.

Not only global variables can result in unexpected side effects—output parameters in a function can too! When this occurs, the value of one or more parameters changes after calling a function, which is clearly an unexpected behavior. In general, we all assume that the parameters of the functions are just input variables. The only way to know that a certain variable will change when used as the parameter of a function is through its documentation and, well, we’ve just seen that comments shouldn’t be necessary, right?

To get a clear idea of the issue, take a look at the following example:

public class UserValidator {
  public boolean checkPassword(String username, String password) {
    User user = UserGateway.findByName(username);
    if (user != User.NULL) {
      if (user.hasPassword(password)) {
        return true;
    return false;

Can you spot the side effect? Exactly! The side effect is the call to Session.initialize(). The user is calling a function that, apparently, is supposed to check the password, so the user expects the function to do what it just says it does. So, why does it initialize a session? 🤷 Nobody knows! If that’s the behavior we want, a different name would make it better:checkPasswordAndInitializeSession

🥇 Gold. “Meaningful Names”.

Names are everything in software. After all, programming is no more than describing a system in a formal language, which means concepts and names play an extremely important role. Think about it for a sec—names are everywhere! Variables, arguments, functions, classes, files, directories… they’re all named! So, how much time do you invest in deciding how to name something? Do you use the first name that comes to your mind?

I think the second chapter of the book is outstanding—it’s full of useful tips that I think all programmers should apply. The following are just a few examples of those tips:

  1. Use Intention-Revealing Names. How many times have you found a variable named d followed by a comment explaining what it is? Sometimes programmers are just lazy… and we shouldn’t be! Use a different name, such as elapsedTimeInDaysdaysSinceCreation, or fileAgeInDays. It doesn’t really matter the actual name, as long as it’s clear and meaningful.
  2. Avoid Disinformation. Names should give real information—they shouldn’t lie. For example, if we have a set of accounts, don’t name your variable accountList—such a name’s telling the programmer it’s implemented as a List, and it may not be. A better name would be accounts.
  3. Make Meaningful Distinctions. Sometimes, due to language constraints, we can’t name a thing using the word we want. For instance, if we want to name a variable, class, we can’t, because it’s a reserved keyword. To overcome this issue, we tend to misspell the word and name it klass or clazz instead. This is a bad idea. In these situations, we should use a synonym or similar. Another common example is the situation in which we have two variables with the same type, and we just name them equally and append a number at the end: string1 and string2. Wouldn’t it be better if we named them source and destination? Just look at how easy it is to guess what they’ll do, once the names are properly set!
  4. Use Pronounceable Names. The example included in the book is hilarious: a company had a variable named genymdhms (generation date, year, month, day, hour, minute, and second), so its employees walked around saying “gen why emm dee aich emm ess”. Programmers, designers, analysts… everyone was using that silly name, and one could hear things like “Hey, Mike, take a look! The gen-yah-mudda-hims is set to tomorrow’s date!”. What?! Sure, it’s funny, but it’s a poor naming choice. Why didn’t they use a better, pure English name such as generationTimestamp? “Hey, Mike, take a look! The generation timestamp is set to tomorrow’s date!”
  5. Method Names Should be Verbs or Verb Phrases. No surprise here: there’s plenty of examples of this rule in WordPress:have_posts, get_the_author, or is_single.
  6. Pick One Word per Concept. Sometimes, the same concept can be expressed using different synonyms: fetch, get, or retrieve; delete, remove, or trash. In these cases, you should try to use the same concept always. This way, your code will be easier to understand and you’ll reduce your mental workload.
  7. and many more!

My Opinion

In short, Clean Code is an entertaining and educational book. I recommend that you buy it now and add it to your personal bookshelf. The tips and tricks it contains are very valuable. And believe me when I tell you that the leap in quality between the code you write before and after reading this book is enormous.

Have you already read it? What did you think? Do you have any other recommendation for me?

Featured Image by Joel Filipe via Unsplash.

PoorNot badGoodGreatExcellent (No Ratings Yet)