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.

PHP in 2019: Why Would You Still Use PHP for Building Your Websites and Web Apps?
Here's a riddle for you: What has (at least) 9 lives besides cats? Well... the ever dying and always resurrecting PHP, of course! But joke aside: what about PHP in 2019? Will it fade away? Will it still be relevant for building web apps, content-packed and dynamic websites? Or, does it risk (once again) to get retired due to other emerging, hard-to-resist-to technologies rivaling it? Does “aged” mean "deprecated" in its case? And if, so they say, PHP is not a “good-looking” language... why are we still using JavaScript then? JS frameworks don't necessarily excel when it comes to... elegance? In other words: “Why would you still be interested in using PHP (other than nostalgia or... pure habit) for building your websites and applications in 2019, as well?”  Here are some of the strongest reasons:   1. Some of the Leading CMSs Are Built on PHP Just think WordPress, think Drupal, powering the most high-trafficked and content-packed websites out there. Think Joomla... They're all PHP-based and they make the best guarantee that: You get to use PHP in 2019 to build content-loaded websites that are conveniently easy to update. Website admins, even the less technical staff, will be empowered to easily make changes and manage their content. Here, think of the overwhelming collection of PHP-based themes and plugins developed for WordPress only. Right at your disposal, to just grab and use for breathing life into your web projects... Now, here's another example for you: Think Magento, another widely used PHP-powered CMS. Website owners get to focus their resources on... boosting their sales, since they get a platform working right out of the box, instead of getting tangled up in code. And that's just one of the strong reasons why you'd still want to use PHP next year, too.   2. It's Conveniently Easy to Update And when it's a PHP website carrying thousands of pages that you're working on, instant updates become critical. Being a server-side scripting language, PHP handles all updates from the server side (obviously!). The result: boosted security!   3. It's Quick and Simple to Deploy With or without a framework, PHP in 2019 will still lead as the quickest server-side back-end programming language. Moreover, it scales like no other, as well. And to those doubting its scalability capabilities: Think Wikipedia, think Facebook!   4. PHP Comes “Packed” With A Heavy Load of Libraries and Extensions Lots and lots of them, so you can easily handle:   blogging pages shopping carts WebSocket server (Ratchet, ReactPHP, Swoole, which performs faster than rival Node.js itself)   And let me briefly highlight some of the key tasks that you'd be streamlining when leveraging some of these libraries that PHP spoils you with:   handling syntax error display code debugging   Not to mention that PHP provides you with a simple, easy to use API, ready-to-use functions for whatever web services you might need to use. And that it simplifies integration, too. Note: take Composer, a reliable, reputed package manager, then choose any of the provided framework agnostic packages and simply incorporate them into your web project.   5. PHP in 2019 Goes Beyond Web App Development  Like it already has, actually. You're free to:   “team it up” with .net languages via PeachPie use it in GUI applications use it to power your IoT projects with (particularly in edge/gateway)    6. PHP Documentation Simply... Stands Out And this is no exaggeration, but a fact that even those who already buried PHP a few years ago would agree on. PHP's documentation support still makes an excellent go-to resource for both newcomers and experienced PHP developers. And here I cannot but mention the PHP document generator and all the richly documented elements such as:   hooks (actions and filters) classes and their properties inline comments class method and functions file headers   7. High Availability of Senior PHP Developers  I'm not talking here about so-called “experienced” developers, who've been working “intensively” with PHP for about ... about 2-3 years. I'm referring to professionals with +10 years experience in leveraging PHP while working on various types of web development projects. And this high availability of PHP experts can only translate into:   accessible and high-quality support and maintenance services (PHP website admins will never run out of options when it comes to calling an expert to come to their rescue whenever they're facing a technical hurdle) low(er) development costs, with all those open source projects to use as valuable resources and the high availability of PHP professionals on the market   8. It Enables Developers to Build Dynamic Websites Easily Data gets accessed and executed... dynamically with PHP. When it comes to building dynamic websites the easy way, there's still no other language rivaling it. Furthermore, it's's built to run multiple threads/handle multitasking. To execute remarkably well on multi-core systems (unlike its “competitor”, the so very popular Node.js).   And I shall “abruptly” end here my list of top reasons why you would still use be interested in using PHP in 2019. Of course, I could go on outlining its versatility, it's rich syntax, the “shiny and new” PHP 7's significant improvements boosting its performance dramatically. Instead, I stop here. How about you? What are your own main reasons for “stubbornly” sticking to PHP (if that's the case) when working on your web development projects next year? ... Read more
RADU SIMILEANU / Dec 21'2018
What Will Be the Main Enterprise Cloud Computing Trends for 2019? 
What's the future of cloud computing? What are the enterprise cloud computing trends for 2019 to expect, prepare for and leverage to your advantage? For, whether you:   are just planning to move your workloads from a data center to a cloud-native architecture  or you're already “reaping” the benefits of a multi-cloud architecture   … the question remains the same: “From Kubernetes to serverless computing, to multi-cloud strategies, to containers, to... which will be the top influential cloud trends and patterns in 2019?” To be honest with you, we, too, as a Drupal firm, have asked ourselves the same question... Once you've got the answer, you can:   (properly) prepare for the challenges to come turn them into... excellent new opportunities   Now, without any further ado, here are the 5 trends that will dominate the cloud computing industry in 2019:   1. Serverless Computing: More and More Companies “Flock” to Serverless  Serverless technology goes hand in hand with cloud-native architectures... And the fact that its enterprise adoption will just... explode in 2019 is no news at all, right? Just think of the key features and benefits that serverless “lures” even companies like NetFlix, New York Times or Mapbox with:   high speed reduced costs the convenience to port their serverless apps between multiple cloud providers the opportunity to run serverless apps both on public clouds and on private data centers   Not only that companies leveraging serverless get to “reap” all the benefits of enterprise cloud computing. But, since they get to run their apps on existing infrastructures, as well, they can modernize their legacy apps, too.  All that in addition to the benefit of streamlining the development cycles of their cloud-native apps. What makes serverless computing “outshine” standard provisioning servers?   it's a technology that uses “functions” as a measuring unit (instead of “instances” or VM) these pieces of code (“functions”) run automatically … and they take over any data format and turn it into a target legacy system “in charge” with processing the response; they can also interpret those messages sent back to consuming apps through the API gateway the burden of scaling and managing resources gets passed on to serverless providers (Google Cloud Functions, AWS Lambda, Microsoft Azure, Apache Whisk, OpenFaas)   To sum up: serverless is going to be one of the leading enterprise cloud computing trends for 2019.   accelerating the development process of cloud-native apps “revamping” legacy apps cutting down costs the convenience of going serverless all while leveraging one's existing infrastructure   … are this technology's top “luring” features.   2. The Enterprise Adoption of Kubernetes Grows at Neck-Breaking Pace The solid arguments behind this prediction?    Kubernetes is highly portable it's highly available it provides unmatched, granular scalability: the go-to choice for scaling containerized applications it automates deployment   Whether they're planning to streamline their app development cycles or to rearchitect their existing IT infrastructures, large organizations are “flocking” to this open-source container orchestration system. The interoperable, composable architecture that it provides, along with its “extreme” availability — it runs on laptops, public//hybrid private cloud, VM — and the increased use of containers turns Kubernets into one of the highly influential enterprise cloud computing trends for 2019. One powering hybrid-cloud and multi-cloud deployments... And speaking of containers, Kubernete's simply: convenience at its best (convenience at scale): You're free to put together clusters of hosts running containers and then just use Kubernetes to easily manage them all. To easily “orchestrate” all your containers.   3. Cloud Data Management: One of the Influential Enterprise Cloud Computing Trends for 2019  With the trend of enterprise cloud computing architecture going up in 2019, it's only but predictable for cloud data management to become one of the hottest topics. An efficient cloud environment (whether a multi-cloud or a hybrid cloud infrastructure) calls for:   serious planning  constant optimization  data aggregation  analyzing the stored data    In other words: with data being the key “nucleus” of any enterprise cloud computing architecture, properly managing and improving the quality of all those massive amounts of data becomes critical.   4. The Multi-Cloud Strategy: An Increasingly Compelling Pattern for Companies Companies will “dread” getting themselves locked-in to a unique cloud service provider. And so, the multi-cloud strategy is sure to rival the conventional “partnering with a single public cloud” approach. Why? Hmmm, let's see... getting cloud locked-in means:   being constrained to integrate that specific public cloud environment's tools, services, APIs getting its dependencies “injected” into your application code being unable to future-proof your app, to update it to any new technologies that might emerge; you'd automatically “inherit” a technical debt when locked-in to a specific cloud service provider    Whereas having a robust multi-cloud architecture allows large enterprises to:   “juggle with” multiple dedicated clouds, each one with its specific functionalities and services be cloud provider agnostic; and that can only mean more flexibility: companies are free to port their cloud architectures between different environments  leverage on interoperability; companies will be able to do application>APIs (or on-premise infrastructure ) decoupling   And “flexibility” is the key term here:   the one that's definitory for modern application development the reason why multi-cloud is going to be one of the powerful enterprise cloud computing trends for 2019   The END! Now, if we are to do a quick recap:   more and more companies will migrate their workloads to cloud environments; they will be refactoring their legacy apps  also, we'll be witnessing a massive migration to multi-cloud and hybrid cloud environments technical skills required for cloud computing will be in even higher demand in 2019   ... Read more
RADU SIMILEANU / Dec 19'2018
4 Easy Peasy Ways to Duplicate a Page in WordPress (Or a Blog Post)
And there are so many strong reasons why you'd want to duplicate a page in WordPress. Or one of your blog posts:   you wish to enable your client to make certain changes to the content before it goes live, all while still keeping the original version intact, just to compare the two you need to clone the layout of a specific page and to further use it on a different page on your website; all this with no impact on the “source” page, needless to add you want to “revamp” one of your WordPress pages, to give it a new design, while still keeping the original version “untouched” for future use ... and opting for a “copy/paste and save in a draft” option would only mean losing your SEO optimization, custom images, and page templates etc.   “How do I create a duplicate page or post in WordPress?” you then ask yourself. Since WordPress doesn't “spoil” us with an out-of-the-box solution for this job. And writing custom WordPress code for triggering clones might not be on everyone's alley... Luckily, WordPress gives us the convenience of dedicated plugins. Lots and lots of them. And there are quite a few ones perfect for this job: duplicating pages and posts. Here are the 4 WordPress plugins that turn cloning content into a matter of... a few simple clicks:   But First: 3 Major Benefits to Being Able to Easily Duplicate a WordPress Page A. Consistency And this is definitely more than “a nice thing to have” on your WordPress website or blog. Keeping consistency sitewide gets even more challenging when you're cloning page settings or layouts and move them around. Luckily, having a reliable plugin at hand:   streamlines simplifies   … the whole cloning process. It enables you to keep your website's design consistent while making changes.   B. Shorten Development Cycle “High efficiency” is just another word for modern development. And, as a web developer, being able to create similar websites quick enough gets critical. Luckily, having a magic tool at hand to help you duplicate your page templates — those to be used as foundations for new websites — just gives your productivity a mega-boost. Simply clone that initial page's layout and settings and... use it sitewide. Efficiency at its best!   C. Editing Pages/Posts on Live Websites Now, you can just guess the benefits deriving from this... convenience:   you can choose a less “active” time of the day/day of the week and make all the needed changes right on the live site you get to use your Git repository to make critical changes, then just sync them to your website you get to duplicate a page in WordPress (or a custom blog post, let's say), edit it, then just replace the original version with this updated one   1. Use Duplicate Post Plugin to... (Bulk) Duplicate Pages or Posts Why did this WordPress plugin make it to the top of the list here? Well... let's see:   not only that it turns cloning into “a child's play”, but it enables you to bulk duplicate posts, as well and speaking of convenience: just select “Copy to a new draft”, an option placed underneath your “Publish” settings and... you'll have your clone   furthermore, it enables you to select the customization options that you'd like to add; you get to restrict “cloning” to a few user roles only and you can add your own prefix/suffix before/after the duplicated post's title   And now, here's how you leverage its functionality:   1. Just install and activate the WordPress plugin. 2. Go to the “Settings” page; for this, either click on the “Settings” tab in your WordPress Admin panel and select “Duplicate Post” from the drop-down menu or click on “Settings” right beneath your plugin's name (in your WordPress plugins list) 3. While there, choose the settings page that you'd like to clone (and further edit/customize). And you have 3 options here: "What to copy", that lists all sort of web page elements that you may want to add to your cloned page or post.  Note: feel free to customize the duplicate page title so you can set it apart from the original page/post. "Permissions", where you can grant permissions for cloning specific content types to certain user roles only  "Display", where you can choose the website section(s) where the link of your duplicate page should get displayed.            4. Next, go to Pages>All Pages (or to Posts>All Posts) and track down the page you wish to clone. 5. Once spotted, hove over; you should see 2 new options popping up (in addition to the standard ... ones: “Edit”, “Quick Edit”, “Trash”... ): “Clone” and “New Draft” 6. Choose “Clone” if you just want to create a duplicate of that page or post  Word of caution: if that original page/post is already published, the duplicate one will automatically go live, as well! 7. Or, choose “New Draft” if you want to make a copy and further edit it. Once you're done editing it, you can either publish it or save it and keep it as a draft. Note: if you need to bulk duplicate posts in WordPress, just select the pages to be cloned, unfold the “Bulk Actions” drop-down menu above the list and select the “Clone” option  Another note: let's say that you've just finished writing a new blog post and you want to duplicate it. Yet, you dread having to navigate all the way to “Posts” and going through all the needed steps. To streamline things a bit, just click on “Copy to a new draft” right under your blog post's Publish settings. Should I also add that, in order to create a duplicate page in WordPress using this plugin you could also just:   open a Preview of that post or page to be cloned look for “Copy to a new draft” in your admin bar?   And that's it: two easy-peasy steps for creating a duplicate page or post.   2. Use Post Duplicator to Create a Duplicate Post/Page in WordPress Here's another easy way to clone WordPress pages or blog posts. This plugin would enable you to: Create a duplicate of that given post or page; one having the same custom taxonomies and custom fields. Here's how you use it: You install and enable it (obviously!) You select the “target” page and just click on “Duplicate Page” (or “Duplicate Post”) to create the duplicate Easy!   3. Duplicate Page Plugin: One of the Easiest Ways to Clone a Page/Post    Don't let its name “trick” you: you can duplicate blog posts, as well, using this plugin! Once installed, you'll find a new option under each post or page called “Duplicate This”. Use it confidently...   4. Use Duplicator Plugin to Duplicate an... Entire WordPress Site   What if your requirements go beyond duplicating a page or blog post? What if you need to clone... an entire website? Let's say that you want to build a website similar to the one that you've recently delivered to one of your clients. Or to the very same client. For this, you trigger this plugin's “superpower” and just... accelerate the development process. Since you'll already have a structure to build on.   5. Or Use the Page and Post Clone Plugin   Ready for another handy option for you to duplicate a page in WordPress? The process is mostly the same:   once you've activated your plugin hove over to the blog entry or page that you need to clone choose the new “Clone” option showing up there   … and you'll have your duplicate page created as a draft. The END! These are the 4 easiest ways to create a duplicate page in WordPress. Have you already tried a different method/plugin? Sharing is caring... ... Read more
RADU SIMILEANU / Dec 14'2018
What Will Be the Most Influential Mobile UI Design Trends in 2019? Top 4
A few more weeks and... “Chin-Chin: Happy New Year!”. Meanwhile, while you were making your final edits to your wish list for Santa and adding a few more lines to your New Year's resolutions list, we've been doing our homework, too. We've run our investigations and come up with our own list: one including the most influential mobile UI design trends in 2019. Both those trends:   that have timidly stepped on the mobile app design scene this year and will just grow more powerful next year and those that will emerge in 2019 and quickly take over the “scene”   So, here they are: the 4 major trends to look into and rush to capitalize on next year.   1. Buttonless Screens: From Niche to Norm Mobile UI designs without buttons have been around for some time, but we somehow didn't consider this would become... mainstream, right? Just think:   Instagram and its buttonless design that kind of forces you to rely on gestures for swiping through different stories on the page, for moving backward and/or forward Apple, Samsung, and Google, that are advocating for edgeless, clean screens; they implicitly “force us”, mobile app designers, to drastically trim down our in-app button collections. To remove buttons completely... all those e-commerce apps that have simplified their checkout processes by... removing the cart button; customers can just drag and drop items into their shopping carts.   Conveniently intuitive, right? The “buttonless UI” will be one of most prominent mobile UX trends in 2019: After the “power button & volume button & homepage single button" trio, we'll be witnessing the growth of the “buttonless screen” trend in 2019. In other words: it's time to rethink your mobile UI/UX designs; to make them more gestures-focused. Which might be as simple as... adding animations to show the gestures that end users need to perform for carrying out specific tasks.   2. Visual and Voice Interfaces Will Work Together “Will graphical user interfaces ever be taken over by voice user interfaces?” “ is a question on Quora. On the contrary: Not only that voice-assisted interfaces (VUI) won't “annihilate” the visual ones, but the 2 of them will... happily coexist starting next year.  Get ready to witness a seamless integration of the two types of UI in 2019's mobile apps! Or, even better:  Instead of being one of the passive witnesses, how about leveraging this trend, one of the most influential mobile UI design trends in 2019? How would these apps, supporting a cohabitation of voice and visual interfaces, look like from a user's perspective?   the mic button will become... optional; mobile app users can just utter their questions/commands and the apps will interpret them. he/she (the user) will be able to speak commands like “Show me the cheapest option and book me...” or “Pick it up!” or “Narrate these 3 chapters to me!” and have the app read a book, book a flight or answer a call    3. Bottom Navigation: One of the Dominant Mobile UI Design Trends in 2019 Which side are you on? Are you a top navigation or a bottom navigation “fan”? Well, you can call yourself a “visionary” if the bottom navigation has been your top choice for some time now. It looks like it's going to be one of the prominent mobile app UX design trends in 2019. Why? Because:   devices will have even larger screens the single homepage button “rocks supreme” and app users got so used to the swiping gesture “extreme” convenience is key: all the major buttons should be displayed within reach on the app's screen   And this type of navigation comes down to:   bottom sheets swipe-up gestures    3.1. Bottom Sheets Why will bottom sheets become app developers' top choice when it comes to displaying sub-flows? Because they're highly flexible! Users get to scroll both vertically, for unlocking more content, and horizontally (carousel), for swiping through similar content with no need to skip screens. Pop-up dialogues, overflow drop-downs, hamburger side-drawers will start to fade compared to bottom sheets' “all within a swipe's reach” type of convenience.   3.2. Swipe Up Gestures  You'd swipe up to open an app drawer, then swipe up again to go back or to close the app... It's been a while since in-app swipe up gestures have started to “outshine” buttons/bottom tabs. And they're perfectly fit for bottom navigation. They enable you, the mobile app developer, to... keep everything“minimalistic” in your app:   the top area (content) the bottom area (navigation)   Simple, intuitive, convenient. No wonder that this will be one of the most influential mobile UI design trends in 2019.   4. Mobile App Design for Larger Screens You'll need to swiftly adapt your mobile UI designs to devices with increasingly large screens. They'll be the ones “dictating” how you'll design your mobile apps' interfaces in 2019. And there are few challenges to expect, consider, and properly prepare yourself for before this trend becomes... a norm:   How will you seamlessly integrate in-app gestures into your mobile apps? “Fully” integrate them, I mean... Losing buttons/bottom tabs will automatically enlarge the screens and leave you with more screen real estate; how will you fully leverage those enlarged screens? How will you optimize your apps' UX and UI so that the user can rely on his/her thumb and thumb only to navigate through and perform actions within the app?   The END! Let's recap, now! Here's your New Year's resolutions list:   "I'll design buttonless user interfaces in all my mobile apps in 2019" "I'll somehow make voice and visual interfaces work together" "I'll design “bottom navigation” and swipe-up gestures navigation in my next year's apps" "I'll adjust and properly adapt my mobile app designs to fit devices with larger screens" Photo by Gilles Lambert on Unsplash  ... Read more
Adriana Cacoveanu / Dec 13'2018
How to Scale a Web Application in Drupal: Latest Techniques to Easily Scale Your Web App with Drupal 8
It's a fact: “the next generation” of web apps aren't just extremely fast, they're highly scalable, as well. Which brings us to the next question: “How do you scale a web application in Drupal?” What tools, best practices, and latest techniques do you use for leveraging Drupal 8's scalability capabilities? For ensuring that your custom web app will keep on scaling to:   handle sudden spikes in traffic avoid downtime  withstand “surprise” content overloads   Well, here they come:   1. But Is Drupal Scalable? How Scalable?  Let's just say that: Drupal's built with scalability in mind and that Drupal 8 is... extremely scalable. It's powering some of the world's most trafficked and content-rich websites (Weather, Grammy, Princess Cruises...). Therefore, it's designed to cope with heavy infrastructures of thousand content contributors, Drupal users and site/app visitors... And when gauging Drupal 8's scalability you need to go beyond Drupal's unmatched modularity: +30,000 free modules. Instead, just think of:   Drupal turned into a central API  all the improvements brought to Drupal 8's scalability till this day Drupal 8 enabling you, right out of the box, to integrate it with a wide range of third-party apps, software, and systems RESTful API now in core!!!   … and how all that empowers you, the Drupal web app developer, to easily serve JSON or HTML code. And Drupal 8's unparalleled scalability comes down to this: Empowering developers to create content and send it to any third-party app via JSON. Of course, its out-of-the-box scalability can get further optimized via:   an established set of best practices additional support from various tools and technologies   2. How to Scale a Web Application in Drupal: Server Scaling Techniques Let's say that... “it's time”: You've applied all the optimization techniques on your web application so that it should seamlessly “accommodate” the increasing influxes of traffic and content load. And still, its server hardware has started to show its limitations. So, it's time to scale your server hardware. And you have 2 options at hand:   2.1. You scale up your server vertically  This is the handiest method, so to say. That “emergency” technique to go for when:   you don't have time to install a caching module there's no one in your team with the needed expertise for adding more servers   So, what do you do? You increase your existing server size.  You boost its performance by adding more resources. This way, it could keep up with all those new traffic challenges calling for more memory, more CPU cores... Word of caution: there' no such thing as “sky is the limit” here; you'll still reach the limit of the hardware at some point when you scale up a web app in Drupal using this method.   2.2. You scale up your server horizontally The second best practice for scaling up your server is a bit more complex. And it involves 2 approaches, actually:   a. You separate your database from your Drupal web app.  Basically, your database will have its own server and thus you get to split the load in 2. Then, you can vertically scale each one of the 2 servers.   b. You add multiple servers and distribute the load between them. This is the most complex way to scale a web app in Drupal.  Just think about it: How will the servers included in this whole “ecosystem” “know” which users to take over? It goes without saying that you'll need a load balancer for properly “splitting up” the traffic load. And a database server, as well. See? It already gets more complex compared to the other 2 above-mentioned server scaling techniques. Nevertheless, this is the method which, when done properly, will reduce dramatically the load that each server must handle.   3. “Juggling with” Multiple App Servers for Drupal Let's say that you've opted for the last method of scaling up your server, so: Now you find yourself facing the challenge of handling multiple app servers. How will you deploy code to each of them simultaneously? That is the biggest question when you scale a web app in Drupal. The best practice is to keep all your servers on the same local network.  Having one single data center will speed up the data transfer compared to having it traveling through the internet.   The END! This how you can leverage Drupal 8's scalability capabilities and easily “adjust” your web app to withstand unexpected surges of traffic. Have you tried other techniques and best practices?  ... Read more
RADU SIMILEANU / Dec 10'2018
WebAssembly vs JavaScript: Is WASM Faster than JS? When Does JavaScript Perform Better?
“Will WebAssembly replace JavaScript by 20XX?” This is one of those “sensationalizing” news of the moment, right? But still: if we were to run a WebAssembly vs JavaScript performance comparison, which one would be the winner? And would we have the same winner for different implementations?  We're all looking forward to the future of web development now that WebAssembly has come around to “tempt” us with near-native performance to the browser.  Yet, most of us still write code in JavaScript, despite the predictions of its “imminent extinction”. And there still are use cases where JS outperforms WASM. So, let's find out:   exactly when JavaScript performs better that WebAssembly how WebAssembly works and what makes it such a great fit for the web whether WASM is, indeed, faster than JavaScript and when precisely   1. The Rise of WebAssembly: The First Alternative to JS for Web Development Just think about it: We've been having JavaScript as the one and only programming language to be used natively in web browsers and then... WebAssembly stepped in. “But what is WebAssembly more precisely?” Is it a really an assembly language, like its name suggests? Well, here's a hopefully clear enough definition for you to ponder on: WASM is a new type of code — with a small-sized fast binary format — for modern browsers. A “compile target”, if you wish. One that you get to use for compiling any programming language (JS here included). And NO: It is not an assembly language, it's not built for a specific machine. And no, you don't write code in WebAssembly: you use it to compile any given language. What it does is compile higher level languages and then run those web apps in the browser a lot faster than JavaScript (due to its lightweight, low-level binary format, remember?)   2. WebAssembly vs JavaScript: Essential Differences Now that we've seen what WebAssembly is and what it is not, let me briefly outline the key features that set our 2 “contestants” apart: JavaScript:   it's dynamically typed it's highly flexible it's delivered in human-readable code   WebAssembly:   it's just fast(er) it's delivered via a small-sized binary format it's strongly typed   3. How Does WebAssembly Work? What's Behind Its “Near-Native Performance”? “Why is WebAssembly faster? How does it work?” Here's WASM in action:   you, the developer, write the code for your web app (in any programming language) next, you compile it into WebAssembly bytecode then, this code is run in the web browser, where it turns into native machine code and... executed.    And it gets loaded, parsed, and executed way faster compared to JavaScript. Why? Because its binaries are lighter than the textual JS files and, therefore, faster to decode...   4. 3 Performance-Intensive Use Cases for WebAssembly Before I run an “enlightening” WebAssembly vs JavaScript performance comparison, let me highlight the use cases where WASM “shines supreme” as a web performance “booster. First of all, when you say “common uses cases for WebAssembly”, think about all those performance-critical cases:   video editing 3D rendering video games music streaming encryption image recognition   WebAssembly's built as a target for writing in-browser software. In short: think of all those use cases where JavaScript would usually struggle to reach the needed level of performance. And now, let's get specific:   porting a desktop app to the web: WebAssembly supports those scenarios that go beyond GUI delivered via HTML high-performance code already existing in a targetable language: deploy it as a WebAssembly module; here, you could keep the less performance-critical elements in JavaScript high-performance code to be written from the ground up: where, obviously, asm.js is not a suitable choice   In short:   with WebAssembly there's only one step to complete — the compilation step —  for running your app in any browser; portability is one of its main strengths if top performance's critical for your web app, you might want to consider WebAssembly as an alternative to JavaScript   5. WebAssembly vs JavaScript: Performance Comparison Now that we've settled that WebAssembly is usually faster than JS, let's:   find out when precisely. When does WASM outperform JS? dig some more into the load of features that enable WebAssembly to perform better discover all those use cases where JS can't be “dethroned”   5.1. WebAssembly's binaries are faster to download and to execute “Why?” Because they're smaller than JS's textual files. By comparison, JavaScript would need to:   parse compile optimize   … the code before executing it in the browser. Although it's:   easy to write doesn't need to get compiled ahead (being a dynamically typed language)   … JavaScript still needs more time to do all the needed work before executing the code. 5.2. With WebAssembly, memory gets managed manually In other words: there's no garbage pile-up to impact performance.   5.3. WebAssembly reduces the initial load time Any WebAssembly vs JavaScript performance analysis would point out that WASM comes with some significant time-parsing improvements. Here's why it decodes much faster than JavaScript:   it has a binary format it's statically typed (it doesn't need to “guess” what types should be used) it performs its optimization work in advance while compiling the source code   By comparison, JavaScript would need to:   first turn text into a data structure (or i.e “abstract syntax tree” or AST) then, turn that AST into binary format   Just think of the JS-heavy web apps striving to parse all that data in due time. WebAssembly is proven to score 3 times better at load time.   5.4. JavaScript performs better on smaller array sizes In a WebAssembly vs JavaScript “duel” WASM would always perform better on larger array sizes, powering extremely fast web applications.   5.5. WebAssmebly files load faster once in cache The moment they get stored in the cache of the browser, WASM files are easier to load, compared to JS's source code.   5.6. JavaScript often performs better during execution Once fully optimized, WebAssembly is slower when executing code in the browser. And this is partly (some) browsers' “fault”:  On Microsoft edge, for instance, WebAssembly executes terribly slowly. 5.7. WebAssembly doesn't really “outshine” JS in terms of run-time performance    6. What Next? Will WebAssembly Become More Than Just a Web-Based Solution? Well, that's the goal, at least:  To go beyond its common use in web browsers. To upgrade it from a web-based solution to the go-to option for:   desktop apps mobile apps other execution environments   Moreover, one of the “forecasts” is that we'll no longer talk about a “WebAssembly vs JavaScript” rivalry in the future, but about a cohabitation of the 2: You'll still be able to write your code in JavaScript all while leveraging the speed that WebAsssembly brings to the table: improved frameworks and libraries. “Will WebAssembly replace JavaScript by 20XX?”  I'm certain that it won't: JS is still a convenient and fast choice for too many tasks. Yet, we will witness a successful collaboration of the 2. Photo by Chris Liverani on Unsplash. ... Read more
Silviu Serdaru / Dec 07'2018
Must-Have Skills in the Age of AI: Stay Relevant and Competitive as a Developer
“AI will replace software developers by 20XX...” Does this kind of alarming forecast sound (too) familiar to you? How do you stay relevant in the workforce of the future? What are the essential skills in the age of AI to hone or to develop? That is the question... Now, what we do know is that:   you definitely need to (re)adapt to remain competitive in the context of automation processes, a highly automated workplace … and software-driven machines that can now process unstructured data meaningfully there are skills that can't be automated: soft skills become increasingly valuable more and more businesses will be interested in bringing “fusion skills”, a mix of human and machine talents, into their workplace   In other words: as we teach machines to learn, we, too, need to start learning from them in order to remain relevant and competitive in the workforce of the future. It's definitely not a “one-way street”.   1. Understanding AI and Its Disruptive Power What do you think of when you say “artificial intelligence”?   shopping recommendation engines? chatbots? voice/image recognition engines?   These are the most common applications of AI, right?  And they're all powered by... data: There are massive amounts of raw data all around us, waiting to be processed... meaningfully. Data that's powering any organizational decision these days. Now, here's how AI turns all this data into actionable knowledge: first, it's the big data techniques that unlock the power of the unprocessed data next, there are the machine learning algorithms that enable computers to assimilate all these huge volumes of data and finally, there are the deep learning and neural network patterns that add “meaning” to the process up to the point of... predicting human behavior “And how precisely does AI impact my job?” The immediate impacts of Robotics Process Automation on your job as a software developer will be:   disrupting all those repetitive, mundane processes and operations (and thus enhancing your job) providing you with more... time   “Time” that you could invest in honing all those skills that can't be automated: soft skills (or people skills), the ability to engage in creative researches etc.   2. Thriving in the Age of Automation: Upskill Yourself There's no denying it: In order to stay relevant and competitive in the age of AI you need to skill up. Constantly... You need to make learning an integral part of your daily work as a software developer. And thank God, there's a whole plethora of:   platforms for open online courses AI incubators and university labs (Carnegie Mellon or MIT) competency-based training tools open educational resources (EdTech)   … for you to choose from. Go for bite-sized upskilling sessions and turn it into a continuous process!   3. Skills in the Age of AI that Can't Be Automated And this is your trump card in this “human meets machine” or “AI threatening to replace developers” type of debate: Soft skills become extremely valuable in the age of automation because... they can't be automated.  What skills I'm referring to here?   creativity critical and innovative thinking collaborating skills social skills empathy adaptability   In short: those type of skills that are outside the purview of rigid algorithms. Hone your “people skills” to thrive in a workplace based more and more on collaboration. And on crafting authentic human experiences. Perfect your creativity and critical thinking to generate out-of-the-box solutions to common problems.   4. Develop These 5 “Fusion” Skills "Fusion skills” are the must-have skills in the age of AI. I'm talking here about the kind of abilities that result from human & machine interactions turned into a continuous collaboration, such as:   4.1. Intelligent Interrogation  Develop the skill of asking machines the “right” questions.  It will become a crucial one since, as human, you can't predict interactions between complex layers of data working independently. You cannot probe overly complex systems...   4.2. Bot-Based Empowerment  Instead of constantly fearing it and fighting it back: Embrace the power of AI bots. Let them empower you to:   boost your career as a software developer become more productive (they're taking the mundane operations off your back, remember) extend your competencies   4.3. Judgment Integration One of the truly powerful skills in the age of AI is anticipating when a machine can't make a decision. Due to lack of ethical context, let's say. It's then that you can intervene and provide the needed input.   4.4. Reciprocal apprenticing As already stated here: The learning process is no longer a “one-way street”. You, too, need to learn from the AI agents integrated into your workplace, not just the other way around. It means that you'll need to:   develop all those new skills needed for performing tasks in collaboration with machines learn how to successfully carry out AI-enhanced processes   4.5. Relentless Re-Imagining Keep honing — or developing it if you have none — the skills responsible for reimagining the status quo. Dare to re-think how AI can improve business models, organizational processes and overall your entire work as a software developer. Once you've managed that, you'll be ready to... adapt yourself to all those imminent changes. To start perfecting all those relevant skills in the age of AI.   5. Aspire to Be an Expert-Generalist Software Developer  Organizations will be “hunting” expert-generalists, so make sure you're prepared to... stand out.  Not just as a specialist, but as a well-rounded software developer:   with expertise in multiple areas who's an excellent communicator  who's always the first to volunteer for challenging projects who's curious, highly trainable and extremely adaptable   In other words: to stay competitive you'll need to go from having in-depth expertise in one area, to... having a broad breadth of knowledge and multiple expertise areas.   6. The Workplace of the Future: AI + HI (Human Intelligence) In the end, perfecting/developing the crucial skills in the age of AI comes down to this common sense criterion: Invest in honing those skills that enable you, as a software developer, to collaborate with different AI agents. The workforce of the future will not be focused exclusively on human intelligence (not anymore) or on AI, but on... collaborative intelligence.  In other words: let AI empower you in your work, perfect those skills that machines can't automate and... learn to collaborate with AI systems. Photo by Franck V. on Unsplash.  ... Read more
Adriana Cacoveanu / Dec 05'2018
What Are Some of the Best AI Software Development Tools? Top 8 Software to Boost Your ML Project With
Which AI software development tools, frameworks, libraries, and other technologies should you add to your toolbox? And the number of emerging AI tech these days sure is... overwhelming! Which one(s) the perfect fit for your own machine learning project/model/problem? Which one's equipped with precisely those features that you need for a fully functioning AI algorithm? To lend you a hand, we've made a “drastic” sorting out and narrowed the high amount of AI software available to a shortlist of... 8. The 8 best AI technologies to consider “turbocharging” your ML project with: 1. Infosys Nia A knowledge-based AI platform to go with if your AI-powered project's goal is to:   gain in-depth insights into customer behavior forecast revenues reduce financial transaction frauds optimize asset efficiency streamline how your team manages customer inquiries    "And how does it work?"  "What does it do, more precisely?" It collects organizational data on the legacy systems, the people and the processes involved and “piles it up” into a self-learning knowledge base. One that developers and data analysts in your team can leverage to create high-performing, scalable ML models. And all that even if they don't have data science expertise, thanks to the platform's easy-to-use ML workbench. Key features:   extensibility: for data preparation, machine learning methods, visualizations self-service provisioning: elastic cloud deployments GUI-based features: enabling your AI software development team to build accurate ML models integrated enterprise framework: for data preparation, reports, deployment, and modeling streaming fast predictions: Infosys Nia Prediction Server   2. Deeplearning4j The second — yet not “the second best” —  AI software development tool in our list is an:   open-source distributed  customizable at scale   … deep-learning library written for Scala and Java. One that Clojure programmers, too, using Hadoop and other file systems can use for building their deep neural networks.  A library designed as a plug-and-play AI solution for fast prototyping. Key features:   it can be used in business environments on distributed CPUs and GPUs tailored to perfectly fit a micro-service architecture GPU support for scaling on AWS  Python, Java, and ScalaAPIs it scales on Hadoop it can import neural net models from other frameworks — Caffe, TensorFlow, Theano —  via Keras it comes with a cross-team toolkit for DevOps, data scientists, data engineers   3. Torch  An open source machine learning library & a Lua-based script language & a scientific computing framework. Why/how has it “earned” its place on our shortlist here?   first of all, it provides a “heavy load” of algorithms of deep machine learning the Facebook AI Research Group, the Idiap Research Institute, IBM and Yandex are just some of the heavy-weighting names using it it's built to “fuel” machine learning projects with both speed and flexibility, without adding an unnecessary overhead   Key features:   linear algebra routines; and it supports plenty of them: for indexing, type-casting, cloning, slicing, sharing storage etc. N-dimensional arrays efficient GPU support  numeric optimization routines it's embeddable, with ports for Android and iOS backends great interface to C (via LuaJIT)   4. Tensorflow, One of the Most Popular AI Software Development Tools A Google-powered open-source software library for machine learning projects. One that's conveniently easy to use across a wide range of platforms. You get to use it with:   Java  Python Go C++ Rust JavaScript   As a new user, you'd be joining the high league of all those big names that are currently using this AI software development technology in their ML-enabled projects: Uber, Intel, Twitter, eBay... “And how does it work?” Basically, what it does is that it provides you with a library storing numerical computation that uses data flowgraphs.  In short: you'd be building your neural networks using flowgraphs:   the nodes in the graphs stand for the math operations the graph edges represent the tensors (multidimensional arrays of data) communicating between them   It's this flowgraphs-based structure that enables developers to deploy deep learning frameworks over several central processing units (CPUs) on tablet devices, mobile, and desktop. But probably one of TensorFlow's biggest strengths and the reason for its wide adoption is its documentation: It provides plenty of support for newcomers (those new to Python here included: from tutorials to detailed documentation, to online resources... Another interesting feature is given by its multiple APIs:   the lowest level API: gives your complete programming control the higher level API: makes repetitive tasks more consistent and easier to carry out for different users   Top TensorFlow-powered Apps:   RankBrain: deployment of deep neural nets on a large-scale basis for search ranking on Google.com Massively Multitask for Drug Discovery: a deep neural network model for detecting favorable drug candidates On-Device Computer Vision for OCR: computer vision model that performs optical character recognition for real-time translations   5. OpeNN The library that you should go with if your AI software development team is made of devs with rich experience in implementing neural networks. OpenNN (Open Neural Networks Library) is a C++ programming library designed to learn from both:   mathematical models and datasets   Note: Neural Designer, a predictive analytics software that creates visual content enhancing the interpretation of data entries —  e.g. tables and graphs —  is OpenNN-powered. Key features:   it provides plenty of support —  documentation, tutorials —  for helping users get into neural networks, even if it's built for developers with a solid AI background it implements data mining methods by bundling multiple functions bundles of functions that can get embedded into other software tools via API (thus enabling and streamlining the interaction between these software tools and the predictive analytics tasks) it's a high performant neural network library: high processing speed, great memory management (since it's built in C++) and CPU parallelization    Datasets:   time series prediction pattern recognition function regression   Mathematical Models:   optimal shape design optimal control    Datasets and Mathematical Models:   inverse problems   6. Apache SystemML  An IBM-powered machine learning technology. Or, if we are to detail this short definition a bit: It's a scalable, flexible in-memory data processing framework providing a huge database of algotihms focused on: clustering, classification, regression, collaborative filtering.   Key Features:   automatic optimization based on both cluster and data characteristics (scalability & efficiency) algorithm customization via Python-like and R-like languages it can be run on top of Apache Spark, due to its great scalability capabilities multiple execution modes: Standalone, Spark MLContext, Hadoop Batch, JMLC (Java Machine Learning Connector) 7. Caffe A deep learning framework written in C++, with a Python interface built around 3 main features:   speed modularity expressiveness   Speaking of the latter, this is an AI software development tool that provides developers with an automatic inspection tool based on imaging.  If your machine learning project includes computer vision-related tasks, Caffe (Convolutional Architecture for Fast Feature Embedding) makes a great, robust choice.  Key features:   high performance extensible code, that enables active development expressive architecture  an active community constantly improving it   8. Apache Mahout How important is scalability for your machine learning app project? If “critical” is the word you'd use, then Apache Mahout is the AI software development tool for your project. It's designed with scalability in mind and as a tool empowering data scientists, mathematicians, statisticians to implement their own algorithms quick and easy. Key features:   provides pre-built algorithms for Apache Flink, Apache Spark, H20 support for various distributed back-ends (Apache Spark here included) comes packed with modular native solvers for GPU, CPU, CUDA acceleration Matrix and vector libraries   The END!  These are the top 8 AI software development tools to narrow down your options to. To evaluate first, putting them against:    your project's goals your team's experience with machine learning algorithms ... and to determine whether they're the perfect fit. ... Read more
Adriana Cacoveanu / Nov 21'2018
How Do I Get into AI Development? Where Do I Start? A Complete Beginner Guide to Learning AI
How does a complete beginner get into AI development? What learning resources does he/she use along the journey to learn about artificial neural networks, the basic AI algorithms, the simplest machine learning models and all that?    “How important is a solid math background?” "And what programming language should I learn/deepen my knowledge of?” Here's a step-by-step guide for a complete beginner to AI, that should put you on the right track, so can you get started with AI software development... the right way:   1. A Solid Background in Mathematics Is Just... Crucial Just think about it:   machine learning comes down to... linear algebra you need at least some basic knowledge of calculus for training neural networks   And there are a few more topics that you should add to the list:   probability and statistics various algorithms   Learn as much math as you can before you jump into the best courses and other learning resources on AI that you can find.  It will greatly help you...   2. Narrow Your Focus: What Do You Want to Build? Clearly articulate your goal, make it fit into one simple sentence:  "To develop an algorithm that predicts a person's blood pressure", for instance. It's only then that you'll be able to:   break your task/problem down into smaller parts narrow your focus (for AI is a discouragingly broad term) identify the specific resources that you'll need    3. Learn By Doing: Try to Solve a Simple Problem for a Start In other words: try writing a simple neural net first, then gradually focus on more complex ones. As a start, tackle an easy problem. Experiment with multiple approaches for harnessing algorithmic decision-making while trying to solve it. Get into AI software development by finding the quickest solution to a given problem: Train a simple machine learning algorithm and evaluate its performance. Next, level up your knowledge by optimizing your basic solution. Experiment with upgrading various components and monitor the resulting change. Try your hand at:   building your own simulator writing the AI code for games like Sudoku or Tic Tac Toe developing code for pattern recognition    4. Get Started with Deep Learning: Learn About Artificial Neural Networks As a newcomer, you must be particularly interested in deep learning, am I right? Now, if you want to explore this machine learning method, you'll need to get familiar with the basics of artificial neural networks. In this respect, you might find this online resource here on Deep Learning enlightening enough.  As for the open-source framework to use for testing the newly acquired skills you have:   Google-powered TensorFlow, by far one of the most popular ones; a Python-based one Theano, Scikit-learn, Keras, all  Python-based frameworks, as well Deeplearning4j, a Java framework  5. Choose Your Programming Language: Consider Performance and Libraries Availability “What programming language should I learn to get started with AI development?” Actually, choosing the language is not that important.  Go for a mainstream language (although you can still do ML/AI with lesser popular languages, as well). One that:   provides you with lots of tools and high-quality libraries stands out in terms of performance    So, it could be either Python or C++, either Java or C or Octave. Each one has its own strengths and limitations when it comes to performance and libraries availability.   6. Learn Computational Learning Theory to Get into AI Development And this is particularly important when you delve deep into the field of Natural Language Processing.   7. Build a Powerful Computing HardWare or Use a Cloud-Based One Expect some significant hardware requirements for running artificial intelligence and implementing machine learning. A powerful hardware system, using a bundle of CPUs and high-performing GPUs is a must if you're thinking:   considerably big models; you'll be testing lots of alternative models before you decide on the final one more and more complex experiments that involve harnessing the power of AI   And here, you have 2 options:   you either put together your own powerful enough supermachine you go with a cloud-based alternative    Speaking of the latter, here are 2 cloud computing platforms to consider:   Cloud TPU: a Google-powered hardware custom designed specifically for carrying out tensor operations in a more efficient way than a GPU or CPU Google CoLab: a Jupyter notebook environment that doesn't need any setup; you get quick access to the cloud-based GPU for running your scripts to   8. Get Familiar with Most Machine Learning Algorithms If you're determined to get into AI development you should be/get comfortable with:   support vector machines (SVM) recurrent neural networks (RNN) deep learning (DL) a whole lot of other decision trees and random forests   There's no shortcut here!   9. Enter a Kaggle Competition Put your newly acquired skills to the test! Commit to solving the problems that other AI developers are working on by participating in a Kaggle competition. Test out multiple approaches and go with the most effective solution. Not only that you will get to test your skills in AI software development but your collaboration skills, as well: You'd be joining a large community, asking questions on an AI-focused forum whenever you get stuck while learning artificial intelligence, you'd be sharing your groundbreaking ideas and so on.   10. 2 Free Online Courses to Try Your Hand At One of the questions at the beginning of this post has been: “ What learning resources does he/she use along the journey to learn...” So, here I am now, ready to give you 2 recommendations:   Stanford University – Machine Learning: Google Brain's founder, Andre NG, is teaching this course; it's loaded with real-time examples of AI-driven technologies, with valuable information that will help you gain a better understanding of how neural networks learn...   Learn with Google AI: a Google-powered project including a machine learning course for newcomers (incorporating the TensorFlow library as well)   The END! Sure hope these 10 tips will help you grow more confident and eager to get into AI development.  ... Read more
Adriana Cacoveanu / Nov 19'2018