LATEST FROM OUR BLOG

Take your daily dose of (only) relevant news, useful tips and tricks and valuable how to's on using the latest web technologies shaping the digital landscape. We're here to do all the necessary information sifting for you, so you don't have to, to provide you with content that will help you anticipate the emerging trends about to influence the web.

How to Send Richly Formatted HTML Emails in Drupal 8: Deliver the Experiences that Your Customers Expect in 2019
API first, responsive Bartik, headless and decoupled Drupal, Layout Builder, React admin UI... Drupal's evolved tremendously over these 18 years! Yet: the emails that we send out via its otherwise robust email sending system aren't different from those we used to send a... decade ago. And customers expect rich experiences outside your Drupal website or app. While website administrators expect to be enabled to easily manage, via the admin UI, their email content templates. So: how do you send HTML emails in Drupal 8? Without relying on external services, of course... And who could blame customers for expecting 2019-specific user experiences? Experiences that HTML-enabled emails deliver through their great features. Features that support Drupal editors' marketing efforts, as well:   traffic-driving hyperlinks; you get to link to your landing page right from the email visually attractive custom design; emails that look just like some... microsites all sorts of design details that reinforce your brand: buttons over cryptic links, responsive design, templated footers and headers web fonts QR codes  hierarchical display of content, that enhances readability and draws attention to key pieces of content and links in your email images and attachments tracking for monitoring opens   And speaking of admin and/or editors, the questions they ask themselves are: “How can I easily theme the emails to be sent out?” “How can I change their content templates right from the admin UI?” And these are the questions that I'll be answering to in this post. Here are your current options at hand — 3 useful Drupal 8 modules — for easily crafting and sending out HTML emails that appeal and engage.   1. The HTML Mail Module  It does exactly what you'd expect: It enables you to configure HTML emails from Drupal 8. It's the Drupal 7 go-to option whenever you want to go from plain text emails to HTML-formatted ones. A module available for Drupal 8 in alpha version. Furthermore, it integrates superbly with the Echo and the Mail MIME modules.   2. The Swift Mailer Module, The Best Way to Send HTML Emails in Drupal 8 Swift Mailer is the highly recommended method for configuring Drupal 8 to send out visually-arresting, HTML emails. Since you can't (yet) send them right out of the box with Drupal... The module stands out as the best option at hand with some heavy-weighing features:   it supports file attachments it supports inline images, as well it enables admins to send HTML (MIME) emails … to send them out via an SMTP server, the PHP-provided mail sending functionality or via a locally installed MTA agent   Note: you even get to use this module in tandem with Commerce to send out your HTML-enabled emails. There's even an initiative underway for replacing Drupal's deprecated core mail system with the Swift Mailer library. And now, here are the major configuration steps to take to... unleash and explore this module's capabilities:   first, set up the Swift Mailer message (/admin/config/swiftmailer/messages) settings to use HTML next, configure the Swift Mailer transport settings (/admin/config/swiftmailer/transport) to your transport method of choice  and finally, configure the core mail system settings to use this module for the formatter and the sender plugins   And if you're not yet 100% convinced that the Swift Mailer module is significantly superior to Drupal's default mail system, here are some more arguments:   it enables you to send... mixed emails: both plain text and HTML-enabled it provides HTML content types it supports various transport methods: Sendmail, PHP, SMTP (the current mail system supports but one method) it enables you to integrate key services with Drupal —  like Mandrill, SendGrid —  right out of the box it incorporates a pluggable system, allowing you to further extend its functionality   How about now? Are these strong enough arguments that Swit Mailer's the way to send HTML emails in Drupal 8?   3. The PHPMailer Module Another option for configuring Drupal 8 to send out HTML emails is the PHPMailer module. How does it perform compared to Swift Mailer?   It's not pluggable it's not as easily customizable as Swift Mailer  it's already embedded in the SMTP module (in fact, in Drupal 8 the default mail interface class is named “PHPMail” instead of DefaultMailSystem)   What features does it share with Swift Mailer?   it enables you to send out HTML-enabled emails with Drupal it enables you to add attachments to your emails it, too, enables you to send out mixed emails it, too, supports external SMTP servers   Moreover, you can extend its core functionality by integrating it with the Mime Mail component module (currently in alpha 2 version for Drupal 8).   4. The Mime Mail Component Module Briefly, just a few words about Mime Mail:   as already mentioned, it's a “component module”, that can be used for boosting other modules' functionality it enables you to send out HTML emails with Drupal: your mail would then incorporate a mime-encoded HTML message body it enables you to set up custom email templates: just go to your mimemail/theme directory, copy the mimemail-message.tpl.php file and paste it into your default theme's folder; this way, your email will take over your website's design style  any embedded graphics gets Mime-encoded, as well, and added as an attachment to your HTML email do some of your recipients prefer plain text over richly formatted HTML emails? Mime Mail enables you to switch your email content over to plain text to meet their specific preferences   The END! Now that you know your options, it's time to step out from the (too) long era of rudimentary, plain emails sent out with Drupal. ... and into the era of richly formatted HTML emails, that will:   enrich your customers' experiences enhance Drupal 8 site admins' experience ... Read more
Adriana Cacoveanu / Feb 06'2019
How to Decouple Drupal Commerce to Deliver Richer Shopping Cart Experiences: Useful Modules
Just imagine it: Drupal 8's robust features as a CMS, the flexible e-commerce functionality of the Drupal Commerce ecosystem and a JavaScript framework for the front-end! All in the same native mobile app! You can easily achieve this “combo” — a reliable content repository & a JS-based front-end providing a fantastic shopping cart experience — if you just... decouple Drupal Commerce. For why should you trade Drupal's battle-tested content authoring and administration tools for a more interactive user experience?  And why should you give up on your goal to deliver richer cart experiences just because Drupal 8 can't rival the JavaScript in terms of advanced native mobile app functionality?   push notifications complex shopping options enabling users to manage their own delivery times and places ... to configure various aspects of their orders and so on   Just leverage a decoupled Drupal Commerce strategy in your shopping app project and you can have both:   Drupal as your secure content service  the front-end framework of your choice “in charge” with the user experience    In this respect, these are the most useful Drupal tools at hand for implementing an API-based headless architecture:   1. Headless Commerce Comes Down to... … separating your commerce stack (back-end content handling area, data store etc.) from the user interface. Or the “head”, if you wish. The presentation layer would “retrieve” content from the back-end content storage area and is the one fully “responsible” with delivering fantastic user experience. This way, you're free to choose your own front-end tools. Now, why would you consider choosing a decoupled architecture for your e-commerce solution? The benefits are quite obvious and not at all negligible:   higher flexibility and scalability (that JS frameworks are “famous” for) freedom to customize your app to your liking (for every platform or/and device) richer, more interactive shopping experiences    2. Decoupled Drupal Commerce... Out of the Box? The Commerce Demo  Narrowing our focus down to... Drupal, to Drupal Commerce, more specifically, the question's still there: “How do I decouple Drupal Commerce?” Considering that:   there are specific challenges that such a decoupled front-end architecture poses Drupal solutions like Forms API and Views won't fit your specific (probably quite complex) design implementation requirements   Luckily, the Commerce Guys team has already faced and solved these challenges. First of all, they've put together the Commerce Demo project, a store providing default content to be “injected” into Drupal. Secondly, their attempt at integrating a design meant to support advanced functionality, for richer shopping cart experiences, resulted in 2 new modules:   Commerce Cart API Commerce Cart Flyout   More about them, here below...   3. Useful Modules to Decouple Drupal Commerce  Here's a collection of the most... relevant modules that you could use in your headless Drupal Commerce project:   3.1. The Commerce Cart API Module It's no less than a handy Drupal tool that enables you to custom build your shopping cart widget.    3.2. The Cart Flayout Module The go-to module when you need to ajaxify the “Add to cart” form in your shopping app. Basically, what it does is: Provide a sidebar that “flies out” once the user clicks the “Add to cart” button or the cart block. If I were to dive into details a bit, I'd add that the flyout enables users to:   view the products in their shopping carts remove all the items there update the quantity of a specific item   Should I add also that Cart Layout comes with no less than 9 different Twig templates, for various parts of the module? By leveraging Drupal's library management feature you can easily override these JS segments of the module. And not only that you get to customize it to suit your needs entirely, but:   it comes with a well structured JS logic it's built on top of Backbone   … which translates into an efficient models-views separation.   3.3. Commerce 2 Use Drupal Commerce 2 as the core structure of your e-commerce project. Being an ecosystem of Drupal 8 modules and “spoiling” you with unmatched extensibility via its APIs, Drupal Commerce empowers you to implement all kinds of headless commerce scenarios. It enables you to use Drupal as your content/data (user and order-related info) repository and to easily serve this content to your mobile app. To your end-users.   3.4. The Commerce Recurring Framework Module Some of its handy charging & billing features include:   configurable billing cycles configurable retries in case of payment declines both prepaid and postpaid billing systems   3.5 The JSON API & JSON API Extras Modules    Need to decouple Drupal Commerce, to enable a full REST API in JSON format?  It's as easy as... enabling a module (or 2 at most): the JSON API module. What it does is:   Expose the API so you can vizualize the data in JSON format.   And Drupal's built and perfectly adapted to support JSON API, which turns it into the go-to option when you need a back-end content repository for your headless shopping app. In addition to this module, feel free to enable JSON API Extras, as well. It comes particularly handy if you need to customize the generated API.  It allows you to:   override the name of your resources change their path...   You'll then have a specific place in your app's user interface where you can visualize your content paths. Once you have your data in JSON format, safely stored in your back-end content creation & moderation Drupal area, you're free to... serve it to your mobile shopping app!   The END! And these are some of the already tested tools and techniques to decouple Drupal Commerce so that you can deliver richer, more interactive cart experiences. Have you tried other modules/methods? Writing custom JavaScript code... maybe? ... Read more
RADU SIMILEANU / Feb 01'2019
What Are the Best Node.js Frameworks in 2019 and Why? Top 5
The future is now... That predicted future where Node.js dominates the landscape of the application and web development technologies. And so, the “tormenting” question that you're dealing with right now must be: “But what are the best Node.js frameworks in 2019?” Followed closely by: “And which one of them should I use? Which one of these web server frameworks best fits my own project requirements?” And, as a Quora user pointed out: “This is just like asking what clothes to wear out. It depends on where you're going right?” To give you a hand, we've weighed the pros and cons, both the developers' and the end-users' reviews. We've compared their “stocks” of GitHub stars, and shortlisted the Node.js frameworks to... 5 frameworks holding a higher scope than the rest:   But First, What Is a Node.js Framework More Precisely? First of all, yet without getting knee deep into technical jargon, let's briefly pass in review the main reasons why Node.js — a tool for developing server-side web apps quick and easy — has got so influential: It enables developers to build fast and scalable server-side apps. And it all comes down to these 2 key benefits. All that talk about:   its innovative event-based I/O model about it being conveniently lightweight about single-threaded asynchronous programming   … can be reduced to these 2 “irresistible” advantages. And by “fast” I don't refer to page loading times only, but to the fact that it speeds up the development process itself, as well: With Node.js implementing the server side, developers don't need to “joggle with” 2 languages anymore. One for the back-end/server-side and one for the front-end/client-side. Now, back to the initial question: “What is a Node.js framework?” Take it as some sort of Node.js-based abstract design or “skeleton” that you can build your own custom code on. An... empowering “skeleton” that comes packed with:   a set of tools guidelines and best practices   … that help you/your development team quickly prototype and develop your project. And, since its out-of-the-box features help you keep code consistency throughout the team, a Node.js framework will implicitly:   boost your productivity enhance your app project's scalability   Does that answer your question?   1. Express.js It stands out as “the minimalist” framework in our list here: A Node.js-based technology that takes on the role of a middleware between our servers and routes. And its robust APIs is one of the main “culprits” for its increasing popularity — one of the best Node.js frameworks in 2019. It practically enables app developers to set up routes to send/receive requests between the database (MongoDB) and the front-end (Angular). Another one of its “selling points” is given by the heavy load of packages that you can just “inject” into the Express.js framework to extend its functionality.   Benefits:   low learning curve short app development cycle time ideally customizable mostly browser-focused, meaning that templating and rendering comes as a default feature  great 3rd party integration (Pug, EJS, Mustache and other template engines and modules available on NPM)   Drawbacks:   its code organization  event-driven callbacks (a type of architecture that “tempts” you with unmatched flexibility at the price of... unwanted complexity as your app scales up)   2. Meteor JS The key advantage that propelled Meteor in the 5 best Node.js frameworks in 2019? Real-time updating. And there's more! It's built to power really large projects (e.g. Reaction Commerce) and, if documentation is a particularly heavy-weighing criterion for you, this framework's backed by a large community. One that has already put together rich and clear documentation to help you get your web app up and running in no time.   Benefits:   real-time testing tool and debugging a wide range of libraries and packages to boost its core functionality with seamless client-server communication   Drawbacks:   there's no native widget library no MongoDB support … PWA support … or rendering on the server side, either   3. Sails.js, One of the Best Node.js Frameworks in 2019 The most... compatible Node.js framework in our list, we could say. For Sails.js “gets along well” with:   almost all databases most of the front-end technologies, as well (Angular, Android/Java, Backbone, React, iOS/Objective C) the great majority of adapters: Mongo, MYSQL, Local Disk, Redis, PostgreSQL   And it's not at all “picky” when it comes to the types of controllers, models, views, adapters, and configuration files that the applications that it powers might include. In short: it's a highly compatible framework with data-based APIs and service-oriented, scalable architecture. One that gives you a more... robust “skeleton” to start with, we might say.   Benefits:   it separates business logic from presentation logic it can store data anywhere it speeds up the Rest API building process no additional routing generates free JSON API good Socket.io support   Drawbacks:   it's one of the... slow Node.js frameworks time-consuming project development process poor asset management   4. Koa.js Developed by the same team that designed Express.js, Koa sets itself apart from the rest of the Node.js frameworks in our top here with some unique features:   it uses next-generation methods of ES6 that enables you to work without callbacks … and grants you more control when it comes to error handling there's no middleware, which means that the lines of code are more granular, the middlewares are more... component-based, more cascaded … thus granting you with increased control over your configuration   Why has the Express.js team decided to build a new Node.js framework? What have been their major goals:   to build a smaller sized framework compared to Express.js …. a more expressive one to provide developers with a more robust “scaffolding” for building their web apps and APIs on   Benefits:   easier to control error handling it's significantly lighter than other frameworks modular structure it gave up on callbacks and thus removed all the well-known asynchronous issues support for Sync/await keywords cascading middlewares   Drawbacks:   it's not compatible with express-style middleware, with Node.js middleware there isn't a large community to rely on for support   5. LoopBack.js One of the best Node.js frameworks in 2019 that “spoils” you with:   a dynamic API web browser  easy-to-use CLI    What makes it unique in our list here? The fact that it empowers developers to build their own models based on their own dynamic models or schemas. To come up with their own server API, that would be further assigned to a new server. Pretty much like building an API that's proxy for... another API. In addition to that, it supports a whole range of databases: PostgreSQL, MySQL, Oracle, MongoDB and REST services.   Benefits:   fast development cycle modular and structured code available add-on components for Oauth2, 3rd-party login, file management  support for browser and native mobile SDKs: iOS, Android/Java, JavaScript browser you can rapidly create dynamic end-to-end REST APIs    Drawbacks:   monolithic, opinionated architecture steep learning curve   Final Word  As already mentioned, at the beginning of this post: a mere inventory of the best Node.js frameworks in 2019 is not the answer.   It's the best web server framework for your own project's requirements that you need.   What are your priorities when it comes to the benefits that you “reap” from using one Node.js framework over the other? Is it:   top speed? fast development  high maintainability rich documentation and a thriving community backing it up?   Friendly advice: don't invest all your resources in learning one such Node.js framework since new, more tempting and feature-rich ones will emerge. Instead, learn the business in the front-end/back-end or the language itself (JavaScript) to future-proof your... investment. ... Read more
RADU SIMILEANU / Jan 31'2019
And The Award for the 2019 Canada Leader Goes to... OPTASY! In 3 Different Categories
We still can't get over this news: there are 4500 top performing companies in Canada featured on Clutch and OPTASY's a leader in 3 categories!   Top Drupal Development Companies in Canada Canada: Top Web Developers Best PHP Developers in Canada    Our clients have spoken and the Clutch team has listened to them. Then, based on the collected client reviews, they've propelled us on the 4th, respectively the 5th position of 3 most competitive categories on their annual list. To be “neighboring”, in the Leaders Matrix, all those top web development companies in Canada and to owe this honor to our clients is highly rewarding for us:   “From day 1, the communication has been the hallmark and has been phenomenal.”  “They stepped up in terms of commitment.”  “I appreciate how detail-oriented they are. That's not a strength everyone has“ (Some of our clients' reviews on Clutch)   From Just Another Drupal Development Company to... a 2019 Canada Leader  Our ascension from a small Drupal agency in early 2000 to one of the leading companies on Clutch in 2019 has been paved with hard work. And plenty of challenges, too. Looking back now, we count +10 years of determined effort to constantly diversify our services:   from Drupal site building to developing custom Drupal modules to fit each project's specific feature needs to multiple APIs (and mostly e-commerce) integrations to providing ongoing Drupal maintenance and support to redesigning and architectural restructuring  to providing back-end development support for web projects using other technologies than Drupal (Magento, WordPress, Laravel...), as well       to mobile app development with a particular focus on next-generation technologies (AI, VR, AR)   Our Strive for Excellence Is Equaled Only By Our Effort to Build Strong Client Relationships We're only as good as our clients say we are. It might sound like such a cliche and yet it's true: our recognition as a Canada Clutch leader for 2019 is the best proof.  For it's what our clients had to say about our ability:   to deliver value (expertise turned into measurable results) on time and within budget to communicate with them throughout the projects to adapt our in-depth knowledge of Drupal and experience in web development to their specific needs and requirements to “go above and beyond” (as the Clutch team itself defined our work) for meeting their projects' functionality needs    … that propelled us in top 5 PHP, web and Drupal development teams in Canada.  We cannot but make our bow to YOU, our client. And to the Clutch team, as well, for all the work invested in:   analyzing our portfolio assessing our market presence   … and for all the resources invested in interviewing our clients and promoting excellence. For challenging B2B companies to deliver stellar services.     Now, what better proof that we've already taken their challenge to excellence seriously than to be listed in one of Clutch's Leaders Matrix as a leader. In 3 categories... Thank you! ... Read more
Adriana Cacoveanu / Jan 29'2019
The Drupal Quality Initiative: How Do You Know When Your Contributed Project Is Ready to Be Released? How Do You Assess Its Quality?
Let's say you've been working on this contributed project for a few months now. It has gone from Beta 1 to Beta 2 to Beta... Now, how long till its final release? How do you know when it's ready for the Drupal community to see and use? And this is precisely why the Drupal quality initiative was launched in the first place. So that can we finally have some sort of a checklist at hand to use whenever we need to assess our code's level of quality:   the standards that we should evaluate our contributed projects by  the specific elements that go into the quality of our projects, such as contributed Drupal modules a certain hierarchy of quality that we could rate our own projects by   And so on... For, let's admit it now: Except for our own personal methodologies for self-assessment, there's no standardized benchmark that could help us evaluate our contributed Drupal projects. There's no way of knowing for sure when our projects are 100% ready to go from beta to... full release. Now, here are the legitimate questions that this initiative brings forward, along with some of the suggested paths to take:   1. What Drupal-Specific Quality Metrics Should We Use to Evaluate Our Code? How do you know when your contributed project is efficient enough to... be used by other members of the Drupal community? You need some sort of criteria for measuring its level of quality, right?    2. The Drupal Quality Initiative: A Checklist for Project Quality Assessment And this is how the “Big Checklist” for Drupal modules has been put together. One outlining all those areas of a contributed Drupal project that you should carefully evaluate when assessing its quality. Areas such as:   team management documentation testing code design requirements DevOps   All those factors and Drupal-specific elements that go into the quality of a contributed project. 3. Introducing the Idea of a Multi-Leveled Quality Hierarchy What if we had multiple levels of quality to rate our Drupal projects? Imagine some sort of hierarchy of quality that would challenge us to keep improving the way we write code for Drupal. To keep growing as teams working with Drupal. Your project might be rated “level 1”, from a quality standpoint, on its first release. But it would still stand stand the chance to get a higher score for if you strove to meet all the other criteria on the checklist. 4. You'll Be Particularly Interested in The Drupal Quality Initiative If You're A...   Site builder, scanning through the pile of contributed Drupal modules in search of the ones that perfectly suit your project's specific needs Drupal contributor in need of some sort of checklist that would include all those standards of quality and best practices to help you assess your own code's value   5. What About Non-Drupal Software Projects? How Is Their Quality Assessed? In other words: how do other communities assess their projects' levels of quality? What metrics do they use? And here, the Drupal quality initiative's... initiator gives the “The Capability Maturity Level”, set up by the Software Engineering Institute, as an example. The process model highlights 5 levels of “maturity” that a project can reach throughout its different development phases.They range from:   the“initial chaos” to planning and collecting project requirements … all the way to continuous process improvement   Now, just imagine a similar multi-level evolutionary benchmark that we could use to assess our own Drupal projects' levels of... maturity.   6. A Few Quality Indicators and Suggested Tools And the whole Drupal Quality Initiative comes down to identifying the key endpoints for assessing a project's quality, right? Here are just some of the suggested questions to use during this evaluation process:   Is it easy to use? Does it perform the intended functions? Is it efficient enough? How many detected bugs are there per 1000 lines of code How secure is it?   Now, for giving the most accurate answers to these quality assessing questions, you'll need the right toolbox, right? All those powerful tools to help you:   check whether your code is spell checked monitor the status of specific operations check whether all strings use translation see whether your code has been properly formatted   The END! And this is just a brief overview of the Drupal Quality Initiative. What do you think now, does the suggested checklist stand the chance to turn into a standardized Drupal benchmark for assessing quality? How do you currently determine your contributed projects' value? ... Read more
Adriana Cacoveanu / Jan 25'2019
Progressively Decoupled Drupal: Moving Towards a Standard Workflow
Progressively decoupled Drupal has gone from concept to buzzword. Until recently, when we've started to witness sustained efforts being made to set up a standard workflow for implementing this architecture. New dedicated modules have been developed to fit those use cases where just a few particular blocks, affecting the website's overall performance, need to be decoupled. All while preserving Drupal's standard robust features. Features too famous among content editors and site builders to be sacrificed in the name of high speed and rich UX.  We've gradually shifted focus from “Why would I choose progressive decoupling over a headless CMS?” to: “How precisely do I implement the progressive approach into my own decoupled Drupal project? Is there a standardized process, based on a set of dedicated modules, that I can leverage?” And this is what I'll be focusing on in this post here. More precisely, on the efforts for standardizing the whole workflow: see Decoupled Blocks and the SPALP module!   1. Progressively Decoupled Drupal: Compromise or Viable Alternative to an All-In Transition? Is this approach nothing but a compromise between:   content editors — and all Drupal users working in the site assembly —  who depend on key features like content workflow, layout management, site preview, seamless administrative experience and front-end developers, who're “dying” to “inject” application-like interactivity and high-speed front-end technologies into certain portions of the Drupal web pages?   Progressively decoupling blocks in Drupal is, indeed, the best compromise you could get between:   your editorial team's “fear” of losing familiar Drupal features critical for their workflow front-end developers willing to experiment with new technologies promising top speed and richer user experiences   Developers get to leverage the JavaScript framework of their choice without interfering with the site assemblers' workflow. Flexibility at its best! But does being a viable compromise makes it also a worthy alternative to the fully decoupling option? It does. Specifically because:   it caters to all those who haven't been won over by the “headless CM movement”  it removes the risk of trading vital Drupal functionality for the benefits of a powerful front-end framework   In other words: For all those Drupal projects requiring that only certain components should be decoupled, an all-in transition would be simply... redundant and unnecessarily risky. For all those projects there's the progressively decoupled Drupal alternative.   2. Why Has this Approach to Decoupling Drupal Been So Unpopular? How come the progressively decoupled Drupal strategy gained so little traction? It seems that despite its drawbacks — the need to reinvent some of the lost “Drupal wheels” and its higher costs — the fully decoupled approach has been more popular. And there are 3 main causes for this, that Dries Buytaert identified and exposed in his blog post on “How to Decouple Drupal in 2018”:   progressive decoupling doesn't leverage server-side rendering via Node.js modern JavaScript cohabits with old-school PHP JavaScript's ascension is not going to stop any time soon; therefore, the risk of sacrificing some of Drupal's popular capabilities might still seem insignificant compared to the JS advantages at a front-end level   3. The SPALP Module: Towards a Standard Workflow for Implementing Progressive Decoupling Now, back to this blog post's main topic: Clear pieces of evidence that we're finally heading towards a standardized process for implementing this type of decoupled system.   And one such evidence is the SPALP module: Single Page Application Landing Page.  Here's a specific use case, so you can get an idea of its role in the entire workflow of a progressively decoupled Drupal project: Let's say that you need to integrate a couple of JavaScript-based one-page apps into your Drupal website. The CMS will continue to be “in charge” of the page rendering, access control routing and navigation, while the JS apps would be developed independently, outside of Drupal. How would you configure these JS apps as Drupal web pages? You'd use the SPALP module to configure each one of them so that:   you stay consistent and “joggle with” the same configuration every time you need to add a new app to your Drupal website you make its easy for your content team to manage this entire ecosystem of single-page JavaScript apps   “And how does this module work?” Here's the whole “back-stage” mechanism:   the SPALP module helps you to set up a new “app landing page" content type, the one providing the URL for the app about to be integrated each one of these applications must have its own module that would declare a dependency on SPALP, include its JSON configuration and define its library once a module meeting all these requirements is enabled, SPALP will create a landing page node for it, which will store the initial configuration the SPALP module will add the pre-defined library and a link to an endpoint serving JSON each time that node is viewed   Note: speaking of the efforts made to create a “Drupal way” of implementing this decoupled architecture, you might want to check out Decoupled Blocks, as well. It's designed to empower front-end developers to use the JS framework of their choice to develop individual custom blocks that would be later on integrated into Drupal. No Drupal API knowledge required! The END! What do you think: will the community continue their efforts to build a standard workflow for the progressively decoupled Drupal approach? Or will it remain a conceptual alternative to headless Drupal? ... Read more
Silviu Serdaru / Jan 23'2019
6 Best Serverless Plugins: How to Tailor the Serverless Framework to Your Project-Specific Needs
Build, configure and deploy all necessary resources with just a few commands... The serverless framework empowers you to streamline your entire development workflow. But what if you need to tackle some project-specific issues? Then you extend its core functionality to suit your needs by implementing the best serverless plugins available. For you might need to:   bundle a Lamba function with Webpack empty your buckets before removing them copy data from production to development table   So, what are your options?   to scan through the pile of already developed serverless plugins, looking for the one that addresses that specific issue to write your own custom serverless plugin   This post here focuses on the first option. I'll reveal to you the 6 most useful community-driven plugins for the serverless framework.   1. But First: What's the Core Functionality of the Serverless Framework? In other words: What do you get out-of-the-box? Here's a short list of tasks that go from being manually carried out to... automated when you go serverless:   creating, configuring, and deploying the needed resources (API Gateway and Lambda functions)  storing your code (and configuration) into a repository for later use setting up database tables for your functions configuring serverless templates for your subnets and VPC's   In other words: using a serverless framework streamlines all those tedious tasks of writing code on the console, configuring your resources, managing your team's workflow...   2. 6 Best Serverless Plugins to Consider for Your Next Project  And the serverless framework itself is an “ecosystem” of plugins.  Nevertheless, there are cases when its core functionality doesn't meet all your project's requirements and you need to... extend it.  Before you rush to write your own plugin, you might want to have a look at what's already been built. In this respect, here's a list of the most widely used ones:   2.1. Serverless Webpack In a situation where you need to bundle your lambda functions with Webpack? Let this serverless plugin here handle the job for you.   2.2. Serverless Dotenv  Here's a common scenario: You need to load your variables, currently stored in an env file, into your serverless yaml config.  Then, this is the serverless framework plugin that comes to your rescue. It enables you to dynamically preload env files into serverless.   2.3. Serverless Offline  Need to run everything on your local machine before you deploy it? Integrate this plugin here into your framework and it will emulate AWS Lambda and API Gateway on your PC, streamlining your whole development process.   2.4. Serverless Mocha Plugin  One of the best serverless plugins, a mocha-based one, that provides you support for your test-driven development flow.   2.5. Aliyun Function Compute  Is “injecting” Alibaba Cloud Function Compute support into your serverless app one of your project-specific needs? Well, then this is the plugin you need! It's been built to enable support for this event-driven compute service into the serverless framework.    2.6. Serverless S3 Remover  What do you do with all those buckets that you will have been “joggling” with once you decide to delete your stack? The one you will have “overly exploited” by then, during your tests? Well... you remove them. Along with the content that they store.  How? You let this plugin here handle the “decluttering task” for you. The END! These are the 6 best serverless plugins already available that you can implement into your projects.  Which one's the perfect fit for your current project-specific needs? Photo from Unsplash ... Read more
RADU SIMILEANU / Jan 19'2019
How Do You Deal with Duplicate Content in Drupal? 4 Modules to Get this Issue Fixed
Accidentally creating duplicate content in Drupal is like... a cold:  Catching it is as easy as falling off a log. All it takes is to:   further submit your valuable content on other websites, as well, and thus challenging Google with 2 or more identical pieces of content move your website from HTTP to HTTPs, but skip some key steps in the process, so that the HTTP version of your Drupal is still there, “lurking in the dark” have printer-friendly versions of your Drupal site and thus dare Google to face another duplicate content “dilemma”   So, what are the “lifebelts” or prevention tools that Drupal “arms” you with for handling this thorny issue? Here are the 4 modules to use for boosting your site's immunity system against duplicate content. And for getting it fixed, once the harm has already been made:   1. But How Does It Crawl into Your Website? Main Sources of Duplicate Content  Let's get down to the nitty-gritty of how Drupal 8 duplicate content “infiltrates” into your website. But first, here are the 2 major categories that these sources fall into:   malicious non-malicious   The first ones include all those scenarios where spammers post content from your website without your consent. The non-malicious duplicate content can come from:   discussion forums that create both standard and stripped-down pages (for mobile devices) printer-only web page versions, as already mentioned items displayed on multiple pages of the same e-commerce site   Also, duplicate content in Drupal can be either:   identical or similar And since it comes in “many stripes and colors”, here are the 7 most common types of duplicate content:   1.1. Scraped Content Has someone copied content from your website and further published it? Do not expect Google to distinguish the copy from its source. That said, it's your job and yours only to stay diligent and protect the content on your Drupal site from scrapers.   1.2. WWW and non-WWW Versions of Your Website Are there 2 identical version of your Drupal website available? A www and a non-www one? Now, that's enough to ring Google's “duplicate content in Drupal” alarm.   1.3. Widely Syndicated Content  So, you've painstakingly put together a list of article submission sites to give your valuable content (blog post, video, article etc.) more exposure. And now what? Should you just cancel promoting it? Not at all! Widely syndicated content risks to get on Google's “Drupal 8 duplicate content” radar only if you set no guidelines for those third-party websites. That is when these publishers don't place any canonical tags in your submitted content pointing out to its original source. What happens when you overlook such a content syndication agreement? You leave it entirely to Google to track down the source. To scan through all those websites and blogs that your piece of content gets republished on. And often times it fails to tell the original from its copy.   1.4. Printed-Friendly Versions This is probably one of the sources of duplicate content in Drupal that seems most... harmless to you, right? And yet, for search engines multiple printer-friendly versions of the same content translates as: duplicate pages.   1.5. HTTP and HTTPs Pages Have you made the switch from HTTP to HTTPs? Entirely? Or are there:   backlinks from other websites still leading to the HTTP version of your website? internal links on your current HTTPs website still carrying the old protocol?   Make sure you detect all these less obvious sources of identical URLs on your Drupal website.   1.6. Appreciably Similar Content  Your site's vulnerable to this type of duplicate content “threat” particularly if it's an e-commerce one. Just think of all those too common scenarios where you display highly similar product descriptions on several different pages on your eStore.    1.7. User Session IDs  Users themselves can non-deliberately generate duplicate content on your Drupal site.  How? They might have different session IDs that generate new and new URLs. 2. 4 Modules at Hand to Identify and Fix Duplicate Content in Drupal What are the tools that Drupal puts at your disposal to detect and eliminate all duplicate content?   2.1. Redirect Module Imagine all the functionality of the former Global Redirect module (Drupal 7) “injected” into this Drupal 8 module! In fact, you can still define your Global Redirect features by just:   accessing the Redirect module's configuration page clicking on “URL redirects”    Image Source: WEBWASH.net What this SEO-friendly module does is provide you with a user-friendly interface for managing your URL path redirects:   create new redirects identify broken URL paths (you'll need to enable the “Redirect 4040” sub-module for that) set up domain level redirects (use the “Redirect Domain” sub-module) import redirects   Summing up: when it comes to handling duplicate content in Drupal, this module helps you redirect all your URLs to the new paths that you will have set up. This way, you avoid the risk of having the very same content displayed on multiple URL paths.   2.2. Taxonomy Unique Module   How about “fighting” duplicate content on your website at a vocabulary level? In this respect, this Drupal 8 module:   prevents you from saving a taxonomy term that already exists in that vocabulary is configurable for every vocabulary on your Drupal site allows you to set custom error messages that would pop up whenever a duplicate taxonomy term is detected in the same vocabulary   2.3. PathAuto Module   Just admit it now: How much do you hate the /node125 type of URL path aliases? They're anything but user-friendly. And this is precisely the role that Pathauto's been invested with: To automatically generate content friendly path aliases (e.g. /blog/my-node-title) for a whole variety of content. Let's say that you want to modify the current “path scheme” on your website with no impact on the URLs (you don't want the change to affect user's bookmarks or to “intrigue” the search engines). The Pathauto module will automatically redirect those URLs to the new paths using any HTTP redirect status.   2.4. Intelligent Content Tools       Personalization is key when you strive to prevent duplicate content in Drupal, right?  And this is precisely what this module here does: it helps you personalize content on your website. How? Through its 3 main functionalities delivered to you as sub-modules:   auto tagging text summarizing  detecting plagiarized content    Leveraging Natural Language Processing, this last sub-module scans content on your website and alerts you of any signs of duplicity detected. Word of caution: keep in mind that the module is not yet covered by Drupal's security advisory policy!   3. To Sum Up Setting a goal to ensure 100% unique content on your website is as realistic as... learning a new language in a week.  Instead, you should consider setting up a solid strategy ”fueled” by (at least) these 4 modules “exposed” here. One that would help you avoid specific scenarios where entire pages or clusters of pages get duplicated. Now, that's a far less utopian goal to set, don't you think? ... Read more
Adriana Cacoveanu / Jan 16'2019
10 Reasons Why AI Projects Fail or How You Can Easily Sabotage Your Own AI Project- Part 2
And I'm back, as promised, with a handful of reasons — ranging from “the usual suspects” to more nuanced ones — why AI projects fail. From:   getting too absorbed in keeping your technological assets up to date to the point of skipping to put together a solid business strategy for your AI implementation to getting overly excited about AI and trying to “force integrate” it into... everything  to skipping to further maintain it, once launched   … there are quite a few mistakes that you can easily avoid and thus foolproof your AI project. So, let me expose these hidden “traps” to you:   Mistake #6: You Put Technology Before a Solid Business Strategy AI-powered or not, it's still a... business that you're running, right? So, getting focused on technology only, turning it into the unique driver of “business” value is simply... non-realistic. First, you need to build your solid business strategy. One to include:   thorough research of your target markets all the technological assets needed to reach your AI project's goal ... along with all the resources to be invested, of course   Technology, no matter how advanced, never comes before business strategy.  That, of course, if it's business value that you try to achieve and not just... building AI for AI's sake.   Mistake #7: You Cut Down on Testing Time Probably one of the most common reasons why AI projects fail: You get all too eager (and over-confident) to release your AI-powered software out into the wild and you deliberately skip some major debugging phases. To avoid this trap, make sure to include, while setting up your business strategy, the due resources for properly testing your AI project before “setting it free”. For, placing it into the spotlight prematurely, faulted and vulnerable to future bugs, will “doom” your AI solution to years of... public distrust.   Mistake #8: You Get Stuck in a Never-Ending Development Cycle Now, mind you don't avoid a pitfall only to... fall into the next one: A never-ending design-develop-design-develop... process. For, yes, one of the worst AI mistakes is to release a buggy, poorly tested AI-enabled software product.  But it's equally risky to keep postponing its launch and get tangled up in this loop of continuously polishing it and testing it. You just risk having your competition leverage all the AI opportunities out there while you're constantly updating your software. Instead, consider launching the best possible version of your AI software. Then, collect the relevant data and the message coming from your target market to iterate and release an updated version.   Mistake #9: Baking AI into Everything- Why AI Projects Fail Trying to turn AI into an “all-purpose” tool is yet another frequent mistake behind many AI fails. I know you must be infatuated with AI (we, too, are infinitely excited with the still unexplored opportunities of artificial intelligence). Yet, do keep in mind that the right sequence is the following: You first identify the specific need/problem in the market and then come up with the suitable AI solution for it! You don't just jump on the latest AI technology and... force-fit it into any software product. For, let's face it: There are tasks where AI rocks and tasks where human staff's emotional intelligence is needed (take certain customer service scenarios, for instance). So, don't try to bake AI into... everything or your project will only swell the ranks of failed AI projects.   Mistake #10: You Skip Further Maintaining Your AI Solution A “launch and run” strategy won't propel your AI project too far ahead... That is: Just like any other product, an AI-powered software product needs periodical maintenance. Regular “infusions” of new methods, new models and training data.   The more complex it gets, the more crucial a solid maintenance strategy becomes. So, mind you do not underrate this phase. It's another too common reason why AI projects fail.   The END! These are the 10 most “popular” AI project mistakes. Which one(s) had you been more “vulnerable” to before seeing them all exposed in this post here? Photo by Rock'n Roll Monkey on Unsplash.  ... Read more
Adriana Cacoveanu / Jan 14'2019