<?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: theishanbh</title>
    <description>The latest articles on Forem by theishanbh (@theishanbh).</description>
    <link>https://forem.com/theishanbh</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%2F732937%2F3085f801-a8e9-439a-a221-ecd39dbb17ea.jpg</url>
      <title>Forem: theishanbh</title>
      <link>https://forem.com/theishanbh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/theishanbh"/>
    <language>en</language>
    <item>
      <title>what do you know about YANG?🤠</title>
      <dc:creator>theishanbh</dc:creator>
      <pubDate>Sun, 23 Mar 2025 07:02:24 +0000</pubDate>
      <link>https://forem.com/theishanbh/what-do-you-know-about-yang-24da</link>
      <guid>https://forem.com/theishanbh/what-do-you-know-about-yang-24da</guid>
      <description>&lt;p&gt;You may know JSON and YAML and how they are sometimes used to write app configurations. But when it comes to networking devices we have something similar called YANG (Yet Another Next Generation).&lt;/p&gt;

&lt;p&gt;In the battle of config formats, JSON and YAML are vibing at the afterparty— YANG’s out here managing the entire venue.&lt;/p&gt;

&lt;p&gt;If you've ever fiddled with networking devices, and configuration protocols, or just wondered how big telecom giants manage to speak a common language across millions of devices, you have your answer now.&lt;/p&gt;

&lt;p&gt;YANG (Yet Another Next Generation) is a data modeling language, primarily used to model configuration and state data manipulated by the NETCONF protocol. It's now expanded to several protocols such as RESTCONF, CLI and more.&lt;/p&gt;

&lt;p&gt;It’s not some fringe tech; it’s the backbone of modern network automation, powering SDN (Software-Defined Networking), cloud infra, IoT setups, and any scenario where zillions of networking devices need to stay sane and synced&lt;/p&gt;

&lt;h2&gt;
  
  
  🎨 How Does It Look?
&lt;/h2&gt;

&lt;p&gt;Here’s a quick taste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yang"&gt;&lt;code&gt;&lt;span class="kd"&gt;module&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;example-device&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="kd"&gt;namespace&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://example.com/device"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="kd"&gt;prefix&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;

  &lt;/span&gt;&lt;span class="kd"&gt;container&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;device-config&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="kd"&gt;leaf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hostname&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="kd"&gt;leaf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;enabled&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="kd"&gt;default&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Easy to read, right? Just think of it as a typed, structured blueprint describing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What kind of data/config exists (containers, lists, leaves)&lt;/li&gt;
&lt;li&gt;What types (int, string, boolean, enums, etc.)&lt;/li&gt;
&lt;li&gt;Constraints (defaults, ranges, uniqueness)\&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎯 Should You Learn YANG?
&lt;/h2&gt;

&lt;p&gt;Yes, if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You’re diving into network automation, SDN, or telco software.&lt;/li&gt;
&lt;li&gt;You want to build network-aware tooling (e.g., Ansible plugins, monitoring systems).&lt;/li&gt;
&lt;li&gt;You like the idea of declarative, structured models controlling physical 
infra.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No, if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're happy in pure app dev land and don’t touch network hardware.&lt;/li&gt;
&lt;li&gt;You get XML hives. (YANG outputs often use XML-based protocols.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🕹️ Why Do Devs Care?
&lt;/h2&gt;

&lt;p&gt;Let's understand how it is helping developers.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;1. Vendor-Neutral Config Magic&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;Tired of writing custom code for every network vendor's gear? YANG gives a standard format, so config tools like NETCONF clients can dynamically adapt to devices.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;2. API Generation&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;YANG models can auto-generate REST APIs (via RESTCONF), turning dumb boxes into programmable, API-first systems.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;3. Validation &amp;amp; Versioning&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;Think JSON Schema, but better. YANG handles complex validation rules, deprecation markers, and backward-compatible changes like a pro.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. &lt;em&gt;Automation-Ready&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;DevOps + NetOps = YANG + NETCONF + Ansible/Puppet integrations = fully automated network deployments.&lt;/p&gt;

&lt;h2&gt;
  
  
  📜 How’s It Different from JSON or XML?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Yang is much more strongly typed.&lt;/li&gt;
&lt;li&gt;It supports imports and includes.&lt;/li&gt;
&lt;li&gt;It has tight constraints and data hierarchies&lt;/li&gt;
&lt;li&gt;Purpose-built for network config/state data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚡ Real-World Usage
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Telecom Giants: Nokia, Huawei, Cisco —all use YANG models.&lt;/li&gt;
&lt;li&gt;Cloud Providers: Automating data center switches and routers.&lt;/li&gt;
&lt;li&gt;SDN Controllers: OpenDaylight, ONOS—they breathe YANG.&lt;/li&gt;
&lt;li&gt;IoT Networks: Ensuring millions of devices have unified configs.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🔥 Final Thoughts:
&lt;/h2&gt;

&lt;p&gt;YANG may sound niche, but it’s the lingua franca of modern networking. It’s elegant, declarative, versioned, and scalable. If infra is your playground, YANG is the tool that lets you describe that playground precisely.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wanna Dive Deeper?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://datatracker.ietf.org/doc/html/rfc7950" rel="noopener noreferrer"&gt;RFC 7950 - YANG 1.1 Spec&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/openconfig/public" rel="noopener noreferrer"&gt;OpenConfig Models (Actually Used IRL)&lt;/a&gt;&lt;/p&gt;

</description>
      <category>networking</category>
      <category>yang</category>
      <category>netconf</category>
    </item>
    <item>
      <title>Make your first FaceAuth Webapp with FaceIO</title>
      <dc:creator>theishanbh</dc:creator>
      <pubDate>Wed, 10 Aug 2022 18:57:00 +0000</pubDate>
      <link>https://forem.com/theishanbh/make-your-first-faceauth-webapp-with-faceio-1b8e</link>
      <guid>https://forem.com/theishanbh/make-your-first-faceauth-webapp-with-faceio-1b8e</guid>
      <description>&lt;p&gt;The most essential part being a dev is learning continuously. It is important to stay updated with the latest tech around. Lately, AI (Artificial Intelligence) has advanced rapidly and is destined to bring a revolution. &lt;/p&gt;

&lt;p&gt;One of the latest development in the field is FaceAuth. At the present day, it has become much easier to take one look at the phone and open it within a matter of milliseconds. Today, we will learn how to implement this in a webapp. &lt;/p&gt;

&lt;p&gt;We will use API provided by &lt;a href="https://faceio.net/" rel="noopener noreferrer"&gt;FaceIO&lt;/a&gt; to implement FaceAuth in our webapp!&lt;/p&gt;

&lt;h2&gt;
  
  
  Why FaceIO?
&lt;/h2&gt;

&lt;p&gt;After doing much research, I decided to go with FaceIO. It provides a simple API and can be integrated within minutes. It provides a library, &lt;code&gt;fio.js&lt;/code&gt; which uses simple calls and methods to quickly setup authentication for your platform. The best part is gives extremely results without the requirement of superior cameras or sensors. Also, you can easily integrate your webapp easily with whatever framework or tech you love to work with. ( eg. React, Vue, Python and more ) &lt;/p&gt;

&lt;p&gt;Let's look at a few reasons why I liked FaceIO:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Access&lt;/strong&gt; : FaceAuth gives you easy access to your favourite apps. I hate going to my password manager apps to look for passwords each time I don't remember it. Why go to a password manager when I can authenticate by simply looking at my screen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Experience&lt;/strong&gt; : As a developer our foremost mission is to make life easier for the world. With FaceAuth, a new user can practically register within seconds and it also removes hassle of remembering passwords.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low Cost&lt;/strong&gt; : Face unlock is now a common feature in mobile devices but they are backed by superior cameras and sensors. With the help of AI, one does not need super cutting edge technology to implement the same in devices such as laptops or low end webcams.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight Library&lt;/strong&gt; : It is really lightweight to add these features. For example, we can setup FaceAuth with fioJs (library by FaceIO) and keep it up and running with a few lines of code. &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Tutorial
&lt;/h2&gt;

&lt;p&gt;We will be using Vanilla HTML and JS to implement FaceAuth today by making a very simple webapp. &lt;/p&gt;

&lt;p&gt;Firstly, you need to create your public FaceIO API key.&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps to generate your API Key
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Firstly, visit the &lt;a href="https://console.faceio.net" rel="noopener noreferrer"&gt;console&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Create a new FaceIO application.
&lt;img src="https://media.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%2Fqmmmjff6yca7y2k4rjb4.png" alt="Selecting new FaceIO application"&gt;
&lt;/li&gt;
&lt;li&gt;Follow with the FaceIO Application &lt;a href="https://console.faceio.net/" rel="noopener noreferrer"&gt;Wizard&lt;/a&gt;.The Application &lt;a href="https://console.faceio.net/" rel="noopener noreferrer"&gt;Wizard&lt;/a&gt; will automate and simplify the process down to a few clicks. You will have to choose an application name for your app, select a facial recognition engine, cloud storage region out of the given options, reviewing security options, customizing the Widget layout and more. You now have to save your public API key.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.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%2F1k74aqmxpainjwm2iqem.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F1k74aqmxpainjwm2iqem.png" alt="Application Wizard FaceIO"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Integrating the library
&lt;/h3&gt;

&lt;p&gt;We'll be following through the integration guide provided by FaceIO. You can find it &lt;a href="https://faceio.net/integration-guide" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Since I'm using VS Code as my IDE, I'll be using &lt;a href="https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer" rel="noopener noreferrer"&gt;Live Server extension&lt;/a&gt; to host my website locally. &lt;/p&gt;

&lt;p&gt;We are gonna use the below boilerplate to start our project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;http-equiv=&lt;/span&gt;&lt;span class="s"&gt;"X-UA-Compatible"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"IE=edge"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Document&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We are going to now make a simple UI. We'll use a one heading , two button template to setup this basic project. The first button would be used to register a new user, while the second button will be used to implement authentication. We would also be adding some CSS to center the content and make it look uniform across the webpage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;18px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;HTML&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;FaceAuth WebApp&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;br&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"Register a new user on the FaceIO Application"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Register User
      &lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt;
        &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"Authenticates a user already registered on the running FaceIO applicaiton"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Authenticate User
      &lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, we need to import the fio.js library provided by FaceIO. This is the power of the engine that lets us implement FaceAuth within a matter of minutes. You can learn more about instantiating the fio object &lt;a href="https://faceio.net/integration-guide#fiojs-instantiate" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"faceio-modal"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://cdn.faceio.net/fio.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything is now setup, at least visually. Now, to make the buttons actually working and to implement the registration and authentication, we will have to first &lt;a href="https://faceio.net/integration-guide#fiojs-instantiate" rel="noopener noreferrer"&gt;instantiate&lt;/a&gt; a FaceIO object.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text/javascript"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;faceio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;faceIO&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;app-public-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// enter your public id&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We will now create two functions and associate them to the buttons. &lt;/p&gt;

&lt;p&gt;The first function will be the &lt;a href="https://faceio.net/integration-guide#enroll" rel="noopener noreferrer"&gt;register&lt;/a&gt; function, this function will be implemented to register new users. To do this, we would now use the &lt;code&gt;enroll&lt;/code&gt; &lt;a href="https://faceio.net/integration-guide#enroll" rel="noopener noreferrer"&gt;method&lt;/a&gt; provided by fio.&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;function&lt;/span&gt; &lt;span class="nf"&gt;registerUser&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;faceio&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;enroll&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
            &lt;span class="na"&gt;locale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;auto&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Default user locale&lt;/span&gt;
            &lt;span class="na"&gt;userConsent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// True if user consent collected&lt;/span&gt;
            &lt;span class="na"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
              &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;13795&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// dummy id used for demo&lt;/span&gt;
              &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;example@example.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// dummy email for demo&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="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;userInfo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="c1"&gt;// User Successfully Enrolled!&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userInfo&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;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;errCode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;errCode&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;We can pass a bunch of options in our parameters. Explore more about the parameters &lt;a href="https://faceio.net/integration-guide#enroll_param" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;payload&lt;/em&gt; : This is the essential information you would wish to pass. This includes information such as email, id, name, etc.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;locale&lt;/em&gt; : This decides the language for register/sign-in popup. By default, it has a value &lt;code&gt;auto&lt;/code&gt; which deduces the language for you. But you can assign a value yourself if you require to.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;userConsent&lt;/em&gt; : FaceIO ensures that users are compliant with their policies. So you can enabling accept their terms and services while signing up with fio, if not mentioned explicitly on your website.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;enrollIntroTimeout&lt;/em&gt; : The time in seconds for a user to register or enroll. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We now need to link this function to register button.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;onclick="registerUser()"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second function will be the &lt;a href="https://faceio.net/integration-guide#authenticate" rel="noopener noreferrer"&gt;authenticate&lt;/a&gt; function, this function will be implemented to authenticated existing users. To do this, we would now use the &lt;code&gt;authenticate&lt;/code&gt; method provided by &lt;a href="https://faceio.net/integration-guide#authenticate" rel="noopener noreferrer"&gt;fio&lt;/a&gt; library.&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;function&lt;/span&gt; &lt;span class="nf"&gt;authenticateUser&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;faceio&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;authenticate&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
            &lt;span class="na"&gt;locale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;auto&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Default user locale&lt;/span&gt;
          &lt;span class="p"&gt;})&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;userData&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Success, user recognized&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="c1"&gt;// faceio generates unique faceid for each user&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Linked facial Id: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;userData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;facialId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
              &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Associated Payload: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;payload&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="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;errCode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;errCode&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;We now need to link this function to authenticate button.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;onclick="authenticateUser()"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And we are finished making our first FaceAuth webapp with the help of FaceIO's library fiojs. Feel free to check out the &lt;a href="https://faceio.net/integration-guide#boilerplate" rel="noopener noreferrer"&gt;HTML boilerplate&lt;/a&gt; provided by FaceIO to kickstart your integration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fjzrmf4332olo0alxzwcq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fjzrmf4332olo0alxzwcq.png" alt="FaceAuth with FaceIO"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Some Links to Get Started
&lt;/h2&gt;

&lt;p&gt;If you wish to further build and create something interesting out of the project we made, you can check out the below links!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://faceio.net/getting-started" rel="noopener noreferrer"&gt;Getting Started Tutorial&lt;/a&gt;: Learn the fundamentals. Your first steps with FACEIO.&lt;br&gt;
&lt;a href="https://faceio.net/integration-guide" rel="noopener noreferrer"&gt;Integration Guide&lt;/a&gt;: Learn how to implement fio.js, the facial recognition library on your website before rolling facial authentication to your audience.&lt;br&gt;
&lt;a href="https://faceio.net/dev-guides" rel="noopener noreferrer"&gt;Developer Center&lt;/a&gt;: It contains code samples, documentation, support channels, and all the resources you need to implement FACEIO on your website.&lt;br&gt;
&lt;a href="https://faceio.net/faq" rel="noopener noreferrer"&gt;Frequently Asked Questions&lt;/a&gt;: Get answers to all your general queries when starting out.&lt;br&gt;
&lt;a href="https://faceio.net/trust-center" rel="noopener noreferrer"&gt;Trust Center&lt;/a&gt;: Learn how FaceIO handles your data securely and in compliance with privacy and legal requirements.&lt;br&gt;
&lt;a href="https://medium.com/@ariankooshesh/face-it-faceio-just-makes-it-easy-7f975875030" rel="noopener noreferrer"&gt;Implement Facial Authentication on your Vue.js App&lt;/a&gt;: Learn how to implement faceIO with a framework like VueJS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;We have successfully implemented FaceAuth on our simple webapp. As consumers are prioritizing convenience and security over everything, as developers it is much important for us to stay updated with consumers needs and technological advancements. As AI is taking a big leap, jumping with it is the best option. If you have any question or made something interesting from today's discussion you can reach me out on &lt;a href="https://twitter.com/theishanbh" rel="noopener noreferrer"&gt;twitter&lt;/a&gt;. In the next part, we will further build on our webapp and investigate more features.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>ai</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>My first coaching call</title>
      <dc:creator>theishanbh</dc:creator>
      <pubDate>Mon, 08 Aug 2022 10:30:10 +0000</pubDate>
      <link>https://forem.com/theishanbh/my-first-coaching-call-56eh</link>
      <guid>https://forem.com/theishanbh/my-first-coaching-call-56eh</guid>
      <description>&lt;p&gt;A few months ago, I got reached out for help. When I read the contents of the message, I was merely surprised. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Surprise
&lt;/h2&gt;

&lt;p&gt;The message said, "Hi, I am XX, I really wish to start my coding journey. I really wish someone could guide me. I am willing to pay about 100$ if you can jump on a half hour call for the job!"&lt;/p&gt;

&lt;p&gt;There are many reasons why this message was surprising. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This was unlike other contract or freelance work, that I was used to doing. Over the time, I have worked with various tech and on various projects to provide solutions and keep learning. But I could also teach is something I discovered then.&lt;/li&gt;
&lt;li&gt;Being self taught myself, I have been active in many communities. In these years, I have had to ask for help and guidance from several people and even helped a lot of people to be a better dev! It was surprising that there are people willing to pay just for the guidance (not even teaching coding)&lt;/li&gt;
&lt;li&gt;At this point, there are so many resources out there on internet, that it's hard to believe that someone would need anything else to get started at this point!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Call
&lt;/h2&gt;

&lt;p&gt;After jumping on the call, I found out the person was a freshman just like me. He was having a hard time deciding what he wanted to do and how he could start out. &lt;br&gt;
To prepare for the call, I jotted down each field that someone starting out would be interested. From game dev, to mobile dev, to devops, I wrote down everything that I had ever researched about on a paper, ready to present it all.&lt;br&gt;
When we started out, we had a very friendly and casual conversation about our ideals and principles in life and we were about. This gave me a clearer idea about what he exactly wanted and made it easier for him to open up. I, then, opened up a list of roles and careers related to it. &lt;br&gt;
We then went over each, and eliminated each depending upon things like learning curve, industrial requirements and more. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Final Decision
&lt;/h2&gt;

&lt;p&gt;After going through each option and discussing fallbacks and advantages of each. We decided that Web Development would be perfect to start with. I feel the best feeling for someone who's learning how to code is when they get the chance to make a project out of what they are learning. It was much easier to eliminate other options. For example, if you are a game dev, you also need to have a basic grasp on graphic designing which adds to the learning curve (speaking from experience). Or let's say, starting with something complicated such as web3 for a newbie did not seem like a good option.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Keep your ears, eyes and messages open for opportunities. Most of all don't be afraid to ask for help (even if you have to pay for it). In this big world of internet, where the endless tutorials can be overwhelming, you can always make your path easier by asking someone who has already done it. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>career</category>
    </item>
  </channel>
</rss>
