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.

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
How to Build a Machine Learning App: Choosing the Best Image Recognition API
You're ready to turn your idea of a machine learning app using image recognition into “the next best thing”! It's going to revolutionize mobile advertising, the education sector, the automobile industry, the world of finance... you name it. But then, reality strikes you: "How do I implement image recognition functionality into my application the... easy way?" And the “easy-to-use” factor becomes particularly important if you have no machine learning background. How do you incorporate such a service/API into your app? An app that should analyze, organize, alter different images? Now, here's what you need to keep in mind when you build a machine learning-powered app, plus a selection of the best image recognition APIs. So you can compare and experiment with in order to select the one that perfectly suits your goals and your machine learning background... 1. 4 Things to Keep in Mind When Building a Machine Learning App Before you jump into enabling machine learning capabilities into your web or mobile app, make sure:   that you've gained in-depth knowledge of that specific market that you're targeting  that you've properly prepared your data: make sure you've selected the best data sources and data collecting techniques you've chosen the best algorithm for your app (run it, tune it, test it) you're using the right method: for on-device machine learning you'll need to pay attention to your model's size (make sure it's not oversized; otherwise, you'll need to rely on cloud services for machine learning)   Note: organize your dataset ensuring that your images are of different lengths, that they feature plenty of particularities, thus helping your custom model to identify the target objects/emotions/scenes more accurately.   2. Implement Image Recognition to Your App: Choosing the Best API “What are the best image recognition APIs in the market?” you must be asking yourself right now. “What's the best solution for me to incorporate image recognition into my machine learning app if: I have little to no machine learning background I'm looking for an image analysis software that's straightforward to implement, easy to use, yet powerful … one that should enable me to quickly train a custom model"   2.1. Mobile Vision API A Google-powered framework equipped with the capability to detect objects in images and videos. For this, it uses 3 types of detectors:   a face detector a text detector a barcode detector   Image source: Google Developers. The “face detector” is “loaded” with some great features such as: providing information about the state of the human faces in the analyzed images/videos: eyes open/closed, smiling, crying etc. identifying parts of a face: mouth, nose, eyes analyzing multiple faces on a single image identifying human faces on recorded videos, on mobile camera and still images Note: do keep in mind that this API does not provide face recognition capabilities; it cannot tell whether 2 images, presenting human faces, are identical or not.   2.2. Google Vision API Looking for something a bit more complex, more... refined that an "object detection” service? For an image recognition software that does more than just:   provide similar images “detect” faces and visual objects   … and detects “details” about the uploaded images instead? One that identifies whether:   the being in the picture is a human or a dog the characters are sad or happy (sentiment analysis) they're racy or engaged activities marked as “not OK” in the Google Safe Search   … and labels the given images (“weather”, “autumn”, “dog walking”, “male”)? Then, the Google Vision API (or “Cloud Vision API”) is what you're looking for. Unlike other leading image recognition solutions available, it “spoils” you with:   a simple REST API landmark detection functionality   How does it do it? The API connects the code of your machine learning app to Google's image recognition capabilities. Now, here's how you set it up:     Sign Up for a Google Compute Engine Account Select a Project (if you're a newly registered user, then the “My First Project” is selected by default) “Grab” an API key from the menu on the left side of the screen (save it to a text file) and run it in your project (just enable the API at this URL) Select your app project  You're now ready to roll with your new image recognition API integrated to your app project; just save the text in a google_vision.json file: It's this JSON request that will point out to Google Vision API the specific image to parse and the detection capabilities to trigger. Note: remember that you should use this API in personal applications only!    2.3. Clarifai    Here's a custom image recognition software in our list to start experimenting with if:   you're looking for a visual search tool with a video-analysis functionality added to, as well you need an easy to implement and to use API for tagging images; for recognizing and understanding the content features in your images/videos you're looking for an API with a strong concept modeling you're planning to incorporate an image recognition functionality that enables you to create and to train your own custom models to test against   “But how do I use Clarifai's Custom Training API to set up my own model?” It's pretty straightforward:   for declaring a positive you use: clarifai.positive('https://goo.gl/1Q8W8S 'dog', callback); for predicting an image you use: clarifai.predict('https://goo.gl/xNNRJg 'dog', callback); for declaring a negative you use: clarifai.predict('https://goo.gl/xNNRJg 'lion', callback);   2.4. Einstein Vision Looking to get in on a little AI action? To build an image recognition app leveraging AI and deep learning models trained to recognize images at scale?  Consider Einstein Vision then! Integrate it into your machine learning app and start to explore its two APIs:   Einstein Object Detection: empowers you to train models that should recognize several distinct objects in an image (providing information such as the location and the size of each item) Einstein Image Classification: enables you to create and to train models to detect and classify images at scale   “Where would I use such an AI-enabled app?” Here's one of its most common image-recognition use cases: You can use all those contextual clues stored in your images (your customers' preferences, your products/services' level of quality, your inventory levels etc.) to empower your marketing, sales and/or service teams. This way, they'll gain more accurate insights about your customers.   2.5. Amazon Rekognition What if you're not looking for the best tool for sentiment analysis, object and scene detection, but for one that rocks at facial recognition instead?  Then you go with Amazon Rekognition. It's designed to:   provide detailed information (e.g. beard recognition) run facial comparisons and assess the likelihood that 2 faces are of the very same person   2.6. Google Tensorflow Object Detection API A non-complicated way to integrate image recognition functionality into your machine learning app. Tensorflow Object Detection API is an open source framework designed around the idea that: Building, training and deploying of object detection models should be quick and easy. In this respect, the available guide supports the whole idea. Image source: Github Here's how to use the API:   Download the frozen model (.pb — protobuf) and run it into memory Load categories, labels, visualization tools and so on using the built-in helper code Launch a new session and run the resulting model on one of your images    2 tips for incorporating and using this API in your machine learning app:   figure out how you can speed up the API so you can use it for real-time object detection on mobile devices experiment with the more accurate models to see the difference   The END!  Have I managed to (at least partially) answer your questions:     “What do I need to know for building a machine learning app?” “How do I build custom image recognition functionality into my web/mobile app?” “What are the best image recognition APIs in the market right now?” Photo by Antoine Beauvillain on Unsplash.  ... Read more
RADU SIMILEANU / Nov 16'2018
How to Create and Manage a Content Workflow in Drupal 8: Either a Standard or a Custom One
"A Drupal 8 initiative to improve Drupal's content workflow", this is how Dries Buytaert first defined the Workflow Initiative, back in 2016. Now, coming back to 2018, you must be asking yourself a legitimate question: “How do I set up a content workflow in Drupal 8?” “How do I manage, extend and customize an editorial workflow to fit my Drupal 8 website's publishing needs? One including multiple users, with different permissions, that manages the workflow status of... different content types.” Which are the (not so) new content management features and functionality implemented to Drupal core by now? Those aimed at improving the user experience (editors, content authors...)?   Let's get you some answers:   1. Introducing: The Content Moderation Drupal 8 Module Content Moderation has reached stable version in Drupal 8.5.  Why should you care? What makes this core module of critical importance for creating your content publication workflow?   because otherwise, you'd have only two built-in states to “juggle with”: published and unpublished because it enables you to build a simple workflow for drafts, too … to set up new custom editorial workflows, as well, in addition to the default one   In short, what this module does is that it enables you to create a flexible content workflow process where:   one of the editors in your team stags a “Draft” content and another user on your Drupal 8 website, with a different permission, reviews/updates it   It comes as a powerful tool for you to leverage when your workflow needs are more complex than “ON/OFF”.   2. How to Set Up a Simple Content Workflow in Drupal 8 You'll only need 2 modules for putting together the workflow for a basic content publishing scenario:   Workflows, that will provide just the framework needed for managing the states and transitions included in the process Content Moderation, which will add the “Draft” state, a “Draft to Published” content workflow, and an admin view for handling all the drafts   And here's setting up a basic content publishing workflow in 4 simple steps:   Enable the “Content Moderation” core module Go to “Configuration” and click the “Workflow” tab; it's the last one in the unfolding drop-down menu Open the “Workflows” page Tada! You've just turned on your default “Editorial workflow”   For now, you should be having 3 major states in your workflow:   draft published archived   Note: use permissions to grant content contributors the right to edit/create drafts, editors the “Transition drafts to published” permission, admins the right to “restore to draft transitions” and so on... And voila! Your default editorial workflow, with the Content Moderation module ON, should suit your basic state tracking needs. It should fit any standard use case. Now, if your workflow needs are a bit more complex and website-specific... keep on reading:   3. Content Revisions in Drupal 8 One of the most powerful features that Content Moderation will “turbocharge” your editorial workflow with is:  Saving each change as a content revision in the database.  It stores all revisions in the system. But let's take a common scenario, shall we? Let's say that a second editor decides to make an update to a piece of content (either a content type or a custom block type). He/she updates it, then saves it as a “Draft”. You'll then still have the published version of the content, that's live, on your Drupal website, as well as this Draft (or several of them), stored, as a revision, in your database. A crucial functionality for any complex content publishing workflow:   with content revisions, you get to keep track of who's updated what and when … to trigger log messages regarding those changes, informing other content authors that a given content has been edited and you can also revert to the oldest revisions if needed   4. How to Extend and Customize Your Content Publishing Workflow  Rest assured: there's no need for custom code writing, even if your content publishing needs are a bit more complex. Here's what it takes to extend and to custom-tune your default content workflow in Drupal 8:   While on your “Workflow” page, just click the “Add a new state” button and add more workflow states: “Needs Review” or “Second Review” etc. Next, make sure you adjust your transitions to support your newly added state(s). For instance, a “Second Review” state would require a “Move to Second Review” transition.  Then, apply your extended workflow to either a specific content type or to a custom block type You can also create new separate content publishing workflows to have a different one for your press releases, a separate publishing workflow, an editorial workflow for your blog posts, a warehouse workflow etc.   Defining multiple workflows in Drupal 8, each one with its specific “ecosystem” of states and transitions, is now possible. Notes: the transitions in your workflow will stand for the permissions that you'll assign to different Drupal roles in your team use clear, descriptive verbs to name them remember to grant editors the permission to undo transitions, as well (they might need to revert a piece of content to “Needs Work” once they've reviewed it, for instance) In short: By defining multiple states for your piece of content (Published, Pending Review, Ready for Review, Ready for Second Review, Unpublished, Draft etc.) and managing the permissions corresponding to the state transitions you can build a content workflow in Drupal 8 capable to support even the most complex publishing scenarios. Now, another common scenario where a custom content workflow in Drupal 8 is needed is when you have a website publishing content to multiple platforms.  You have a Drupal 8 website, a native application and an internal portal, let's say... Your publishing workflow would look something like this:   first, content gets moderated to be published on the front-facing Drupal website then, it gets put in the queue for review before it gets published (or declined) on each one of the other 2 platforms   Note: if you need to further extend your editorial workflow and to apply it to a custom entity, for example, you can always write a WorkflowType plugin that meets your specific needs. Then, you can apply your custom workflow to... steps in ordering in a resto app, steps in a manufacturing process and to pretty much any entity (think beyond content) that needs to change its workflow states...   5. How Do You Know If You Really Need an Editorial Workflow? Do you really need to use content moderation? To set up a whole workflow for your publishing scenario? You do, if and only if:   there are multiple content authors uploading content on your website, content that needs to be reviewed before it gets published you're managing a team of multiple admins, with different user roles each moderator knows his/her role in the publishing chain   But if the content authors in your team have the very same type of permission as the admins and they just push content through, a content moderation workflow is useless. It would only slow down the publishing process. So, just because you have the option to set up a content workflow in Drupal 8, doesn't mean that you should rush to implement it on your own website, too... Maybe you just don't need a workflow. The END!  What do you think about these content management capabilities in Drupal 8? Are they powerful and diverse enough to suit your workflow needs?  ... Read more
Adriana Cacoveanu / Nov 14'2018