<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Ganesh Kumar</title>
    <description>The latest articles on Forem by Ganesh Kumar (@ganeshkumartk).</description>
    <link>https://forem.com/ganeshkumartk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F182215%2F0ab60d2f-1995-48c7-a0d0-cfa09505eea5.png</url>
      <title>Forem: Ganesh Kumar</title>
      <link>https://forem.com/ganeshkumartk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ganeshkumartk"/>
    <language>en</language>
    <item>
      <title>💥Try Flutter now on CodePen.io🎉</title>
      <dc:creator>Ganesh Kumar</dc:creator>
      <pubDate>Thu, 16 Apr 2020 04:59:55 +0000</pubDate>
      <link>https://forem.com/ganeshkumartk/try-flutter-now-on-codepen-io-4h1b</link>
      <guid>https://forem.com/ganeshkumartk/try-flutter-now-on-codepen-io-4h1b</guid>
      <description>&lt;p&gt;Have you seen &lt;a href="https://flutter.dev/" rel="noopener noreferrer"&gt;Flutter&lt;/a&gt;? It's Google's UI framework for building cross-platform apps. You write Flutter apps in the modern programming language &lt;a href="https://dart.dev/" rel="noopener noreferrer"&gt;Dart&lt;/a&gt;. Flutter packages bring app development to life fast. Flutter apps compile to honest-to-god native apps for iOS and Android &lt;em&gt;and&lt;/em&gt; a web app &lt;em&gt;and&lt;/em&gt; a desktop app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codepen.io/pen?pg=flutter" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0w1lxm5zi1n560aj07hj.png" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There have been plenty of other frameworks for building cross-platform apps in the past, but they've all kind of faked it in one way or another. Faking it meaning wrapping things in a web view or some other not-actually-native way of doing things. By being truly native, you get the speed and feel of the native platform.&lt;/p&gt;

&lt;p&gt;To be clear, you can't compile to native platforms right on CodePen. CodePen integration compiles Flutter apps to web apps such that you can use to learn the Flutter SDK and share anywhere on the web. You can still take code from there and use it in real projects though, of course, as &lt;a href="https://blog.codepen.io/legal/licensing/" rel="noopener noreferrer"&gt;public Pens on CodePen are MIT licensed&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I can see how the appeal of Flutter is extremely high for lots of companies that want their product to be everywhere, but find it hard to stomach having lots of different product teams and the struggles and costs of all that. Heck, just on the web, we used to commonly see mobile-specific teams and we're still basking in the glory of not having to do that any more thanks to &lt;a href="https://abookapart.com/products/responsive-web-design" rel="noopener noreferrer"&gt;responsive web design&lt;/a&gt;. I'm not alone in seeing the appeal, Flutter is going on 90,000 stars &lt;a href="https://github.com/flutter/flutter" rel="noopener noreferrer"&gt;on GitHub&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  🎈 Another Custom Pen Editor with just more for Flutter
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://codepen.io/pen/editor/flutter" rel="noopener noreferrer"&gt;Check out the Custom Flutter Editor&lt;/a&gt; on CodePen.io&lt;/p&gt;

&lt;p&gt;The Flutter Editor on CodePen is custom built just for Flutter. This isn't  like regular Pen Editor. Pretty cool, we think. It will still look and feel like the CodePen you are used to.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe6e4nt8lhci9fr7a8sow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe6e4nt8lhci9fr7a8sow.png" width="800" height="680"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You have all the regular features of CodePen, like the ability to save and come back to Pens later, make them private (if you're PRO), log things to the console, upload assets, and all that. These are still Pens in that they live in the regular CodePen ecosystem.&lt;/p&gt;

&lt;p&gt;You can even embed them like normal!&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/coderganesh/embed/LYpGgYL?height=600&amp;amp;default-tab=js,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;I hope you can see the potential of all this. Much more to come!&lt;/p&gt;

&lt;h2&gt;
  
  
  🎈 A Couple Things to Know about Flutter
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Google's Material Components are built right in, giving you access to useful widgets and smooth animations and transitions across all platforms.&lt;/li&gt;
&lt;li&gt;  You work with Flutter in &lt;a href="https://dart.dev/" rel="noopener noreferrer"&gt;Dart&lt;/a&gt;, Google's language that not only can compile to JavaScript for the web, but has compilers for all the other major platforms.&lt;/li&gt;
&lt;li&gt;  Everything about Flutter is free. It's an &lt;a href="https://github.com/flutter/flutter" rel="noopener noreferrer"&gt;open-source framework&lt;/a&gt; anyone can use to build apps. Check out their &lt;a href="https://flutter.dev/showcase" rel="noopener noreferrer"&gt;showcase&lt;/a&gt; of products using it.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Source: &lt;a href="//blog.google.com"&gt;Google Blog&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>flutter</category>
      <category>codepen</category>
      <category>dart</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Tensorflow + Node.js = Magic🎉💥</title>
      <dc:creator>Ganesh Kumar</dc:creator>
      <pubDate>Thu, 16 Jan 2020 16:50:02 +0000</pubDate>
      <link>https://forem.com/ganeshkumartk/tensorflow-node-js-magic-54k</link>
      <guid>https://forem.com/ganeshkumartk/tensorflow-node-js-magic-54k</guid>
      <description>&lt;p&gt;If you're a Node.js developer as well as have hands in machine learning, then you know that to deploy a pre-trained TensorFlow SavedModel, you need to do model conversion, which at times proves costly. But, not anymore. . . 😀&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhnlg2e1949h3xcazi76t.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhnlg2e1949h3xcazi76t.jpeg" width="500" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ICYMI, &lt;a href="http://tensorflow.org/js" rel="noopener noreferrer"&gt;TensorFlow.js&lt;/a&gt; is an open-source library that lets you define, train, and run machine learning models in Javascript. The library has empowered a new set of developers from the extensive JavaScript community to build and deploy machine learning models and has enabled new use cases of machine learning. For example TensorFlow.js runs in all major browsers, server-side in Node.js, and more recently, in &lt;a href="https://github.com/tensorflow/tfjs-wechat" rel="noopener noreferrer"&gt;WeChat&lt;/a&gt; and &lt;a href="https://github.com/tensorflow/tfjs/tree/master/tfjs-react-native" rel="noopener noreferrer"&gt;React Native&lt;/a&gt; providing hybrid mobile apps access to ML without having to leave the JS ecosystem. &lt;/p&gt;

&lt;p&gt;One of the key benefits of TensorFlow.js is that JavaScript developers can easily deploy a pre-trained TensorFlow model for inference. TensorFlow.js provides the &lt;a href="https://github.com/tensorflow/tfjs/tree/master/tfjs-converter" rel="noopener noreferrer"&gt;tfjs-converter&lt;/a&gt; tool which can convert a TensorFlow SavedModel, TFHub module, or Keras model to a JavaScript compatible format. However the converter tool requires JavaScript developers to install the Python TensorFlow package and learn how to use it. Further, the converter tool does not support the full set of TensorFlow ops (supported ops), so if a model contains an unsupported op, it would not be convertible with the tool.&lt;/p&gt;

&lt;h1&gt;
  
  
  🐧 Native SavedModel execution in Node.js
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;We are now excited to bring a new way for Node.js developers to easily deploy a pre-trained TensorFlow SavedModel directly with high performance and without any need for model conversion. &lt;em&gt;- TensorFlow Team&lt;/em&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now I'm excited to say that Tensorflow announced native TensorFlow SavedModel execution in Node.js. You can now bring a pre-trained TensorFlow model in SavedModel format, load it in Node.js through the &lt;a href="https://www.npmjs.com/package/@tensorflow/tfjs-node" rel="noopener noreferrer"&gt;@tensorflow/tfjs-node&lt;/a&gt; (or &lt;a href="https://www.npmjs.com/package/@tensorflow/tfjs-node-gpu" rel="noopener noreferrer"&gt;tfjs-node-gpu&lt;/a&gt;) package, and execute the model for inference without using tfjs-converter.&lt;/p&gt;

&lt;p&gt;The TensorFlow SavedModel has one or several named functions, called &lt;a href="https://www.tensorflow.org/guide/saved_model#identifying_a_signature_to_export" rel="noopener noreferrer"&gt;SignatureDef&lt;/a&gt;. If you have a pre-trained TensorFlow SavedModel, you can load the model’s SignatureDef in JavaScript through one line of code, and the model is ready to use for inference.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;tf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loadSavedModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="nx"&gt;signatureKey&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;predict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also feed multiple inputs to the model as an array or a map:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;model1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;tf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loadSavedModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="nx"&gt;signatureKey&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;outputArray&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;model1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;predict&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nx"&gt;inputTensor1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;inputTensor2&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;model2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;tf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loadSavedModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="nx"&gt;signatureKey&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;outputMap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;model2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;predict&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;input1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;inputTensor1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;input2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;inputTensor2&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to inspect the details of a TensorFlow SavedModel to find the model tags and signatures information (aka MetaGraphs), they can be parsed through a JavaScript helper API, similar to TensorFlow SavedModel &lt;a href="https://www.tensorflow.org/guide/saved_model#show_command" rel="noopener noreferrer"&gt;client tool&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;modelInfo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;tf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getMetaGraphsFromSavedModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This new feature is available in the &lt;a href="https://www.npmjs.com/package/@tensorflow/tfjs-node" rel="noopener noreferrer"&gt;@tensorflow/tfjs-node&lt;/a&gt; package version 1.3.2 and newer, for both CPU and GPU. It supports TensorFlow SavedModel trained and exported in both TensorFlow Python versions 1.x and 2.0. Besides the benefit of not needing any conversion, native execution of TensorFlow SavedModel means that you can run models with ops that are not in TensorFlow.js yet, through loading the SavedModel as a TensorFlow session in the C++ bindings.&lt;/p&gt;

&lt;p&gt;In addition to usability benefits, this also has performance implications. In our performance benchmarking tests with MobileNetV2 model (inference time), we see inference time improvements on both CPU and GPU when executing SavedModels directly in Node.js.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ux0bqmt1nd37nwpt8xh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ux0bqmt1nd37nwpt8xh.png" alt="Runtime &amp;amp; Inference time" width="512" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inputs: &lt;a href="//blog.tensorflow.org"&gt;Tensorflow Blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>node</category>
      <category>machinelearning</category>
      <category>opensource</category>
      <category>javascript</category>
    </item>
    <item>
      <title>See smiles with MLKit :)</title>
      <dc:creator>Ganesh Kumar</dc:creator>
      <pubDate>Sat, 28 Sep 2019 17:47:44 +0000</pubDate>
      <link>https://forem.com/ganeshkumartk/see-smiles-with-mlkit-3ii8</link>
      <guid>https://forem.com/ganeshkumartk/see-smiles-with-mlkit-3ii8</guid>
      <description>&lt;p&gt;So &lt;a href="https://devfest.withgoogle.com" rel="noopener noreferrer"&gt;Google's Devfest&lt;/a&gt; was last week, very exciting and all and this week whilst preparing the sample app for this post I saw this on instagram that's a nice summation of the conference:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Finstagram.fmaa8-1.fna.fbcdn.net%2Fvp%2Ffc1079ff7b66388fa7ee6dea295ac15d%2F5E280FA0%2Ft51.2885-15%2Fe35%2F31425365_372051433294466_6820026385189306368_n.jpg%3F_nc_ht%3Dinstagram.fmaa8-1.fna.fbcdn.net%26_nc_cat%3D102" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Finstagram.fmaa8-1.fna.fbcdn.net%2Fvp%2Ffc1079ff7b66388fa7ee6dea295ac15d%2F5E280FA0%2Ft51.2885-15%2Fe35%2F31425365_372051433294466_6820026385189306368_n.jpg%3F_nc_ht%3Dinstagram.fmaa8-1.fna.fbcdn.net%26_nc_cat%3D102" alt="Aptly yes!" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So Machine Learning, Machine Learning everywhere. And I don't blame them, ML is this "magical" tool that makes everything work so much better for humans.It takes a lot of effort, sometimes hours/days of "training", but the final result is, for instance, a virtual assistance that can set hair appointments for you and uses freakishnessly (is this even a word) realistic onomatopoeic sounds...&lt;/p&gt;

&lt;p&gt;But let's focus on the matter at hand.&lt;/p&gt;

&lt;p&gt;I love Firebase ❤. I know sometimes it's a headache, but it has its uses and they're very versatile. You can either use all of them in one project or just some parts of it. For example, I'm currently working on an app that uses the Real Time Database, Cloud Functions and FCM to implement a chat feature. The rest is integrated with a different Backend, but for the chat feature we use Firebase and it works like a charm (with some caveats, of course).\&lt;br&gt;
This year, Google has added the MLKit beta version to Firebase with three "simple" key capabilities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Ready to use APIs for common problems faced by ML users in real world applications such as: Text Recognition, Face Detection, Bar Code Scanning, Image Labelling, Landmark recognition&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Possibility to use these models on-device and in the cloud.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can deploy a custom model (if you have it ready in Tensor Flow Lite)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So it all looks quite interesting and in my mind this is how the conversation goes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Google&lt;/strong&gt;: Do you want to use Machine Learning in your app?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Dev&lt;/strong&gt;: Yes, sir.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Google&lt;/strong&gt;: Here are some ready-to-use APIs. If you use the horse-power in your phone to run the model, you won't have to pay anything. Now, if you want to use our machines in the cloud, then let's see those green bills..&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Dev&lt;/strong&gt;: These models don't work for my specific problem.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Google&lt;/strong&gt;: Okay, then write one using our other product and you can deploy using this product.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You might be saying now, please just show me the code...\&lt;br&gt;
The example I'm going to use in this app is a very simple smile detector. I'm an Android Dev so I'll use Kotlin because:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8zHqxSAz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.juvo.be/sites/default/files/blog/kotlin.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--8zHqxSAz--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fwww.juvo.be%2Fsites%2Fdefault%2Ffiles%2Fblog%2Fkotlin.jpg" alt="Alt-text" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First thing, dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="nf"&gt;dependencies&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
    &lt;span class="n"&gt;implementation&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;firebase&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;firebase-core&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;15.0.2&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
    &lt;span class="n"&gt;implementation&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;firebase&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;firebase-ml-vision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;15.0.0&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pretty simple, just Firebase Core and ML-Vision.&lt;/p&gt;

&lt;p&gt;The method bellow is the one I used after acquiring the image. In order to process your images you need to convert them to an object that the API understands, in this case a FirebaseVisionImage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;   &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;fun&lt;/span&gt; &lt;span class="nf"&gt;faceDetect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Bitmap&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;firebaseImage&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FirebaseVisionImage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fromBitmap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;detector&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FirebaseVision&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getInstance&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;getVisionFaceDetector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;firebaseOptions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;detector&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;detectInImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;firebaseImage&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addOnSuccessListener&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="nf"&gt;processFaces&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;}.&lt;/span&gt;&lt;span class="nf"&gt;addOnFailureListener&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;printStackTrace&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                    &lt;span class="nc"&gt;Toast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;makeText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Something bad happended. Cry in a corner."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Toast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;LENGTH_SHORT&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this method I use a bitmap (for simplicity) to create the FirebaseVisionImage but you can use other &lt;a href="https://firebase.google.com/docs/reference/android/com/google/firebase/ml/vision/common/FirebaseVisionImage" rel="noopener noreferrer"&gt;formats&lt;/a&gt; like byteArray, byteBuffer, filePath, mediaImage. Also, to create the detector which will be used to actually classify our images you need an instance of FirebaseVisionFaceDetectorOptions to configure your detector. The one I'm using looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;firebaseOptions&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FirebaseVisionFaceDetectorOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Builder&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setModeType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;FirebaseVisionFaceDetectorOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ACCURATE_MODE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setLandmarkType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;FirebaseVisionFaceDetectorOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ALL_LANDMARKS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setClassificationType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;FirebaseVisionFaceDetectorOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ALL_CLASSIFICATIONS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setMinFaceSize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.15f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setTrackingEnabled&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here I set the mode type to ACCURATE_MODE meaning I want to favor accuracy over speed. The landmarks type is set to ALL_LANDMARKS because it improved pose estimation. The classification is set to ALL_CLASSIFICATIONS because I need it to detect the smiling feature in images. The min face size tells what's the smaller face it will be able to detect, I've set this to 15% of the size of the image. Enabling tracking helps us keep track of the faces that had be found so far (if the model is presented with multiple images).&lt;/p&gt;

&lt;p&gt;Everyone who uses Firebase knows that most async APIs there work under Task objects. It's no different here, we attach a listener to receive the result of the detection when it completes successfully and another for when something wrong happens and you should shed a tear...&lt;/p&gt;

&lt;p&gt;As a result you'll receive a list (filled or not) with "Faces" that you can check many properties in. For example, you can call getBoundingBox() to check the location of the face within the image, or getSmilingProbability() which is the probability (from 0.0 to 1.0, if -1 it didn't find a smile) of this face to be smiling.&lt;/p&gt;

&lt;p&gt;For me I'm simply doing this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;fun&lt;/span&gt; &lt;span class="nf"&gt;processFaces&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;faces&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;FirebaseVisionFace&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;faces&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isEmpty&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nc"&gt;Toast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;makeText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Is there a face here?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Toast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;LENGTH_SHORT&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;face&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;faces&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;face&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;smilingProbability&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="nc"&gt;FirebaseVisionFace&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;UNCOMPUTED_PROBABILITY&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;smileProb&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;face&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;smilingProbability&lt;/span&gt;
                    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;smileProb&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                        &lt;span class="nc"&gt;Toast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;makeText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Smily face :)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Toast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;LENGTH_SHORT&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                        &lt;span class="nc"&gt;Toast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;makeText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Not a Smily face :("&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Toast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;LENGTH_SHORT&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                    &lt;span class="p"&gt;}&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="nc"&gt;Toast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;makeText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Is there a face here?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Toast&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;LENGTH_SHORT&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So for each face it finds it will check if the probability of a smile is larger than 0.5 (I could use a larger number), if so then it shows a smiley toast :). If not :(.&lt;/p&gt;

&lt;p&gt;So as a tool for speeding up development of ML models in mobile apps I reckon ML Kit does a decent job, I've written this app in a couple of hours and only because I was worried the UI was too ugly (it's still is lol). The built-in models are quite accurate (from what I've tested) and (not tested by me) the custom models are a great option for very specific applications. Let's see how much the usage and the tools will evolve in the next few months...&lt;/p&gt;

&lt;p&gt;That's it, I hope you liked this post because it was a lot of fun writing &lt;a href="https://github.com/coderganesh" rel="noopener noreferrer"&gt;it&lt;/a&gt; ;)&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>kotlin</category>
      <category>android</category>
      <category>cloud</category>
    </item>
    <item>
      <title>AI in Content Marketing ?!</title>
      <dc:creator>Ganesh Kumar</dc:creator>
      <pubDate>Sun, 28 Jul 2019 16:54:56 +0000</pubDate>
      <link>https://forem.com/ganeshkumartk/ai-in-content-marketing-72g</link>
      <guid>https://forem.com/ganeshkumartk/ai-in-content-marketing-72g</guid>
      <description>&lt;h3&gt;
  
  
  We're in a situation where the role of artificial intelligence in content marketing has reached a tipping point. It's more pervasive than most marketers realize. &lt;a href="https://betapage.co/search?query=artificial%20intelligence&amp;amp;source=post_page---------------------------" rel="noopener noreferrer"&gt;Many tools currently being used&lt;/a&gt; employ some aspect of AI, though it's not always acknowledged by software providers.
&lt;/h3&gt;

&lt;p&gt;AI is a vast subject with dozens of branches influencing content marketers. This post examines five of those promising &lt;a href="https://blog.marketmuse.com/ai-in-content-marketing?source=post_page---------------------------" rel="noopener noreferrer"&gt;artificial intelligence &lt;/a&gt;disciplines to better understand their potential impact. Specifically, we consider the current capabilities of recommendation engines, chatbots, smart automation, image processing, natural processing, and their ability to shape the future of content marketing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmartechtoday.com%2Fwp-content%2Fuploads%2F2018%2F08%2FAI-and-adoption_oqfkni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmartechtoday.com%2Fwp-content%2Fuploads%2F2018%2F08%2FAI-and-adoption_oqfkni.png" alt="Ai strategies" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Recommendation Engines Work Quite Well
&lt;/h1&gt;

&lt;p&gt;If you've ever watched a movie on Netflix, listened to music on Spotify, or shopped on Amazon, you've experienced a recommendation engine hard at work. Likewise, if you've used Curata or Scoop.it in a professional capacity as a content marketer.&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://www.toptal.com/algorithms/predicting-likes-inside-a-simple-recommendation-engine?source=post_page---------------------------" rel="noopener noreferrer"&gt;simple recommendation engine&lt;/a&gt; uses the properties of an item "liked" by a user to determine other potential recommendations. It can also use the likes or dislikes of others to recommend items. A more robust solution relies on machine learning and deep learning to consistently offer the most appropriate recommendations.&lt;/p&gt;

&lt;p&gt;Not surprisingly, the success of Amazon's recommendations has led to a number of third parties offering their own recommendation engines for &lt;a href="https://hackernoon.com/10-best-selling-online-personalized-recommendation-engines-9a7972b6310c?source=post_page---------------------------" rel="noopener noreferrer"&gt;use in eCommerce situations&lt;/a&gt;. &lt;a href="https://www.bibblio.org/?source=post_page---------------------------" rel="noopener noreferrer"&gt;Bibblio&lt;/a&gt; is one such solution built specifically for content publishers and is also available as a WordPress plugin.&lt;/p&gt;

&lt;p&gt;While related post plugins are nothing new, the application of artificial intelligence puts a whole new spin on things. Unlike simpler plugins, AI-powered ones offer suggestions that are more relevant and personalized and get better the more it's used. Expect to see continued development in the future as more players enter the field to offer improved solutions.&lt;/p&gt;

&lt;h1&gt;
  
  
  Chatbots Are Everywhere
&lt;/h1&gt;

&lt;p&gt;Chatbots are pervasive; there is no doubt. However, not all are created equal. The best take advantage of natural language processing to engage in rich conversation. Those that don't are severely limited in their interaction which can prove to be a frustrating experience.&lt;/p&gt;

&lt;p&gt;Some chatbots are rules-based while others use artificial intelligence to guide the interaction and provide a service. There are &lt;a href="https://botlist.co/?source=post_page---------------------------" rel="noopener noreferrer"&gt;all kinds of bots&lt;/a&gt;, including those for news, weather, and scheduling.&lt;/p&gt;

&lt;p&gt;Chatbots typically integrate with one or platforms such as Facebook Messenger, Skype, Slack, etc. For example, Whole Foods has a Facebook Messenger Bot that provides users with cooking inspiration, product information, and recipes. Chatbots don't need to be exceptionally practical to be well-received. Casper, the mattress company, created &lt;a href="http://insomnobot3000.com/?source=post_page---------------------------" rel="noopener noreferrer"&gt;Insomnobot-3000&lt;/a&gt; to "keep you company when you just can't fall asleep."&lt;/p&gt;

&lt;p&gt;Fortunately, content marketers can leave their programming skills at the door thanks to the &lt;a href="https://chatbotslife.com/13-of-the-best-ai-chatbot-platforms-to-increase-your-conversions-d2ab2c533696?source=post_page---------------------------" rel="noopener noreferrer"&gt;numerous bot creation platforms available&lt;/a&gt;. However, it's important to have a rich content strategy in place ahead of time.&lt;/p&gt;

&lt;p&gt;So what does the future hold for chatbots?&lt;/p&gt;

&lt;p&gt;Matt Schlicht, founder of Chatbots Magazine, believes &lt;a href="https://chatbotsmagazine.com/the-complete-guide-to-conversational-commerce-e47059293efa?source=post_page---------------------------" rel="noopener noreferrer"&gt;chatbots will power conversational commerce&lt;/a&gt;, providing greater efficiency of service. He considers this to be a "major paradigm shift in how brands and customers interact" and think it will have a major impact on improving the customer journey.&lt;/p&gt;

&lt;h1&gt;
  
  
  Smart Automation is Getting Smarter
&lt;/h1&gt;

&lt;p&gt;Automation is nothing new for content marketers. We've been using computers do this for decades. What's different is that AI increases the complexity level of the type of tasks it can automate.&lt;/p&gt;

&lt;p&gt;Smart automation incorporates a number of AI disciplines such as knowledge management, machine learning, natural language processing, and automated reasoning.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thegrid.io/?source=post_page---------------------------" rel="noopener noreferrer"&gt;The Grid&lt;/a&gt; is an AI-powered publishing tool that builds websites. No drag and drop design required, you just add the content. Simply give Molly, the Grid's AI designer, feedback and it will keep redesigning the site until you're satisfied, with absolutely no complaints.&lt;/p&gt;

&lt;p&gt;More marketers are using marketing automation to run campaigns across multiple channels and nurture customers through the entire buying cycle. It's still not commonplace, but expect to see increased adoption and greater personalization as AI offers more intelligent choices.&lt;/p&gt;

&lt;h1&gt;
  
  
  Image Processing Reaches a New Level
&lt;/h1&gt;

&lt;p&gt;Did you know Facebook is training AI to answer questions about images, &lt;a href="http://www.digitaljournal.com/tech-and-science/technology/facebook-is-training-ai-to-answer-questions-like-humans-do/article/521333?source=post_page---------------------------" rel="noopener noreferrer"&gt;just a like a human&lt;/a&gt;? At present, it can only offer curt responses, but they're working on getting more elaborate output.&lt;/p&gt;

&lt;p&gt;But what does image recognition have to do with content marketing, you ask? Companies like &lt;a href="https://clarifai.com/?source=post_page---------------------------" rel="noopener noreferrer"&gt;Clarifai&lt;/a&gt; are using artificial intelligence to tackle real-world business issues like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Saving time on organizing and curating media.&lt;/li&gt;
&lt;li&gt;  Surfacing highly relevant content.&lt;/li&gt;
&lt;li&gt;  Using images to return matching content in a visual search.&lt;/li&gt;
&lt;li&gt;  Moderating content to automatically filter anything deemed sensitive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Currently, work is underway on technology to help marketing research by analyzing the pupils of subjects as they consume different ads or try different products.&lt;/p&gt;

&lt;p&gt;In the short term, this will help shorten the development time required to create appropriate user experiences. Perhaps in the future, that technology will immediately adapt to a user's needs, serving appropriate content on the fly.&lt;/p&gt;

&lt;h1&gt;
  
  
  NLP Has Far-Reaching Implications
&lt;/h1&gt;

&lt;p&gt;For many content marketers, words are the currency by which they live. Consequently, they are most likely to be affected by advancements in natural language processing.&lt;/p&gt;

&lt;p&gt;If you've ever had autocorrect fix a typo or read a financial report from Associated Press, you've experienced natural language processing (NLP) hard at work.&lt;/p&gt;

&lt;p&gt;Understanding language is understanding thought. Human language can be vague and inconsistent, and it's in this environment that NLP seeks to understand &lt;a href="https://www.lexalytics.com/lexablog/machine-learning-vs-natural-language-processing-part-1?source=post_page---------------------------" rel="noopener noreferrer"&gt;syntax, semantics, and context&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The impact of NLP is far-reaching. Applications like &lt;a href="https://automatedinsights.com/wordsmith?source=post_page---------------------------" rel="noopener noreferrer"&gt;Automated Insights&lt;/a&gt; and &lt;a href="https://narrativescience.com/Products/Our-Products/Dynamic-Narratives?source=post_page---------------------------" rel="noopener noreferrer"&gt;Narrative Science&lt;/a&gt; automatically turn data into compelling narratives without human intervention. Others, like &lt;a href="https://www.marketmuse.com/?source=post_page---------------------------" rel="noopener noreferrer"&gt;MarketMuse&lt;/a&gt; and &lt;a href="https://www.acrolinx.com/?source=post_page---------------------------" rel="noopener noreferrer"&gt;Acrolinx&lt;/a&gt;, use AI to augment a writer's creative output.&lt;/p&gt;

&lt;p&gt;But artificial intelligence isn't putting anyone out of work anytime soon. As Portent's Development Architect &lt;a href="https://www.portent.com/blog/content-strategy/essay-natural-language-processing-impact-writers-content-digital-marketing.htm?source=post_page---------------------------" rel="noopener noreferrer"&gt;Matthew Henry&lt;/a&gt; explains, "no computer can truly understand natural language like a human being can. Even a ten-year-old child can do better than a computer."&lt;/p&gt;

&lt;p&gt;Then what should we expect? Improvements such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Making your content more readable.&lt;/li&gt;
&lt;li&gt;  Search engines getting better at understanding the content on a page.&lt;/li&gt;
&lt;li&gt;  Improved narratives generated more quickly from data of higher complexity.&lt;/li&gt;
&lt;li&gt;  More rigorous topic models to help writers create better content.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  The Future of AI and Content Marketing
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.marketo.com%2Fcontent%2Fuploads%2F2018%2F04%2FData-based-decisions-Google-example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.marketo.com%2Fcontent%2Fuploads%2F2018%2F04%2FData-based-decisions-Google-example.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We're only just getting started. Dozens of software vendors already provide a myriad of AI-powered solutions that go far beyond &lt;a href="https://blog.marketmuse.com/seo-content-analysis-tool-review/?source=post_page---------------------------" rel="noopener noreferrer"&gt;traditional tools&lt;/a&gt;. Expect to see additional &lt;a href="https://learn.g2.com/machine-learning-examples?source=post_page---------------------------" rel="noopener noreferrer"&gt;providers enter this burgeoning field&lt;/a&gt;. Some will offer dramatic improvements on existing capabilities while others will radically innovate beyond what we can even imagine.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>design</category>
      <category>devops</category>
      <category>career</category>
    </item>
    <item>
      <title>AI to Control “The Fake News” Market !</title>
      <dc:creator>Ganesh Kumar</dc:creator>
      <pubDate>Thu, 25 Jul 2019 05:57:15 +0000</pubDate>
      <link>https://forem.com/ganeshkumartk/ai-to-control-the-fake-news-market-20n1</link>
      <guid>https://forem.com/ganeshkumartk/ai-to-control-the-fake-news-market-20n1</guid>
      <description>&lt;p&gt;Fake news is the reason why the Internet is going in the wrong direction: whether if it's coming from dodgy websites or from fake social media profiles, putting fake news online is still one of the biggest (if not the biggest) problems of the current internet situation. When Mark Zuckerberg was interrogated at the &lt;a href="https://www.theguardian.com/technology/2018/apr/11/mark-zuckerbergs-testimony-to-congress-the-key-moments" rel="noopener noreferrer"&gt;Congress&lt;/a&gt;, he said that "What we need to stop the whole fake news market is an &lt;a href="https://dev.to/apium_hub/artificial-intelligence--in-math-i-trust-5fhl"&gt;AI&lt;/a&gt; who's capable of understanding what content is coming from relevant sources and what pieces of information are not reporting true facts". The question right now is: are we already at a point in which AI can understand what is "true" and what is not? Let's try and break it down in a simpler way.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does it work
&lt;/h2&gt;




&lt;p&gt;The whole process will be based on ultrafast split testing: basically, what people usually do when it comes to researching if an article is legit, is a simple Google search and, if there are many articles reporting the same news in the same way, then it should be true. The AI will be required to do it instantly, looking at multiple results and following the websites' Trust Flow listed by the &lt;a href="http://fortune.com/2017/04/25/google-search-algorithm-fake-news/" rel="noopener noreferrer"&gt;Google's algorithm&lt;/a&gt;. Once all the results are elaborated, the programmed AI will decide if the results are following relevant sources' information, like the NY Times for example.&lt;/p&gt;

&lt;h3&gt;
  
  
  Correlating the Linguistic Features
&lt;/h3&gt;

&lt;p&gt;One of the most reliable ways to detect fake news is to examine the common linguistic features across various source’s articles. Those features include sentiment, complexity, and structure. Sources that often produce fake news are more likely to use words that are exaggerated, subjective, and full of emotion.&lt;/p&gt;

&lt;p&gt;Another common feature of fake news is a sensational headline. As headlines are the key to capture the attention of the audience, they have become a tool of attracting the interest from a wider population. Fake news almost always uses a sensational headline since they are only partially limited by actual facts.&lt;/p&gt;

&lt;p&gt;There is already a type of AI (machine learning algorithms) widely deployed to fight spam email. Those algorithms analyze the text and determine if the email comes from a genuine person or if it is a mass-distributed message, designed to sell something or spread a political message.  Refining and adjusting those algorithms would make it possible to examine and compare the title and the text of a post with the actual content of the article. This can be another clue in assessing the post’s accuracy.&lt;/p&gt;

&lt;p&gt;Considering some aspects of artificial intelligence make it possible to learn from past behaviors, the best approach is to train the machine learning algorithms to improve based on past articles already proven to be fake. By doing so, it is possible to determine the most apparent commonalities and develop a foundation upon which we can predict the likelihood an article is fake.&lt;/p&gt;

&lt;h3&gt;
  
  
  Weighing the Facts
&lt;/h3&gt;

&lt;p&gt;Weighing the facts that the news is relying on is another important aspect. Artificial intelligence has developed to a stage where it is possible to examine the facts in a certain article (a Natural Language Processing engine can be used to go through the headline and the subject of the story, including the geolocation) and compare them with the facts from other sites covering the same subject. After this is done, the facts can be weighed against each other, which adds another dimension to the credibility of the story.&lt;/p&gt;

&lt;p&gt;In crypto weighing the facts could also backfire, because there are many cases when the initial report comes from within a crypto project. When the news is spread the untrue parts of the story are also replicated. That’s why it is important to add another crucial aspect of news assessment – keeping a good track of source reputation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Source Reputation
&lt;/h3&gt;

&lt;p&gt;Focusing on the news sources themselves is a very important aspect of assessing the news. Machine learning algorithms have already been successful in examining the accuracy and political bias of news sources.&lt;/p&gt;

&lt;p&gt;Artificial intelligence can also be used to find correlations with a source’s Wikipedia page, which can be examined and rated based on various criteria. For example, a longer Wikipedia description of a source associated with a higher credibility. Furthermore, words like “extreme” or  “conspiracy” are often used when describing an unreliable source. Another thing to look at is the source’s URL text. A less reliable source is more likely to have a URL with lots of special characters and complex subdirectories.&lt;/p&gt;

&lt;p&gt;Keeping a good track record of news sources is also very important, as it is necessary to constantly update the source reputation. Every piece of news should influence the overall source score, for it is important to assess every situation in a quick and accurate fashion.  &lt;/p&gt;

&lt;h3&gt;
  
  
  AI as the Creator of Fake News
&lt;/h3&gt;

&lt;p&gt;One of the biggest challenges of using artificial intelligence to combat fake news is the arms race with itself. Artificial intelligence is already used to creating incredible “deepfakes”(photos and video in which someone’s face is replaced or footage is manipulated, making it appear as if the person said something he actually didn’t). Even smartphone apps are capable of this kind of manipulation, making the technology accessible to nearly anyone.&lt;/p&gt;

&lt;p&gt;Researchers have already developed artificial intelligence capable of recognizing the manipulated image and video material. For example, through video magnification, it is possible to detect human pulse patterns to confirm whether a person is real or computer generated. This is just the beginning as technology on both sides is just going to get better and better.&lt;/p&gt;

&lt;h3&gt;
  
  
  What about Google?
&lt;/h3&gt;

&lt;p&gt;As mentioned in the split testing paragraph, Google's algorithm determines which website has good and reliable content and because of that the AI who's responsible for the fake news reporting must be "Google trained": following the crawlers' criteria, all the pages that are listing news about delicate subjects such as politics, medicine, war etc. must be inspected first, to see if there is a possible discrepancy somewhere else.&lt;/p&gt;

&lt;h3&gt;
  
  
  Human Intelligence is Still Crucial
&lt;/h3&gt;

&lt;p&gt;Humans will still play an important role in the process of news assessment. There are complex cases where humans will have to work together with technology to efficiently address the situation. The evolution of artificial intelligence should reduce the number of such situations, but it is likely human intervention will still be required for quite some time.&lt;/p&gt;

&lt;p&gt;Audience awareness and critical thinking are additional aspects of human intelligence. People should be encouraged to always investigate information rather than simply sharing it. Sharing means giving credibility to an article. People who know you personally and trust you will more likely believe the shared post and won’t necessarily question its factuality.&lt;/p&gt;

&lt;p&gt;The good news is that the audience exposed to factual reporting is much more likely to differentiate between real and fake information. Therefore, a lot can be done just by sharing true information as much as possible.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Once it's found
&lt;/h2&gt;

&lt;p&gt;If the AI finds out that there is a random viral article online with distorted information, it will be required to report it to relevant authorities. Currently, this is done manually and that's why many different pieces of information are left behind while they keep on getting shares and comments. With an automated and fast AI, this would literally be a game changer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some Data
&lt;/h2&gt;

&lt;p&gt;During the last year, the amount of interest over the fake news subject has risen up consistently. The current fake news market is currently fluctuating between 70.8 thousand / 118 thousand clicks per month on Google Search and has over 251.2 thousand mentions on Twitter per month. In a recent poll, it was estimated that 64% of the people interviewed said that fake news caused "a great deal of confusion", as included in the infographic below.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is it possible right now?
&lt;/h2&gt;

&lt;p&gt;Let's put it straight here: this kind of &lt;a href="https://apiumhub.com/tech-blog-barcelona/top-tech-trends-technology-landscape/" rel="noopener noreferrer"&gt;AI technology&lt;/a&gt; is already possible to create, manage and develop since it's basically the same process that happens with &lt;a href="https://www.apadmi.com/" rel="noopener noreferrer"&gt;mobile app development&lt;/a&gt;. The problems are revolving around Facebook, Twitter and Tumblr (this last one after the recent scandal with Russian accounts spreading fake pieces of information on the micro-blogging platform), since every single one of those has its own architecture and its reporting process when a piece of content is not following guidelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  It's a startup thing
&lt;/h2&gt;

&lt;p&gt;There are not many companies who are trying to develop an AI who's able to control and manage an insane amount of traffic, while constantly split testing with many other results to guarantee the veracity and the user experience when it comes to a news article. The brightest one, without any doubts, is Factmata: a London-based startup with Mark Cuban on the lead. Not only &lt;a href="https://www.bloomberg.com/news/articles/2018-02-01/twitter-craigslist-co-founders-back-fact-checking-startup-factmata" rel="noopener noreferrer"&gt;Factmata&lt;/a&gt; has attracted personalities like Craigslist's founder Craig Newmark, but also the Twitter's Co-Founder Biz Stone. They are currently listed in the top startups to watch out in 2018.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fake news infographic: numbers
&lt;/h2&gt;




&lt;h3&gt;
  
  
  &lt;a href="https://apiumhub.com/wp-content/uploads/2018/06/Fake_News_Numbers_Infographic-700x3124-1-1.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--IAGMmFHn--%2Fc_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880%2Fhttps%3A%2F%2Fapiumhub.com%2Fwp-content%2Fuploads%2F2018%2F06%2FFake_News_Numbers_Infographic-700x3124-1-1.jpg" width="800" height="400"&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;AI will be a central point in news and content administration in the near future, following Google and Facebook's guidelines, terms and conditions, most likely. What we should expect in the next 5 years is a user-friendly interface that tells what and where are the dodgy articles.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>fake</category>
      <category>machinelearning</category>
      <category>mmachinelearning</category>
    </item>
  </channel>
</rss>
