LATEST FROM OUR BLOG

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

How to 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
AI vs Machine Learning: Is AI Different from Machine Learning? Or Are They the Same Thing?
AI, AR, VR, ML, DL... AR vs Machine Learning: is there a difference between these 2 technologies? Which one(s)? Or do these 2 acronyms refer to the very same tech? Keeping up with which tech does what, with parsing the differences between all the fancy 2-letter acronyms emerging these days becomes increasingly challenging. Especially when the terms are often used interchangeably, like artificial intelligence and machine learning. Now that's frustrating: how could you possibly distinguish a clear-cut demarcation line between such a broad concept and “catch-all” term as AI (or “machine intelligence”) and machine learning? Time to shed some light here:   1. What Is Artificial Intelligence? A more than succinct, yet descriptive enough definition would go something like this: The capability of a machine to perform tasks that require human intelligence. And here I'm referring to tasks such as:   recognizing images/voices understanding languages, translating planning problem-solving learning   In short: once a computer system reaches a level where it understands, analyzes, tells the difference between objects and makes decisions all by itself — based on understood criteria —  then we can already talk about artificial (or machine) intelligence.  Now, a more detailed definition of artificial intelligence would be: The theory and development of machines that mimic intelligent human behavior. That carry out tasks requiring human intelligence, in a more human-like way: they can reflect, make decisions, interact with humans and perform different complex tasks.   2. AI: Types and Applications We couldn't talk about a complete and accurate “AI vs machine learning” analysis without focusing on the artificial intelligence typology and its specific applications. Therefore, you should know that AI comes in two different “flavors”:   2.1. General AI It involves broader applications: A machine that learns to perform a wide range of complex tasks (that require human intelligence) and gains the ability to solve various problems in a human-like way. Therefore, being broader in scope, general AI is harder to achieve than the “applied AI” alternative: In fact, we don't yet have systems or devices capable to successfully handle any task that a human being can. That type of machine capable to mimic the human brain, to understand, interpret, respond to various stimuli...   2.2. Applied AI (or “Vertical” or “Weak” or “Narrow”) Defining the applied or “weak” AI is crucial for properly identifying the clear-cut differences between AI and machine learning: It's that type of artificial intelligence — of “smart” system — that addresses a specific need. That focuses on handling one single predefined task (e.g. personalizing ads or trading stocks). But maybe a few examples would be more appropriate for you to grasp the full meaning of applied AI:   LinkedIn messaging Netflix recommendations Spotify discovery mode Siri   3. AI vs Machine Learning: What Is Machine Learning More Precisely? First of all, we should make it clear that: Machine learning is a subset of artificial intelligence. And if we are to detail this statement a bit: Machine learning is that subcategory of AI that uses statistical techniques to identify patterns of repetition in databases. Once properly trained, it can analyze loads and loads of data sets, predict accurate outputs and sort new inputs all by itself (e.g. voice search). For instance, after going through huge volumes of customer data, it can recommend the most appropriate products, based on online shoppers' past choices and search history. Or it can trigger certain functionalities of a software based on a particular user's voice.  “But what do you mean by “training” a machine learning?” Here, I'm referring to “neural networks”. Basically, for each machine learning there's a neuronal network programmer (or a team of them) who builds these networks for training and learning. And what he does more precisely is choose specific factors of importance to determine the outcome of a given situation. And they keep “polishing” and further adjusting these factors (or “weighs”) in the outcome until the network reaches the proper result according to the given input. Once the machine learning reaches that level where it's capable to understand and to adjust the factors of importance on its own, to deliver accurate results (in real-time), it will keep improving itself. It will keep “learning” how to deliver more and more accurate results without any human intervention. In short: you “feed” the algorithm with huge volumes of data and it will then learn, adjust itself and continuously evolve when it comes to determining the most accurate outcome of a situation. Just think:   image recognition voice recognition   Now, in an AI vs machine learning debate, one where we're trying to identify the differences between the two concepts, we can say that: Artificial intelligence is the broad concept, whereas machine learning is the technology powering much of the development in the AI field. That machine learning is a type of AI that learns — while getting fed huge amounts of data  — and improves all by itself.  With no human intervention to keep “telling” it which is the matching rule between new inputs and the most probable outputs.   4. In Conclusion... What better way of ending this comparative analysis of the two terms/techs then by pinpointing the main differences between AI and machine learning in a shortlist?  Therefore, here it goes:   while machine learning can exist without AI, the latter can not exist without ML (the main reason behind the confusion when using these terms and why their definitions are often interchanged) once a machine can make a choice or any decision on its own, once it can spot the difference between 2 items, it grows into AI; then, there's more than machine learning technology that's being leveraged there   The END!  Is it clearer for you now which is the key difference between the two concepts? Where precisely you should draw the demarcation line between these 2 technologies? ... Read more
Adriana Cacoveanu / Nov 12'2018
Can LastPass Just Block Your Account and Withhold Your Passwords? Yes! Here Is What They Have Put Us Through
What if you lose your LastPass master password? Then you're doomed... You'll lose your password vault for good. But hey, you can still to lose all your sensitive data even if you don't forget that crucial password! I mean, if it has already happened to us... Apparently, there's no guarantee that one day, for no reason, LastPass won't:   lock you out of your account and block your access for... mere fun keep advising you to use their recovery password form… one that doesn't work and that you had already tried, several times, with no success keep suggesting that you're some sort of a "liar", insisting that you had, in fact, changed your master password and that's why you can't log in now keep giving you a "suicidal" advice: delete your account and open a new one, even if this means losing all your data refuse to allow you to retrieve the data that you stored in your "old" account to export it to that new account they keep insisting to create refuse to refund you the money you had paid, in advance, for a service that apparently doesn't serve your needs: it keeps you blocked out and puts a garnishment on your passwords   So, just beware of which company you choose to trust with your sensitive data! Their "The last password you'll ever need" slogan might just turn into: "The last password you'll ever have". For once they block you, you'll be left with... none.  But let's rewind and go back to the day when it all started. Little did we expect for it to turn into our worst-ever scenario, considering that we had been happy LastPass users since... 2009.   1. It Started Like Just Another Ordinary Log In to Our LastPass Account... But —  surprise, surprise — we couldn't sign in. And our master password was the same old one: we did NOT forget it! I mean, we had been LastPass users for almost 10 years': We were fully aware of what would happen if we ever lost that priceless password! So, we jumped straight to their “Recover Account” form, which brutally served us the following message: And it was about that time that things started to go wrong. When the “ordinary” slowly turned into... extraordinary: An extraordinarily bad experience with the LastPass support team.   2. When in Trouble, Contact LastPass Support and... Start a Deaf Dialogue This is where our deaf dialogue with lovely Michelle from LastPass's support team started. And it was such a nice and fruitful chat that we had there! I let her know that, by some mysterious reasons, that day, from all the other days in the previous 9 years, I couldn't access our account. Nor could I use their recovery account system for... it didn't work. Lovely Michelle either:   suggested that I was lying when I told her about my attempts to use their recovery account form understood everything just too well, but she had a script to follow, so she decided to ignore parts of my message thought she was dealing with some a retarded person    … and told me that, in fact, I had managed, somehow, to change my master password. Then she kindly advised me to... go through their recovery account steps. Even though I had told her I already had done that. But, who was I to come in between her and the script she had to follow blindly? And then came her somehow “suicidal” advice for us, the OPTASY team, one of the loyal LastPass customers: To delete my current account (for which I had already paid in advance) and create a new one! Just like that!   3. News Alert! LastPass Can Block You Out and Withhold Your Stored Data For that's what happens when they advise you to delete your account and “start over”: Your password vault goes... down the drain or gets stuck in their cloud, no matter how you want to look at it. Here's a tricky question for you: What would be a worse scenario for you?    To lose all the passwords that you've trusted LastPass with? To lose all your passwords with no guarantee that no one else can access them later on?   And here's charming Michelle's brutally honest answer to my legitimate question(s): “What's gonna happen with all the records in our OLD account? How can we import them into the new one?” And that reply just... sent cold shivers down our spines...   4. Being Punished Without Fault: No Refund and No Chance to Export Our Data Now, you do guess that it was about then that we reached the climax of our conversation with the LastPass support team (aka Michelle). And so, masochistically enough, we dared to pop up another question: “If you're not able to help me reset the password, please let me know how can I export all the data from my old account and refund the money I paid in advance.” The answer was a... slap in the face, like the previous ones: To sum up now:   locked out from our LastPass account, after several years left to somehow make their not-working “recovery account system”... work for us forced to keep trying it over and over again given just one option: to create a new account and lose all our passwords (and the money paid in advance, as well)   Can you imagine that we trusted LastPass for years?  And that we ended up getting treated like this? With no fault.   5. Their Invariable Response? To Start Over and Knowingly Lose All Passwords Needless to add that I kept on explaining to the LastPass support that in vain did they point out to the recovery steps to take: I had already taken them, even before I had even contacted them in the first place. With zero success... I claimed back the money we had paid in advance for their password manager service, as well as the possibility to export our password to that new account that they insisted that we should set up. Michelle's answer: The END! No happy ending, though, to this story of our terrible experience with LastPass. Who would have thought that all these years we were trusting them with our most valuable data! And that one day they'd just... kick us out and withhold precisely that sensitive data with:   no fault from our side no clear explanation on their side So, just beware, be informed, be skeptical about trusting LastPass... ... Read more
Adriana Cacoveanu / Oct 12'2018
Can I Trust LastPass with My Passwords? No! Our Unexpectedly Bad Experience with Them
“Trust LastPass at your own risk!” would be our answer. One based both on:   this password manager's own “beefy” record of critical security vulnerabilities, cross-site scripting bugs, breaches and major architectural issues our bad experience with LastPass, as a client   And before we dig into the heavy load of evidence that we base our “case” on, allow us to expose some of their former clients' testimonials:   “I lost my entire LastPass passwords in March 2017. It was a disaster for me. I have had LastPass since the beginning, can you imagine all the passwords saved over the years? I think you should do some research on LastPass and the changes, the bad changes that have happened with LastPass” (Barbara's comment, 5 Best LastPass Alternatives to Manage Your Passwords)   “About a month ago when I tried to log in to LastPass I got the message that I had entered the wrong vault password - but I can assure you that nor I, nor my cat has changed it... When I contacted LastPass, they in a rude manner "taught" me that what I hadn't experienced what I had in fact had experienced, since it is "impossible", and their "help" consisted in giving me the clue to the main password to LastPass - i.e. the password, which I explained to them isn't valid anymore... “ (Robert's comment, You Should Probably Stop Using LastPass Temporarily) “Around a month ago I switched from LastPass to Bitwarden as my password manager. To make sure my passwords were protected I deleted my LastPass account, now I get an email asking me to renew my subscription for my DELETED LastPass account. I wonder what else they stored about me... “ (user/dumah310, LastPass storing email from deleted account) 1. But First: How Does LastPass Work? In plain language: LastPass stores your encrypted passwords (and secure notes) in the cloud and secures them via a master password. And the “master password” is both the strength and the main vulnerability of this password management service. Now before I back up the above statement with our own experience with LastPass, here's an excerpt of an “enlightening” HackerNews post: “Users must also devise a “master password” to retrieve the encrypted passwords stored by the password management software. This “master password” is a weak point. If the “master password” is exposed, or there is a slight possibility of potential exposure, confidence in the passwords are lost.“ 2. 5 Security Vulnerabilities Over the Last 7 Years... and Still Counting “How secure is LastPass from being hacked?” I'll leave it to you to evaluate it while going through its “impressive” record of security flaws and vulnerabilities reached over the last years:   2.1. In 2011 a Cross-Site Scripting Vulnerability Was Detected   In February 2011 Mike Cardwell, a security researcher, tracked down an XSS bug on the company's website. Once “exploited”, this vulnerability could basically enable attackers to steal:   hashed passwords the list of websites that users log into (along with the IP addresses, time and dates of their logins) their email addresses underlying cryptographic salts   LastPass fixed that bug within hours.   2.2. That Same Year A Second “Likely” Security Breach Was Identified Later on that year, in May, the company's team spotted a new “anomaly” in both their incoming and outgoing network traffic. Therefore, suspicions arose that a hacker might have accessed their servers. What kind of risks did this “abnormal activity” entail? Well, the attacker could check thousands of passwords in a short period of time, using a combination of user emails, guesses on their master password and the salt. As LastPass CEO confirmed it himself back then, in an interview for PCWorld.com: “ You can combine the user's e-mail, a guess on their master password, and the salt and do various rounds of one-way mathematics against it. When you do all of that, what you're potentially left with is the ability to see from that data whether a guess on a master password is correct without having to hit our servers directly through the website.”    2.3. In 2015 A Hacker Attack Compromised the Company's Servers   Here's another answer to your “Can we trust LastPass?” question: In June 2015 a post on the company's blog announced that their team had detected suspicious behavior on their network. The result? LastPass servers got hacked and the cryptographically protected content compromised. And we're talking here about:   user passwords password reminders cryptographic salts email addresses   2.4. In 2016 A Vulnerability that Enabled Reading Plaintext Passwords Was Exposed Within a year, in July 2016, a new security vulnerability in the autofill functionality was identified and then detailed by the representative of DETECTIFY, an independent online security firm. Basically, the article raised new suspicions about whether one could trust LastPass with their passwords: The URL-parsing code of the LastPass browser extension — the HTML piece of code that was added to every page that the “victim” would visit —  was poorly written. Sloppy enough to enable a potential attacker to read plaintext passwords once the user landed on a malicious website.   2.5. In 2017 a “Major Architectural Problem” Was Discovered  In June 2017 Google's security researcher Tavis Ormandy made a new discovery: A security vulnerability in the LastPass Chrome extension (that applied to Firefox and Edge, as well), which, once exploited, could enable a hacker to steal passwords or engage in remote code execution. He described it as a “major architectural problem” to point out that this time we weren't facing some... signs of carelessness, but a hole in LastPass' security shield instead. “How safe is LastPass?” Users started to ask themselves again and many even started looking for alternatives.   3. About Our Own Unexpectedly Bad Experience as a LastPass Client  Let us share with you some glimpses of our rough experience as LastPass users.  I would start by saying that: Yes, the worst-possible scenario did happen to us. We've apparently lost all the passwords “safely” stored in our LastPass account. There are zero chances to retrieve them, to export them to another password manager or/and to get a refund, considering that we had paid for one year in advance. How did it all begin? With us trying to log into our account, as usual. But, we got this “welcome” message instead: “Invalid password” We next tried to reset our master password, using their reset password form. With no success, though: “LastPass account recovery failed for... Your current web browser did not save account recovery data on this computer. Please try account recovery again with every browser and on every computer you...” And then the “dialogue of the deaf” began, with: Us stating that we did NOT reset our password, for it was not possible and the LastPass support team claiming that we did restart it. And telling us that there's no option but to:   create a whole new account say goodbye to all our passwords "safely" stored there for good; there's no chance to export that user sensitive data to another password manager service lose all hope of getting a refund for the money we had paid in advance, due to their “No refund policy”   In short: if for some mysterious reasons, one day LastPass doesn't recognize your current master password anymore and you're not allowed to reset it either... you're doomed. Now, can you guess what's our answer to this question: “Can we trust LastPass?”   4. Bottom Line: Should You Trust LastPass? “Trust this service at your own risk!” For one day, no matter whether you've:   disabled the auto-fill functionality enabled a two-factor authentication (for both LastPass and your other critical accounts) chosen an "invincible” master password for your LastPass account kept both your software and your machine “spotless clean” and up-to-date used one different password per account   … you still run the risk to find yourself locked out!   Just talking from experience...   ... Read more
Adriana Cacoveanu / Oct 09'2018