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.

When Should You Not Consider Using Node.js? 3 Unsuitable Use Cases
It's undebatable: Node.js has practically laid the foundation of the real-time web! The real-time, two-way connection web apps have revolutionized the old web response paradigm. The one where it was just the client who could initiate communication, never the server, as well. Even so, there are certain cases when using Node.js is not the best decision you could make. Specific use cases for which the otherwise flexible and revolutionary web server technology turns out not to be... unsuitable. So: “When shouldn't I use Node.js?” You might legitimately ask yourself. Here are the 3 bad use cases for this JavaScript runtime environment. Scan them through, take note all the factors that I'll be outlining and think them through before rushing to use Node.js to power your next project with.   1. A CPU-Heavy Application: Using Node.js Is Simply a Bad Idea Face it, deal with it and... adjust your decisions to it: There are plenty of better solutions (other than Node.js) for powering your CPU-intensive app. It's just not the best technology at hand when it comes to heavy computation. Now here's why, by using Node.js, you'll only end up “sabotaging” its very advantages, instead of turning it into a true “horsepower” for your app, as you might expect:   Node.js leverages an event-based, non-blocking I/O model, using a single CPU  hence, all that intense CPU-processing activity will actually block the incoming requests … since the thread will get “held up” with number-crunching   The direct effect of “exploiting” Node.js in the context of heavy server-side computation?  The very benefits of its event-driven, non-clocking I/O model would get practically... nullified in the context of CPU-intensive operations. Given this, why would you stubbornly stick to Node.js, when there are other technologies more suitable for building your CPU-heavy software with? With better results?   2. A Simple CRUD (or HTML) Application No need to get your hopes high when using Node.js with a basic CRUD or HTML application: It might turn out to be just “slightly” more scalable, yet don't expect a traffic flood just because it's Node.js-powered. In short: use cases like this one, where data's provided, straightforwardly, by the server and where there's no need for a separate API, render Node.js superfluous. There are other frameworks suited specifically for this type of projects (take Ruby for instance). Using Node.js in this case would be like driving a Formula 1 car while... stuck in rush hour traffic.    3. A Relational Database-Backed Server-Side App Why isn't Node.js your best choice for a relational data access type of project? Because its relational database tools aren't as reliable, robust and easy to work with as other frameworks' toolboxes (take Rails for instance!). Rails, for example, would “spoil” you with:   already matured Data Mapper and Active Record data access layer implementations out-of-the-box data access setup DB schema migrations support tools … and the list goes on   In short: if there already are frameworks perfectly “equipped” for this type of project “scenarios”, why would you stick to using Node.js? Since its relational DB toolbox is not (yet) as advanced?   In Other Words... With these 3 “bad” use cases for Node.js “exposed”, allow me to put together a short “inventory” here, one including all the “gotchas”, aspects to consider before kicking off your Node.js project and limitations to be aware of:   Node.js hasn't been built with the “solving the compute scaling” issue in mind   … but it has been created to solve the I/O scaling issue instead   excepting contexts of CPU-heavy operations, Node.js still is the best technology at hand for powering your real-time, scalable web apps with   do reconsider your decision of using Node.js if for developing your piece of software you depend on some kind of threading model   there are also poor quality packages available in npm, free to use in your Node.js application; do keep this in mind as you dig deep into the “load” of  Node.js packages   Node.js will never be “the best choice” for event loop-blocking use cases (take asynchronous parsing XML, for instance)   … nor for powering apps relying on intense computation   Node'js “worker” is geared at solving HTTP server calling issues (rather than intense computing issues)   The END! ... Read more
RADU SIMILEANU / May 17'2018
How to Scale Your Node.js App: Best Strategies and Built-In Tools for Scalability 
Whether it's the increasingly challenging workload or you simply want to enhance your Node.js app's tolerance to failure and availability, there comes a time when you just need to scale it up, right? To “squeeze” the best performance out of your entire infrastructure of... nodes. Well then, here's how to scale your Node.js app: And scaling up your web back-end app at different levels —  overall improving its throughout — sure isn't an afterthought with Node.js: Scalability is built in the very core of the runtime. And the infrastructure of nodes, strategically distributed, communicating with each other, is what makes this framework particularly scalable. So, what is the best way to scale up your Node.js app? Which are the most powerful built-in tools for scalability to explore and to “exploit”? And what are the best strategies to go for depending on your specific scenario and scalable architecture needs?   Horizontally Scaling Your Node.js App  Horizontal scaling comes down to... duplicating: Basically, you duplicate your application instance, enabling it to “cope with” a larger number of incoming connections. Note: you can horizontally scale your Node.js app either across different machines or on a single multi-core machine. A word of caution: do keep in mind, though, that this scaling solution might add up unnecessary complexity to your app's infrastructure; it might entail the need to provision and to maintain a load balancer, might make troubleshooting more challenging, and even change the way you deploy your app. That being said: make sure that it's specifically this Node.js scaling solution that your project needs before you go ahead and implement it!   Vertical Scaling If your scalability architecture needs involve nothing more than:   injecting more power  adding more memory   … with no particular “tweaking” applied to the code, then vertical scaling might just be the right answer to the “how to scale your Node.js app” dilemma. Here's why:   by default, Node won't use more than 1.76GB of 64-bit machines' memory in case of a 32GB of RAM machine, for instance, the Node process will limit itself to only a fraction of its memory   Have Multiple Processes Running on The Same Machine Here's another possible answer to your “How to Scale your Node.js app” question: Have multiple processes running on the same port. It goes without saying that this scaling solution calls for some kind of internal load balancing that would distribute the incoming connections across the entire ecosystem of cores/processes. Word of caution! Not sure whether there's any need to add this: keep the number of running processes lower than that of the cores! Hereinafter, let's focus on 2 Node.js built-in tools for scalability that you might want to tap into:   The Cluster Module  Node's cluster module makes a great starter for scaling up your application on a single machine. How does it work precisely? It makes setting up child processes sharing server ports conveniently easy.  Practically, one “master” process will be in charge with spawning all the child processes (and there's one “worker” for each core), those that actually run your Node.js app. Feel free to dig here into more details on the whole process.  Yet, there are certain limitations to this basic scaling solution:   in case one of your child processes “dies”, it doesn't... regenerate itself you'll need to handle the master-worker processes difference... the “old school way”, using an “if-else” block there's no way of modifying multiple processes, at once, on-the-fly!   Note: yet, when it comes to the “dead child processes” drawback, there's... hope. For instance, use this piece of code that would enable the master process to... respawn the “worker”: cluster.on('exit', (worker, code, signal) => { cluster.fork(); }); And voila! This drawback has been taken off your list!    The PM2 Cluster Module Using the PM2 cluster module, “how to scale your Node.js app” dilemma turns into: “Lay back and let the PM2... clusterfy your server for you!” All you need to do is “trigger” this command's superpower: pm2 start app.js -i 4 –name="api" It will instantly create a 4-node cluster for you! Now, here are some more details about what's going on “under the hood” during this process:   the PM2 daemon will take over the ex “master process'” role and spawn N processes (the former “worker processes”) while relying on round-robin balancing moreover, if it's PM2 process manager that you're using, your process gets automatically scaled across all the existing cores (no need to trigger the cluster module for that anymore) also, the same PM2 process manager will ensure that processes restart, instantly, if they happen to crash   You'll just need to write your Node.js app as if it were for single-core usage and the PM2 module will make sure that it gets scaled for multi-core. Note: now if you want to scale your Node.js application further, you might want to consider deploying more machines...    Scaling Across Multiple Machines with Network Load Balancing The underlying process is more than similar to the “multiple core scaling” one, if you come to think of it: Instead of several cores, you'll have several machines; each one will be running one or more processes and will get “backed up” by a load balancer redirecting traffic to each machine in this infrastructure. “And how does a network balancer work, more precisely?” you might ask yourself: Once a request is sent to a node, the balancer sends the traffic to a specific process. And there are 2 ways of deploying your internal balancer:   deploy a machine and set up a network balancer yourself, using NGINX use a managed load balancer (like Elastic Load Balancer); setting it up is conveniently easy and it “spoils” you with all kinds of built-in features, such as auto-scaling   Now if your “How to scale your Node.js app” question turns into a “Isn't it risky to have just one point of failure for my infrastructure?": Just deploy multiple load balancers instead of relying on a single balancer.  They would be all pointing to the same servers, needless to add. Note: for distributing traffic across your “ecosystem” of internal balancers, you could just add several DNS “A” records to your main domain.   How to Scale Your Node.js App: 3 Scaling Strategies to Consider 1. Decomposing “Microservice” is another word for this scaling strategy. For practically you'll be “juggling” with multiple microservices (although their size is of no significant importance, actually). Or multiple applications, with different codebases (and in many cases, each one of them has its own UI and dedicated database). And it's by services and functionalities that you'll be decomposing/scaling your Node.js app. A strategy that can lead to unexpected issues in the long run, but which, if implemented correctly, translates into clear gains for your apps' performance.   2. Splitting Or “horizontal partitioning” or “sharding”, if you prefer. This strategy involves splitting your app into multiple instances, each one responsible for a single, specific part of your app's data! Word of caution: data partitioning calls for a lookup before you carry out each operation; this way you'll identify the right instance of the application to be used. Take this example here: You might want to partition your Node.js app's users by language or area of interest. In this case, a lookup step is a must; you'll need to check that information, first things first.   3. Cloning And this is the easiest strategy at hand for solving your “How to scale your Node.js app” dilemma! Just clone your Node.js back-end application, multiple times, and assign a specific part of the workload to each cloned instance! It's both effective and cost-effective! Moreover, Node's cluster module makes cloning on a single server ideally easy to implement! And this is “How to scale your Node.js app”! See? You have not just one, but several Node.js built-in tools at hand and various strategies to choose from, depending on your scaling needs. Which scaling solution suits you/your app project best? ... Read more
RADU SIMILEANU / May 03'2018
How to Use Bootstrap with Angular 4? Here Are 3 Ways to Add It To Your Project 
Here you are now: your Angular 4 front-end app ready to... wow its users! “Almost ready” actually! For it still needs styling... And what better HTML and CSS framework to go for than Bootstrap, right? But how to use Bootstrap with Angular 4 more precisely? How do you properly integrate it into your Angular 4 CLI project? Great news: you have not just one, but 3 options at hand for adding it! Let me get into details:   On Using Bootstrap in Your Front-End Development Process Is there any need to list here the reasons why it's precisely Bootstrap that you're planning to implement into your Angular CLI project? Angular 4, to be more specific. After all, it's the most popular framework for styling websites built in HTML, CSS and modern web & mobile JavaScript frameworks (like Angular here): It's an open source, feature-rich framework that turns front-end development into a such a “breeze”. Basically, it empowers you to build responsive layouts without the need to be a CSS “expert”. And now, let's break down further with the step-by-step “tutorial” on how to use Bootstrap with Angular 4:   Step 1: Create a New Angular Project Using Angular CLI  The very first step to take is obviously setting up a brand new project. Use the Angular Command Line Interface to generate it. But first, install it to on your system: $ npm install -g @angular/cli It's only then, once you've installed its NPM package, that you can go ahead and... generate your new project.  For doing this, just type the following command in your CLI: $ ng new myproject Next, feel free to change into that specific directory and to turn on the web server: $ cd myproject $ ng serve “App works!” This is the message that you should be seeing in your browser right now.   Step 2: Install Bootstrap to Your Project Now that you've launched your new Angular project, it's time to add your Bootstrap library, as well. And you sure aren't nickel and dimed in options. There are 4 ways to add Bootstrap to Angular 4.   Step 3: How to Use Bootstrap with Angular 4 — 3 Different Ways to Integrate It Option 1: Install Bootstrap from CDN And there are 2 particular files that you'll need to install from CDN into your project:   the Bootstrap CCS file the Bootstrap JavaScript file    Note: keep in mind to add the jQuery JavaScript library file, as well! Next, open the src/index.html file and insert the following:   the <link> element to add the Bootstrap CSS file at the end of the head section a <script> element for adding jQuery at the bottom of the body section a <script> element for inserting the Bootstrap JS file at the bottom of the body section   Eager to see “Bootstrap in action” in one of your project's component templates? Then give it a try:   open the src/app/app.component.html enter the following code there:   <div class="container"> <div class="jumbotron"> <h1>Welcome</h1> <h2>Angular & Bootstrap Demo</h2> </div> <div class="panel panel-primary"> <div class="panel-heading">Status</div> <div class="panel-body"> <h3>{{title}}</h3> </div> </div> </div> And it's the following message that this HTML template code should trigger in your browser: “app works!” Note: go for a Bootstrap theme of your choice; once you've downloaded it (from Bootswatch.com for instance), its bootstrap.min.css file will get instantly opened up in your browser. Just copy the file's URL and use it to replace the string assigned to the href attribute of the <link> element, in the index.html file. And voila! It's precisely those colors, defined by your chosen theme, that get displayed in the browser now!   Option 2: Install Bootstrap using NPM And here's another valid answer to your “How to use Bootstrap with Angular 4” dilemma! Simply enter: $ npm install bootstrap@3 jquery –save It's this command that will integrate Bootstrap and jQuery into the node_modules folder of your Angular 4 project directory. Moreover, it will include these 2 dependencies in the package.json file, as well. Once properly installed, you can find both packages at:   node_modules/bootstrap/dist/css/bootstrap.min.css node_modules/bootstrap/dist/js/bootstrap.min.js node_modules/jquery/dist/jquery.min.js   Note! You have 2 options for integrating those files into your Angular 4 project:   add the file paths to the script array and to the file path of the angular-cli.json file add the corresponding <script> and <link> elements to your index.html file   Option 3: Add NG-Bootstrap to Your Project The great thing about this method is that you'll no longer need to add jQuery and Bootstrap dependencies. Ng-Bootstrap comes packed with a set of built-in native Angular directives which are already CSS and Bootstrap's markup-based. Now, getting back to our initial “How to use Bootstrap with Angular 4” question, let's see how we install this NPM package.  For this, just enter the following command in your Angular 4 project directory: npm install --save @ng-bootstrap/ng-bootstrap Next, make sure you also install Bootstrap 4 to your project: $ npm install bootstrap@4.0.0-alpha.6 And, the final step is to add the following files:   jquery.min.js bootstrap.min.js bootstrap.min.css   … to your .angular-cli.json file Now you still need to import the Ng-Bootstrap’s core module — NgbModule — from its @ng-bootstrap/ng-bootstrap package. To do this, just type the following import statement into app.module.ts: import {NgbModule} from '@ng-bootstrap/ng-bootstrap'; All there's left for you to do now is to add the NgbModule to the @NgModuledecorator's imports array.  And since we're here, you'll find some more than “enlightening” info (chunks of code here included!) on the 2 different options at hand for importing the NGBModule: either in your project's child modules  or in your the root module itself … in this article here on Using Bootstrap with Angular.   Using The NG-Bootstrap Components: Which Are They?  With the NgbModule installed into your Angular 4 project, you're now able to use the Ng-Bootstrap components. To leverage them in your app.component.html. Speaking of which, here are the components at hand:   Accordion Alert Rating Tabs Carousel Progressbar Collapse Datepicker Buttons Pagination Typeahead Popover Timepicker Dropdown Modal Tooltip   The END! Does this answer your “How to Use Bootstrap with Angular 4” question?  Which method of adding this front-end framework to your project is more suitable for you? ... Read more
Silviu Serdaru / Apr 30'2018
Which Are the Free Magento 2 Blog Extensions You Should Be Using? 9 Must-Haves
Informative, entertaining, engaging and... a key revenue source! These are just some of your expectations regarding your Magento 2 blog, right? Well, then, get ready to check them all off your “wishlist” digging through my shortlist of can't-believe-its-free Magento 2 blog extensions. From SEO-oriented to shipping-focused features, from functionalities centered on social media to those geared at enhancing page loading speed, these 9 extensions are, each, extra functionalities to inject into your blog. So that it (your blog) should serve your specific needs and help you reach your goals. And that without having to “stretch” your budget (there are only 100% free extensions in this list)... Oh, yes: and they're all wearing the signatures of certified Magento partners! And now, let's get straightaway to these must-have Magento 2 extensions that you should be turbocharging your blog with:   all of them “spoiling” you with configurations that make customization unexpectedly easy … blending perfectly into your blog's design and fitting into your codebase (no need to depend on an “army” of coding experts)   1. Magento 2 Image Slider  Let's review a visual/aesthetics-oriented extension first things first. For, as above-mentioned, a “money-making” blog shouldn't be purely informative and helpful, but... engaging, visually-arresting, as well. So, imagery does play its major part here! Now here are a few of this extension's key features:   supports no less than 10 sliders built-in support for inserting video text, image one of those fully responsive free Magento 2 blog extensions provides tons of animations, with Live Preview, for you to select from supports OWL Carousel  conveniently intuitive UI you're free to display it anywhere on your blog with CMS & Widget   2. Facebook Live Chat  A blog is the ultimate channel of communication with your brand's audience. With your e-store's regular and potential customers. Well, then moving from standard communication to... instant communication is a must if you want to meet their expectations. And this is what makes Facebook Live Chat one of the must-have free Magento 2 blog extensions.  It's that chatbox incorporated into your blog that's powerful enough to turn “just” guests into loyal customers. And now, let me point out to you some of its most powerful features:   there's a Like button and a store profile incorporated into the chatbox user statistics capabilities unlimited History Chat you get to set upcoming events, define greeting text and integrate your e-store's Facebook profile into the chatbox simple backend operations for enabling/disabling the chatbox displayed on your blog familiar UI; a Facebook Messenger Interface-alike chatbox    3. Magento 2 Lazy Load  A must-have extension for your Magento 2 blog if you care enough about the user experience that you provide there. And page loading speed does play a key role in improving/negatively impacting it.    Moreover, besides optimizing your blog's performance, Magento 2 lazy load creates some aesthetically-pleasing image transitions influencing the UX. But let's get deeper into details and “unearth” all those advanced features that make this extension one of the must-haves:   it helps you save your web server resources —  saves bandwidth and minimizes server requests it creates smooth, blurring effect transitions for your lazy load images … and a smooth, visually-pleasing transition when users keep scrolling down your pages it gives your blog a ranking boost by creating friendly code strings it optimizes your blog's page loading time you're free to enable/disable the “Lazy Load” mode for each one of your blog's pages you get to set advanced time point for loading pages   4. Better SEO, One of the Free Magento 2 Blog Extensions You Should Be Using Inject Better SEO into your blog and... propel it in the search engines results! And it's not “just” packed with clever features, but ideally easy to use, as well. Built to fit into your blog's existing code structure and to empower you to customize it to serve your SEO goals in detail. I'm talking here about:   meta descriptions meta keywords   … that this extension's flexible enough to allow you to insert quick and easy. Now that we've settled that Better SEO makes an ideally customizable, blog/store-friendly extension, let's check out its powerful features:   SEO checklist —  a more than handy “TO Do” list, pointing out to you the SEO tasks to complete for reaching a high SEO score its detects duplicate content issues advanced HTML/XML sitemaps —  one for the users, the other one to be used by search engines structured data — implements schema structured data metadata template rules —  easy to define mass and dynamic metadata for your pages, categories, layered navigation provides you with actionable SEO reports rich snippets preview cross links social optimization    5. Exto Analytics Applying a marketing strategy that lacks the proper data-fuel is like aiming at a target... blindfolded.  So, if relying on pure chance doesn't define you and if you want to go beyond the data provided to you by the native Magento 2 reporting functions, go with Exto Analytics. Here are some more heavy-weighing reasons to do so:   real-time mobile dashboard, so you should remain “connected to” your data anytime anywhere convenience at its best when it comes to handling your reports — you get to sort data by specific columns and even to turn off the columns feature itself date range picker —  compare and evaluate your blog's performance on different periods of time your previous data gets added to your reports, as well, once you install the extension a chart, enabling you to visualize all data reports in parallel   6. Magento 2 Admin Theme From user experience to... admin experience. As your own blog's admin, you should also consider making your dashboard's more user-friendly and intuitive. For a high level of convenience on your side will bubble up, eventually, in the experiences that you'll create for your visitors. But let's see specifically what makes Admin Theme one of the best Magento 2 blog extensions to use:   mobile optimized easy to use and quick to customize retina ready clean, neatly structured code a different interface for Login & Forgot Password admin icon font translation-ready   7. Magento 2 Infinite Scroll It does precisely what its name says: it keeps loading content, without interruption, as your blog guests scroll down. Fluidity in the way you present content to your readers translates into improved user experience! And now, let's scan through this extension's specific features:   you can display and easily change the “Show” button, along with its loading text the navigation bar can be placed anywhere on the page you can implement it both on your category page and in the search page the pages that your readers land on get automatically loaded  while scrolling down, your blog guests know, at all time, what section on the blog they're on you get to customize your progress bar to your liking users get to share the links of those specific pages that they reach during their scrolling (for instance, if they're on page 8 of your blog, they can bookmark/share the link of precisely that page)   8. Better Blog  Now, let's imagine that you don't own a blog yet, “only” an e-store. And that now you want to integrate a simple blog, as well. One that should:   be conveniently easy to configure have a beautiful layout design to “wow” your readers with load fast come packed with much-needed backend features, making updating content unexpectedly easy for you, the admin   Checked, checked, checked! The Better Blog is undoubtedly one of the must-go-to Magento 2 extensions no matter the size of your current e-commerce site. Once integrated into your Magento store's backend, you'll get to manage both your store and your blog from the very same place. Here are the main reasons why it still is one of the best Magento 2 blog extensions:   SEO friendly: SEO-friendly URLs, metadata information, XML sitemap  open source code layered navigation, with a significant impact on UX (your blog guests get to quickly track precisely those posts that they're looking for out-of-the-box comment functionality: Disqus Comment, Facebook Comment blog topics built-in product recommendations feature: "Who Bought This Also Bought", "Auto Related Products", "Frequently Bought Together" the option to integrate your store or your blog's sitemap responsive design social sharing buttons blog widgets: show your (recent) posts on your site's homepage (sidebar here included)   In short: you get to integrate a simple blog with your e-store with no need for a third-party framework! Moreover, you'll be managing comments, categories, posts, right from your Magento 2 admin, quick and easy. And you'll get informed each time when a blog guest has posted a comment, not to mention that the extension grows into a powerful “ally”, supporting your SEO efforts. One of the must-have Magento 2 extensions without question!   9. Magento 2 SMTP  A powerful extension to “turbocharge” your Magento 2 blog with so you:   gain total control over your email customization process get enabled to run test sections on your Magento 2 SMTP server   And it does all that by providing your blog with configurable port and host. Now, let's go through its cool features:   it stores all sent emails logs built to support 20+ SMTP service providers enables you to test how well your current email setting's doing it empowers you to customize your emails in the slightest detail   The END! These are the 9 best Magento 2 blog extensions that you should be using. Scan them through, “weigh” their feature loads while setting them against your own needs and growth plans for your blog and... go for the most suitable ones! ... Read more
Adriana Cacoveanu / Apr 27'2018
How React Virtual DOM Works: Why Is It (So Much) Faster than the “Real” DOM?
What's the deal with the virtual DOM? How React virtual DOM works precisely? It's significantly faster, without question, and it brings a whole series of benefits to coding. How come? Which efficiency issues of the “real” DOM does it solve? And what makes the way that React.js manipulates the DOM better than the “standard” way?  Let's get you some answers:   But First: What Is the DOM Anyway? "Document Object Model." It's only but natural that, before we get into details on React and the Virtual DOM, we gain a deep understanding of the DOM itself. Therefore, here's a definition that hopefully sheds enough light on this concept: DOM is a tree-structured abstraction of (or an in-memory representation, if you prefer) a page's HTML code. One that preserves the parent/child relationships between the nodes within its tree-like structure. Any better? The major benefit is the API that it provides, that allows us, developers, to easily scan through the HTML elements of a page and to manipulate them as needed. For instance:   to add new nodes to edit a given node's content to remove specific nodes    And What Is DOM Manipulation More Precisely? It's the very process that enables the content on any of your website's pages to be dynamically updated. Needless to add that it's JavaScript that you would use when handling the DOM. Also, methods such as:   removeChild getElementByID   … are included in the API that the “actual” DOM provides you with.   What Efficiency Challenges Does the "Real" DOM Face?  Now, before we go back to your initial “dilemma” (“how React Virtual DOM works”), let's see why a “virtual” DOM was even needed in the first place. What efficiency issues of the “real” DOM does it address? So, it's JavaScript that we use as we manipulate the DOM, right? And it used to work fantastic back in the days when static UIs would “rule” and the concept of dynamically updating nodes wasn't yet... “invented”. Well, since then things have changed... The DOM manipulation, once the core process of all modern interactive web pages, started to show its limitations. And that because the “real” DOM would update a “target” node along with the entire web page (with its corresponding layout and CSS).  For instance, imagine that: You have a list of items and it's just one of those items that you need to update. Traditionally, the “real” DOM would re-render the entire list and not exclusively the items that receive updates. See? Just think of a scenario where you have an SPA (Single Page App). One with thousands of dynamically generated nodes, that would all need to “listen to” lots of future updates and to re-render them in the UI. It's here that things get discouragingly... slow! The real DOM can't cope with pages carrying thousands and thousands of components to be re-rendered when updates are being passed through.  It's in this context here that the virtual DOM stepped in! And it's React that makes the most of it. Clear enough?   How React Virtual DOM Works: Snapshots, Diffing and Reconciliation Before we get into the “how”, let's shed some light on the “what”. What is the “virtual” DOM? A light-weight abstraction/copy of the HTML DOM, having the same properties as the “real” one. The only difference is that it can't write to the screen like the actual DOM “can”. Also, it's local to React. A copy of the actual DOM that you get to update “intensively” without impacting the real DOM. Note: do keep in mind that it isn't React that introduced this concept since there are plenty of other libraries who're using it.   Snapshots, Diffing and Reconciliation Now, let's get into details on how React virtual DOM works.    a. First of all, React takes a virtual DOM snapshot before doing any updates. b. It will then use it (this record of the DOM state) to compare it against the updated virtual DOM, before applying any changes to the actual DOM itself.   And it's a “diffing algorithm” that supports all this comparing and enables React to identify any changes. To detect the updates that have been applied. Also, the entire  process is called “reconciliation”: Whenever updates need to be made to the actual DOM, React updates the Virtual DOM first, and then, once it has done its compairing, it syncs the Real DOM. In other words: before applying any of the requested updates, React makes a copy of the virtual DOM, that it will then set against the updated virtual DOM (diffing). It's during this diffing-reconciliation process that React detects the changes that have been applied and identifies the objects to be updated. And it's precisely those objects that it will update in the actual DOM. The huge benefits?   virtual DOM updates a whole lot faster it updates exclusively the “target” nodes, leaving the rest ones of the page alone   Summing Up To recap, let's try and sum up this whole “How React Virtual DOM Works” guide here to its bare essentials.  So, here's how React updates the DOM in 3 simple steps:   first, it applies the given updates to the whole Virtual DOM then, it compares it with the snapshot of the virtual DOM that it will have taken, using an algorithm called “diffing” during this whole process of comparing and spotting any changes/contrasts then, it's specifically (and exclusively) those changed elements that it updates in the actual DOM   The END! Have I managed to make this process any clearer for you? Can you now see what's “under the hood” of the way React updates DOM? And the specific reasons why it's so much faster than the real DOM manipulation? ... Read more
RADU SIMILEANU / Apr 26'2018
How to Migrate Content to Drupal 8 Using the Migrate Module: No Line of PHP Needed!
Whether you're "constrained" to migrate content to Drupal 8 or you're just eager to jump on the Drupal 8 bandwagon and harness its much-talked-about advanced features, the most important “warning/advice” to keep in mind is: Don't migrate mindlessly! Meaning that before you even get to the point of:   triggering the Migrate module's capabilities and adjusting them to your migration project's needs and requirements selecting and combining all the needed contrib modules writing down your YAML files for carrying out your content migration process   You'll need to think through every little aspect involved in/impacted by this process:   your goals your growth plan your current site visitors' complaints and suggestions   That being said, here's more of a “backbone” or summary of the migration workflow, one that highlights the:   main phases to go through the right approach to the whole process Drupal-specific concepts and tools to use   Do NOT expect a very detailed, highly technical tutorial, though! As for the Drupal concepts that you'll need to be already (more than) familiarized with once you launch your migration process, maybe you want to have a look at this guide here, on Understanding Drupal And now, let's delve in:   1. The Migration Workflow: 4 Key Phases to Consider  Here's the entire process in 4 steps (so you know what to expect):   first, you'll need to migrate your data into the destination nodes, files and paragraphs on the newly built Drupal 8 site then you'll migrate data into date, image, taxonomy, address fields and file next, you'll move your precious data from JSON and CVS files and finally, you'll complete your migrations from the UI and the terminal   2. Are You Upgrading from Drupal 6 or 7 or Migrating From a Different System? And here's what to expect depending on your answer to the above question:   if you migrate content to Drupal 8 from an older version of Drupal (6 or 7), then you're quite “spoiled”: a lot of hard work has been done, by the Drupal community, for turning this migration process into the official path to Drupal 8; you could say that the solid framework has already been set up, so all there's left for you to do is to... take advantage of it! if it's from a whole different system that you're migrating your site (let's say WordPress or maybe Joomla), then... expect it to be a bit more challenging. Not impossible, yet more complex   3. Plan Everything in Detail: Think Everything Through! Now with the risk of sounding awfully annoying and repetitive, I feel like stressing this out: Don't migrate... mindlessly! Plan everything in the smallest detail. Re-evaluate the content on your current site and its “load” of features.  Take the time to define your clear goals and to put together your growth plan (if there's any). Then, do lend ear to what your current site visitors have to say, filter through all their complaints and suggestions and tailor your final decisions accordingly. It's only then that you can go ahead and set up your content architecture.   4. Start With the Structure: Build Your Drupal 8 Site First “But I haven't picked a theme yet!” you might be thinking. No need to! Not at this stage of the migration process. You can still build your Drupal 8, from the ground up, even without a theme ready to be used. You can add it later on, once you have the final version of your content! But the site itself, its solid structure, this is a “must do”. It's the very foundation of all your next operations included in your migration workflow!   5. Deep Clean & Declutter! Take Time to Audit Your Content Don't underrate this very step! For moving over all that clutter, that heavy load of unused, outdated features and all those chaotic, crummy pages will only impact your Drupal 8 site's performance from the start. So, now it's the right time to do some... deep cleaning! Audit your content, your features, plugins and other functionalities included in your site's infrastructure and... trim it down by:   relevance (are you using it?) quality: keyword-stuffed, unstructured pages (a heavy pile of them) will surely not give your new Drupal 8 site any significant jumpstart in rankings!   6. About the Migration Module Included in Drupal 8 Core Using this dedicated module in Drupal core to migrate content to Drupal 8 comes down to implementing the: Extract- Transform-Load process Or simply: ETL. In Drupal — as related to the Drupal migrate module — these 3 operations come under different names:   the source plugin stands for “extract” the process plugin stands for “transform” the destination plugin stands for “load”   7. Time to... Migrate Content to Drupal 8 Now! Now it's time to put some order into that “pile” of content of yours! To neatly structure Google Sheets, XML files, CVS files etc. And here's the whole “structuring process” summed up to the 3 above-mentioned plugins: source, process and destination.   Source:  XML file SQL database Google Sheet CVS file JSON file   Process: iterator default_value migration_lookup concat get  Destination: images users paragraphs nodes files And here's a specific example of how to “glue” data for a neater and ideally structured content architecture:   Before the migration: A: First Name- Kevin B: Last Name: Thomson C: Department- Commerce   After Migration:  A: Name- Kevin Thomson B: Department- Commerce   8. 4 Contrib Modules to Incorporate Into Your Migration Workflow As already mentioned, the migrate content to Drupal 8 process also involves using a combination of contrib modules.  Speaking of which, allow me to get them listed here:   Migrate Tools           Migrate Source CVS     Migrate Spreadsheet  Migrate Plus                The END! This is the tutorial on how to migrate content to Drupal 8 trimmed down to its bare essentials. To its core phases, key steps to take, main Drupal concepts to “joggle with”, right approach/mindset to adopt and best tools/modules to leverage for a smooth process! Any questions? ... Read more
RADU SIMILEANU / Apr 24'2018
Which Are The Best Magento 2 Extensions to Boost Sales on Your e-Store With? Top 5
They use the same platform, Magento 2, therefore (theoretically) they all leverage the same functionality, same features and loading performance, right? And yet, there are e-stores that... stand out! There's no secret here: it's the powerful extensions that “fuel” their success, extending their functionality. And which are the best Magento 2 extensions for you to consider? Which of them best fit your own e-commerce site? For we're talking here about 1,500+ extensions for Magento 2. So, needless to add that there's a dedicated tool for pretty much any specific e-commerce requirements that you might have:   to easily manage your inventories to streamline all your customer & supplier-involving operations via a centralized system to easily monitor and quickly track sales for creating invoices to have tracking metrics and in-depth marketing analytics at hand   In short: it's the Magento 2 extensions that supercharge your e-store with even more functionality; that help you provide your customers with that ideally convenient and feature-rich shopping experience that they're expecting.  The one that will translate into... boosted sales! And now, without further ado, here's the shortlist of 5 best Magento 2 extensions for you to evaluate:   1. Deliver Date Scheduler It's in the (little) details: Winning your customers' trust and eventually their loyalty and … spiking your sales. “Details” like this can't-live-without Magento 2 extension here which practically:   takes the unknown and the uncertainty out of the equation (out of the entire order delivery process) “empowers” your customers, who get to choose the most convenient dates for their products to be delivered; and it's you, the admin store, who'll make the date suggestions, based on your product availability and shipping provision     And there's more!  This extension's a toolkit all by itself, actually, packed with various features ranging from:   the option to trigger reminder emails for your customers the option to select a calendar view and a particular format for that delivery date and time of arrival that will be displayed to them the option to enable your customers to keep a close track of and to constantly monitor their ordered products' delivery process   2. Magento 2 Store Credit And here's another one of those feature-rich, “Swiss knife” type of tools on our list of best Magento 2 extensions! One loaded with so much “store credit-centered” functionality that it would be a pity not to have it on your e-store. Here are just a few examples of what it can do and how precisely it's going to enrich and make your customers' shopping experiences even more convenient:   customers get to use their credit for purchasing any available product, anytime you, as the store owner/admin, get to refund your customers by credit they get to spend it for paying their shipping fees, taxes they even get to share their store credit with their friends, family customers can either earn or buy  their credit  you, the store admin, get to easily add/subtract the specific credit values right from the backend an easy way of keeping track of the store credit balance & history in the same place   And, surprisingly enough, this list goes on and on. Now with so many powerful features, all bundled into one extension, each one adding a different layer of “convenience” to your customer's shopping experience, you just can't afford overlooking Magento 2 Store credit!  3. Best Magento 2 Extensions: Use the Follow Up Email as Your “Trump Card” And you hit the nail right on the head with this extension here! Whether it's: discreetly guiding your customers back on the “right track”, the one leading to a purchase    turning customers into your brand's advocates, winning their loyalty through perfectly tailored, strategically set up follow up emails  … this Magento 2 extension here is your most reliable ally. But let's talk facts/functionality. Let's see what is it that the Follow Up Email extension can help you achieve:   shopping cart triggers: guide your customers back to their temporarily abandoned carts trigger wish lists: shared, product added customer triggers: billing and shipping address, logged in, subscriber, birthday set up your own custom schedule and automatically send emails on those specific dates use Google Analytics to monitor your email marketing campaign's performance support multiple pre-created emails for each event type custom-tune the design of your emails' templates to your liking define as many rules and conditions for each event type, that you create your emails for, as needed   And the list of conveniences for you, the store admin goes on (e.g. test emails that you can send) and those with an impact on your customers goes on. In short: the Follow Up Email is one of those Magento 2 extensions that can make a difference between just “selling” and clever, targeted sells. Between a shopping cart abandoned for good and a completed purchase order. Between a one-time shopper and a regular customer... 4. Hide Price Another powerful extension, whose functionality you should fully “exploit” when setting up your pricing policy. One that perfectly fits your store's specific e-commerce requirements and needs. And its functionality comes down to:  enabling you to manage price display on your product and category pages and to hide prices for guest visitors or certain customer groups Now, if I am to detail a bit on this functionality, it's an entire collection of advanced features that I'll eventually dig up:   remove/replace the standard “Add to cart” button with a custom button text that should instill your customers to perform the action you want them to (e.g. to register for getting the price) restrict price visibility to particular customer groups get notified of any new quote requests  … send email replies to those requests trigger pop-ups whenever your store guest clicks your custom Add-to-cart button, pop-ups geared at collecting user data so you can tailor your product prices accordingly hide price for particular products hide your “Add to cart” button for the non-logged-in visitors on your website   Adjusting your prices to your customer's needs and expectations —  and you can do that only after you've collected enough relevant user data — is what will stand behind your customers' loyalty and your high conversion rate. And it's Hide Price, one of the best Magento 2 extensions, that can “fuel” your strategically thought out pricing policy! 5. Reward Points High-quality products/services, phenomenal customer service and hard-to-resist-to prices aren't enough for engaging (and hopefully converting, as well) your store visitors.  In this respect, the Reward Points Magento 2 extension is a true... game changer! One to add to your wealth of resources at hand for boosting your sales and “luring” returning customers. It enables you to reward them in multiple ways! And now, let's pass in review some of its most powerful features:   several ways for your customers to spend their credit points you're free to set up different spending & earning point rates customers get to earn credit points if/once they've referred to a friend they also get to keep a close track of their transactions' history and points' balance right from their “My account” page set up your rewarding policy by product, behavior, catalog, cart, you name it define a maximum no. of points that a customer can gain or spend on a particular product   The END! These are the very best Magento 2 extensions: powerful enough to “fuel” your growth plans, advanced enough to help you enrich the shopping experience that you provide on your e-store. ... Read more
Adriana Cacoveanu / Apr 23'2018
Which Are The Best Free Magento 2 Themes and Why? Top 10
Conveniently customizable, ideally flexible and unexpectedly feature-rich... No wonder that you consider moving your site to Magento 2. Or having your brand new e-commerce site built on the latest version of Magento. And now you must be wondering: which are the best free Magento 2 themes to choose from? And let me guess, your “feature wishlist” goes something like this:   responsive (it goes without saying) functionality-rich visually-appealing flexible enough  capable to accommodate both medium and large-sized online store (you need to consider your growth plans, too, when choosing your theme, right?)   Oh, and yes: most probably time is not your best ally, am I right? Therefore, you can't afford to invest too much of it in comparing, weighing pros and cons, setting up a never-ending list, then trimming it down to the very best themes for Magento 2. Well, no need to, for I've got your back! Here's a top 10 for you, including only those themes with the best user reviews, themes that strike the perfect balance between great looks and powerful functionality:   1. Ves Yume Feature-packed, fully responsive and... free of charge. What more could you possibly ask for your theme? And speaking of its features, although they do come with no price tag on, they're unexpectedly powerful. For example:   gallery image product detail off-canvas menu & header link Ajax cart checkout improvements font awesome a handful of static blocks   In short: a full-collection of features and functionalities for providing both rich and convenient online shopping experiences to your customers.   2. F2 If it's a sleek & clean web design, suitable for a professional e-commerce site, that you're aiming at, then F2 is the theme to power your plans with! One which — although designed by the latest web trends — doesn't trade functionality for visually-striking looks.  And speaking if its features, let me point out to you the most tempting ones:   responsive design sticky header drop-down cart multiple product types configurable swatches   Moreover, it's one of those best free Magento 2 themes that are surprisingly flexible, as well. You're free to adjust it to perfectly fit your Magento project's type and size. Tip: where do you add that —  although looks play a major role here—  F2 is NOT overburdened with visual effects. Effects that would negatively impact your online store's performance!   3. Best Free Magento 2 Themes: Ketty, One of the “Oldest” Ones, too “Oldies, but goldies!” For, even if it's one of the “oldest” Magento 2 themes, Ketty's packed with some truly powerful features. And thus capable to “rival” much newer/younger themes. Now, if I am to highlight some of its attention-worthy features:   Ajax cart product zoom user-friendly admin panel with a new design highly customizable configurable swatches improved checkout cross-browser support   Also, F2 is one of the responsive Magento 2 themes, in case you were wondering...   4. Absolute One of Magento's “star” themes for 4 years now, Absolute's now available for Magento 2, as well. A highly professional theme overloaded with options to suit your every feature need. If I were to name just some of these hard-to-resist-to ones:   image slider theme editor featured product slider newsletter subscription my cart and compare product blocks on the homepage quick product overview   A responsive theme that has already earned itself a “reputation” among Magento users, conveniently packed with features to answer all your e-commerce requirements.   5. BizKick BizKick's made it to almost all users' personal lists of best free Magento 2 themes.  And for 3 strong reasons:   it's responsive it “spoils” them with a whole collection of advanced features it “tempts” them with a handful of clean and classy layouts   6. Ves Need Is it health spa services, glasses, beauty products, handbags, shoes or maybe clothes that you'll be selling on your Magento 2 e-commerce site? Then you might want to consider Ves Need.  It comes with an elegant, neat & clean design that will surely appeal to your (mostly) female audience. And where do you add that it's free, too!   7. Ves Fasony Designed with the customer's needs and expectations in mind, Ves Fasony is a responsive theme for Magento 2 built with Bootstrap 3.x. The key reasons behind its listing on this exclusive top here — featuring the very best free Magento 2 themes —  are the following:   it's built with online customers' needs and expectations in mind; it anticipates their requirements and delivers an amazing shopping experience it's optimized for touch drag and drop it comes with an owl carousel controlling the image slider   Moreover, Ves Fasony's ideal for women and men fashion, watches and bags stores. So, do keep this aspect in mind when you're evaluating the themes listing in this top, looking for the one that best fits all your e-commerce requirements.   8. FreeGo, One of the Best Free Magento 2 Themes It has the functionality — since it comes packed with a full set of powerful features — and it sure has the looks: a clean-elegant (almost minimalist) design. Moreover, FreeGo's fully responsive and puts a powerful back-end panel at your disposal. One that you can use for customizing your theme to suit your Magento 2 project in the slightest detail. And now, when it comes to its “load” of powerful features:   sold out label extension touch optimized slideshow child theme ready features product list (showcasing featured products) child theme ready all browser compatibility off-canvas menu   9. Ves Kasitoo A Magento 2 theme with a product-oriented and therefore attention-grabbing design, perfect for the following types of online stores:   glasses equipment fashion...   Moreover, it's turbocharged with a plethora of advanced features to power your e-commerce website with:   retina-ready images featured block on the homepage touch optimized deal products carousel  off-canvas menu social media buttons product tabs carousel    10. Ves Vigoss If you have a “guilty weakness for cutting-edge, clear design, you'll definitely love this Magento 2 theme! Apart from its great looks, it comes with a full set of outstanding features to tap into:   brand logo slider Ajax cart front interesting quick view it's fully responsive checkout improvements   And to this list of features, I cannot but add the Magento 2.0 UI and the Bootstrap 3.x layout components, as well.   The END! So, now that you've scanned through this list of best free Magento 2 themes, which is the perfect fit for your own e-commerce web project? Which one of them supports all your feature needs? ... Read more
Silviu Serdaru / Apr 20'2018
Managed IT Services Support vs Legacy Methods of IT Support: 5 Reasons to Upgrade 
So, you've got so used to that IT support guy who's been “stopping by” your workplace on a regular basis, for a few years now. Or with that tech support guy, from your IT services provider, who's been... supporting you and your team, on-site, for some time now. You've met his family, he hasn't missed any of the company's Xmas parties... So, why should you even consider switching to this new managed IT services support model? How cutting down his visits could actually mean improved technical support services?  And you can't even say that you're grappling with the pros and cons, since you can't really put a finger on any “pros” for upgrading to this new type of technical support. So, let's talk... benefits then! 5 of the strongest ones, actually:   Now and Then: The Managed IT Services Support Model vs The Legacy Model Now let's have a look at the 2 most common situations where you'd leverage the “traditional” way of providing/getting IT support: A. There's that technical consultant that pays his/her pre-scheduled visits to your workplace — who also comes when you call to report a sudden technical problem — and... “saves the day”. B. There's an engineer from your IT services provider “glued” to his/her server, who provides your team with in-house technical support and preventive maintenance. Now, let's have a look at our second scenario, where you will have already upgraded to the managed IT services model : By leveraging a whole suite of remote monitoring and management (RMM) tools, your engineer provides you with technical support and maintenance right from his... service desk. And, in many cases, it's him who'll alert you of emerging issues, before you even get to detect them yourself. The 3 main benefits deriving from this new model?   there's a fixed-price engagement (instead of the pay per hour-based partnership, where you get invoiced for every “additional” intervention or extra hours) remote monitoring and management tools guarantee you a more effective preventive and maintenance program reactive work is no longer done on-site, but in a more timely manner, right from your provider's central location   That being said, let's get straight to the 5 clincher arguments for moving to the managed IT services support model:   1. From “Need More RAM!” Discussions to a Digital Transformation Strategy Or, to put it into a more down to earth language: Your conversations with your service provider will no longer be centered exclusively on how to address this or that technical problem, but rather on the measures to implement for digitally transforming your business.  For standing out in an increasingly competitive landscape, keeping up with the neck-breaking speed of disruption in your industry (across all industries). It will no longer come down to putting together that standard list of issues and technical hurdles to be shown to your designated engineer next time he visits you. Instead, you'll get to engage in real conversations with a... strategic consultant this time. And your conversations will no longer focus on repair and maintenance, but on the initiatives to take for digitally transforming your business (translating into more relevant products for your customers). Not on whether you need more... RAM or not to boost your workstation's performance.   2. Managed IT Services Support = Custom Scripting & Proactive Repairing Does this scenario here seem (too) familiar to you? You, the user, detect a technical issue... you give the service desk a call right away... a call that will then result in a... ticket for resolution. It's only afterward, after some time, that someone at your service provider's central place will take notice of this ticket (depending on their own schedule and staff availability). And eventually come to your “rescue”. A discouragingly toilsome process, don't you think?  Now, here's how things would play out if you embraced the managed services support model: Leveraging a proactive repair approach, your service provider — thanks to the used RMM tools — will automatically detect any suspicious issue. Then, it runs its custom script/procedures to get it fixed. And all this without you, the user, even noticing that there had been a problem in the first place. Custom procedures (custom script) can be deployed either proactively or reactively, keeping this unwanted event's impact on your day-to-day business operations to a minimum. Now, how's that for a change? Compared to the : Issue tracking... alerting the service desk... having a ticket created for it and... waiting for this issue to be finally tackled … kind of process?   3. Take the Worries of Managing Onsite IT Support Staff Off Your Back  That's right, moving to managed IT services support means that:   there'll be no need for an in-house technical support team to be sent over by your provider  you'll no longer need to assign staff management tasks to someone in your team (paid time off, benefits, salary etc), regarding these technicians sent over to your workplace also, you'll no longer need to manage their task list   “Outsourcing” is the best one-word definition for the managed IT services model! Onsite support, along with all its inconveniences and staff management extra work, turns into off-site, “invisible” support. Where issues get tackled from a distance before they even become… visible to you!   4. Simplify Your Auditing & Inventory Processes and Automate... Everything Now you do agree that if:   you don't aim for high efficiency for carrying out your business processes and you don't make “automate all the things” your ultimate goal   ... you can't even be talking about digitally transforming your business. About turning disruption in your industry from a challenge into a success story (your own). Luckily, conveniently automated processes is what the managed IT services support model is based on. Let me give you just a few examples of how the right RMM tools will help your service provider and benefit you, the client/user:   patching operating systems and apps get automated managing the anti-malware gets automated monitoring (and altering) your system's health gets automated software deployments get automated   Hands-on support will be kept to a bare minimum since most of the operations can be handled right from your service provider's central place... automatically.   And there's more! Along with automation comes... simplification. This means that by using a whole suite of digital tools, your service provider will be able to access any device in your workplace... digitally. No need to have someone from their technical support staff come over for an inventory of issues and technical hurdles (and to eventually add/remove issues listed there). This will simplify processes such as:   asset allocation warranty renewals hardware lifecycle management software license tracking and implicitly: your regular auditing and budgeting processes   5. A Fixed Price Engagement Motivates Your Provider to Get Prevention-Focused Let's see if this example of a “pay per hour-based” engagement, along with its limitations and inconveniences (for you) resonates with you: A hardware failure has just struck or you're facing ransomware. What do you do? Well, you call the “emergency team”. Which do come, but... at a cost. One by the hour. Now, as compared to this type of contract, the managed IT services support is based on a fixed budget. So, no matter what unexpected events might occur, your provider will address them, right away, at no additional cost.  Needless to add that it's precisely this fixed fee model that motivates them to prevent those issues to occur in the first place. So, they'll adopt a prevention-oriented approach. Resulting in a win-win situation for both of you! And this fixed-fee engagement, along with the prevention-focused mindset, will inevitably entail a whole new world of... benefits for you:   you'll no longer need to limit yourself to the level of technical competency of that particular IT support guy sent to you on a prescheduled visit; instead, you'll get to tap into a wider range of expertise, right from your provider's own workplace you'll no longer have to wait for that prescheduled visit or to expect to get invoiced differently for any intervention that's “outside” the schedule   The END! What do you think now: is it worth it to move to this whole new way of providing/receiving IT support?   ... Read more
RADU SIMILEANU / Apr 19'2018