Convesio Raises $5M to Expand Docker-Powered Hosting Platform

WordPress hosting company Convesio has raised $5 million from private investors. This funding round includes some of the company’s original investors who participated in Convesio’s 2019 Wefunder crowdfunding campaign, which brought in more than $1 million from 800+ investors.

“I started Convesio because legacy hosting providers have not evolved their technology, struggled to provide high uptime, and lacked the capability to scale WordPress on demand,” Fenelli said.

Convesio aims to make enterprise level hosting more accessible to customers with smaller budgets. Its Docker-powered platform allows sites to auto-scale up and down as necessary. It will automatically deploy multiple containers to handle higher loads and bills additional containers at an hourly rate.

“Traditional hosts put you on a plan to handle the highest level of resources your website needs, even if you only need them 5 hours a month,” Fanelli said. “It’s like leasing a Ferrari to use it for your daily commuting because you also take it to the track for a few laps once a month.” 

Convesio is aiming to take on the larger, more established hosting companies by ‘productizing’ scalability in order to keep costs down. The company boasts that customers can deploy a WordPress site with load balancers, a database cluster, and redundant file system in under a minute, without hiring a SysAdmin. Convesio’s target market is agencies, designers, and developers.

“Agencies are a one-to-many sale, easier to support, and early adopters of technology,” Fanelli said when launching their first funding campaign. “All these reasons make them a really good fit for what we do. They also have to manage a lot of WordPress sites, so issues like speed, performance, scaling etc are all compounded when you have 100 sites.”

With this second round of funding, Convesio plans to hire more staff, boost sales and marketing, and accelerate development.

How to Install OroCRM on Ubuntu 20.04

OroCRM is a customer relationship management software. It is a simple and low-cost CRM system ideal for small and medium-sized enterprises.

OroCRM is an integrated CRM, marketing automation, and live chat platform that helps marketers build genuine relationships with their prospects and customers. It has all the features to create, manage, measure, and optimize customer journeys. OroCRM streamlines the management of large amounts of data to provide accurate insights for better decision-making.

Creating Selenium Test Cases: A Tutorial

Selenium has established itself as one of the most popular automation testing frameworks within the software engineering community. Comprising a suite of tools - viz. IDE, RC, WebDriver, and Grid - Selenium has quickly established itself as a market leader in the test automation sector. 

Selenium capitalized on the inadequacies of previously used frameworks like HP QTP, and Mercury’s Astra QuickTest which compelled users to write scripts in VBScript and were primarily intended for desktop-based tests. Its support of a variety of languages like Java, Python, C#, Perl, Ruby, .net, and PHP, has made it popular with individual testers and companies like Netflix, Google, HubSpot, and Fitbit among others.

A Guide to the Next JS Framework

Next.js is a framework extensively used by TikTok, Twitch mobile, Nike, IGN, PlayStation, Marvel, and many others. It offers all the functionality we need to deploy our application in production, with a hybrid system with static pages and server-side rendered (SSR) pages. It has support for Typescript and can be deployed without having to configure anything.

SSR Benefits (Next.js)

  • Performance
  • Isomorphic: Works on both server and client (browser)
  • Build: Next.js in the build retrieves the necessary data and ejects HTML with React components.
  • Static export: Compile static files to be able to upload to the server
  • 0 config (No need to configure anything to deploy Next, however it has a very extensible config)
  • Api routes
  • Deploy with Vercel
  • Next head: To modify the head part of the page to improve the SEO
  • Typescript support
  • Environment variables are used in the browser code, not just server code.
  • Fast Refresh: New experience of hot reloading in React components
  • Code splitting: loads chunk corresponding to the page path

Comparison With Gatsby

Gatsby is primarily used for building websites that generate static HTML content and web pages that have a fixed or predictable number of pages and stable content. An example might be an e-commerce site that has only 50 products available for sale.

Creating Slides With the Carousel Slider Block WordPress Plugin

Over the weekend, Virgiliu Diaconu asked me to check out his Carousel Slider Block plugin, a project he has maintained for three years. It has slowly garnered more than 5,000 active installs since its release.

I get emails like this every day. More often than not, the projects are fundamentally broken or are a bit too spammy for my taste. Like so many others, I ask myself, Could this be one of those diamonds in the rough? I am always optimistic enough to hold out the tiniest sliver of hope.

I should preface this review by saying that I have a general dislike of sliders and carousels. They are often used to hide away content, forcing site visitors to take additional action to find it. Or, they begin to automatically slide before users finish reading the first panel. I tolerate them on some sites if used to tidy inconsequential content.

However, I know a lot of people like them. The question I needed to answer was whether this was a solid implementation. The TLDR version is it handles far better than others I have seen.

What makes Block Slider Carousel a solid plugin is that it is, mostly, WYSIWYG. It also does not complicate the experience more than it has to. There is one fixable problem, which I will get to. Overall, creating a carousel full of slides was straightforward.

Users merely need to insert the Carousel Slider block in the editor to create a new carousel. The UI is similar to the core Row block when inserting slides — click the “+” icon. From there, users can add any other block within each:

A box with the text "Click plus to add slides" in the WordPress editor.
Initial carousel insertion.

I added a screenshot of this default setup to show that the plugin feels almost native to WordPress. There is no management via a separate custom post type screen. The slides do not all stack atop one another, looking nothing like their final output on the front end. And it does not have a dizzying array of configuration settings.

The primary difference between the editor and front end is the horizontal scrollbar shown on the post-editing screen, used for navigating the carousel. Once a few slides are added, it appears below the outer Slider Carousel block:

The Slider Carousel block in the WordPress editor.  It is displaying three slides, each with an image.  Below the carousel sits a horizontal scrollbar.
Slider Carousel with simple image slides.

I would love to see that replaced with the previous/next arrows and dots navigation in the editor view if either of them is enabled. The plugin allows users to toggle both on and off.

The block’s options are the baseline controls expected from such a plugin. Users can control the number of shown slides, how many to show on scroll, and the animation speed. It includes toggles to loop back around at the end of the carousel and an auto-play option.

There is an RTL mode, which was not immediately clear was working correctly. Switching it on did not seem to make any changes in the editor. However, the slides are shown in reverse order on the front end.

The block has a separate panel for controlling the number of slides on smaller screens. Users can manually set the breakpoint or leave it to the default of 768px.

The biggest problem I ran into with the plugin was that it overwrote block margins within the slides. As shown in the following screenshot, the Heading, Paragraph, and Buttons blocks have no space between them:

Slider block in the editor with a Cover block inside that houses a heading, paragraph, and button.  The spacing between the blocks is collapsed.
No spacing between blocks.

The theme I am testing uses the new “block gap” feature in WordPress 5.9 to handle vertical spacing. However, with the way the CSS is written in the plugin, it was likely an issue in previous versions. Carousel Slider Block’s styles zero out block margins with a high level of specificity.

This issue is only in the editor. If you can get past not knowing exactly how each slide will look until previewing or publishing, it is not too rough of an experience. But, this should be an easy fix for the plugin author. I removed the offending code without issue.

Slider block in the editor with a Cover block inside that houses a heading, paragraph, and button.
Corrected spacing between blocks.

And my sanity was restored — I am a stickler for decent spacing.

A welcome addition would be color options for the arrow and dot navigation and features like padding, border, background, and block spacing. This would make it easier for end-users to customize the carousel container.

Would I use this plugin? Knowing myself, I would likely build a custom block, overengineering it when there is a perfectly acceptable solution at hand. Of course, I do not use sliders. However, I would be comfortable handing it over to a client if I still did such work. Plus, the plugin’s front-end CSS is lightweight enough to overwrite for custom designs.

How to Secure a Previously Insecure Cluster in Production

Cockroach Labs does not recommend running an insecure cluster in production. There are only a few additional steps necessary to secure an instance, so why do it? Convenience, you say. It can hurt you down the line but fret not, this article will demonstrate how to fix this. We are going to follow the standard insecure cluster start-up procedure. Once complete, we're going to flip to the documentation for a secure cluster to turn each node on with security enabled. Here's a handy video of the procedure in action:

Step by step instructions are below:

Documenting Angular Components Using Storybook

As developers, in our daily work, we like to find good documentation of the libraries and technologies we use. It is, therefore, our responsibility to leave our work well documented. Those who come after us to use it and/or continue it will appreciate it. At Apiumhub we are very fond of documenting our projects.

There are many tools that allow us to write documentation in Markdown (.md) format, and some others that also allow us to document our UI components. Most of them are written for and focused on React. What happens then if we want to document the components of our Angular project?

What CTOs Say vs. What Their Developers Hear

Anyone who’s been in a rapidly scaling company with an ever-expanding engineering team knows that communication is never as simple as it seems. 

That’s why we were so excited when Shankar Ramaswamy decided to sit down with Dev Interrupted.

How Monitoring and AIOps Delivers the Ultimate DevOps Platform

When it comes to delivering software through a DevOps model, the primacy of the platform is increasingly evident. DevOps platforms are multi-tenant, self-service oriented, developer-centric, and are an essential component of a multi-cloud strategy. They provide guide rails and standardized tools and technologies for developers to build, test, and iterate with ease. A core component that must not be neglected when operating a DevOps model, however, is resilience.  

DevOps breaks down monolithic products into smaller value streams that can be delivered as independent cloud-based services. Once teams are set up to deliver under this model, it will be formalized through service level agreements (SLAs). To deliver against these, robust monitoring and alerting practices must be put in place. As with any DevOps practice, automation is the ultimate goal — and when it comes to monitoring and alerting, an AIOps platform is the gold standard. 

Using Different Color Spaces for Non-Boring Gradients

A little gradient generator tool from Tom Quinonero. You’d think fading one color to another would be an obvious, simple, solved problem — it’s actually anything but!

Tom’s generator does two things that help make a gradient better:

  1. You can pick an “interpolation space.” Gradients that use the sRGB color space (pretty much all the color stuff we have in CSS today) have a bad habit of going through a gray dead zone, and if you interpolate the gradient in another color space, it can turn out nicer (and yet convert it back to RGB to use today).
  2. Easing the colors, though the use of multiple color-stops, which can result in a less abrupt and more pleasing look.
Showing a color wheel with a line indicating the two colors in a gradient that goes from yellow to light blue. The resulting gradient is at top showing some gray tones as a result of the color space.
See the gray in the middle there?

Different gradient apps with different color spaces

Josh has another similar app, as does Erik Kennedy. So stinkin’ interesting how different gradients are in different color spaces. Think of the color spaces as a physical map where individual colors are points on the map. Gradients are dumb. They just walk straight from one point on the map to the next. The colors underneath their feet as they walk make a massive difference in how the gradient turns out.

To Shared LinkPermalink on CSS-Tricks


Using Different Color Spaces for Non-Boring Gradients originally published on CSS-Tricks. You should get the newsletter and become a supporter.

SAFe’s NPS Score as a Scaling Framework Is -56

SAFe® has always been a controversial topic within the agile community. Therefore, back in 2017, I ran a first survey on the Net Promoter Score® of the Scaled Agile Framework SAFe®. The result back then was -52

Four and a half years later, I reran the poll: SAFe® has been through several iterations, and many more agile practitioners have experienced working with it. However, the question still is: Would you recommend SAFe ®?

Spring vs. Jakarta EE: Defining Injectable Beans

Dependency Injection is one of the core features in the heart of modern application development frameworks. In a nutshell, the process of dependency injection is composed of

  1. the definition of injectable beans 
  2. the injection of beans (dependencies) into those places where they are required

This blog post compares the mechanisms available in the Spring Framework and Jakarta EE for the first part of this process, which can be further broken down into the following aspects:

Redux Toolkit With Typescript: How to Get Started

If you're a React developer, chances are you already know how complicated it can get when working with global/shared states. Nonetheless, nowadays, there are two main ways to use this concept: 

  • Redux
  • Context API.

It is essential to highlight that a learning curve is necessary to use both of these approaches in the best way possible. This view is based on the fact that its high complexity and verbosity come into focus whenever Redux is mentioned. This is even more pronounced when it comes to using Redux with Typescript.

Fantastic Symbols and Where to Find Them (Part 2)

In the first blog post, we learned about the fantastic symbols (debug symbols), how the symbolization process works, and lastly, how to find the symbolic names of addresses in a compiled binary.

The actual location of the symbolic information depends on the programming language implementation the program is written in. We can categorize the programming language implementations into three groups: compiled languages (with or without a runtime), interpreted languages, and JIT-compiled languages.

Java Template Method Pattern in 3 Minutes [Video]

The template method pattern is a behavioral design pattern in GoF's design pattern. In my opinion, it is fundamental and worth knowing and learning. It opens up our eyes to many of the usual ways of object-oriented design. 

In this pattern, the father class (the abstract superclass) defines the skeleton/algorithm of an operation in terms of a number of high-level steps. The detailed steps are to be implemented by the sons (the subclasses).

How to Help Employees Embrace Your New Tech Stack

Congratulations! After reading tons of business process management books, you have decided to invest in the best productivity software for your business. Now you can implement the new platform and watch your team’s output soar as you ride off into the sunset, right? 

Sadly, no. 

MuleSoft: Connect PostgreSQL Database and Call PostgreSQL Function

What Is PostgreSQL?

PostgreSQL is an open source object-relational database system that uses and extends the SQL language to store and scale complicated data workloads.

A prerequisite to start with this walkthrough is to have a database connector added in Anypoint Studio. You can add these connectors from the Add modules option. Also, you need to have an ElephantSQL account, as we are going to use the PostgreSQL database hosted on the ElephantSQL platform. You can use any other PostgreSQL service provider platform or self-managed PostgreSQL server.

Anypoint Platform Control Plane

What Is the Anypoint Platform?

The Anypoint Platform is an iPaaS (Platform as a Service) Solution from Mulesoft where you can create, manage, discover, secure and deploy your API and connect your application to form a structured application network. 

It is further classified into two different sections: