<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6065001694786660108</id><updated>2026-03-31T12:41:04.858+05:30</updated><category term="google"/><category term="tutorial"/><category term="internet"/><category term="apps"/><category term="facebook"/><category term="android"/><category term="blog"/><category term="mobile"/><category term="social"/><category term="security"/><category term="cell phones"/><category term="cloud"/><category term="twitter"/><category term="reviews"/><category term="microsoft"/><category term="webmaster"/><category term="adsense"/><category term="gmail"/><category term="money"/><category term="office"/><category term="multimedia"/><category term="apple"/><category term="dropbox"/><category term="whatsapp"/><category term="wintips"/><category term="adobe"/><category term="analytics"/><category term="youtube"/><category term="ai"/><category term="docs"/><category term="general"/><category term="amazon"/><category term="email"/><category term="feedburner"/><category term="orkut"/><category term="vlc"/><category term="India"/><category term="downloads"/><category term="flash"/><category term="iphone"/><category term="web 3.0"/><category term="antivirus"/><category term="development"/><category term="evernote"/><category term="ipod"/><category term="large-language-models"/><category term="llm"/><category term="web development"/><category term="attachments.me"/><category term="avoid orkut hacking"/><category term="aws"/><category term="games"/><category term="gcp"/><category term="ice cream sandwich"/><category term="instagram"/><category term="linux"/><category term="lollipop"/><category term="mp3"/><category term="open souce"/><category term="open source"/><category term="p2p"/><category term="players"/><category term="skype"/><category term="spon"/><category term="tweets"/><category term="utorrent"/><category term="wave"/><category term="winutilities"/><category term="yahoo"/><category term="yandex"/><category term="IE7"/><category term="IE8"/><category term="adsense for login  authentication pages"/><category term="bitcasa"/><category term="chrome os"/><category term="cloud function"/><category term="contact"/><category term="converter"/><category term="ejabber"/><category term="embedding"/><category term="firebase"/><category term="firestore"/><category term="flex"/><category term="gitlab"/><category term="go"/><category term="google analytics1"/><category term="googleprank2008"/><category term="infrastructure"/><category term="java"/><category term="k3s"/><category term="kitkat"/><category term="kubernetes"/><category term="mailgun"/><category term="marshmallow"/><category term="mistake"/><category term="nero"/><category term="nokia"/><category term="notice."/><category term="nvidia"/><category term="oci"/><category term="onedrive"/><category term="pdf"/><category term="performance"/><category term="s3"/><category term="samsung"/><category term="scratch"/><category term="serverless"/><category term="silverlight"/><category term="sitemap"/><category term="stats"/><category term="sugarsync"/><category term="update"/><category term="us-elections-2020"/><category term="usb"/><category term="virgle"/><category term="web2.0"/><category term="yml"/><title type='text'>Sundeep Machado</title><subtitle type='html'>Sundeep Machado is a web developer who loves to write about social media and emerging technologies.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/13128759308353994017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>438</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-8161941450752403677</id><published>2025-12-17T15:42:00.005+05:30</published><updated>2026-01-05T11:32:11.051+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="ai"/><category scheme="http://www.blogger.com/atom/ns#" term="infrastructure"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>How to enable NVIDIA GPU workloads on k3s cluster</title><content type='html'>&amp;nbsp;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left; margin-right: 1em; text-align: left;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ3NwRF9ppC_KCdwXK04x2qm585BRYBmqWa_7711c38EeO4KsyxnSW9UpKppkYmtxcyKF-lqRvVcjYFfiHH7jQEOEOoq3O6XSFYdTTT3JadR18OaUENkD5DDG_vZKEiwUZWQ_QpxTA0_JnlUh7wS2NL5m-W-pj5uYtjazQ6pJPvLht3y2Tb332G0YQGRE/s1536/k3s-enable-nvidia-gpu.png&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;GPU workloads on k3s&quot; border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1536&quot; height=&quot;213&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ3NwRF9ppC_KCdwXK04x2qm585BRYBmqWa_7711c38EeO4KsyxnSW9UpKppkYmtxcyKF-lqRvVcjYFfiHH7jQEOEOoq3O6XSFYdTTT3JadR18OaUENkD5DDG_vZKEiwUZWQ_QpxTA0_JnlUh7wS2NL5m-W-pj5uYtjazQ6pJPvLht3y2Tb332G0YQGRE/w320-h213/k3s-enable-nvidia-gpu.png&quot; title=&quot;GPU workloads on k3s&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;GPU workloads on k3s&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;i&gt;K3s&lt;/i&gt; is a highly available, certified Kubernetes distribution designed for production workloads. It can also be used for AI workloads.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;By default, k3s nodes do not recognize GPUs. In this article, we will enable k3s to work with a GPU.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;b&gt;Step 1 : Install NVIDIA drivers&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;pre&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;# Ubuntu / Debian&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install -y nvidia-driver-535&lt;br /&gt;sudo apt-get install -y nvidia-container-toolkit&lt;br /&gt;sudo systemctl restart containerd&lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace&quot; style=&quot;color: #f0f6fc; font-size: 13.6px;&quot;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&lt;span&gt;&lt;i&gt;Verify Docker/Containerd GPU access:&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;&lt;span&gt;nvidia-container-cli info&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span&gt;&lt;b&gt;&amp;nbsp;Step 2 : Install k3s&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;k3s uses &lt;b&gt;containerd&lt;/b&gt;, so we must enable the NVIDIA runtime.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;i&gt;Create config:&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;sudo mkdir -p /etc/rancher/k3s&lt;br /&gt;sudo nano /etc/rancher/k3s/config.yaml&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&lt;i&gt;Inside the config file you need to add the following:&lt;/i&gt;&lt;/p&gt;&lt;pre&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;write-kubeconfig-mode: &quot;0644&quot;&lt;br /&gt;container-runtime-endpoint: &quot;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;i&gt;Now install k3s&lt;/i&gt; : (the below command can also be tweaked further, more details on&lt;a href=&quot;https://docs.k3s.io/installation/configuration&quot; target=&quot;_blank&quot;&gt; k3s installation page&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;curl -sfL https://get.k3s.io | sh -&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&lt;span&gt;&lt;i&gt;&amp;nbsp;Restart k3s:&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;sudo systemctl restart k3s&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&amp;nbsp;Step 3 : Install helm&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;Official Helm repository:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;Point Helm explicitly to k3s kubeconfig&lt;/p&gt;&lt;pre&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;export KUBECONFIG=/etc/rancher/k3s/k3s.yaml&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;sudo chmod 644 /etc/rancher/k3s/k3s.yaml&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&amp;nbsp;Step 4 : Install NVIDIA GPU Operator&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;pre&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot;&gt;&lt;span style=&quot;color: #f0f6fc; font-size: 13.6px;&quot;&gt;kubectl create namespace gpu-operator&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;helm install gpu-operator nvidia/gpu-operator \&lt;br /&gt;  --namespace gpu-operator \&lt;br /&gt;  --set driver.enabled=false&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;After some time, you need to create a test yaml file called&amp;nbsp;&lt;/span&gt;&lt;b&gt;cuda-test.yaml&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;pre&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;apiVersion: v1&lt;br /&gt;kind: Pod&lt;br /&gt;metadata:&lt;br /&gt;  name: cuda-test&lt;br /&gt;spec:&lt;br /&gt;  restartPolicy: Never&lt;br /&gt;  containers:&lt;br /&gt;    - name: cuda&lt;br /&gt;      image: nvidia/cuda:12.2.0-base-ubuntu22.04&lt;br /&gt;      resources:&lt;br /&gt;        limits:&lt;br /&gt;          nvidia.com/gpu: 1&lt;br /&gt;      command:&lt;br /&gt;        - bash&lt;br /&gt;        - -c&lt;br /&gt;        - |&lt;br /&gt;          echo &quot;=== NVIDIA-SMI OUTPUT ===&quot;&lt;br /&gt;          nvidia-smi&lt;br /&gt;          echo &quot;=========================&quot;&lt;br /&gt;          sleep 3600&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;Use below command to spawn a new test pod:&lt;/p&gt;&lt;pre&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;kubectl apply -f cuda-test.yaml&lt;br /&gt;kubectl get pods&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&lt;span&gt;Now if everything is successful, you should see something like this;&lt;/span&gt;&lt;/p&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt; kubectl logs cuda-test &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNU17bv3Nx14MCJb9IXtwam5K36yTcaztayk4VTbWdg4TpWyj70dAqE-9d3k1RijOWtW6oKoWDq9iKCNjbmeXTIzO7XcdWI8vk0yHohisALRX2EJwQxA9C5jbXO2rrm1dhTumq8UmO9hYXE8xRGY06g2YZCz4D4turFnqc0mQWWrXnl7BxyYrgcktqOxI/s1032/output-nvidia-smi.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;NVIDIA SMI&quot; border=&quot;0&quot; data-original-height=&quot;776&quot; data-original-width=&quot;1032&quot; height=&quot;482&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNU17bv3Nx14MCJb9IXtwam5K36yTcaztayk4VTbWdg4TpWyj70dAqE-9d3k1RijOWtW6oKoWDq9iKCNjbmeXTIzO7XcdWI8vk0yHohisALRX2EJwQxA9C5jbXO2rrm1dhTumq8UmO9hYXE8xRGY06g2YZCz4D4turFnqc0mQWWrXnl7BxyYrgcktqOxI/w640-h482/output-nvidia-smi.png&quot; title=&quot;NVIDIA SMI&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;You can now use the node for GPU workloads.&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/8161941450752403677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2025/12/how-to-enable-nvidia-gpu-workloads-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/8161941450752403677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/8161941450752403677'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2025/12/how-to-enable-nvidia-gpu-workloads-on.html' title='How to enable NVIDIA GPU workloads on k3s cluster'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ3NwRF9ppC_KCdwXK04x2qm585BRYBmqWa_7711c38EeO4KsyxnSW9UpKppkYmtxcyKF-lqRvVcjYFfiHH7jQEOEOoq3O6XSFYdTTT3JadR18OaUENkD5DDG_vZKEiwUZWQ_QpxTA0_JnlUh7wS2NL5m-W-pj5uYtjazQ6pJPvLht3y2Tb332G0YQGRE/s72-w320-h213-c/k3s-enable-nvidia-gpu.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-3951443028332097455</id><published>2025-10-31T17:31:00.003+05:30</published><updated>2025-11-01T12:02:56.291+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="ai"/><category scheme="http://www.blogger.com/atom/ns#" term="embedding"/><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="nvidia"/><title type='text'>How to deploy Google&#39;s latest Embedding Model embeddinggemma-300m on Nvidia Triton Server</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMaO0KBOWyyYwCyPw7mye1Fy_BIdNfdw5h7vilUP5A9YZqCWc9ujWFpjTydiZVDw8Y0oBiigJAmh_H2WSL9OTP8WzHANekdEjhCOh2iuEckd1-iOYK5gc_kVHiUCrcQq3BA6egMaBx_uGW8doGRi23EGv897Bkh4gyM7FwuAiI-swP1JJAq7202_1B174/s499/embedding-gemma-300m-nvidia-triton.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Embedding Gemma 300M on Nvidia Triton&quot; border=&quot;0&quot; data-original-height=&quot;263&quot; data-original-width=&quot;499&quot; height=&quot;169&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMaO0KBOWyyYwCyPw7mye1Fy_BIdNfdw5h7vilUP5A9YZqCWc9ujWFpjTydiZVDw8Y0oBiigJAmh_H2WSL9OTP8WzHANekdEjhCOh2iuEckd1-iOYK5gc_kVHiUCrcQq3BA6egMaBx_uGW8doGRi23EGv897Bkh4gyM7FwuAiI-swP1JJAq7202_1B174/w320-h169/embedding-gemma-300m-nvidia-triton.jpg&quot; title=&quot;Embedding Gemma 300M on Nvidia Triton&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;EmbeddingGemma on NVIDIA Triton Server&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div&gt;An embedding model is needed to generate embeddings (vector representations that help an LLM to understand things like text, images etc).&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Google recently released &lt;a href=&quot;https://huggingface.co/google/embeddinggemma-300m&quot; target=&quot;_blank&quot;&gt;EmbeddingGemma-300M&lt;/a&gt; (a whooping 300 million parameter model) which has very low requirements to run. We test this assumption in this article.&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLnNNnSleWFSIDLPr3Rt05LGj80xz5Tb_JEazPLQmO-0quss0siYHrgZ0Rq2o7pHJvgli2e2s9TmO6Np6raDYsqqTQSMhaOXw5CEwCVgHj9NoB6GuDfzbHwFPnYZlQwtMMXyJCYY5RWfypDTKhp8H9LHyXPf-So4NF4PmMIPTWjvl4Ra9lMWon6q5wkrA/s816/google-embeddinggemma300m-nvidia-triton-gpu.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;EmbeddingGemma 300M running on Commodity NVIDIA GPU&quot; border=&quot;0&quot; data-original-height=&quot;389&quot; data-original-width=&quot;816&quot; height=&quot;306&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLnNNnSleWFSIDLPr3Rt05LGj80xz5Tb_JEazPLQmO-0quss0siYHrgZ0Rq2o7pHJvgli2e2s9TmO6Np6raDYsqqTQSMhaOXw5CEwCVgHj9NoB6GuDfzbHwFPnYZlQwtMMXyJCYY5RWfypDTKhp8H9LHyXPf-So4NF4PmMIPTWjvl4Ra9lMWon6q5wkrA/w640-h306/google-embeddinggemma300m-nvidia-triton-gpu.png&quot; title=&quot;EmbeddingGemma 300M running on Commodity NVIDIA GPU&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;EmbeddingGemma 300M running on Commodity NVIDIA GPU&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;span&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;&lt;span style=&quot;white-space: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b style=&quot;font-size: large;&quot;&gt;Step 1. Download the model from hugging face at your local machine&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;Please create a folder called &quot;&lt;b&gt;server&lt;/b&gt;&quot; and inside that create another folder called &lt;b&gt;model_repository.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We need to download the model from Hugging face. We first need to create an access token by visiting this &lt;a href=&quot;https://huggingface.co/settings/tokens&quot; target=&quot;_blank&quot;&gt;Hugging face link&lt;/a&gt;. We need to give proper rights to the token to download the Google Gemma models:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7h54c2oDL8W18KTuTb6nSV2ztFLM43Y1Qqz_7gIlzTVvxSKNb_GLnC9Fk4DeQ4o9ymXaGyhw2Y_lQ3ff8PqCmWEqvUkKZN2_f2EXzqfJKBo9g9BZ5D-0aLyxEpVmoRoGV04YZAs1fOet86wWORqqkvbdFQB1tTAwGbr8Mfo5WksQf8xygls3ZxgObeyc/s996/hugging-face-gemma-access-token.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Grant Gemma repository access in Hugging face&quot; border=&quot;0&quot; data-original-height=&quot;293&quot; data-original-width=&quot;996&quot; height=&quot;188&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7h54c2oDL8W18KTuTb6nSV2ztFLM43Y1Qqz_7gIlzTVvxSKNb_GLnC9Fk4DeQ4o9ymXaGyhw2Y_lQ3ff8PqCmWEqvUkKZN2_f2EXzqfJKBo9g9BZ5D-0aLyxEpVmoRoGV04YZAs1fOet86wWORqqkvbdFQB1tTAwGbr8Mfo5WksQf8xygls3ZxgObeyc/w640-h188/hugging-face-gemma-access-token.png&quot; title=&quot;Grant Gemma repository access in Hugging face&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Grant Gemma model repository access in Hugging face&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;As we can see above, we have only granted read repos access.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, we can download the model by using the below command:&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;pip3.12 show huggingface_hub
pip3.12 show huggingface_hub_cli&lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace&quot; style=&quot;color: #f0f6fc; font-size: 13.6px;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;hf download google/embeddinggemma-300m \
  --local-dir model_repository/embeddinggemma-300m/1/embeddinggemma-300m \
  --local-dir-use-symlinks False&lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace&quot; style=&quot;color: #f0f6fc; font-size: 13.6px;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;&lt;span style=&quot;white-space: normal;&quot;&gt;&lt;i&gt;&lt;b&gt;Triton Inference server expects the model to be downloaded in a particular format. Please make sure that the files are downloaded properly.&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;&lt;span style=&quot;white-space: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;b style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-size: large; white-space: normal;&quot;&gt;Step 2. Create the model.py file and config.pbtxt file&lt;/b&gt;&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;&lt;span style=&quot;white-space: normal;&quot;&gt;The &lt;b&gt;config.pbtxt&lt;/b&gt; file in NVIDIA Triton Inference Server is a crucial component for defining the configuration of a deployed model. It is a Protocol Buffer Text Format file that describes various aspects of how a model should be loaded, executed, and managed by Triton.&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;&lt;span style=&quot;white-space: normal;&quot;&gt;&lt;a href=&quot;https://github.com/sjmach/artificial-intelligence/tree/main/nvidia-triton-server/simple/google-embeddinggemma-300m&quot; target=&quot;_blank&quot;&gt;The complete code can be found here&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;&lt;span style=&quot;white-space: normal;&quot;&gt;&lt;b&gt;Folder Structure&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;&lt;span style=&quot;white-space: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;&lt;span style=&quot;white-space: normal;&quot;&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; color: #f0f6fc; font-family: ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace; font-size: 13.6px; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;code data-end=&quot;473&quot; data-start=&quot;412&quot;&gt;model_repository/embeddinggemma-300m/1/embeddinggemma-300m/&lt;/code&gt; (empty placeholder — drop the local HF snapshot here)&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace&quot; style=&quot;color: #f0f6fc;&quot;&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; font-size: 13.6px; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;models/
└── embeddinggemma-300m/
    ├── config.pbtxt
    ├── 1/
    │   ├── model.py
    │   └── &lt;code data-end=&quot;473&quot; data-start=&quot;412&quot;&gt;embeddinggemma-300m/&lt;/code&gt;&lt;span face=&quot;ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace&quot;&gt; (empty placeholder — drop the local HF snapshot here)&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;b style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-size: large; white-space: normal;&quot;&gt;Step 3. Create a Dockerfile and build an image&lt;/b&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;&lt;span style=&quot;white-space: normal;&quot;&gt;We need to create a custom &lt;b&gt;Dockerfile with following content:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;&lt;span style=&quot;white-space: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;pre&gt;&lt;span&gt;&lt;span style=&quot;color: #f0f6fc;&quot;&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; font-size: 13.6px; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;FROM nvcr.io/nvidia/tritonserver:25.05-py3

# GPU PyTorch (CUDA 12.1 wheel bundles its own CUDA, works fine in this image)
# 1) PyTorch nightly with CUDA 12.4 (&amp;gt;= 2.6)
RUN python3.12 -m pip3.12 install --no-cache-dir \
    --index-url https://download.pytorch.org/whl/nightly/cu124 \
    torch --pre

RUN python3.12 -m pip3.12 install --no-cache-dir \
    &quot;transformers&amp;gt;=4.46.1&quot; \
    &quot;safetensors&amp;gt;=0.4.5&quot; \
    numpy \
    &quot;protobuf&amp;gt;=3.20.3,&amp;lt;5.0&quot; \
    &quot;sentencepiece&amp;gt;=0.1.99&quot;


# 2) Transformers that supports gemma3_text + friends
#RUN python3.12 -m pip3.12 install --no-cache-dir \
#    &quot;transformers&amp;gt;=4.46.1&quot; \
#    &quot;safetensors&amp;gt;=0.4.5&quot; \
#    numpy&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/pre&gt;Now we build this docker file and create a custom image. This dockerfile should be inside the server folder&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; color: #f0f6fc; font-size: 13.6px; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;sudo docker build -t triton-gemma-cpu &lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now we run NVIDIA Triton server as a docker container:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;&lt;span style=&quot;color: #f0f6fc;&quot;&gt;&lt;span style=&quot;font-size: 13.6px;&quot;&gt;sudo docker run --rm --privileged --gpus all  -it   -p 8000:8000 -p 8001:8001 -p 8002:8002   -v $PWD/model_repository:/models   triton-gemma-cpu   tritonserver --model-repository=/models&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f0f6fc; font-size: 13.6px;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The above command &lt;b&gt;runs the Triton Inference Server in a Docker container&lt;/b&gt; with full GPU access. It maps the standard Triton ports (HTTP, gRPC, Metrics) to your local machine and, most importantly, &lt;b&gt;links your local &lt;code&gt;model_repository&lt;/code&gt; folder&lt;/b&gt; to the server&#39;s model directory, allowing it to serve the models you have stored there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now test the model is running by using curl&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; color: #f0f6fc; font-size: 13.6px; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;curl -s http://localhost:8000/v2/models/embeddinggemma-300m &lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The response will be :&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; color: #f0f6fc; font-size: 13.6px; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;{&quot;name&quot;:&quot;embeddinggemma-300m&quot;,&quot;versions&quot;:[&quot;1&quot;],&quot;platform&quot;:&quot;python&quot;,&quot;inputs&quot;:[{&quot;name&quot;:&quot;TEXT&quot;,&quot;datatype&quot;:&quot;BYTES&quot;,&quot;shape&quot;:[-1,-1]},{&quot;name&quot;:&quot;MODE&quot;,&quot;datatype&quot;:&quot;BYTES&quot;,&quot;shape&quot;:[-1,1]}],&quot;outputs&quot;:[{&quot;name&quot;:&quot;EMBEDDINGS&quot;,&quot;datatype&quot;:&quot;FP32&quot;,&quot;shape&quot;:[-1,-1,768]}]}&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Sample request:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre style=&quot;background-color: #151b23; border-radius: 6px; box-sizing: border-box; color: #f0f6fc; font-size: 13.6px; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;curl -X POST localhost:8000/v2/models/embeddinggemma-300m/infer -d \
&#39;{
  &quot;inputs&quot;: [
    {
      &quot;name&quot;: &quot;TEXT&quot;,
      &quot;shape&quot;: [ 1, 2 ],
      &quot;datatype&quot;: &quot;BYTES&quot;,
      &quot;data&quot;: [ &quot;This is the first document&quot;, &quot;This is the second document&quot; ]
    }
  ]
}&#39;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/3951443028332097455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2025/10/how-to-deploy-googles-latest-embedding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/3951443028332097455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/3951443028332097455'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2025/10/how-to-deploy-googles-latest-embedding.html' title='How to deploy Google&#39;s latest Embedding Model embeddinggemma-300m on Nvidia Triton Server'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMaO0KBOWyyYwCyPw7mye1Fy_BIdNfdw5h7vilUP5A9YZqCWc9ujWFpjTydiZVDw8Y0oBiigJAmh_H2WSL9OTP8WzHANekdEjhCOh2iuEckd1-iOYK5gc_kVHiUCrcQq3BA6egMaBx_uGW8doGRi23EGv897Bkh4gyM7FwuAiI-swP1JJAq7202_1B174/s72-w320-h169-c/embedding-gemma-300m-nvidia-triton.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-5863857268042506383</id><published>2025-09-02T11:50:00.001+05:30</published><updated>2025-09-02T11:52:32.889+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="ai"/><category scheme="http://www.blogger.com/atom/ns#" term="cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="webmaster"/><title type='text'>Getting Started with Cloudflare&#39;s new AI Crawl Control</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5p9_vUqhHX-o8HA-Zad_bDM8pa0geskvkLd5NJKP3urnNobo3-9mVpbagL0yassdGdRNL6eigB6ZGrT5q9QnEWjOjoI5SCBmOH4L8GvBbms3VzASCYGn2A8DO43COhGMq-DCS1EYcSpNdlQE7VfMDIXXeNH7za7ioJ5LtheNtzbrihsl92SzsvG3Iw8g/s317/ai-crawl-control-cloudflare.png&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;AI Crawl Control&quot; border=&quot;0&quot; data-original-height=&quot;274&quot; data-original-width=&quot;317&quot; height=&quot;173&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5p9_vUqhHX-o8HA-Zad_bDM8pa0geskvkLd5NJKP3urnNobo3-9mVpbagL0yassdGdRNL6eigB6ZGrT5q9QnEWjOjoI5SCBmOH4L8GvBbms3VzASCYGn2A8DO43COhGMq-DCS1EYcSpNdlQE7VfMDIXXeNH7za7ioJ5LtheNtzbrihsl92SzsvG3Iw8g/w200-h173/ai-crawl-control-cloudflare.png&quot; title=&quot;AI Crawl Control&quot; width=&quot;200&quot; /&gt;&amp;nbsp;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;AI Crawl Control From Cloudflare&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&amp;nbsp;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; Cloudflare has recently announced a new feature&amp;nbsp; called&lt;a href=&quot;https://blog.cloudflare.com/introducing-ai-crawl-control/&quot; target=&quot;_blank&quot;&gt; AI Crawl Control&lt;/a&gt;&amp;nbsp;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;What is AI Crawl Control From Cloudflare?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Cloudflare&#39;s AI Crawl Control is a tool that gives website owners granular control over how AI services access their content. It evolved from Cloudflare&#39;s AI Audit tool to empower content creators with more detailed insights and agency over which AI crawlers are permitted to access their data, as well as for what purpose.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;The solution is designed to address the challenges faced by content creators, who often see their content scraped by AI models without compensation or referral traffic back to their sites.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;We have discussed in details on how we can use &lt;a href=&quot;https://www.sundeepmachado.com/2011/02/importance-of-robotstxt-file-to-blogger.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;robots.txt for websites&lt;/a&gt;. As a website owner you can specify rules in robots.txt and ask a web crawler like &lt;a href=&quot;https://developers.google.com/search/docs/crawling-indexing/googlebot&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Google Bot&lt;/a&gt;&amp;nbsp;what websites it can browse (or index).&lt;/p&gt;&lt;p&gt;Consider the robots.txt file available here -&amp;gt; &lt;b&gt;https://www.sundeepmachado.com/robots.txt&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQIFH01w75Uiy8tyZ09jysa1ptyei4xl_hV19m5zsS3Ul2mkH5SIPHMUK50SGKCaIN_SgCXJl7AokelnjVDhmBZ4KB0ciuS9JOim0iy2ZoDKi6nv0bvw2-1BjCpPIqIJKr61nWUQXPVOVTVvrXTpNh6oLQYphq735UKkHxPj9RpZlPXU7YX3N6a83WxBY/s623/robots-txt-example.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Sample Robots.txt file&quot; border=&quot;0&quot; data-original-height=&quot;333&quot; data-original-width=&quot;623&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQIFH01w75Uiy8tyZ09jysa1ptyei4xl_hV19m5zsS3Ul2mkH5SIPHMUK50SGKCaIN_SgCXJl7AokelnjVDhmBZ4KB0ciuS9JOim0iy2ZoDKi6nv0bvw2-1BjCpPIqIJKr61nWUQXPVOVTVvrXTpNh6oLQYphq735UKkHxPj9RpZlPXU7YX3N6a83WxBY/s16000/robots-txt-example.png&quot; title=&quot;Sample Robots.txt file&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Sample Robots.txt file&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;b&gt;User-agent: Mediapartners-Google:&lt;/b&gt; This line targets a specific Google bot. Mediapartners-Google is the user agent for Google&#39;s AdSense service. It crawls your site&#39;s content to serve relevant ads.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Disallow:: The Disallow: directive is empty.&lt;/b&gt; This means nothing is disallowed for the AdSense bot. The owner of this website is explicitly giving the AdSense crawler full permission to access the entire site.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&amp;nbsp;User-agent: *&lt;/b&gt;: The asterisk * is a wildcard that means this rule applies to all other web crawlers (including Google&#39;s main search bot, Bingbot, etc.) that don&#39;t have a more specific rule set for them. This also includes all AI agent crawlers like those from &lt;a href=&quot;https://platform.openai.com/docs/bots/overview-of-openai-crawlers&quot; target=&quot;_blank&quot;&gt;OpenAI&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;b&gt;Disallow: /search:&lt;/b&gt; This tells all crawlers not to crawl any URLs that are in the /search/ directory of the website. This is a common and recommended practice. Internal site search result pages are often considered &quot;thin content&quot; or duplicate content by search engines, so blocking them from being indexed is good for SEO.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Allow: /&lt;/b&gt;: This directive explicitly permits crawlers to access the root (/) and all other pages and subdirectories of the site not covered by a Disallow rule. It reinforces that the rest of the site is open for crawling.&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4DVfFMWOz9FpjC_Ie2kXq3GUtDdXsL4y2AMN9GZrI9YSPP-eeKOk0icSn3ahf0JFcZa231GsteTCvqIm7mlZlH_jHimcOHf-o0eI4nberhEc4wXUKnFFk4ClnOAxndmFvWyMb3a7LdhdXVGx4QdsACEdmxJ5nHHkUcF9Inezo_5EoGTMhBd4_nx0sKmY/s1287/cloudflare-ai-crawler-dashboard.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Cloudflare AI Crawler Dashboard&quot; border=&quot;0&quot; data-original-height=&quot;467&quot; data-original-width=&quot;1287&quot; height=&quot;232&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4DVfFMWOz9FpjC_Ie2kXq3GUtDdXsL4y2AMN9GZrI9YSPP-eeKOk0icSn3ahf0JFcZa231GsteTCvqIm7mlZlH_jHimcOHf-o0eI4nberhEc4wXUKnFFk4ClnOAxndmFvWyMb3a7LdhdXVGx4QdsACEdmxJ5nHHkUcF9Inezo_5EoGTMhBd4_nx0sKmY/w640-h232/cloudflare-ai-crawler-dashboard.png&quot; title=&quot;Cloudflare AI Crawler Dashboard&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Cloudflare AI Crawler Dashboard&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;As you can see above you can &lt;b&gt;allow/block&lt;/b&gt; a particular bot.&lt;/li&gt;&lt;li&gt;As seen above &lt;b&gt;archive_org &lt;/b&gt;bot&amp;nbsp; is violating the robots.txt file by accessing the /search url pattern which is mentioned in the fourth point above.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Premium Feature :&amp;nbsp;Pay Per Crawl &amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Cloudflare&#39;s Pay Per Crawl is a system that allows website owners to charge AI companies for crawling their online content.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Using this feature, a site owner can choose to freely allow, completely block, or charge a specific price per request for known AI bots. &lt;b&gt;The system uses the 402 Payment Required &lt;/b&gt;HTTP status code to signal the need for payment, with Cloudflare handling the entire transaction process.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/5863857268042506383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2025/09/getting-started-with-cloudflares-new-ai.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/5863857268042506383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/5863857268042506383'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2025/09/getting-started-with-cloudflares-new-ai.html' title='Getting Started with Cloudflare&#39;s new AI Crawl Control'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5p9_vUqhHX-o8HA-Zad_bDM8pa0geskvkLd5NJKP3urnNobo3-9mVpbagL0yassdGdRNL6eigB6ZGrT5q9QnEWjOjoI5SCBmOH4L8GvBbms3VzASCYGn2A8DO43COhGMq-DCS1EYcSpNdlQE7VfMDIXXeNH7za7ioJ5LtheNtzbrihsl92SzsvG3Iw8g/s72-w200-h173-c/ai-crawl-control-cloudflare.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-3072096905528226499</id><published>2025-06-28T01:05:00.003+05:30</published><updated>2025-06-28T01:05:38.207+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="ai"/><category scheme="http://www.blogger.com/atom/ns#" term="large-language-models"/><title type='text'>How to do a Performance Test for AI Models hosted on NVIDIA infrastructure?</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&amp;nbsp;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8C8pAoDE9A5GSH8VwtdYAEVA0H_cKh1mowV76bTXVnGlku_WU6kdGiE2IM7euY5aeGEucZI4yWHYWqgF8XeMoVG85DfukaRxAljY5CC1itIpNFFy1giPsT1w5jQm-nWLBzzoDDs0eWJI3v6HMdYtm-xNEI2jCp-eLK9fE2HyTqD_OCRaINYK5B2i-CfU/s364/nvidia-triton-inference-server.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Nvidia&quot; border=&quot;0&quot; data-original-height=&quot;364&quot; data-original-width=&quot;364&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8C8pAoDE9A5GSH8VwtdYAEVA0H_cKh1mowV76bTXVnGlku_WU6kdGiE2IM7euY5aeGEucZI4yWHYWqgF8XeMoVG85DfukaRxAljY5CC1itIpNFFy1giPsT1w5jQm-nWLBzzoDDs0eWJI3v6HMdYtm-xNEI2jCp-eLK9fE2HyTqD_OCRaINYK5B2i-CfU/w200-h200/nvidia-triton-inference-server.png&quot; title=&quot;Nvidia&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;A performance test is extremely important for an Artificial Intelligence (A.I.) Model just as it is important for an e-commerce website like Amazon.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;p&gt;The &lt;a href=&quot;https://developer.nvidia.com/triton-inference-server&quot; target=&quot;_blank&quot;&gt;NVIDIA Triton server &lt;/a&gt;is a gold standard that standardizes AI model deployment and execution across every workload and it is important that it works well for your custom models.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;If you/or your company are working with NVIDIA chips, there is a very high probability you are using the Triton server. The Triton server is the secret sauce that helps to get the peak performance out of expensive NVIDIA hardware.&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;There are some tools provided by NVIDIA as part of it development sdk. You just need to download the correct docker container &lt;br /&gt;&lt;/p&gt;&lt;p&gt;1.&lt;a href=&quot;https://github.com/triton-inference-server/model_analyzer&quot;&gt; &lt;b&gt;Triton Model Analyzer&lt;/b&gt;&lt;/a&gt; - This tool helps to understand the compute and memory requirements for your model. It also uses the Triton Performance Analyzer to test the inference performance of models. (see the next point)&amp;nbsp;&lt;/p&gt;&lt;p&gt;2. &lt;a href=&quot;https://github.com/triton-inference-server/perf_analyzer/blob/main/README.md&quot; target=&quot;_blank&quot;&gt;Triton Performance Analyzer&lt;/a&gt; -&amp;nbsp; This tool only concentrates on the inference performance of models. It helps you to fine tune various model configurations like&lt;a href=&quot;https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/user_guide/model_configuration.html#instance-groups&quot; target=&quot;_blank&quot;&gt; instance groups &lt;/a&gt;etc.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3.&lt;a href=&quot;https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/perf_analyzer/genai-perf/README.html&quot;&gt; Gen-AI-Perf &lt;/a&gt;- This tool primarily focuses on Generative AI models.&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm_pnBo2aWc26UKxo6PmBb6tXBmDrvcK651eEdU6B_2j9BvIjC74Lv_rSgWU_bEBKvDgc3YyYHfsZR2M7Vs9-2HbC6rhtGxav229tYMC_3aAYqZrr8phjtMrJ5bIp38SSx1WpwJhNsb640VIdZT7e-Bz_CzRbhoji-a3SRwJvkSAnDqPxo1sYB026wLVU/s824/gen-ai-perf-nvidia.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Gen AI Perf From Nvidia&quot; border=&quot;0&quot; data-original-height=&quot;315&quot; data-original-width=&quot;824&quot; height=&quot;153&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm_pnBo2aWc26UKxo6PmBb6tXBmDrvcK651eEdU6B_2j9BvIjC74Lv_rSgWU_bEBKvDgc3YyYHfsZR2M7Vs9-2HbC6rhtGxav229tYMC_3aAYqZrr8phjtMrJ5bIp38SSx1WpwJhNsb640VIdZT7e-Bz_CzRbhoji-a3SRwJvkSAnDqPxo1sYB026wLVU/w400-h153/gen-ai-perf-nvidia.png&quot; title=&quot;Gen AI Perf From Nvidia&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;It currently supports different types of models like Embedding, Ranker and even Vision models.&lt;/p&gt;&lt;p&gt;&amp;nbsp;4. Traditional Tools - The performance testing tools like Apache JMeter and Locust are still widely used.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/3072096905528226499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2025/06/how-to-do-performance-test-for-ai.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/3072096905528226499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/3072096905528226499'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2025/06/how-to-do-performance-test-for-ai.html' title='How to do a Performance Test for AI Models hosted on NVIDIA infrastructure?'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8C8pAoDE9A5GSH8VwtdYAEVA0H_cKh1mowV76bTXVnGlku_WU6kdGiE2IM7euY5aeGEucZI4yWHYWqgF8XeMoVG85DfukaRxAljY5CC1itIpNFFy1giPsT1w5jQm-nWLBzzoDDs0eWJI3v6HMdYtm-xNEI2jCp-eLK9fE2HyTqD_OCRaINYK5B2i-CfU/s72-w200-h200-c/nvidia-triton-inference-server.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-8540513802428312223</id><published>2024-02-13T23:47:00.001+05:30</published><updated>2024-02-13T23:47:31.529+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="ai"/><category scheme="http://www.blogger.com/atom/ns#" term="llm"/><title type='text'>Getting Started with NVIDIA Triton Server</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF88_SxV57bzXAP7M1Bl5gYFseP2he52SKnxyHGZX8tTZh2FEHgWwapPFDxjrvPYmNo90kuOw7JG0ChVQcwiP4cGQ4RzP4H411VnlXoXwCMXia-V7VSmCDE1Wvua7SthOXBcXorJXwxmQNWGd8gCO1g-G86bKRLS0Y7Uy2mD6j-M3xnW8xJpF58lfhMeE/s1200/nvidia-triton-server.jpg&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Getting Started with NVIDIA TRITON Server&quot; border=&quot;0&quot; data-original-height=&quot;630&quot; data-original-width=&quot;1200&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF88_SxV57bzXAP7M1Bl5gYFseP2he52SKnxyHGZX8tTZh2FEHgWwapPFDxjrvPYmNo90kuOw7JG0ChVQcwiP4cGQ4RzP4H411VnlXoXwCMXia-V7VSmCDE1Wvua7SthOXBcXorJXwxmQNWGd8gCO1g-G86bKRLS0Y7Uy2mD6j-M3xnW8xJpF58lfhMeE/w400-h250/nvidia-triton-server.jpg&quot; title=&quot;Getting Started with NVIDIA TRITON Server&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;NVIDIA Triton Inference Server&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;b&gt;What is an Inference Server?&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The role of an Inference Server is to accept user input data and pass it to an underlying trained model in the required format and return the results. It is also widely known as a Prediction Server as the results are nothing but predictions (in most cases).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;https://developer.nvidia.com/triton-inference-server&quot; target=&quot;_blank&quot;&gt;NVIDIA Triton server &lt;/a&gt;is
 a gold standard that standardizes AI model deployment and execution 
across every workload and it is important to know how it works internally for your 
custom or off the shelf models.&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/1kOaYiNVgFs&quot; width=&quot;320&quot; youtube-src-id=&quot;1kOaYiNVgFs&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The steps to install Triton Server are mentioned in detail on this &lt;a href=&quot;https://github.com/triton-inference-server/server&quot; target=&quot;_blank&quot;&gt;Triton Github page&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;There are few important things to know about Triton Inference Server:&lt;/b&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;NVIDIA recommends running it as a docker container, so that multiple instances can be run via Kubernetes&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;You need to install the &lt;a href=&quot;https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html&quot; target=&quot;_blank&quot;&gt;NVIDIA Container Toolkit &lt;/a&gt;especially if you are planning to work with a NVIDIA server class GPU like A100.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You can load new ML models on the fly, however NVIDIA does not recommend this as allowing dynamic updates to the model repository can lead
to arbitrary code execution. The best way is to restart Triton each time with a command-line argument of the folder which contains the newly added models.&amp;nbsp;&lt;/li&gt;&lt;li&gt;There is a Prometheus Metrics end-point for GPU, CPU utilization, Memory etc. We can easily send this data to Grafana to create custom dashboards. You can customize the metrics you want&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijGu1qNrqN0QIgBEUYdPs9nS0aWj-GEddUyAptJFoDYZxzi3iPQuCCBHqKhcESwF6A-6IZB-8OQAzBG5e7aVcST68DFzaYCzVbTz2oi866i_r7enR7wvUA21EvhItejn2TbRooBf8bpdJhkqSz3fegDzI8fUXqcqRpmeElJ8_Oap73c-QYngJlMy-XKng/s895/triton-server-nvidia-graphics-card.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;NVIDIA Triton Server on NVIDIA GeForce GTX 1660 Super Graphics Card&quot; border=&quot;0&quot; data-original-height=&quot;328&quot; data-original-width=&quot;895&quot; height=&quot;234&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijGu1qNrqN0QIgBEUYdPs9nS0aWj-GEddUyAptJFoDYZxzi3iPQuCCBHqKhcESwF6A-6IZB-8OQAzBG5e7aVcST68DFzaYCzVbTz2oi866i_r7enR7wvUA21EvhItejn2TbRooBf8bpdJhkqSz3fegDzI8fUXqcqRpmeElJ8_Oap73c-QYngJlMy-XKng/w640-h234/triton-server-nvidia-graphics-card.png&quot; title=&quot;NVIDIA Triton Server on NVIDIA GeForce GTX 1660 Super Graphics Card&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;NVIDIA Triton Server running on commodity NVIDIA GeForce GTX 1660 Super&lt;/td&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;As you can see above, I have successfully deployed the models on the NVIDIA Triton server as discussed on &lt;a href=&quot;https://github.com/triton-inference-server/server?tab=readme-ov-file#serve-a-model-in-3-easy-steps&quot;&gt;this GitHub page&lt;/a&gt; on my Ubuntu Desktop.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/8540513802428312223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2024/02/getting-started-with-nvidia-triton.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/8540513802428312223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/8540513802428312223'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2024/02/getting-started-with-nvidia-triton.html' title='Getting Started with NVIDIA Triton Server'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF88_SxV57bzXAP7M1Bl5gYFseP2he52SKnxyHGZX8tTZh2FEHgWwapPFDxjrvPYmNo90kuOw7JG0ChVQcwiP4cGQ4RzP4H411VnlXoXwCMXia-V7VSmCDE1Wvua7SthOXBcXorJXwxmQNWGd8gCO1g-G86bKRLS0Y7Uy2mD6j-M3xnW8xJpF58lfhMeE/s72-w400-h250-c/nvidia-triton-server.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-4596923596276851208</id><published>2023-11-21T12:56:00.007+05:30</published><updated>2023-11-29T13:32:04.285+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="ai"/><category scheme="http://www.blogger.com/atom/ns#" term="development"/><category scheme="http://www.blogger.com/atom/ns#" term="large-language-models"/><category scheme="http://www.blogger.com/atom/ns#" term="llm"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Getting Started with Ollama.ai</title><content type='html'>&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left; margin-right: 1em; text-align: left;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcc7ZGB4RQujaLd1CsNSHA4gZk754sCEjAQ9Dll-zDBcKPhfGZvU34FdSboS6Zeddob7jgsjGF_waAa001_fCJi6G1IJnRWzKG17Oy0OKDFDJfydq81DbU2lviHibk8Xf0sCZuTzx2d-aoYHJ73euCA_0dmL7iHcu8LAJQf0LbD2-BpvpchKaLHXqxRSM/s225/ollama.png&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;225&quot; data-original-width=&quot;225&quot; height=&quot;164&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcc7ZGB4RQujaLd1CsNSHA4gZk754sCEjAQ9Dll-zDBcKPhfGZvU34FdSboS6Zeddob7jgsjGF_waAa001_fCJi6G1IJnRWzKG17Oy0OKDFDJfydq81DbU2lviHibk8Xf0sCZuTzx2d-aoYHJ73euCA_0dmL7iHcu8LAJQf0LbD2-BpvpchKaLHXqxRSM/w164-h164/ollama.png&quot; width=&quot;164&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Ollama.ai&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://Ollama.ai&quot;&gt;Ollama.ai&lt;/a&gt; is an excellent tool that helps you to run Large Language Models (LLMs) locally on your computer like &lt;a href=&quot;https://ai.meta.com/llama/&quot; target=&quot;_blank&quot;&gt;Llama2&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In this article, I decided to test whether Ollama can work&amp;nbsp; with my consumer grade GPU - &lt;a href=&quot;https://www.msi.com/Graphics-Card/GeForce-GTX-1660-SUPER-VENTUS-XS-OC&quot; target=&quot;_blank&quot;&gt;MSI GTX Super 1660&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&amp;nbsp;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;p&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;b&gt;My Desktop configuration is as follows:&lt;/b&gt;&lt;br /&gt;&lt;/h3&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Ubuntu 22.04.03LTS Linux&lt;br /&gt;&lt;/li&gt;&lt;li&gt;24 GB DDR4 RAM&lt;/li&gt;&lt;li&gt;Intel i3-8100 @3.60GHz with 4 Cores&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.msi.com/Graphics-Card/GeForce-GTX-1660-SUPER-VENTUS-XS-OC&quot; target=&quot;_blank&quot;&gt;MSI GTX Super 1660&lt;/a&gt; with 6 GB DDR6 RAM&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Before we start, we need to make sure that we have the greatest and the latest NVIDIA drivers and NVIDIA CUDA drivers: &lt;a href=&quot;https://developer.nvidia.com/cuda-downloads&quot;&gt;https://developer.nvidia.com/cuda-downloads&lt;/a&gt;. The installation was easy and you need to validate whether your GPU drivers are working by using&lt;b&gt; nvidia-smi&lt;/b&gt; command as below:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;b&gt;If you do not have a Graphics Card, Ollama can run in CPU only mode too&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5EB3INUTDeAjA5yuTGOzqEXo7TdNCqz454uers7gpwyz7encfaYFmmWK4KT8boPZaFvi8jFksGaU91nBy6HqNYRLTkf8kOg-vtfDmTrYR8_T_K3_SW58apF2H8CUsxkknkktwPwjBCg8hJqz9qAX64gAHp3FBwtL1wR_F5BIZNnOtYzQRe7yRO00XWmQ/s803/nvidia-smi.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;nvidia-smi command used to validate your GPU works&quot; border=&quot;0&quot; data-original-height=&quot;400&quot; data-original-width=&quot;803&quot; height=&quot;318&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5EB3INUTDeAjA5yuTGOzqEXo7TdNCqz454uers7gpwyz7encfaYFmmWK4KT8boPZaFvi8jFksGaU91nBy6HqNYRLTkf8kOg-vtfDmTrYR8_T_K3_SW58apF2H8CUsxkknkktwPwjBCg8hJqz9qAX64gAHp3FBwtL1wR_F5BIZNnOtYzQRe7yRO00XWmQ/w640-h318/nvidia-smi.png&quot; title=&quot;nvidia-smi command used to validate your GPU works&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;nvidia-smi command used to validate whether your GPU has the correct NVIDIA drivers&lt;/b&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;As you can see above, my NVIDIA graphics card has been detected and is ready to use.&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;b&gt;We are going to use &lt;a href=&quot;https://pypi.org/project/nvitop/&quot; target=&quot;_blank&quot;&gt;NVITOP&lt;/a&gt; to measure GPU Performance. It is one of the best free tools to measure GPU performance for free&lt;/b&gt; &lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;You can install Ollama fron this official &lt;a href=&quot;https://ollama.ai/download&quot; target=&quot;_blank&quot;&gt;Ollama download link&lt;/a&gt;. As of November 2023, you can install Ollama only on a Mac or a Linux machine. Windows support will come soon.&lt;/p&gt;&lt;p&gt;You can now download the &lt;a href=&quot;https://ollama.ai/library/llama2&quot; target=&quot;_blank&quot;&gt;llama2&lt;/a&gt; model by entering the following command in your terminal:&lt;br /&gt;&lt;/p&gt;&lt;pre style=&quot;background: rgb(238, 238, 238); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-radius: 10px; border-right-color: initial; border-right-style: initial; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top: 5px solid rgb(221, 221, 221); border-width: 5px 0px 0px; color: #444444; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin-bottom: 1.5em; margin-top: 0px; overflow-wrap: normal; overflow: auto; padding: 12px; vertical-align: baseline;&quot;&gt;&lt;code&gt;ollama pull llama2&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Similarly, if you want the &lt;a href=&quot;https://ollama.ai/library/mistral&quot;&gt;Mistral&lt;/a&gt; model, you need to enter:&amp;nbsp;&lt;/p&gt;&lt;pre style=&quot;background: rgb(238, 238, 238); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-radius: 10px; border-right-color: initial; border-right-style: initial; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top: 5px solid rgb(221, 221, 221); border-width: 5px 0px 0px; color: #444444; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin-bottom: 1.5em; margin-top: 0px; overflow-wrap: normal; overflow: auto; padding: 12px; vertical-align: baseline;&quot;&gt;&lt;code&gt;ollama pull mistral&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;There is a comprehensive&lt;a href=&quot;https://ollama.ai/library&quot; target=&quot;_blank&quot;&gt; list of models that you can use on Ollama Website&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Ollama has a REST API&lt;/b&gt; to run and manage Machine Learning models. You can call the API as below:&lt;/p&gt;&lt;pre style=&quot;background: rgb(238, 238, 238); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-radius: 10px; border-right-color: initial; border-right-style: initial; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top: 5px solid rgb(221, 221, 221); border-width: 5px 0px 0px; color: #444444; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin-bottom: 1.5em; margin-top: 0px; overflow-wrap: normal; overflow: auto; padding: 12px; vertical-align: baseline;&quot;&gt;&lt;code&gt;curl http://localhost:11434/api/generate -d &#39;{
  &quot;model&quot;: &quot;llama2&quot;,
  &quot;prompt&quot;:&quot;What is Life?&quot;
}&#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As you can see above, we are using the llama2 model. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;We can also use Ollama to work with a language model like &lt;a class=&quot;group w-full&quot; href=&quot;https://ollama.ai/library/mistral&quot;&gt;The Mistral 7B model released by Mistral AI&lt;/a&gt; by giving the model parameter as &lt;b&gt;mistral.&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Calling Ollama API with Mistral 7 b model:&lt;/b&gt;&lt;/h3&gt;&lt;p&gt;We will use the following prompt &lt;br /&gt;&lt;/p&gt;&lt;pre style=&quot;background: rgb(238, 238, 238); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-radius: 10px; border-right-color: initial; border-right-style: initial; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top: 5px solid rgb(221, 221, 221); border-width: 5px 0px 0px; color: #444444; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin-bottom: 1.5em; margin-top: 0px; overflow-wrap: normal; overflow: auto; padding: 12px; vertical-align: baseline;&quot;&gt;&lt;code&gt;{&lt;br /&gt;  &quot;model&quot;: &quot;mistral&quot;,&lt;br /&gt;  &quot;prompt&quot;:&quot;What is the capital of the United States of America?&quot;,&lt;br /&gt;  &quot;stream&quot;:false&lt;br /&gt;&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The response was:&lt;br /&gt;&lt;/p&gt;&lt;pre style=&quot;background: rgb(238, 238, 238); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-radius: 10px; border-right-color: initial; border-right-style: initial; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top: 5px solid rgb(221, 221, 221); border-width: 5px 0px 0px; color: #444444; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin-bottom: 1.5em; margin-top: 0px; overflow-wrap: normal; overflow: auto; padding: 12px; vertical-align: baseline;&quot;&gt;&lt;code&gt;{&lt;br /&gt;    &quot;model&quot;: &quot;mistral&quot;,&lt;br /&gt;    &quot;created_at&quot;: &quot;2023-11-21T07:06:57.825617661Z&quot;,&lt;br /&gt;    &quot;response&quot;: &quot;The capital city of the United States of America is Washington, D.C.&quot;,&lt;br /&gt;    &quot;done&quot;: true,&lt;br /&gt;    &quot;context&quot;: [&lt;br /&gt;        733,&lt;br /&gt;        16289,&lt;br /&gt;        28793,&lt;br /&gt;        28705,&lt;br /&gt;        1824,&lt;br /&gt;        349,&lt;br /&gt;        272,&lt;br /&gt;        5565,&lt;br /&gt;        302,&lt;br /&gt;        272,&lt;br /&gt;        2969,&lt;br /&gt;        3543,&lt;br /&gt;        302,&lt;br /&gt;        4352,&lt;br /&gt;        733,&lt;br /&gt;        28748,&lt;br /&gt;        16289,&lt;br /&gt;        28793,&lt;br /&gt;        13,&lt;br /&gt;        1014,&lt;br /&gt;        5565,&lt;br /&gt;        2990,&lt;br /&gt;        302,&lt;br /&gt;        272,&lt;br /&gt;        2969,&lt;br /&gt;        3543,&lt;br /&gt;        302,&lt;br /&gt;        4352,&lt;br /&gt;        349,&lt;br /&gt;        5924,&lt;br /&gt;        28725,&lt;br /&gt;        384,&lt;br /&gt;        28723,&lt;br /&gt;        28743,&lt;br /&gt;        28723&lt;br /&gt;    ],&lt;br /&gt;    &quot;total_duration&quot;: 3314902170,&lt;br /&gt;    &quot;load_duration&quot;: 2814112001,&lt;br /&gt;    &quot;prompt_eval_count&quot;: 20,&lt;br /&gt;    &quot;prompt_eval_duration&quot;: 152161000,&lt;br /&gt;    &quot;eval_count&quot;: 16,&lt;br /&gt;    &quot;eval_duration&quot;: 335794000&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;During the test, I had kept &lt;b&gt;nvitop&lt;/b&gt; running in another terminal:&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg79jhnOz6CRglB6hM2IIGncfJaNyDq-b55p-6TfWLUiel2q6j2-DDfwc4BhcO8TtI0FIbH2oIzh3_Bm1f6-QEA7HFgwTe5qTdJMTxEcJu97S6Lx-vSoJ8BWfXvg8AuL9v4AKWftHt8y05kRXb2h4_VkPZTHoY6fPsbc50qIgAo24gUhB5Ue1uNekXQnjA/s1788/mistral-ollama.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;nvitop&quot; border=&quot;0&quot; data-original-height=&quot;577&quot; data-original-width=&quot;1788&quot; height=&quot;207&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg79jhnOz6CRglB6hM2IIGncfJaNyDq-b55p-6TfWLUiel2q6j2-DDfwc4BhcO8TtI0FIbH2oIzh3_Bm1f6-QEA7HFgwTe5qTdJMTxEcJu97S6Lx-vSoJ8BWfXvg8AuL9v4AKWftHt8y05kRXb2h4_VkPZTHoY6fPsbc50qIgAo24gUhB5Ue1uNekXQnjA/w640-h207/mistral-ollama.png&quot; title=&quot;nvitop&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;NVITOP command output to monitor GPU (Click to Zoom)&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;As you can see the GPU Memory shot up to almost 5GB. This is because,&amp;nbsp;7B parameter models generally require at least 8GB of RAM. The actual size of the model was around 4.1GB.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;You can similarly download other models and work with Ollama.ai. You can use chat to send your prompts as shown below:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;341&quot; src=&quot;https://www.youtube.com/embed/frZH8mbhv-M&quot; width=&quot;410&quot; youtube-src-id=&quot;frZH8mbhv-M&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;You can invoke the chat interface by entering the following in the terminal: &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre style=&quot;background: rgb(238, 238, 238); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-radius: 10px; border-right-color: initial; border-right-style: initial; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top: 5px solid rgb(221, 221, 221); border-width: 5px 0px 0px; color: #444444; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin-bottom: 1.5em; margin-top: 0px; overflow-wrap: normal; overflow: auto; padding: 12px; vertical-align: baseline;&quot;&gt;&lt;code&gt;ollama run mistral&lt;/code&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/4596923596276851208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2023/11/getting-startedollama-nvidia-graphics-card.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/4596923596276851208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/4596923596276851208'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2023/11/getting-startedollama-nvidia-graphics-card.html' title='Getting Started with Ollama.ai'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcc7ZGB4RQujaLd1CsNSHA4gZk754sCEjAQ9Dll-zDBcKPhfGZvU34FdSboS6Zeddob7jgsjGF_waAa001_fCJi6G1IJnRWzKG17Oy0OKDFDJfydq81DbU2lviHibk8Xf0sCZuTzx2d-aoYHJ73euCA_0dmL7iHcu8LAJQf0LbD2-BpvpchKaLHXqxRSM/s72-w164-h164-c/ollama.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-4048220055161742619</id><published>2023-11-09T15:05:00.003+05:30</published><updated>2023-11-09T15:05:46.338+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="ai"/><category scheme="http://www.blogger.com/atom/ns#" term="development"/><category scheme="http://www.blogger.com/atom/ns#" term="large-language-models"/><category scheme="http://www.blogger.com/atom/ns#" term="llm"/><title type='text'>A list of things to remember when deploying a Large Language Model (LLM) on Production</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjFSN3ArOrKCzUOTOtJ1_TzVxSZZcZdJKYvun2dzkYiVgWeui_nHGCBPjPIOUsz40_xVXxHMRfoQVgd92ucLwR6XJbLy98avWZtCot-COQOxaamhKeB7sG84RgA4QrFWTM-W7ZaruYC3jBzsUDhX6XagM4_8j9VIYiwJ_b8i3PyudnOQ4qgOiqkntLZCE/s1200/1200px-Wiki-llama.jpg&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;LLAMA&quot; border=&quot;0&quot; data-original-height=&quot;900&quot; data-original-width=&quot;1200&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjFSN3ArOrKCzUOTOtJ1_TzVxSZZcZdJKYvun2dzkYiVgWeui_nHGCBPjPIOUsz40_xVXxHMRfoQVgd92ucLwR6XJbLy98avWZtCot-COQOxaamhKeB7sG84RgA4QrFWTM-W7ZaruYC3jBzsUDhX6XagM4_8j9VIYiwJ_b8i3PyudnOQ4qgOiqkntLZCE/w200-h150/1200px-Wiki-llama.jpg&quot; title=&quot;LLAMA&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;LLAMA&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&amp;nbsp;A small checklist that intends to make your&amp;nbsp; LLM deployment easier.&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&amp;nbsp;This checklist is intended to help you get started with deploying your own Model or an open source one like &lt;a href=&quot;https://ai.meta.com/llama/&quot; target=&quot;_blank&quot;&gt;Llama2 &lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;p class=&quot;article-editor-content__paragraph&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;b&gt;1. There is no perfect model that will fit your use case 100% &lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;Although the excitement around Large Language Models (LLM) is justified, very few people actually know in advance which model is the best for them. A very good starting point is looking at a &lt;a class=&quot;article-editor-content__link article-editor-content__link&quot; href=&quot;https://huggingface.co/docs/hub/model-cards&quot; rel=&quot;noopener noreferrer&quot;&gt;Model Card&lt;/a&gt;, if it exists. There are some models that perform some particular tasks better than others. For example, there are thousands of models that cater to &lt;a class=&quot;article-editor-content__link article-editor-content__link&quot; href=&quot;https://huggingface.co/models?pipeline_tag=summarization&quot; rel=&quot;noopener noreferrer&quot;&gt;Summarization&lt;/a&gt; use case. After selecting a particular model, you will need to validate whether it performs particularly well with your in house proprietary data. &lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;&lt;b&gt;2. You don&#39;t always need a GPU &lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;&lt;b&gt; &lt;/b&gt;A GPU is very useful when you need to work with a very large dataset and need a very high bandwidth for your use-case.  The average price of a NVIDIA H100 is &lt;b&gt;$30,000 &lt;/b&gt;which is &lt;b&gt;around &lt;/b&gt;₹ &lt;b&gt;2.5 million Indian rupees&lt;/b&gt; and that of &lt;b&gt;NVIDIA A100 is $10000 which is around ₹ 8,33,000 Indian rupees.&lt;/b&gt;There are a lot of use cases that don&#39;t need a GPU. If you are experimenting with a small use-case, you can get most of a CPU to make your models work.  You can easily spin up a CPU heavy virtual machine on a cloud provider.&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;&lt;b&gt;3. Expect very high response time &lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;The response time of a Large Language Model is very high. There are a lot of factors at play like below:&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt; &lt;b&gt;Parameters&lt;/b&gt;: Parameters in large language models (LLMs) are the variables that are learned by the model during training. They represent the weights and biases of the neural network that the LLM is composed of. The number of parameters in an LLM is a measure of its size and complexity. Larger models have more parameters and can learn more complex relationships between words and phrases.&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;&lt;b&gt;Temperature&lt;/b&gt;: Temperature in LLM is a hyper-parameter that controls the randomness of the model&#39;s output. A higher temperature will result in more creative and imaginative text, while a lower temperature will result in more accurate and factual text. &lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;&lt;b&gt;K inputs&lt;/b&gt;:  K inputs in LLM refers to the number of tokens that the model considers when generating the next token. This is a hyper-parameter that can be tuned to control the creativity and diversity of the generated text. &lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;&lt;b&gt;Prompt&lt;/b&gt;: A prompt in LLM is a piece of text that is used to guide the model to generate a specific output. Prompts can be simple or complex, and they can include instructions, questions, or any other type of text that provides the model with context.&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPoLhyphenhyphenAFp2jT4tC_t4iFq1w16qnvS2U8hoxAg0yarEU8eIYCBUmD8lXZ9-32LPQzx_XCjM-l7Dqp7UNAfX5N1cRJVytgjNPiZCFcjzthzJzwydDTECKsnvL-3qV_MBBRPctb60a0d5aLzmjqBDkQ92KcZcHHdKtvh0cz5SVlOQlq9PJpX1JLcOjk-xFVI/s2140/h100-nvidia.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Nvidia H100&quot; border=&quot;0&quot; data-original-height=&quot;1204&quot; data-original-width=&quot;2140&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPoLhyphenhyphenAFp2jT4tC_t4iFq1w16qnvS2U8hoxAg0yarEU8eIYCBUmD8lXZ9-32LPQzx_XCjM-l7Dqp7UNAfX5N1cRJVytgjNPiZCFcjzthzJzwydDTECKsnvL-3qV_MBBRPctb60a0d5aLzmjqBDkQ92KcZcHHdKtvh0cz5SVlOQlq9PJpX1JLcOjk-xFVI/w320-h180/h100-nvidia.jpg&quot; title=&quot;Nvidia H100&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Nvidia H100&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;blockquote class=&quot;article-editor-content__blockquote&quot;&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;The output of a Large Language Model depends on many factors. It also depends on your infrastructure and system architecture.  It is a matter of fact that models running on a GPU have lower inference times than equivalent models running on a CPU.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;&lt;i&gt;Note : Depends on underlying Hardware of CPU/GPU&lt;/i&gt;&lt;/p&gt;&lt;figure class=&quot;article-editor-content__figure-image&quot;&gt;&lt;img data-media-urn=&quot;urn:li:digitalmediaAsset:D4D12AQGlush5aqsW8g&quot; data-src=&quot;https://media.licdn.com/dms/image/D4D12AQGlush5aqsW8g/article-inline_image-shrink_1000_1488/0/1698924767152?e=1704931200&amp;amp;v=beta&amp;amp;t=gpxJdchlTiG5rl9D-vBht7dPoMctoL7rz6lhp8izsIc&quot; /&gt;&lt;figcaption class=&quot;article-editor-content__figure-image-caption&quot;&gt;NVIDIA H100 - &lt;/figcaption&gt;&lt;/figure&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;4. &lt;b&gt;Use existing tools as much as possible, if that fails accept new ones&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;There are pretty amazing deployment tools like &lt;a class=&quot;article-editor-content__link article-editor-content__link&quot; href=&quot;https://www.langchain.com/&quot; rel=&quot;noopener noreferrer&quot;&gt;Langchain&lt;/a&gt;, that help in making LLM deployment easier. &lt;a class=&quot;article-editor-content__link article-editor-content__link&quot; href=&quot;https://kubernetes.io/docs/tasks/manage-gpus/scheduling-gpus/&quot; rel=&quot;noopener noreferrer&quot;&gt;You can also use your existing Kubernetes clusters for the same.&lt;/a&gt; Every cloud vendor is now making it easier to deploy Machine Learning model quickly and efficiently.&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;5.&lt;b&gt; Secure your LLM - MLSecOps and Model Bias&lt;/b&gt;&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;MLSecOps, or Machine Learning Security Operations, is a discipline that combines cybersecurity practices with ML operations to protect models, data, and the ML infrastructure. MLSecOps is concerned with identifying and mitigating the unique security risks associated with machine learning systems, such as adversarial attacks, data poisoning, and model bias.&lt;/p&gt;&lt;blockquote class=&quot;article-editor-content__blockquote&quot;&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt; Security and Bias Prevention should not never be an afterthought &lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;Model bias refers to when a machine learning model systematically makes errors or exhibits unfair behavior towards certain group. Model abuse refers to the malicious use of AI/ML models to cause harm.&lt;/p&gt;&lt;p class=&quot;article-editor-content__paragraph&quot;&gt;These are real and new problems and the best minds around the world are trying to solve them in innovative ways. Always Learn and Improve.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/4048220055161742619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2023/11/a-list-of-things-to-remember-when.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/4048220055161742619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/4048220055161742619'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2023/11/a-list-of-things-to-remember-when.html' title='A list of things to remember when deploying a Large Language Model (LLM) on Production'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjFSN3ArOrKCzUOTOtJ1_TzVxSZZcZdJKYvun2dzkYiVgWeui_nHGCBPjPIOUsz40_xVXxHMRfoQVgd92ucLwR6XJbLy98avWZtCot-COQOxaamhKeB7sG84RgA4QrFWTM-W7ZaruYC3jBzsUDhX6XagM4_8j9VIYiwJ_b8i3PyudnOQ4qgOiqkntLZCE/s72-w200-h150-c/1200px-Wiki-llama.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-7780758467945725612</id><published>2022-05-04T15:27:00.007+05:30</published><updated>2023-08-30T11:21:42.176+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="k3s"/><category scheme="http://www.blogger.com/atom/ns#" term="kubernetes"/><category scheme="http://www.blogger.com/atom/ns#" term="oci"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Free Kubernetes cluster on Oracle Cloud using k3s</title><content type='html'>&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXNgSKUCasl-QOX86TyNzLBGlO48GqwcQevxYSnSvPsvj1LXvk1mWLnofEfMUYWqw6Au5zv3pN3DX1kbrNEElK1cCGwMgmltzQvY_rytm1htY-bCRt-YQD7SLVDHMLHrs-s02X5ZSpXiSm9UKAz_QvDEMYYk9yTh4R8gWu9r3xoaeLWDi1kxS8nHIPl-I/s900/K3S.webp&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;900&quot; data-original-width=&quot;720&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXNgSKUCasl-QOX86TyNzLBGlO48GqwcQevxYSnSvPsvj1LXvk1mWLnofEfMUYWqw6Au5zv3pN3DX1kbrNEElK1cCGwMgmltzQvY_rytm1htY-bCRt-YQD7SLVDHMLHrs-s02X5ZSpXiSm9UKAz_QvDEMYYk9yTh4R8gWu9r3xoaeLWDi1kxS8nHIPl-I/w160-h200/K3S.webp&quot; width=&quot;160&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;K3S&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;Oracle Cloud has a very generous&lt;a href=&quot;https://www.oracle.com/in/cloud/free/#always-free&quot; target=&quot;_blank&quot;&gt; forever free tier&lt;/a&gt;. I have been using k3s on my Raspberry Pi 4 machines for sometime in my local home network and it is working amazingly well.&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;I was very keen to deploy &lt;a href=&quot;https://k3s.io/&quot;&gt;k3s&lt;/a&gt; for free on a cloud provider as a backup to my local clusters and finally managed to do that recently.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;How to deploy k3s on Oracle Cloud ?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg0Jn2PfbsgXIOiovctaUV1Au2wym-eVAobeVdUGUGmMzjCn-CfSaGB4inKXq8GKelSb_X3oEk-M0hUTQOPH_a845LSUJj1wwT3NatLUHU0GKTK2GEEJjVVn-DzjKRD6osqI3eYOUdu4jFMqbddr1XKeJzG4_1hnUp0iOrea24lzRx4K4w9Bf_sVTO7=s523&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;k3s cluster on Oracle Cloud&quot; border=&quot;0&quot; data-original-height=&quot;76&quot; data-original-width=&quot;523&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg0Jn2PfbsgXIOiovctaUV1Au2wym-eVAobeVdUGUGmMzjCn-CfSaGB4inKXq8GKelSb_X3oEk-M0hUTQOPH_a845LSUJj1wwT3NatLUHU0GKTK2GEEJjVVn-DzjKRD6osqI3eYOUdu4jFMqbddr1XKeJzG4_1hnUp0iOrea24lzRx4K4w9Bf_sVTO7=s16000&quot; title=&quot;free-k3s-cluster-oracle-cloud&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Kubernetes k3s cluster on Oracle Forever free tier&lt;/b&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;We are going to use the forever free tier. As of December 2021, Oracle is giving us below options:&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&amp;nbsp;&lt;b&gt;ARM based machines with 24 GB RAM and 4 CPUs cores in total &lt;/b&gt;- I have decided to utilize this as 2 separate machines with each having 12 GB RAM, 2 CPUs and 15 GB default volume storage. One machine will be main node for k3s and other will be a worker node&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;b&gt;Two AMD machines with 1 Core and 1 GB RAM&lt;/b&gt; - I have used one machine as a k3s worker and the other as as&lt;b&gt; MySQL database &lt;/b&gt;for high availability for k3s cluster&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;The installation of k3s is pretty straightforward. It is important to remember that we have taken one node as master and rest as slaves.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Machine Setup&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;On Master node (we will call it k3s-master)&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGvKYDJT8-O6ukw45oeP0T5J4Zp4ObbZUfMkVX7yQPHQAOUX58EUpES82yxgSkjuir07Ucv0BjXPSr8aIttYG4MWr45mBIgyl3-mqLr58vkmBZ1a-4JyzgSzPJ8xsFhRDLFqj3U2_FC0Pn650ZnvfZrejxRkcHglQH4z_-PHKuCIHAMJZ8kuzKgp_h/s1144/oracle-cloud-k3s-arm.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;545&quot; data-original-width=&quot;1144&quot; height=&quot;224&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGvKYDJT8-O6ukw45oeP0T5J4Zp4ObbZUfMkVX7yQPHQAOUX58EUpES82yxgSkjuir07Ucv0BjXPSr8aIttYG4MWr45mBIgyl3-mqLr58vkmBZ1a-4JyzgSzPJ8xsFhRDLFqj3U2_FC0Pn650ZnvfZrejxRkcHglQH4z_-PHKuCIHAMJZ8kuzKgp_h/w471-h224/oracle-cloud-k3s-arm.png&quot; width=&quot;471&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Ampere ARM instance with 2 Octacore CPU and 12 GB RAM&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;1. Visit &lt;a href=&quot;https://cloud.oracle.com/compute/instances/create&quot; target=&quot;_blank&quot;&gt;Oracle Cloud create instance&lt;/a&gt; and create a VM (virtual machine) with Ubuntu as image and the CPU configuration as ARM&amp;nbsp; and hard disk around 15 GB. This will be &lt;b&gt;k3s-master&lt;/b&gt;&lt;/p&gt;&lt;p&gt;2. Now remember and download both the ssh keys as we need them for other machines:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkhxoNcn__jYHYraXKKXxRkJRSwxO63Z_zsgDSWXK14mh8gyRNKjwo0YLR1mRcr12mgzjGaH3KWC_89gwOnLQqjJ8cUjLX1MOsq3hAWQ0-0UX80Ti_mULYgWgoXXxzSeleJXSnQRYFWpaWCkgd5O0z9vLQ4gSrscaibFXNGvgWQqx9cfQTHd_b4ZdV/s956/ssh-key-oracle-cloud.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;300&quot; data-original-width=&quot;956&quot; height=&quot;125&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkhxoNcn__jYHYraXKKXxRkJRSwxO63Z_zsgDSWXK14mh8gyRNKjwo0YLR1mRcr12mgzjGaH3KWC_89gwOnLQqjJ8cUjLX1MOsq3hAWQ0-0UX80Ti_mULYgWgoXXxzSeleJXSnQRYFWpaWCkgd5O0z9vLQ4gSrscaibFXNGvgWQqx9cfQTHd_b4ZdV/w400-h125/ssh-key-oracle-cloud.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;SSH key menu in Oracle Cloud&lt;/td&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;3. Once the machine is green (shows active in the&lt;a href=&quot;https://cloud.oracle.com/compute/instances&quot; target=&quot;_blank&quot;&gt; instances section of Oracle Cloud&lt;/a&gt;), use the ssh key to login via the public ip address:&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;pre style=&quot;-moz-tab-size: 4; -o-tab-size: 4; background-color: #202020; color: #d0d0d0; tab-size: 4;&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;ssh -i &lt;/code&gt;&lt;b&gt;ssh -i id.rsa ubuntu@&amp;lt;PUBLIC IP ADDRESS&amp;gt;&lt;/b&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Please change the IP address as per your machine. You might need to install &lt;a href=&quot;https://www.putty.org/&quot;&gt;Putty &lt;/a&gt;if you are using a Windows machine. Change the hostname by entering on the terminal:&lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;b&gt;hostnamectl set-hostname &lt;/b&gt;&lt;b&gt;&lt;b&gt;k3s-master&lt;/b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;b&gt;hostnamectl&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;On Slave nodes (we will call it k3s-mysql,&amp;nbsp; k3s-amd-node1 and k3s-arm-node2)&lt;/b&gt;&lt;/p&gt;&lt;p&gt;1. Create another instance with AMD as CPU type, 10 GB HDD and 1 GB of RAM. This should be within free limits. This will be &lt;b&gt;k3s-mysql&lt;/b&gt; (use &lt;b&gt;hostnamectl&amp;nbsp; &lt;/b&gt;command as before).&amp;nbsp; Remember to specify the public ssh key you downloaded before in the ssh key section. We need to install mysql on this machine which can be done as per this article - &lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04&quot; target=&quot;_blank&quot;&gt;install MySQL on ubuntu&lt;/a&gt;. Make sure you create a new user and a database. Give &lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql&quot; target=&quot;_blank&quot;&gt;admin rights to this user to that database only in MySQL&lt;/a&gt; You need to note the private IP of this machine. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;2.&amp;nbsp; Create another instance with AMPERE ARM as CPU type,&amp;nbsp; 2 OCTACORE CPU, 10 GB HDD and 12 GB of 
RAM. This should be within free limits. This will be &lt;b&gt;k3s-arm-node2 &lt;/b&gt;(use &lt;b&gt;hostnamectl&amp;nbsp; &lt;/b&gt;command as before).&amp;nbsp; Remember to specify the public ssh key you downloaded before in the ssh key section. Note the private IP address of all machines so that we can use them and also change their hostnames&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Installing k3s&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;1. Login to every machine and make sure you enter the following command:&lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;b&gt;sudo iptables -F&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;This commands flushes the iptables rules.&lt;/p&gt;&lt;p&gt;2. Now in &lt;b&gt;k3s-master (use ssh to log in), &lt;/b&gt;we will install k3s server in high availability mode using the below command:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre style=&quot;-moz-tab-size: 4; -o-tab-size: 4; background-color: #202020; color: #d0d0d0; tab-size: 4;&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;curl -sfL https://get.k3s.io | sh -s - server &lt;span style=&quot;color: #ed9d13;&quot;&gt;\
&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&lt;/span&gt;  --token=SECRET &lt;span style=&quot;color: #ed9d13;&quot;&gt;\
&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&lt;/span&gt;  --datastore-endpoint=&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;mysql://username:password@tcp(hostname:3306)/database-name&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(Please replace the username, password, hostname - private IP of &lt;b&gt;k3s-mysql &lt;/b&gt;and database-name as per your configuration)&lt;/p&gt;&lt;p&gt;3. Note the token string &lt;b&gt;(K3S_TOKEN&lt;/b&gt;) which you get on &lt;b&gt;k3s-master &lt;/b&gt;by using following command:&lt;br /&gt;&lt;/p&gt;&lt;pre style=&quot;-moz-tab-size: 4; -o-tab-size: 4; background-color: #202020; color: #d0d0d0; tab-size: 4;&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;cat /var/lib/rancher/k3s/server/token&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will be used by worker nodes to join the k3s servers&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4. Now log in to each worker node and enter following command:&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre style=&quot;-moz-tab-size: 4; -o-tab-size: 4; background-color: #202020; color: #d0d0d0; tab-size: 4;&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color: #40ffff;&quot;&gt;K3S_TOKEN&lt;/span&gt;=SECRET k3s agent --server https://fixed-registration-address:6443&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;fixed-registration-address ---&amp;gt;  &lt;b&gt;k3s-master private IP address&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;SECRET ---&amp;gt; &lt;b&gt;K3S_TOKEN &lt;/b&gt;from step 3.&lt;/p&gt;&lt;p&gt;&lt;b&gt;That&#39;s it. Enjoy your free k3s (Kubernetes) cluster on Oracle Cloud.&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/7780758467945725612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2022/05/free-kubernetes-cluster-on-oracle-cloud.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/7780758467945725612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/7780758467945725612'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2022/05/free-kubernetes-cluster-on-oracle-cloud.html' title='Free Kubernetes cluster on Oracle Cloud using k3s'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXNgSKUCasl-QOX86TyNzLBGlO48GqwcQevxYSnSvPsvj1LXvk1mWLnofEfMUYWqw6Au5zv3pN3DX1kbrNEElK1cCGwMgmltzQvY_rytm1htY-bCRt-YQD7SLVDHMLHrs-s02X5ZSpXiSm9UKAz_QvDEMYYk9yTh4R8gWu9r3xoaeLWDi1kxS8nHIPl-I/s72-w160-h200-c/K3S.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-4897963846674641338</id><published>2020-11-04T17:18:00.002+05:30</published><updated>2020-11-04T17:18:39.322+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="us-elections-2020"/><title type='text'>US Elections 2020 - The best way to keep track of what is happening</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right; margin-left: 1em; text-align: right;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitfZioUM2kTM7i5IQ-sypqh7gHAcJXTAFMN8H9a2rHRJ8REsLPGm17z3zHurMBV7TH5Eu7ixT4DHgPPcqYSNMBYMx8Td_edwf-lC688aOVmW0Vxv_NG6F7_Q6PGmFkR_hl-rHHLVsYaUk/s1312/us-elections-2020.png&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;US Elections 2020&quot; border=&quot;0&quot; data-original-height=&quot;808&quot; data-original-width=&quot;1312&quot; height=&quot;213&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitfZioUM2kTM7i5IQ-sypqh7gHAcJXTAFMN8H9a2rHRJ8REsLPGm17z3zHurMBV7TH5Eu7ixT4DHgPPcqYSNMBYMx8Td_edwf-lC688aOVmW0Vxv_NG6F7_Q6PGmFkR_hl-rHHLVsYaUk/w346-h213/us-elections-2020.png&quot; title=&quot;US Elections 2020&quot; width=&quot;346&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;US Elections 2020 is too close to call&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The US Elections 2020 is one of the most widely watched event in the world.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;We look at the ways the Tech / Media Companies are trying to make sense of the data.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.google.com/search?client=firefox-b-d&amp;amp;q=us+elections&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Google&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVy-KLj9SOLN_RNaPeQ7Oxklhk6NUqtgUgMM4WLgYqqqEtdpYvINhysKZ5ljuafCR9sFb-N5jusdgApF-134Z73eyY4etgZORfPTnANdMSCk5ttai2NpeZRwysFV7GqHeN_WyjAdzdcKE/s1636/google-us-elections-2020.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;US Elections 2020 by Google&quot; border=&quot;0&quot; data-original-height=&quot;1636&quot; data-original-width=&quot;1310&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVy-KLj9SOLN_RNaPeQ7Oxklhk6NUqtgUgMM4WLgYqqqEtdpYvINhysKZ5ljuafCR9sFb-N5jusdgApF-134Z73eyY4etgZORfPTnANdMSCk5ttai2NpeZRwysFV7GqHeN_WyjAdzdcKE/w512-h640/google-us-elections-2020.png&quot; title=&quot;US Elections 2020 by Google&quot; width=&quot;512&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;A simple search for US Elections shows this Minimalist Widget&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Google is leading the way in showing a minimalist widget that gives you accurate data from&lt;b&gt; Associate Press&lt;/b&gt;. This works quite well on Mobile devices too. You can narrow down further to get specific data about &quot;Who is winning the Senate&quot; etc.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;a href=&quot;https://www.theguardian.com/us-news/live/2020/nov/04/us-election-2020-votes-live-updates-donald-trump-joe-biden-latest-presidential-news-updates&quot; target=&quot;_blank&quot;&gt;The Guardian Website&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7cfCEnTEX766ZFLcSlL_d5Me9lJddzM_N_6vNlxgjE0XDdWDP6FG7p3eEWtMnPWo4QG285y_ZiDKkp49KsSExj7EqVJGJmGUWXX9TxfDeJ01lbGiTEtl_HzxalhUNlSh_zohrMilX-KM/s1310/Screen+Shot+2020-11-04+at+11.32.49.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Guardian Live Blog&quot; border=&quot;0&quot; data-original-height=&quot;1150&quot; data-original-width=&quot;1310&quot; height=&quot;562&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7cfCEnTEX766ZFLcSlL_d5Me9lJddzM_N_6vNlxgjE0XDdWDP6FG7p3eEWtMnPWo4QG285y_ZiDKkp49KsSExj7EqVJGJmGUWXX9TxfDeJ01lbGiTEtl_HzxalhUNlSh_zohrMilX-KM/w640-h562/Screen+Shot+2020-11-04+at+11.32.49.png&quot; title=&quot;Guardian Live Blog&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;The Guardian Website has created a Live Blog for US Elections&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The Guardian website is one of the most technically advanced news website. It is known for having a right blend of tech and user friendly aesthetics.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQVPdKG9YoXCc8HDoAwYzegWsiA8rlSWd-3zQMNgdlC1SK_iMs6qean8PvxTAH87Y8msAVL5_gqKnoRiUOxFWu4iWBAEbkKz1mOHDMVFWY8YT1xvWwDgxOaw0oau7E0AaLPY31k7P5zno/s2048/Screen+Shot+2020-11-04+at+11.33.22.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Guardian US Election 2020 Map&quot; border=&quot;0&quot; data-original-height=&quot;1254&quot; data-original-width=&quot;2048&quot; height=&quot;392&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQVPdKG9YoXCc8HDoAwYzegWsiA8rlSWd-3zQMNgdlC1SK_iMs6qean8PvxTAH87Y8msAVL5_gqKnoRiUOxFWu4iWBAEbkKz1mOHDMVFWY8YT1xvWwDgxOaw0oau7E0AaLPY31k7P5zno/w640-h392/Screen+Shot+2020-11-04+at+11.33.22.png&quot; title=&quot;Guardian US Election 2020 Map&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Check for a particular State in real time using data from Associated Press&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;a href=&quot;https://www.nytimes.com/interactive/2020/11/03/us/elections/results-president.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;The New York Times&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;The New York Times US Election 2020 Website is the advanced version of the Guardian website.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHXAZRrnsqBLy3NPfGTuVF0OsOqisyCdRdF6lOyhyphenhyphenBMENsVjZgvOe4xuf06nKnqsfyv2io0CWrgBS_EShV199aJJMpmDRvUqoIrpRFvqL1ZdCAhDsVF2Sx2hLgWlGInyjpHcWKThx76x4/s1024/nyt-us-elections-2020-website.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;New York Times  US Elections 2020 Website&quot; border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1000&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHXAZRrnsqBLy3NPfGTuVF0OsOqisyCdRdF6lOyhyphenhyphenBMENsVjZgvOe4xuf06nKnqsfyv2io0CWrgBS_EShV199aJJMpmDRvUqoIrpRFvqL1ZdCAhDsVF2Sx2hLgWlGInyjpHcWKThx76x4/w624-h640/nyt-us-elections-2020-website.png&quot; title=&quot;New York Times  US Elections 2020 Website&quot; width=&quot;624&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;NYT Homepage for US Elections 2020&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The only issue is the irritating pop-up that comes up after you exhaust reading the 5 article limit imposed. (you can by pass it by surfing the website in &lt;a href=&quot;https://www.sundeepmachado.com/2010/01/how-to-use-google-chrome-in-incognito.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;incognito mode&lt;/a&gt;)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;a href=&quot;https://www.washingtonpost.com/elections/&quot;&gt;The Washington Post&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbPBFFXgjVnGzB7YzcBhVpxbe2M9yfNFSMyLXMDZlUFklGI-1Hc8LrfLHwzitAFcUvXYDT7jozzk2k-AKi4g2-Ai7NhnNxLA6QnXCmoX-jO4Vw6k7cp8nmsffuxgQnw-X5K0fU7y5w7TY/s1626/washington-post-us-elections-2020.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;814&quot; data-original-width=&quot;1626&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbPBFFXgjVnGzB7YzcBhVpxbe2M9yfNFSMyLXMDZlUFklGI-1Hc8LrfLHwzitAFcUvXYDT7jozzk2k-AKi4g2-Ai7NhnNxLA6QnXCmoX-jO4Vw6k7cp8nmsffuxgQnw-X5K0fU7y5w7TY/w640-h320/washington-post-us-elections-2020.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;The Washington Post US Elections 2020 Homepage&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The Washington post too has a very good minimalist website that you can use to keep track of what is happening.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/4897963846674641338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2020/11/us-elections-2020-best-way-to-keep.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/4897963846674641338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/4897963846674641338'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2020/11/us-elections-2020-best-way-to-keep.html' title='US Elections 2020 - The best way to keep track of what is happening'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/13128759308353994017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitfZioUM2kTM7i5IQ-sypqh7gHAcJXTAFMN8H9a2rHRJ8REsLPGm17z3zHurMBV7TH5Eu7ixT4DHgPPcqYSNMBYMx8Td_edwf-lC688aOVmW0Vxv_NG6F7_Q6PGmFkR_hl-rHHLVsYaUk/s72-w346-h213-c/us-elections-2020.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-4480266353124304732</id><published>2020-10-30T11:06:00.000+05:30</published><updated>2020-10-30T11:06:12.084+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="analytics"/><category scheme="http://www.blogger.com/atom/ns#" term="microsoft"/><title type='text'>Microsoft Clarity - An easy to use User Behavior Analytics Tool</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJHROWR9Nw8aWEAYvfSnIUrADJKr7DAo0HSQiwIpGVTE5bsYnOENiB8f1Be7eyBYJrXdHN24baQ6Pi_jClhDn1uKOZf_q_e2HmO_1p6n3O6s8iuxq90XR6hl7l8zUm7ed8VzVFfXPwnGk/s754/microsoft-clarity.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Microsoft Clarity&quot; border=&quot;0&quot; data-original-height=&quot;652&quot; data-original-width=&quot;754&quot; height=&quot;173&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJHROWR9Nw8aWEAYvfSnIUrADJKr7DAo0HSQiwIpGVTE5bsYnOENiB8f1Be7eyBYJrXdHN24baQ6Pi_jClhDn1uKOZf_q_e2HmO_1p6n3O6s8iuxq90XR6hl7l8zUm7ed8VzVFfXPwnGk/w200-h173/microsoft-clarity.png&quot; title=&quot;Microsoft Clarity&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Microsoft Clarity is a free service that helps users to understand how users are interacting with their websites.&lt;/p&gt;&lt;p&gt;The services offers the ability to record user sessions and also generates a Heat Map for clicks.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIf4HCylzGIjUs4J49-eKTFMaeoBdHuWdMkqHfZruJI9lQzvnRAm7paT_IRsdmGejk8hIqTP_lIHQ49vzWqSMlhAQkvUUKHGCSMdkxzZZxY6-NcKm8vokwW9qIoW0H43pV0VhAiq0Vtn0/s1464/microsoft-clarity-heatmap.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Microsoft Clarity heatmap&quot; border=&quot;0&quot; data-original-height=&quot;808&quot; data-original-width=&quot;1464&quot; height=&quot;354&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIf4HCylzGIjUs4J49-eKTFMaeoBdHuWdMkqHfZruJI9lQzvnRAm7paT_IRsdmGejk8hIqTP_lIHQ49vzWqSMlhAQkvUUKHGCSMdkxzZZxY6-NcKm8vokwW9qIoW0H43pV0VhAiq0Vtn0/w640-h354/microsoft-clarity-heatmap.png&quot; title=&quot;microsft clarity heatmap&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Microsoft Clarity Heatmap feature&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;How to Setup Microsoft Clarity?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;You ca use your existing Microsoft, Facebook or&amp;nbsp; Google Account to start using Microsoft Clarity. You need to visit the official &lt;a href=&quot;https://clarity.microsoft.com/&quot;&gt;Microsoft Clarity website&lt;/a&gt; to get started.&lt;/p&gt;&lt;p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDbSMtbcT9-vfK92w0JeDOTxBiLoPRQLAKhGyxzUCaWYerKAApu_SoBPecWSHL2faAXehnjV7h8429IRW-Ye9JXRZ75V13yRkemrWRU7b8fElCF3-aKRjajlgV_6lb5ataH1r50s5FYOo/s966/Screen+Shot+2020-10-29+at+19.01.31.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;New Project in Microsoft Clarity&quot; border=&quot;0&quot; data-original-height=&quot;794&quot; data-original-width=&quot;966&quot; height=&quot;329&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDbSMtbcT9-vfK92w0JeDOTxBiLoPRQLAKhGyxzUCaWYerKAApu_SoBPecWSHL2faAXehnjV7h8429IRW-Ye9JXRZ75V13yRkemrWRU7b8fElCF3-aKRjajlgV_6lb5ataH1r50s5FYOo/w400-h329/Screen+Shot+2020-10-29+at+19.01.31.png&quot; title=&quot;New Project Microsoft Clarity&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Creating a new project in Microsoft Clarity&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;After you log in, you need to setup a new Project in Clarity as above. After that you need to add tracking Code to your website. This needs to go inside the head tag of your website HTML code.&lt;br /&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3n_U2djPHOSODZRegkwNu646dXp2u-PFqf_caqsvV0LZbVPW4apR6f8kY6pHKyB0OaaiR2MxD9PwV79gZ8ys7z-x2IvTRsitqI08RnSl9hb61NZrqxjD4_4f7qhNGDv3WtEEKy-7IqeA/s1364/tracking-code-clarity.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Add tracking Code for Microsoft Clarity&quot; border=&quot;0&quot; data-original-height=&quot;1290&quot; data-original-width=&quot;1364&quot; height=&quot;606&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3n_U2djPHOSODZRegkwNu646dXp2u-PFqf_caqsvV0LZbVPW4apR6f8kY6pHKyB0OaaiR2MxD9PwV79gZ8ys7z-x2IvTRsitqI08RnSl9hb61NZrqxjD4_4f7qhNGDv3WtEEKy-7IqeA/w640-h606/tracking-code-clarity.png&quot; title=&quot;Tracking Code for Microsoft Clarity&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Adding a tracking code for Microsoft clarity&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;It might take up to 2 hours for data to show up on your Microsoft Clarity Dashboard after the tracking code is inserted on your websites.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0NECrgmvCGKxG_OduIrumhS5_sCRDqegLkchXbFpVuFd-oeyLYPAvoqTADYeWhWlw3GmmKR3r-19n9vKQk4gvOisGKkRtcwfKP6mD5KPb_FqxbBnuTOtvZt7LpuFqQQ5sS0v-LP2LZGY/s1438/microsoft-clarity-google-analytics-integration.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Microsoft Clarity and Google analytics integration&quot; border=&quot;0&quot; data-original-height=&quot;636&quot; data-original-width=&quot;1438&quot; height=&quot;284&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0NECrgmvCGKxG_OduIrumhS5_sCRDqegLkchXbFpVuFd-oeyLYPAvoqTADYeWhWlw3GmmKR3r-19n9vKQk4gvOisGKkRtcwfKP6mD5KPb_FqxbBnuTOtvZt7LpuFqQQ5sS0v-LP2LZGY/w640-h284/microsoft-clarity-google-analytics-integration.png&quot; title=&quot;Clarity and Google Annalytics integration&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Microsoft Clarity and Google Analytics Integration&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Microsoft Clarity also has support for Google Analytics, this creates a Clarity user session link in your Google Analytics Dashboard.&lt;/p&gt;&lt;p&gt;Microsoft Clarity does not replace your existing analytics solution like &lt;b&gt;Google Analytics&lt;/b&gt; . It is meant to help you understand more about your users behavior. It is a great place to start for a new user who wants to have basic understanding of website users. There is a competing free service from &lt;a href=&quot;https://www.sundeepmachado.com/2017/05/how-to-replay-user-actions-website.html&quot;&gt;Yandex Metrica&lt;/a&gt; too.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/4480266353124304732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2020/10/microsoft-clarity-easy-to-use-user.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/4480266353124304732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/4480266353124304732'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2020/10/microsoft-clarity-easy-to-use-user.html' title='Microsoft Clarity - An easy to use User Behavior Analytics Tool'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/13128759308353994017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJHROWR9Nw8aWEAYvfSnIUrADJKr7DAo0HSQiwIpGVTE5bsYnOENiB8f1Be7eyBYJrXdHN24baQ6Pi_jClhDn1uKOZf_q_e2HmO_1p6n3O6s8iuxq90XR6hl7l8zUm7ed8VzVFfXPwnGk/s72-w200-h173-c/microsoft-clarity.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-6110369765432415684</id><published>2020-02-18T17:24:00.003+05:30</published><updated>2020-02-18T17:24:52.805+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="aws"/><category scheme="http://www.blogger.com/atom/ns#" term="gcp"/><category scheme="http://www.blogger.com/atom/ns#" term="gitlab"/><category scheme="http://www.blogger.com/atom/ns#" term="s3"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="yml"/><title type='text'>Using Gitlab for backing up data to AWS S3 and Google Cloud Storage</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKlAeeN37cLQb-8jlmMUNpHn0_oFTcrTKHoqW1BuJjt18lMRppAI3M8ZyhFHGAdvLTcXIxPoDGO1sr0n3fMswpvIbhANnm3W7aeieH0yd8pKk1BWdkE5XfgH7-Irfm_X5_VUwRCCL1O1s/s1600/gitlab-aws-s3-gcp-cloud-storage.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;aws-s3-gitlab-cicd-gcp-storage&quot; border=&quot;0&quot; data-original-height=&quot;745&quot; data-original-width=&quot;1600&quot; height=&quot;298&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKlAeeN37cLQb-8jlmMUNpHn0_oFTcrTKHoqW1BuJjt18lMRppAI3M8ZyhFHGAdvLTcXIxPoDGO1sr0n3fMswpvIbhANnm3W7aeieH0yd8pKk1BWdkE5XfgH7-Irfm_X5_VUwRCCL1O1s/s640/gitlab-aws-s3-gcp-cloud-storage.jpg&quot; title=&quot;Gitlab CICD and Amazon s3 and Google cloud-storage&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Gitlab has a generous free tier for CICD called &quot;Gitlab Pipelines&quot;, that can be used to store build artifacts (or anything) in AWS S3 and Google Cloud Storage for free.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Grab the code here: &lt;a href=&quot;https://github.com/sjmach/gitlabTocloud&quot; target=&quot;_blank&quot;&gt;GitlabToCloud&lt;/a&gt;.&lt;/b&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;How to use Gitlab to store code artifacts like jars or zip files?&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;You will need a Gitlab account. You will also need an AWS account that has suitable access keys, (Secret key and Access key )to write to a bucket in AWS S3.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Similarly we also need to have proper &lt;a href=&quot;https://cloud.google.com/iam/docs/understanding-service-accounts&quot; target=&quot;_blank&quot;&gt;service accounts&lt;/a&gt; for writing data in a bucket for Google Cloud.&lt;/li&gt;
&lt;li&gt;You will also need to setup &lt;a href=&quot;https://gitlab.com/help/ci/variables/README#variables&quot; target=&quot;_blank&quot;&gt;Gitlab environment variables&lt;/a&gt;. The variables are as follows:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;$AWS_ACCESS - AWS access key&lt;/li&gt;
&lt;li&gt;$AWS_SECRET&amp;nbsp; - AWS secret key&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;$DAYS - Set it to &lt;b&gt;1 days&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;$GCP_PROJECT_ID - The &lt;a href=&quot;https://support.google.com/googleapi/answer/7014113?hl=en&quot; target=&quot;_blank&quot;&gt;Google Project id&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;$GCP_SERVICE_KEY - The GCP service account created in step 2 above. Just copy all the file contents &lt;/li&gt;
&lt;/ul&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Grab the code here: &lt;a href=&quot;https://github.com/sjmach/gitlabTocloud&quot; target=&quot;_blank&quot;&gt;GitlabToCloud&lt;/a&gt;.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As you can see, we are using the Google Cloud image as it has python and gsutils already installed. We are installing aws-cli using pip so that we can easily copy the required files. All the files are deleted for security reasons after execution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/6110369765432415684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2020/02/using-gitlab-for-backing-up-data-to-aws-s3-gcp-storage.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/6110369765432415684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/6110369765432415684'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2020/02/using-gitlab-for-backing-up-data-to-aws-s3-gcp-storage.html' title='Using Gitlab for backing up data to AWS S3 and Google Cloud Storage'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKlAeeN37cLQb-8jlmMUNpHn0_oFTcrTKHoqW1BuJjt18lMRppAI3M8ZyhFHGAdvLTcXIxPoDGO1sr0n3fMswpvIbhANnm3W7aeieH0yd8pKk1BWdkE5XfgH7-Irfm_X5_VUwRCCL1O1s/s72-c/gitlab-aws-s3-gcp-cloud-storage.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-2291722415580168543</id><published>2020-02-06T12:04:00.001+05:30</published><updated>2020-02-17T18:18:12.393+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="aws"/><category scheme="http://www.blogger.com/atom/ns#" term="gcp"/><category scheme="http://www.blogger.com/atom/ns#" term="serverless"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Using AWS lambda as a Proxy for any service</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhPpL0dLPzVUPfxFQAQFL58oIhBQeguYOjRRQHSxZUfkWuHR9vhPexkdHn8qhK1_32GSortnvZh2iG2XK-xx7b-zwUWURe9qk3fXlyhyphenhyphenJUhqbrKCz9wEWd3AF_Jo6AU1J1_FZbuHNjnUM/s1600/aws-lambda.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;AWS Lambda&quot; border=&quot;0&quot; data-original-height=&quot;276&quot; data-original-width=&quot;951&quot; height=&quot;185&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhPpL0dLPzVUPfxFQAQFL58oIhBQeguYOjRRQHSxZUfkWuHR9vhPexkdHn8qhK1_32GSortnvZh2iG2XK-xx7b-zwUWURe9qk3fXlyhyphenhyphenJUhqbrKCz9wEWd3AF_Jo6AU1J1_FZbuHNjnUM/s640/aws-lambda.png&quot; title=&quot;AWS Lambda&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Amazon Web Services&lt;/b&gt; has a generous free tier for Lambda which involves 1 million free invocations.&lt;br /&gt;
&lt;br /&gt;
With the release of HTTP API for API Gateway, you can use Lambda as a proxy for any service.&lt;br /&gt;
&lt;br /&gt;
The source code is available here -&amp;gt; &lt;a href=&quot;https://github.com/sjmach/aws-lambda-proxy&quot; target=&quot;_blank&quot;&gt;AWS Lambda Proxy using Nodejs&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h3&gt;
&lt;b&gt;Why would you&amp;nbsp; use Lambda as a Proxy?&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://d1.awsstatic.com/whitepapers/Overview-AWS-Lambda-Security.pdf&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;Security&lt;/b&gt;&lt;/a&gt; - We don&#39;t want to expose the API end-point directly to the internet&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Resilience&lt;/b&gt; - If the external service goes down, we can use lambda to re-direct to an another instance of the API.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
&lt;b&gt;How to use AWS Lambda as a Proxy?&lt;/b&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;/ol&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://res.cloudinary.com/tools/image/upload/v1580219060/blogger-articles/aws-lambda-proxy-architecture.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;aws-lambda-proxy&quot; border=&quot;0&quot; data-original-height=&quot;351&quot; data-original-width=&quot;1400&quot; height=&quot;280&quot; src=&quot;https://res.cloudinary.com/tools/image/upload/v1580219060/blogger-articles/aws-lambda-proxy-architecture.png&quot; title=&quot;AWS lambda proxy Architecture&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;AWS Lambda Proxy Architecture&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&amp;nbsp;You start by creating a new lambda function (we will call it the &lt;b&gt;proxyJS&lt;/b&gt;). This will be the end-point where user submits the form.&amp;nbsp;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuiSa22uYACBG4SoCaj1fFg0sd-hCWpF5jQIf_8ig9GPoAx9Cis4oMuSFbg_7cec22JCHJy2QH6clSx5K2r6pOP6UDZ6AykFuf88z-H5ZsBQzqBDuBdDPm7hHRuPDDgDSz7ZLewTGUpo4/s1600/aws-lambda-trigger-api-gateway.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;api-gateway-trigger-aws-lambda&quot; border=&quot;0&quot; data-original-height=&quot;1452&quot; data-original-width=&quot;1594&quot; height=&quot;363&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuiSa22uYACBG4SoCaj1fFg0sd-hCWpF5jQIf_8ig9GPoAx9Cis4oMuSFbg_7cec22JCHJy2QH6clSx5K2r6pOP6UDZ6AykFuf88z-H5ZsBQzqBDuBdDPm7hHRuPDDgDSz7ZLewTGUpo4/s400/aws-lambda-trigger-api-gateway.png&quot; title=&quot;API Gateway trigger for AWS Lambda&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;API Gateway Trigger for Proxy Lambda (Click to enlarge)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Now we can call any external end-point. But in order to de-couple our architecture, we will use an AWS SNS topic that will get data from the Proxy lambda. 
&lt;br /&gt;
&lt;/li&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijtw5FPRwGtA4-M_dFr3uIr_KFuioztkq1Ike_LHm2Lyx0m7eBfeyUw9izXFkR8XgQVUjJV82K5LPUNsrS6wPLFKDRrz46RLwep9gSOZEhAchnV3RqtLXbiJQQvl2P9eZL9mOuLHbrhrw/s1600/aws-lambda-sns-trigger.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;sns-trigger-aws-lambda&quot; border=&quot;0&quot; data-original-height=&quot;642&quot; data-original-width=&quot;1448&quot; height=&quot;177&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijtw5FPRwGtA4-M_dFr3uIr_KFuioztkq1Ike_LHm2Lyx0m7eBfeyUw9izXFkR8XgQVUjJV82K5LPUNsrS6wPLFKDRrz46RLwep9gSOZEhAchnV3RqtLXbiJQQvl2P9eZL9mOuLHbrhrw/s400/aws-lambda-sns-trigger.png&quot; title=&quot;sns-trigger-aws-lambda&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;SNS Trigger for AWS Lambda&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
 &lt;script async=&quot;&quot; src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-8834582001396641&quot; data-ad-format=&quot;fluid&quot; data-ad-layout-key=&quot;-g0-11-1t-79+uo&quot; data-ad-slot=&quot;8007804229&quot; style=&quot;display: block;&quot;&gt;&lt;/ins&gt;&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;br /&gt;
&lt;li&gt;This topic will be subscribed by another Lambda function called &lt;b&gt;externalJS&lt;/b&gt; that will call an external service with the topic data&lt;/li&gt;
&lt;li&gt;In the above architecture, we are calling an external Google Cloud HTTP function using Nodejs using the above lambda&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/2291722415580168543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2020/02/using-aws-lambda-as-proxy-for-any.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/2291722415580168543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/2291722415580168543'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2020/02/using-aws-lambda-as-proxy-for-any.html' title='Using AWS lambda as a Proxy for any service'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/13128759308353994017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhPpL0dLPzVUPfxFQAQFL58oIhBQeguYOjRRQHSxZUfkWuHR9vhPexkdHn8qhK1_32GSortnvZh2iG2XK-xx7b-zwUWURe9qk3fXlyhyphenhyphenJUhqbrKCz9wEWd3AF_Jo6AU1J1_FZbuHNjnUM/s72-c/aws-lambda.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-5879076907145597083</id><published>2018-08-01T22:20:00.002+05:30</published><updated>2023-11-16T17:45:17.577+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="development"/><category scheme="http://www.blogger.com/atom/ns#" term="go"/><category scheme="http://www.blogger.com/atom/ns#" term="performance"/><title type='text'>Getting Started with Fortio for Load testing</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0fEPVScDfSK7FmIivrP7NwjiQtnFyxTekcH6zkvftpdCpwvnS4seT9qr0fMnAahOP9XiJ7PMJXFmHGlP_e6BHp9o4hjZ5Ebvvz2M_NdjldhoWV5fF4vL0N5YEbIZ2a1jPS75BEddAeno/s1600/fortio.webp&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Fortio Load testing&quot; border=&quot;0&quot; data-original-height=&quot;150&quot; data-original-width=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0fEPVScDfSK7FmIivrP7NwjiQtnFyxTekcH6zkvftpdCpwvnS4seT9qr0fMnAahOP9XiJ7PMJXFmHGlP_e6BHp9o4hjZ5Ebvvz2M_NdjldhoWV5fF4vL0N5YEbIZ2a1jPS75BEddAeno/s1600/fortio.webp&quot; title=&quot;Fortio - Load Testing&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
We look at &lt;a href=&quot;http://bit.ly/2n3H31r&quot;&gt;Fortio&lt;/a&gt;, which is a powerful load testing tool which is free and powered by Google&#39;s Go language.&lt;br /&gt;
&lt;br /&gt;
It is a rightful successor to Vegeta which is favourite among Go developers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;Updated : 16 November 2023&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Installing Fortio&lt;/h3&gt;
&lt;ol style=&quot;background-color: white; box-sizing: border-box; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 16px; margin-bottom: 16px; margin-top: 0px; padding-left: 2em;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box;&quot;&gt;&lt;a href=&quot;https://golang.org/doc/install&quot; rel=&quot;nofollow&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #0366d6; text-decoration-line: none;&quot;&gt;Install go&lt;/a&gt;&amp;nbsp;(golang 1.8 or later)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-top: 0.25em;&quot;&gt;&lt;code style=&quot;background-color: rgba(27, 31, 35, 0.05); border-radius: 3px; box-sizing: border-box; font-family: SFMono-Regular, Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 13.6px; margin: 0px; padding: 0.2em 0.4em;&quot;&gt;go get istio.io/fortio&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-top: 0.25em;&quot;&gt;you can now run&amp;nbsp;&lt;code style=&quot;background-color: rgba(27, 31, 35, 0.05); border-radius: 3px; box-sizing: border-box; font-family: SFMono-Regular, Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 13.6px; margin: 0px; padding: 0.2em 0.4em;&quot;&gt;fortio&lt;/code&gt;&amp;nbsp;(from your gopath bin/ directory)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;b&gt;How to run a load test using Fortio?&lt;/b&gt;&lt;/h3&gt;&lt;div style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;code style=&quot;background-color: rgba(27, 31, 35, 0.05); border-radius: 3px; box-sizing: border-box; font-family: SFMono-Regular, Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 13.6px; margin: 0px; padding: 0.2em 0.4em;&quot;&gt;fortio load -qps 100 -t 30s http://example.com/api&lt;/code&gt;&lt;/div&gt;&amp;nbsp;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;This command will perform a load test at 100 queries per second for 30 seconds against the specified URL (http://example.com/api). You can adjust the options (-qps for queries per second, -t for duration) based on your requirements.&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Docker &lt;/h3&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&amp;nbsp;The following docker commands are useful when working with Fortio&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;code style=&quot;background-color: rgba(27, 31, 35, 0.05); border-radius: 3px; box-sizing: border-box; font-family: SFMono-Regular, Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 13.6px; margin: 0px; padding: 0.2em 0.4em;&quot;&gt;docker run -p 8080:8080 -p 8079:8079 fortio/fortio server &amp;amp; # For the server&lt;/code&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;This runs &lt;b&gt;Fortio&lt;/b&gt; in GUI mode (this open a web interface at&amp;nbsp;http://localhost:8080/fortio) &lt;/div&gt;&lt;div style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBeeg8m5jV4Lhr7mDljXtsYuVzW2qaQQL31bDKbqagmjBUKKq1NOSNcAhVpv9F-VNK0PnOn-BhPDjCApcsk-M9wUNtMrTkZu319olwQQlpN9PSn4afghWylyGXUSR8kP97lwDAgsOeqiI/s1600/fortio-web-interface.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;fortio-load-testing-web-interface&quot; border=&quot;0&quot; data-original-height=&quot;478&quot; data-original-width=&quot;872&quot; height=&quot;348&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBeeg8m5jV4Lhr7mDljXtsYuVzW2qaQQL31bDKbqagmjBUKKq1NOSNcAhVpv9F-VNK0PnOn-BhPDjCApcsk-M9wUNtMrTkZu319olwQQlpN9PSn4afghWylyGXUSR8kP97lwDAgsOeqiI/s640/fortio-web-interface.png&quot; title=&quot;fortio-load-testing-web-interface&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;As you can see, you can specify the percentiles for reporting, the TPS and the duration using the web interface.&amp;nbsp; However, you are only supposed to use the GUI mode for developing your scripts&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;code style=&quot;background-color: rgba(27, 31, 35, 0.05); border-radius: 3px; box-sizing: border-box; font-family: SFMono-Regular, Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 13.6px; margin: 0px; padding: 0.2em 0.4em;&quot;&gt;docker run fortio/fortio load http://www.google.com/ # For a test run&lt;/code&gt;&lt;/div&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&amp;nbsp;This command runs fortio without the GUI mode and is recommended for a test&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;The command-line gives you more options but it is not as powerful as a 
Apache JMeter or Gatling . It does not support scenario based load 
testing&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Things I like:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;A simple web interface&lt;/li&gt;&lt;li&gt;Ability to share report and graphs&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;

&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-8834582001396641&quot; data-ad-format=&quot;fluid&quot; data-ad-layout-key=&quot;-g0-11-1t-79+uo&quot; data-ad-slot=&quot;8007804229&quot; style=&quot;display: block; max-width: 0px;&quot;&gt;&lt;/ins&gt;
&lt;b&gt;Things I don&#39;t like:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;No support for scripts&lt;/li&gt;&lt;li&gt;No support for scenario bases load testing&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;
Fortio is best suited for load testing where developers want to test 
their code locally on their desktop computers. It can also be used for 
simulating spikes.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/5879076907145597083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2018/08/getting-started-with-fortio-for-load.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/5879076907145597083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/5879076907145597083'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2018/08/getting-started-with-fortio-for-load.html' title='Getting Started with Fortio for Load testing'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0fEPVScDfSK7FmIivrP7NwjiQtnFyxTekcH6zkvftpdCpwvnS4seT9qr0fMnAahOP9XiJ7PMJXFmHGlP_e6BHp9o4hjZ5Ebvvz2M_NdjldhoWV5fF4vL0N5YEbIZ2a1jPS75BEddAeno/s72-c/fortio.webp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-7313347342718276888</id><published>2018-03-24T00:50:00.000+05:30</published><updated>2018-03-24T00:57:58.421+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="cloud function"/><category scheme="http://www.blogger.com/atom/ns#" term="firebase"/><category scheme="http://www.blogger.com/atom/ns#" term="firestore"/><category scheme="http://www.blogger.com/atom/ns#" term="mailgun"/><title type='text'>New User SignUp with Welcome Email using Firebase FireStore, Cloud Functions and Mailgun</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-CAnhW_QWTOQKAP0piOzbo0yCsrAOYtxIVXqRpdH-Pr2bONujeCBq5Nfxx8v6ykqWdmURKLRWXMj96J99Sy-jPkhwUVZGI3f3sj1fIrpCJ1syejN3o_R3ehp84QWZe9YKU3yzEEnysDs/s1600/cloud-firestore.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;cloud-firestore&quot; border=&quot;0&quot; data-original-height=&quot;300&quot; data-original-width=&quot;728&quot; height=&quot;81&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-CAnhW_QWTOQKAP0piOzbo0yCsrAOYtxIVXqRpdH-Pr2bONujeCBq5Nfxx8v6ykqWdmURKLRWXMj96J99Sy-jPkhwUVZGI3f3sj1fIrpCJ1syejN3o_R3ehp84QWZe9YKU3yzEEnysDs/s200/cloud-firestore.png&quot; title=&quot;Cloud Firestore to save user details&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Cloud FireStore and Cloud Functions can be easily used to save user details when a new user creates an account. An email can also be sent easily using an external service like Mailgun.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The basic idea is as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqGeuX5UsfEsNrGxhn1H696dNqBxn3PWwKjeRA9QGwT4CWf1GqtN_MvcW2m_3tPz9cOtMCK_zzc89gPozWUVI3ZTEDsBRJhw9DWwgYWQjhoJA-0CD5NLEzez6HhzP5MVjVP3MlhGGCLVI/s1600/user-signup-welcome-email-firebase.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;311&quot; data-original-width=&quot;709&quot; height=&quot;280&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqGeuX5UsfEsNrGxhn1H696dNqBxn3PWwKjeRA9QGwT4CWf1GqtN_MvcW2m_3tPz9cOtMCK_zzc89gPozWUVI3ZTEDsBRJhw9DWwgYWQjhoJA-0CD5NLEzez6HhzP5MVjVP3MlhGGCLVI/s640/user-signup-welcome-email-firebase.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. User Signup and entry in Cloud FireStore&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/sjmach/3e97dc7b775709127a5911d130b7e525.js&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
The above code is triggered when a new user signs up for the first time. It should be triggered only when the Firebase Auth is successful.&lt;br /&gt;
&lt;br /&gt;
In the above code snippet, id is nothing but the unique id returned by Firebase Auth. The field &quot;name&quot; is entered by the user during signup.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. Cloud Function to trigger Email&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/sjmach/c7c328f958e7f61d405c954bf32d33a1.js&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;br /&gt;
It is important to note that we need to have proper Mailgun API credentials. Also mailgun.js should also be installed in the directory of the cloud functions.&lt;br /&gt;
&lt;br /&gt;
The above code works for all types of login, but the user should have a valid email id in the Cloud FireStore.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/7313347342718276888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2018/03/new-user-signup-with-welcome-email.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/7313347342718276888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/7313347342718276888'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2018/03/new-user-signup-with-welcome-email.html' title='New User SignUp with Welcome Email using Firebase FireStore, Cloud Functions and Mailgun'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/13128759308353994017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-CAnhW_QWTOQKAP0piOzbo0yCsrAOYtxIVXqRpdH-Pr2bONujeCBq5Nfxx8v6ykqWdmURKLRWXMj96J99Sy-jPkhwUVZGI3f3sj1fIrpCJ1syejN3o_R3ehp84QWZe9YKU3yzEEnysDs/s72-c/cloud-firestore.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-956570935548145746</id><published>2017-07-25T22:21:00.000+05:30</published><updated>2017-09-21T10:10:49.669+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="amazon"/><category scheme="http://www.blogger.com/atom/ns#" term="google"/><title type='text'>Should you buy a FireTV or a Chromecast?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSv0sbt2dffe-EjOgdU0z2v5-ehjb4ei0Sp2-CXuWMiaUTfkT7M0Zc5kl1lRRxHLoUh8c8Qpm1VXVIsZGFXMmxq_SW_BUJmQMzDD9cbTGeGd4v2dsBzmeXj9wYRAh0ufYQGTi9xlqDTcQ/s1600/amazon-firetv-versus-google-chromecast.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Firetv-versus-chromecast&quot; border=&quot;0&quot; data-original-height=&quot;844&quot; data-original-width=&quot;1500&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSv0sbt2dffe-EjOgdU0z2v5-ehjb4ei0Sp2-CXuWMiaUTfkT7M0Zc5kl1lRRxHLoUh8c8Qpm1VXVIsZGFXMmxq_SW_BUJmQMzDD9cbTGeGd4v2dsBzmeXj9wYRAh0ufYQGTi9xlqDTcQ/s200/amazon-firetv-versus-google-chromecast.jpg&quot; title=&quot;Firetv-versus-chromecast&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Amazon FireTV 2 and Google Chromecast 2 are one of the best living room devices available. (other than Roku and Apple TV).&lt;br /&gt;
&lt;br /&gt;
So which one should you buy?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;The Price&lt;/b&gt;&lt;/h3&gt;
Google Chromecast 2 costs $35.00 dollars Amazon Fire TV 2 costs about $39.99 dollars. Google Chromecast is the clear winner here. However, on special days like Amazon Prime Days you can get a FireTV 2 for about $20 dollars.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;The Apps and Software&lt;/b&gt;&lt;/h3&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIJVdVoOdPC1fuKakBtdm43mEfAZNaCpcM1EMWa0fM1p1tZOFmfjzZS0sLc5oHe6lqP4Ojf3wZadtDwJdH2UlRvaJqvkM5Ib0ilS94zvPUfwm7Ur9GjZvshkYSfbV6g8mrdMw4VEAzhIc/s1600/google-home-app.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;google-home-android-app&quot; border=&quot;0&quot; data-original-height=&quot;1600&quot; data-original-width=&quot;900&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIJVdVoOdPC1fuKakBtdm43mEfAZNaCpcM1EMWa0fM1p1tZOFmfjzZS0sLc5oHe6lqP4Ojf3wZadtDwJdH2UlRvaJqvkM5Ib0ilS94zvPUfwm7Ur9GjZvshkYSfbV6g8mrdMw4VEAzhIc/s320/google-home-app.png&quot; title=&quot;Google Home Android app&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
The Google Home App lets you configure your Chromecast. It does nothing more. The Amazon FireTV app lets you control your FireTV (like a remote).&lt;br /&gt;
&lt;br /&gt;
In terms of easy of use Google Chromecast is the clear winner hands down. You can cast your videos on YouTube or on Netflix using a cast button. &amp;nbsp;All you need is an Android device or an iOS device with apps that support casting like YouTube.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwD0jg4BINBXZx6nl1JX6HvxNqshxhY7BUzOkZuyaqYbe2jiLkJEQQLc09MYoUAtzBqMvYIIf8BSuQWvnCgpcIozJ5looPV9MP6c6xe-yQZdAGEm4aB0PFVzfOpBs26TvqfpiBcOFeTX4/s1600/amazon-firetv-screenshot.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Firetv-screenshot&quot; border=&quot;0&quot; data-original-height=&quot;903&quot; data-original-width=&quot;1600&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwD0jg4BINBXZx6nl1JX6HvxNqshxhY7BUzOkZuyaqYbe2jiLkJEQQLc09MYoUAtzBqMvYIIf8BSuQWvnCgpcIozJ5looPV9MP6c6xe-yQZdAGEm4aB0PFVzfOpBs26TvqfpiBcOFeTX4/s320/amazon-firetv-screenshot.jpg&quot; title=&quot;Firetv-screenshot&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
FireTV targets people who prefer the native TV experience. You can install new apps and also side-load additional android apps (install apps not available in Amazon FireTV Appstore).&lt;br /&gt;
&lt;br /&gt;
The clear winner in terms of features is FireTV. You can also use your TV remote to control FireTV.&lt;br /&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Verdict&lt;/h3&gt;
Google Chromecast makes total sense if you just want to cast casual videos and value simplicity. Amazon FireTV gives you a holistic TV experience that is totally worth the price given you buy it on Amazon Prime day Sale.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/956570935548145746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2017/07/what-to-buy-firetv-or-chromecast.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/956570935548145746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/956570935548145746'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2017/07/what-to-buy-firetv-or-chromecast.html' title='Should you buy a FireTV or a Chromecast?'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSv0sbt2dffe-EjOgdU0z2v5-ehjb4ei0Sp2-CXuWMiaUTfkT7M0Zc5kl1lRRxHLoUh8c8Qpm1VXVIsZGFXMmxq_SW_BUJmQMzDD9cbTGeGd4v2dsBzmeXj9wYRAh0ufYQGTi9xlqDTcQ/s72-c/amazon-firetv-versus-google-chromecast.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-5395637492098468597</id><published>2017-07-05T10:06:00.002+05:30</published><updated>2017-07-05T10:08:08.603+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>How to find your lost or misplaced Android device?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKT9hBoFfYuQqpjkIfngrMBw4l5HIXSioo-3DRveFrqednrmAcE05YGosLBtfserzqnbdQhi50aoSRIYbU-i3DkRuLtlYMMDNmH2_B_U4C8upbdroObfonm1HxUQewJaJJDZ8iPB3GwGI/s1600/find-my-device-android.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Find My device app Logo&quot; border=&quot;0&quot; data-original-height=&quot;300&quot; data-original-width=&quot;300&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKT9hBoFfYuQqpjkIfngrMBw4l5HIXSioo-3DRveFrqednrmAcE05YGosLBtfserzqnbdQhi50aoSRIYbU-i3DkRuLtlYMMDNmH2_B_U4C8upbdroObfonm1HxUQewJaJJDZ8iPB3GwGI/s200/find-my-device-android.png&quot; title=&quot;Find My device app Logo&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Google&#39;s &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.google.android.apps.adm&amp;amp;hl=en&amp;amp;utm_source=www.sundeepmachado.com&quot; target=&quot;_blank&quot;&gt;Find My device&lt;/a&gt;&amp;nbsp;is a free Android app that helps users to locate a missing android device.&lt;br /&gt;
&lt;br /&gt;
You just need to install the app and then you can locate your device using your Google account.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8sIKNwnIAC5PrgLwGJOFYGSM7jhmz_fm9beO8hGiL11q1mDpBt6d2TQr5315f5uix_edFJRfhrywRZ5y0dpD9LL6plFzUT7yWITfoYYpewP6lFlz0C7vKDcPYvFxHNkmbCxcrt410K44/s1600/find-my-device-screenshot.webp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Find my Device Android app&quot; border=&quot;0&quot; data-original-height=&quot;900&quot; data-original-width=&quot;506&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8sIKNwnIAC5PrgLwGJOFYGSM7jhmz_fm9beO8hGiL11q1mDpBt6d2TQr5315f5uix_edFJRfhrywRZ5y0dpD9LL6plFzUT7yWITfoYYpewP6lFlz0C7vKDcPYvFxHNkmbCxcrt410K44/s400/find-my-device-screenshot.webp&quot; title=&quot;Find my Device Android app&quot; width=&quot;223&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Steps to find your missing Android device:&lt;/b&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Install the &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.google.android.apps.adm&amp;amp;hl=en&amp;amp;utm_source=www.sundeepmachado.com&quot; target=&quot;_blank&quot;&gt;Find My Device app&lt;/a&gt;&amp;nbsp;on your Android device (it is very important as the app helps in locating the device)&lt;/li&gt;
&lt;li&gt;Visit the &lt;a href=&quot;https://myaccount.google.com/find-your-phone&quot; target=&quot;_blank&quot;&gt;Find My Phone website&lt;/a&gt;, you will now see the list of devices as below after you log in to your Google account:&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYzTncW2lLd3z21oDrZlKyBseSgs91fhCv60OKnajK-e37l96J_S9VarLlT5euy0hhynysdnx9tXMj1fma1ELi87SZFTs7Cr1YORAoo1rWRTP4sQ47DpwSe_TjwpYH14MEfhncAl0Ll8M/s1600/list-of-android-devices-find-my-device.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;List of Devices on Find my device &quot; border=&quot;0&quot; data-original-height=&quot;384&quot; data-original-width=&quot;1388&quot; height=&quot;110&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYzTncW2lLd3z21oDrZlKyBseSgs91fhCv60OKnajK-e37l96J_S9VarLlT5euy0hhynysdnx9tXMj1fma1ELi87SZFTs7Cr1YORAoo1rWRTP4sQ47DpwSe_TjwpYH14MEfhncAl0Ll8M/s400/list-of-android-devices-find-my-device.png&quot; title=&quot;List of Devices on Find my device &quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Click on the device you want to locate.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;Additional Options:&lt;/b&gt;&lt;/h3&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaCQVnwHgMonCNbGHH-0Nx2n5QNQiBA1GdK_A08ojQJ2GCZRqtLVOaZHunRUzyTJXxOrEf2fbXhJ2z3MX9slNraf-tg14BYciRWqi8zsnhLCCEf1aoMcal2r_b_G-V7w79LdZMECcO-Bk/s1600/find-my-phone-website-options.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Find my Phone website&quot; border=&quot;0&quot; data-original-height=&quot;1265&quot; data-original-width=&quot;1344&quot; height=&quot;375&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaCQVnwHgMonCNbGHH-0Nx2n5QNQiBA1GdK_A08ojQJ2GCZRqtLVOaZHunRUzyTJXxOrEf2fbXhJ2z3MX9slNraf-tg14BYciRWqi8zsnhLCCEf1aoMcal2r_b_G-V7w79LdZMECcO-Bk/s400/find-my-phone-website-options.png&quot; title=&quot;Find my Phone website&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
You can have additional options after you locate your device like locking the device, erasing all data etc. as seen above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/5395637492098468597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2017/07/how-to-find-your-lost-or-misplaced.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/5395637492098468597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/5395637492098468597'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2017/07/how-to-find-your-lost-or-misplaced.html' title='How to find your lost or misplaced Android device?'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKT9hBoFfYuQqpjkIfngrMBw4l5HIXSioo-3DRveFrqednrmAcE05YGosLBtfserzqnbdQhi50aoSRIYbU-i3DkRuLtlYMMDNmH2_B_U4C8upbdroObfonm1HxUQewJaJJDZ8iPB3GwGI/s72-c/find-my-device-android.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-4403598867344066828</id><published>2017-05-21T11:14:00.000+05:30</published><updated>2017-05-21T11:14:15.082+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="email"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="yandex"/><title type='text'>Get free 1000 email accounts for your domain</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi89AbgjcX5eCWUo9lNqwmQVuVXZecocUKfwkFiszASolVX0IstbHmfyJsIa3i4egx8cuyVytQRJNL84KHATYllXsk8ye5dHMKeiE7ayx8T3VKGyBe0WbgxEWVXBpw1KkX8fdc8DT7_PJM/s1600/yandex-mail-for-domains.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Yandex Mail for Domains&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi89AbgjcX5eCWUo9lNqwmQVuVXZecocUKfwkFiszASolVX0IstbHmfyJsIa3i4egx8cuyVytQRJNL84KHATYllXsk8ye5dHMKeiE7ayx8T3VKGyBe0WbgxEWVXBpw1KkX8fdc8DT7_PJM/s200/yandex-mail-for-domains.jpg&quot; title=&quot;Yandex Mail for Domains&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://domain.yandex.com/&quot; target=&quot;_blank&quot;&gt;Yandex.Mail for Domains&lt;/a&gt; is a free service provided by Yandex. After verifying your domain name ownership, you will get 1000 email accounts with 10 GB space for free.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Steps to get free email accounts via Yandex.Mail for Domains&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Create a Yandex account&lt;/li&gt;
&lt;li&gt;Verifying your domain ownership&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWz42nw5sdeUQB6D0e-ji0Yq7rqr3jnPHhAKBZORkuMGmtfcW8lctoHCXUCUV3Xk6FFrZFlrrkcrhy8J7LSb1nBMrRM5Mm-6LZSVJeUyqEZmkxQMQebuRhgDgdvaMp0bkqmm4TAfnhO3k/s1600/yandex-mail-sreenshot.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Yandex mail for domains&quot; border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWz42nw5sdeUQB6D0e-ji0Yq7rqr3jnPHhAKBZORkuMGmtfcW8lctoHCXUCUV3Xk6FFrZFlrrkcrhy8J7LSb1nBMrRM5Mm-6LZSVJeUyqEZmkxQMQebuRhgDgdvaMp0bkqmm4TAfnhO3k/s400/yandex-mail-sreenshot.png&quot; title=&quot;Yandex mail for domains&quot; width=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to verify the domain you need to add the following domain Nameservers:&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Primary DNS server — “dns1.yandex.net.”&lt;/li&gt;
&lt;li&gt;Secondary DNS server — “dns2.yandex.net.”&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div&gt;
After verification, you can create upto 1000 email accounts. You can also use the optional Domain Management services too.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/4403598867344066828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2017/05/get-free-1000-email-accounts-for-your.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/4403598867344066828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/4403598867344066828'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2017/05/get-free-1000-email-accounts-for-your.html' title='Get free 1000 email accounts for your domain'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi89AbgjcX5eCWUo9lNqwmQVuVXZecocUKfwkFiszASolVX0IstbHmfyJsIa3i4egx8cuyVytQRJNL84KHATYllXsk8ye5dHMKeiE7ayx8T3VKGyBe0WbgxEWVXBpw1KkX8fdc8DT7_PJM/s72-c/yandex-mail-for-domains.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-719372356620690405</id><published>2017-05-16T20:00:00.000+05:30</published><updated>2017-05-16T22:06:29.634+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="blog"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>How to upgrade your website or blog from http to https for free</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaW250UEXhA3SGXIm-C1yWFMghYhAFdGPRqTAOmCRxEmaVxjy-3HwNO9n_7j3TOl_Fo5dM7sqoEvaMq4-KQkR323FMYCwuM-MD1XtAjnjHw4PYujyJaApab_cUiUEFKEc6STneg9sJYZw/s1600/cloudfare-logo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Cloudfare SSL&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaW250UEXhA3SGXIm-C1yWFMghYhAFdGPRqTAOmCRxEmaVxjy-3HwNO9n_7j3TOl_Fo5dM7sqoEvaMq4-KQkR323FMYCwuM-MD1XtAjnjHw4PYujyJaApab_cUiUEFKEc6STneg9sJYZw/s200/cloudfare-logo.jpg&quot; title=&quot;Cloudfare SSL&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Cloudfare offers a&lt;a href=&quot;https://www.cloudflare.com/ssl/&quot; target=&quot;_blank&quot;&gt; free SSL certificate&amp;nbsp;&lt;/a&gt;&amp;nbsp;that enables a website publisher to host content using the https protocol on a website.&lt;br /&gt;
&lt;br /&gt;
It also allows a blogger blog which has a custom domain to upgrade to https.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;What are the advantages of https?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Websites are more secure&lt;/li&gt;
&lt;li&gt;Google assigns a higher ranking to https websites&lt;/li&gt;
&lt;li&gt;Websites are faster&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How to install &amp;nbsp;Cloudfare certificates?&lt;/b&gt;&lt;br /&gt;
In order to install the Cloudfare SSL certificate so that all content is served via https, a website owner needs to change the DNS nameservers to that provided by Cloudfare as below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1z-L4lOxeIFQff-TQPHmz-nUjYLzOJkEG_rfUKiCiqTk2dS4Q55vVnpRlDn3d1MpikstzHUpehd0I5Edo_hXnIVkxOR59-ii0j9nRRB2NcZ2-X85DM-m1feeLAY2i3fiMC8vrpFQi3qI/s1600/cloudfare-dns-entries.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Cloudfare NameServers&quot; border=&quot;0&quot; height=&quot;222&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1z-L4lOxeIFQff-TQPHmz-nUjYLzOJkEG_rfUKiCiqTk2dS4Q55vVnpRlDn3d1MpikstzHUpehd0I5Edo_hXnIVkxOR59-ii0j9nRRB2NcZ2-X85DM-m1feeLAY2i3fiMC8vrpFQi3qI/s640/cloudfare-dns-entries.png&quot; title=&quot;Cloudfare NameServers&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The best thing is that existing MX, A, TXT records are backed up and nothing gets deleted.&lt;br /&gt;
&lt;br /&gt;
You then need to enable SSL in the Crypto tab in Cloudflare console:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidubu-ZRyBkK24RDaeJBwFPCQajOmH-EEIoSaiGtHJOvG25PWtEknr0kE8fyU6CN9EwYsRCkvODjpT1OOf1V32bI5PUiEnZUWPONTVrMNlCo09j2wT9G0ET6v-3uDD157qa7Uv_W_svYg/s1600/cloudflare-ssl-option.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Enable SSL in Cloudflare&quot; border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidubu-ZRyBkK24RDaeJBwFPCQajOmH-EEIoSaiGtHJOvG25PWtEknr0kE8fyU6CN9EwYsRCkvODjpT1OOf1V32bI5PUiEnZUWPONTVrMNlCo09j2wT9G0ET6v-3uDD157qa7Uv_W_svYg/s400/cloudflare-ssl-option.png&quot; title=&quot;Enable SSL in Cloudflare&quot; width=&quot;301&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
As soon as you enable this option, the website will be served via HTTPS protocol. &amp;nbsp;Users will see a lock option in the address bar as below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgao2hNoGn9LtxJTYtLxcBRJt06_EdFSVet_ePDwgVbMODRnByM1N-ueH1pQJZxZzOnPmLBynIccCU42dfPmRnmdWxeA1FWXWwkP7RVLQG9Y1RdKldWJhtG-HrqZExVqgPOgNSIhnOJ5Tg/s1600/https-proof.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;https proof&quot; border=&quot;0&quot; height=&quot;59&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgao2hNoGn9LtxJTYtLxcBRJt06_EdFSVet_ePDwgVbMODRnByM1N-ueH1pQJZxZzOnPmLBynIccCU42dfPmRnmdWxeA1FWXWwkP7RVLQG9Y1RdKldWJhtG-HrqZExVqgPOgNSIhnOJ5Tg/s320/https-proof.png&quot; title=&quot;https proof&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
You can easily force all mixed content to be served via https using the below setting:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_8KS_tkdYKYbd5YJBZQtouaDxDLsjgBl0ymGckPOh8gUlcFyab_XEkRakKLucy30COyd7QejbLFdo77WWnvOfafRCK4DDYe86hWsJeVsqSz6wwNlwJRQga2Qm7RkEDe3GklXSk7zhwts/s1600/force-https-settings-cloudflare.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;force https setting&quot; border=&quot;0&quot; height=&quot;96&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_8KS_tkdYKYbd5YJBZQtouaDxDLsjgBl0ymGckPOh8gUlcFyab_XEkRakKLucy30COyd7QejbLFdo77WWnvOfafRCK4DDYe86hWsJeVsqSz6wwNlwJRQga2Qm7RkEDe3GklXSk7zhwts/s400/force-https-settings-cloudflare.png&quot; title=&quot;force https setting&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The advantage is that if a website owner has uploaded an image which was served by http and is now available on https, Cloudflare detects this and automatically serves such content via https.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/719372356620690405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2017/05/http-to-https-for-free.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/719372356620690405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/719372356620690405'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2017/05/http-to-https-for-free.html' title='How to upgrade your website or blog from http to https for free'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaW250UEXhA3SGXIm-C1yWFMghYhAFdGPRqTAOmCRxEmaVxjy-3HwNO9n_7j3TOl_Fo5dM7sqoEvaMq4-KQkR323FMYCwuM-MD1XtAjnjHw4PYujyJaApab_cUiUEFKEc6STneg9sJYZw/s72-c/cloudfare-logo.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-7395546550486216576</id><published>2017-05-08T19:37:00.000+05:30</published><updated>2017-05-08T19:37:56.353+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="analytics"/><category scheme="http://www.blogger.com/atom/ns#" term="webmaster"/><category scheme="http://www.blogger.com/atom/ns#" term="yandex"/><title type='text'>How to replay user actions on your website?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEnc2xDUwBg0DZ2y731ghJcRez6gLNvbCMk_0zUj_-MeTG37DYgjHWP0xIeBzI9eUF93Ddz1XRxQaF5QBxgilSKexERcrqcOSIwQj-ScTuc8CTRCHfajy_1LL1mojAvzCy2K65rdsUkT4/s1600/yandex-metrica-session-replay-feature.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Yandex Metrica&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEnc2xDUwBg0DZ2y731ghJcRez6gLNvbCMk_0zUj_-MeTG37DYgjHWP0xIeBzI9eUF93Ddz1XRxQaF5QBxgilSKexERcrqcOSIwQj-ScTuc8CTRCHfajy_1LL1mojAvzCy2K65rdsUkT4/s200/yandex-metrica-session-replay-feature.png&quot; title=&quot;Yandex Metrica&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://metrica.yandex.com/&quot; target=&quot;_blank&quot;&gt;Yandex Metrica&lt;/a&gt; is a free Analytics service similar to Google Analytics.&lt;br /&gt;
&lt;br /&gt;
It has a cool user session replay feature that allows to see how users are using a particular website. It basically records users sessions and then replays it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaWvkvX9wNjvgSRJZS0Dvi0hQKQX2THq5PNjd5AzOtRM9f3u8JNXYnKSlfxKdOOC47UJ30SNcZUQjJ9mQqVS05tQ9EvDl90pUk-TcP3GEd4NDYXd7UE-wMtfBiooRo5VOB1T826jRtKoE/s1600/session-replay-feature-yandex-metrica.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Session Replay feature Yandex Metrica&quot; border=&quot;0&quot; height=&quot;313&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaWvkvX9wNjvgSRJZS0Dvi0hQKQX2THq5PNjd5AzOtRM9f3u8JNXYnKSlfxKdOOC47UJ30SNcZUQjJ9mQqVS05tQ9EvDl90pUk-TcP3GEd4NDYXd7UE-wMtfBiooRo5VOB1T826jRtKoE/s400/session-replay-feature-yandex-metrica.PNG&quot; title=&quot;Session Replay feature Yandex Metrica&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
It gives a detail overview of your users and the duration of each session. To replay you just need to hit the play button.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUY9EyICfHtWfAChCiWOC4rT56vF_ZpFWD2ChDDs3TQL5q6fN6AKoPIjGWgaJRoxPOsxk4r8J2iTTkZoaN6qwwqkHWz9NfvXJ89knXjPf9NY9-IqEZZf3PE5RGeHci-TlfLaebiETYboU/s1600/advance-query-options-reporting.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;advance reporting options&quot; border=&quot;0&quot; height=&quot;370&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUY9EyICfHtWfAChCiWOC4rT56vF_ZpFWD2ChDDs3TQL5q6fN6AKoPIjGWgaJRoxPOsxk4r8J2iTTkZoaN6qwwqkHWz9NfvXJ89knXjPf9NY9-IqEZZf3PE5RGeHci-TlfLaebiETYboU/s400/advance-query-options-reporting.PNG&quot; title=&quot;advance reporting options&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Metrica also supports advance reporting options as you can filter users based on particular criteria. &lt;i&gt;Example: You can filter users visiting the website using Chrome Browser and who are visiting from United States of America.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/7395546550486216576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2017/05/how-to-replay-user-actions-website.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/7395546550486216576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/7395546550486216576'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2017/05/how-to-replay-user-actions-website.html' title='How to replay user actions on your website?'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEnc2xDUwBg0DZ2y731ghJcRez6gLNvbCMk_0zUj_-MeTG37DYgjHWP0xIeBzI9eUF93Ddz1XRxQaF5QBxgilSKexERcrqcOSIwQj-ScTuc8CTRCHfajy_1LL1mojAvzCy2K65rdsUkT4/s72-c/yandex-metrica-session-replay-feature.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-2272429488136654609</id><published>2017-04-30T19:36:00.001+05:30</published><updated>2017-04-30T19:36:45.376+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="apps"/><category scheme="http://www.blogger.com/atom/ns#" term="mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Opera VPN - Free VPN app for Android and iOS devices</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSuZigumnkkNfQzJQ5p4dyD9WbHojKSI8qv8MojwWYJ2vBpScYaOvvTlT0BX9zUbz-acVrYxwoub5di9vQMM8EACaldXq-GTRnv0Rp-vutQrGpfnWdxB3YsFGfyzF9_Fil4bM4-ryoCzE/s1600/opera-vpn.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Opera Vpn - Free Vpn app for your android and iOS device&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSuZigumnkkNfQzJQ5p4dyD9WbHojKSI8qv8MojwWYJ2vBpScYaOvvTlT0BX9zUbz-acVrYxwoub5di9vQMM8EACaldXq-GTRnv0Rp-vutQrGpfnWdxB3YsFGfyzF9_Fil4bM4-ryoCzE/s200/opera-vpn.png&quot; title=&quot;Opera Vpn - Free Vpn app for your android and iOS device&quot; width=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.operavpn.com/&quot; target=&quot;_blank&quot;&gt;Opera VPN&lt;/a&gt; is a free VPN by Opera for android and iOS devices.&lt;br /&gt;
&lt;br /&gt;
It has a lot of cool features that are not available in most commercial VPN service providers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;What are the different features of Opera VPN?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;1. Hide your IP address and get a different IP address from a particular country&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTteNBBfd6MWahDImHhEMJrZvAwqJd-3LLabDfn3SdIYpsj2UZBE1PWgXcsFf2g8kbowqpSjOrK-1FtQkp3gBvPOoTOWGBs5vlD5kxN13PqOFupfOLIkmLpDtWjPa0Kfeo6l9WU-D7qgQ/s1600/opera-vpn-browse-from-us-canada-for-free.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Browse from US and Canada&quot; border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTteNBBfd6MWahDImHhEMJrZvAwqJd-3LLabDfn3SdIYpsj2UZBE1PWgXcsFf2g8kbowqpSjOrK-1FtQkp3gBvPOoTOWGBs5vlD5kxN13PqOFupfOLIkmLpDtWjPa0Kfeo6l9WU-D7qgQ/s400/opera-vpn-browse-from-us-canada-for-free.png&quot; title=&quot;Browse from US and Canada&quot; width=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Opera VPN allows users to select a region particular region like United States and Canada.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. &amp;nbsp;Block irritating ads and trackers on websites&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOxctLUNF9QVD4zeJjN1qMpXV6OiLJulQLTJcgBHV_8ZRn3gvz3SC6Y5NYHSDBLrAu6Y_qCozZX9Zx-HydCmEo27Ba-904dqkxe2T3HYkUhONdHDiDY6hqHcUeyY50NLvQYq5hiU0WZps/s1600/opera-vpn-features.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Block ads and Trackers using Opera VPN&quot; border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOxctLUNF9QVD4zeJjN1qMpXV6OiLJulQLTJcgBHV_8ZRn3gvz3SC6Y5NYHSDBLrAu6Y_qCozZX9Zx-HydCmEo27Ba-904dqkxe2T3HYkUhONdHDiDY6hqHcUeyY50NLvQYq5hiU0WZps/s400/opera-vpn-features.jpg&quot; title=&quot;Block ads and Trackers using Opera VPN&quot; width=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Advertisers assign an advertising id to users and this helps them to &lt;a href=&quot;http://www.sundeepmachado.com/2017/04/how-to-better-understand-visitors-using-google-analytics-user-explorer-feature.html&quot; target=&quot;_blank&quot;&gt;track user activity and know how they are using apps and website&lt;/a&gt;.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;3. Test Wifi Settings&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZWZ3Fwg7IboTVhy3_frZap4RIC_zh0WJTsFF70_cPCX5jxvPKNyVb73SlU2OjxgDyOh4kfjijkthRppshPTw94fqtMknPfhs15J62l3Vc6tCbQPeSl-_GwNK-wbF3oWUFxrJYdvzp0qA/s1600/test-vpn-settings-opera-vpn.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;test wifi settings opera vpn&quot; border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZWZ3Fwg7IboTVhy3_frZap4RIC_zh0WJTsFF70_cPCX5jxvPKNyVb73SlU2OjxgDyOh4kfjijkthRppshPTw94fqtMknPfhs15J62l3Vc6tCbQPeSl-_GwNK-wbF3oWUFxrJYdvzp0qA/s400/test-vpn-settings-opera-vpn.png&quot; title=&quot;test wifi settings opera vpn&quot; width=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Opera VPN can also test any wifi settings to check security loopholes .&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/2272429488136654609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/2272429488136654609'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2017/04/free-vpn-app-android-ios-device.html' title='Opera VPN - Free VPN app for Android and iOS devices'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSuZigumnkkNfQzJQ5p4dyD9WbHojKSI8qv8MojwWYJ2vBpScYaOvvTlT0BX9zUbz-acVrYxwoub5di9vQMM8EACaldXq-GTRnv0Rp-vutQrGpfnWdxB3YsFGfyzF9_Fil4bM4-ryoCzE/s72-c/opera-vpn.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-4801568679305680468</id><published>2017-04-27T20:11:00.000+05:30</published><updated>2017-04-27T20:11:01.117+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="instagram"/><title type='text'>After Fake news, Facebook introduces Vivo fake ads on Instagram</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzU26zEBIVzI6Znoj4A-_R-5p-Tyl7ME22q1a0fqsDPJbQWPbAOs5E838h-ljHk_Fpzb4iCoQkBGw0vqArhcNH4xdyjgGqYJH-Fcfq_vRXdDsknuoige9HKEMApmjmRtQTaoG__QB-FjU/s1600/instagram-logo.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Instagram - Fake Ads&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzU26zEBIVzI6Znoj4A-_R-5p-Tyl7ME22q1a0fqsDPJbQWPbAOs5E838h-ljHk_Fpzb4iCoQkBGw0vqArhcNH4xdyjgGqYJH-Fcfq_vRXdDsknuoige9HKEMApmjmRtQTaoG__QB-FjU/s200/instagram-logo.png&quot; title=&quot;Instagram - Fake Ads&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Facebook has done it again.&lt;br /&gt;
&lt;br /&gt;
After fake news, Facebook has started showing fake ads on its Instagram service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPbMi6O3H3513y3bMsm7Jaz4dn4byk5P2B0DDeMBkwaxnpBTZLDoNjbCEfTQ3djCJ3ms-uu7e5wBqwn1iNloeXseUE9k7S0Q1aeHROV-FSkX1Xh1XS0oXJG5peHH_eJtmcWK2YOFT3aKQ/s1600/fake-ads-instagram.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Fake Ads on Instagram&quot; border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPbMi6O3H3513y3bMsm7Jaz4dn4byk5P2B0DDeMBkwaxnpBTZLDoNjbCEfTQ3djCJ3ms-uu7e5wBqwn1iNloeXseUE9k7S0Q1aeHROV-FSkX1Xh1XS0oXJG5peHH_eJtmcWK2YOFT3aKQ/s640/fake-ads-instagram.PNG&quot; title=&quot;Fake Ads on Instagram&quot; width=&quot;360&quot; /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
An iPhone 5s for Rs 499 is 7.78$. This advertisment is too good to be true. After clicking on the advertisement, the website opened was a similar to Amazon as seen below.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJPS5euKyHryVa6F_NHPi2RFLEHJnRQBERKwLIC-QTD19iTEI9Gh8qyk-WW25zBMXrtplEMWEqeqqYaHTjx7s8OorS7GOXPFPuUiz-AO-dAaIXnb2FgMEoBD82kyxz2h1Bq1V4yJEMJKo/s1600/fake-amazon-website.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Fake amazon website&quot; border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJPS5euKyHryVa6F_NHPi2RFLEHJnRQBERKwLIC-QTD19iTEI9Gh8qyk-WW25zBMXrtplEMWEqeqqYaHTjx7s8OorS7GOXPFPuUiz-AO-dAaIXnb2FgMEoBD82kyxz2h1Bq1V4yJEMJKo/s640/fake-amazon-website.PNG&quot; title=&quot;Fake amazon website&quot; width=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
A domain lookup showed the real owner of the website as below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYmotVDLSysODlSZpk1KZN-7jHOh6F4Z54gjTVTntQTql1P_JCxjdx1gXgqRxDcWnzokBJIzNGd9xLiJ8QDwkLdQ1Lir478WX-OB-lSDbNKyijC1QhD1Rv13lK16ro3rR9Ap8SX-WeuVU/s1600/fake-ads-website-instagram-owner.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Fake website owner in Instagram ads&quot; border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYmotVDLSysODlSZpk1KZN-7jHOh6F4Z54gjTVTntQTql1P_JCxjdx1gXgqRxDcWnzokBJIzNGd9xLiJ8QDwkLdQ1Lir478WX-OB-lSDbNKyijC1QhD1Rv13lK16ro3rR9Ap8SX-WeuVU/s320/fake-ads-website-instagram-owner.png&quot; title=&quot;Fake website owner in Instagram ads&quot; width=&quot;313&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The advertiser has smartly masked the url with Vivo which is a mobile phone maker.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/4801568679305680468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/4801568679305680468'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2017/04/after-fake-news-facebook-introduces-fake-ads.html' title='After Fake news, Facebook introduces Vivo fake ads on Instagram'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/13128759308353994017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzU26zEBIVzI6Znoj4A-_R-5p-Tyl7ME22q1a0fqsDPJbQWPbAOs5E838h-ljHk_Fpzb4iCoQkBGw0vqArhcNH4xdyjgGqYJH-Fcfq_vRXdDsknuoige9HKEMApmjmRtQTaoG__QB-FjU/s72-c/instagram-logo.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-3313075600348937694</id><published>2017-04-26T23:00:00.001+05:30</published><updated>2017-04-26T23:00:26.246+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><title type='text'>Facebook chat bot allows anonymous people to ask and answer questions</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7WIA7F5A28MSpXiLlByB5eMswyEqaltGpge_UFp_zYsPC_DGOHPyomZ1DCGFexajlC6v0PlgPRKbxx5XHa5uCFdqtcU1JIxSqK22yegmsty4MT2JoxIr_5jockhoEdAw1YcBo7K1IEG4/s1600/give-or-take-facebook-chatbot.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Facebook chatbot Give or take&quot; border=&quot;0&quot; height=&quot;142&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7WIA7F5A28MSpXiLlByB5eMswyEqaltGpge_UFp_zYsPC_DGOHPyomZ1DCGFexajlC6v0PlgPRKbxx5XHa5uCFdqtcU1JIxSqK22yegmsty4MT2JoxIr_5jockhoEdAw1YcBo7K1IEG4/s200/give-or-take-facebook-chatbot.png&quot; title=&quot;Facebook chatbot Give or take&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The Facebook messenger bot platform has a good number of useful bots.&lt;br /&gt;
A new bot called &lt;a href=&quot;https://www.facebook.com/GiveOrTakeChatbot/&quot; target=&quot;_blank&quot;&gt;Give or Take&lt;/a&gt; allows users to ask and answer questions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibMjm1lZIZafjnh-l4sTTKPMYAnRAkyrFvSsU0fkNPigI7vkfy1C8U6QQC-cY3SQcl75j5mChwmVUiuVIHkqkInbuDYOkFgAntZHC04eb5oZFwi4mZ9NSf5clU42TfBQQZw_UoVr1MSa8/s1600/facebook-chatbot-questions-answers.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Facebook chat bot Q&amp;amp;A&quot; border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibMjm1lZIZafjnh-l4sTTKPMYAnRAkyrFvSsU0fkNPigI7vkfy1C8U6QQC-cY3SQcl75j5mChwmVUiuVIHkqkInbuDYOkFgAntZHC04eb5oZFwi4mZ9NSf5clU42TfBQQZw_UoVr1MSa8/s640/facebook-chatbot-questions-answers.PNG&quot; title=&quot;Facebook chat bot Q&amp;amp;A&quot; width=&quot;360&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
This Facebook bot is very fast and very engaging. &amp;nbsp;You need to install the facebook messenger app on your device for it to work on your phone. Once installed visit the bot at &amp;nbsp;&lt;a href=&quot;https://www.facebook.com/GiveOrTakeChatbot/&quot; target=&quot;_blank&quot;&gt;GiveOrTakeChatbot&amp;nbsp;&lt;/a&gt;.&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/3313075600348937694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/3313075600348937694'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2017/04/facebook-chat-bot-allows-anonymous.html' title='Facebook chat bot allows anonymous people to ask and answer questions'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7WIA7F5A28MSpXiLlByB5eMswyEqaltGpge_UFp_zYsPC_DGOHPyomZ1DCGFexajlC6v0PlgPRKbxx5XHa5uCFdqtcU1JIxSqK22yegmsty4MT2JoxIr_5jockhoEdAw1YcBo7K1IEG4/s72-c/give-or-take-facebook-chatbot.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-8549957768132692856</id><published>2017-04-26T05:30:00.000+05:30</published><updated>2017-04-26T05:30:24.751+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="adsense"/><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="money"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>How to run ad experiments using Google Adsense</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipboSIBNdxwc5tn6XSXfNjrAEyheK1oNNlur-DkZ-SoobgCl4A8Iu1ZU36ZLJU3iVQX31srTcF5DVfeb_eMxo2f6umjMBmMORiVMWg-WfY-k28SI0HyxH72kTtRPeRLkJReuEC5wAA7kA/s1600/Google-Adsense.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Google AdSense&quot; border=&quot;0&quot; height=&quot;112&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipboSIBNdxwc5tn6XSXfNjrAEyheK1oNNlur-DkZ-SoobgCl4A8Iu1ZU36ZLJU3iVQX31srTcF5DVfeb_eMxo2f6umjMBmMORiVMWg-WfY-k28SI0HyxH72kTtRPeRLkJReuEC5wAA7kA/s320/Google-Adsense.png&quot; title=&quot;Google AdSense&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Google Adsense allows content publishers to experiment with different ad formats and ad categories.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can find the Experiments feature under the &lt;b&gt;Optimisation&lt;/b&gt; Tab.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1l7ry6WkwQXi5ZFy9t5sN-xoo0DrJmN3IFlwEghRIYIPhUTQfFBQ8oCw4YDsNIgK7-pZn0TTTaBOCB0DijeIjRNecbPHZRpUbXVuXlYaA7KJWI75vAfKm_dkirUkY_HBHSaGOMjk2sp0/s1600/google-adsense-experiment-types.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Google AdSense experiment types&quot; border=&quot;0&quot; class=&quot;qqmlmvyuhmovizrhejxz&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1l7ry6WkwQXi5ZFy9t5sN-xoo0DrJmN3IFlwEghRIYIPhUTQfFBQ8oCw4YDsNIgK7-pZn0TTTaBOCB0DijeIjRNecbPHZRpUbXVuXlYaA7KJWI75vAfKm_dkirUkY_HBHSaGOMjk2sp0/s400/google-adsense-experiment-types.png&quot; title=&quot;Google AdSense experiment types&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
There are two types of experiments:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Ad unit settings &lt;/b&gt;- This experiment allows the user to change the the ad type or ad style and see what works best. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;Allow and block experiment &lt;/b&gt;- This experiment allows the user to work with different categories and op-outs&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQNG0D00CmySALlS_J0JIAjfIf_dXGJCj9RsBSGfyttpFNv-WqNFVIgC1OMTAgLeAvXxJOk4xh_bzZH4fNB3tg2CR2rCq7nJFg1nIkkNjY3Vbi0sl16wQ73fu76NyXcvTK9WEmbnxSSW0/s1600/google-adsense-experiments-in-action.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Google AdSense in action&quot; border=&quot;0&quot; height=&quot;221&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQNG0D00CmySALlS_J0JIAjfIf_dXGJCj9RsBSGfyttpFNv-WqNFVIgC1OMTAgLeAvXxJOk4xh_bzZH4fNB3tg2CR2rCq7nJFg1nIkkNjY3Vbi0sl16wQ73fu76NyXcvTK9WEmbnxSSW0/s640/google-adsense-experiments-in-action.png&quot; title=&quot;Google AdSense in action&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea is to identify which ad formats are working for a particular website and how website owners can maximise their revenue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/8549957768132692856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2017/04/how-to-run-ad-experiments-google-adsense.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/8549957768132692856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/8549957768132692856'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2017/04/how-to-run-ad-experiments-google-adsense.html' title='How to run ad experiments using Google Adsense'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/13128759308353994017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipboSIBNdxwc5tn6XSXfNjrAEyheK1oNNlur-DkZ-SoobgCl4A8Iu1ZU36ZLJU3iVQX31srTcF5DVfeb_eMxo2f6umjMBmMORiVMWg-WfY-k28SI0HyxH72kTtRPeRLkJReuEC5wAA7kA/s72-c/Google-Adsense.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-7101794507586130485</id><published>2017-04-24T21:32:00.000+05:30</published><updated>2017-04-24T21:36:27.545+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="adsense"/><category scheme="http://www.blogger.com/atom/ns#" term="google"/><title type='text'>Google Chrome to have new ad-blocking features soon</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP5uauSZ0luTb-tRGp5jWRuQK0l89-3qImNMIIXjEbdHUnFLCOVBmCamUHI7yxK0xdZ0jDVIEAOYdpfT4q-hkBLnmmNvFESC5t1CDXHgafOIwJR1Wdj7LJr4w18Z2cnKDugl8KQv4N4xQ/s1600/google-chrome.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img .=&quot;&quot; alt=&quot;Google Chrome&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP5uauSZ0luTb-tRGp5jWRuQK0l89-3qImNMIIXjEbdHUnFLCOVBmCamUHI7yxK0xdZ0jDVIEAOYdpfT4q-hkBLnmmNvFESC5t1CDXHgafOIwJR1Wdj7LJr4w18Z2cnKDugl8KQv4N4xQ/s200/google-chrome.png&quot; title=&quot;Browser Stats&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Google Chrome is all set to introduce new ad-blocking features that will be enabled by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Google Chrome is the world&#39;s most used Web Browser as per &lt;a href=&quot;https://www.w3schools.com/browsers/&quot; target=&quot;_blank&quot;&gt;W3Schools&lt;/a&gt;. &amp;nbsp;As a result it has monopoly in deciding what ads it wants to display to the users.&lt;br /&gt;
&lt;br /&gt;
The ad blocking market is growing at a tremendous space. About 15 % mobile users have ad-block software installed on their devices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Adblock Plus &lt;/b&gt;is the number one ad-blocker available to the users which helps &lt;a href=&quot;http://www.sundeepmachado.com/2014/12/how-to-stop-annoying-youtube.html&quot; target=&quot;_blank&quot;&gt;users to block advertisements on websites like YouTube&lt;/a&gt;. As a result companies like Google who own sites like YouTube end up losing a lot of money as users don&#39;t see ads. By introducing ad-blocking features, Google ensures that it can show ads on websites the company owns or deems fit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA0Ki9mBCf9vPjb2_IkTRyLyhMT41yI1UNx1HNM-DPx5lxkCP3g5knnCeH7YZjowV5iJRYqYYYwF029GUrJIW7WvfN335YFwW_rpfFVp0ja8JsWDJEaO1BiyVSE3hVFL3T-0GuxlgQhCk/s1600/Google-Adsense-Logo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Google Adsense Logo&quot; border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA0Ki9mBCf9vPjb2_IkTRyLyhMT41yI1UNx1HNM-DPx5lxkCP3g5knnCeH7YZjowV5iJRYqYYYwF029GUrJIW7WvfN335YFwW_rpfFVp0ja8JsWDJEaO1BiyVSE3hVFL3T-0GuxlgQhCk/s320/Google-Adsense-Logo.png&quot; title=&quot;Google Adsense Logo&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Google also allows website owners to&lt;a href=&quot;https://www.sundeepmachado.com/search/label/adsense&quot; target=&quot;_blank&quot;&gt; earn money using its Google Adsense &lt;/a&gt;program to which there is no fee.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/7101794507586130485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2017/04/google-chrome-to-have-new-ad-blocking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/7101794507586130485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/7101794507586130485'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2017/04/google-chrome-to-have-new-ad-blocking.html' title='Google Chrome to have new ad-blocking features soon'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP5uauSZ0luTb-tRGp5jWRuQK0l89-3qImNMIIXjEbdHUnFLCOVBmCamUHI7yxK0xdZ0jDVIEAOYdpfT4q-hkBLnmmNvFESC5t1CDXHgafOIwJR1Wdj7LJr4w18Z2cnKDugl8KQv4N4xQ/s72-c/google-chrome.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6065001694786660108.post-3529356143721493683</id><published>2017-04-23T10:20:00.001+05:30</published><updated>2017-04-23T10:20:15.379+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="analytics"/><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Google Analytics Chrome plugins : How to use them?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFI8BOAl55YYZMAvfx_NLFLHloiy438JavxWJ8VCs7AGHlWlRvBzppliZmDh3HeK2Hu-ggV55Me6urQBaaijU-JJChYt-NeW2p0EX9kIfUcMeeDIgWIZ9IY6IctyApfiGeEHTrWrK9Joo/s1600/google-analytics.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Google Analytics&quot; border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFI8BOAl55YYZMAvfx_NLFLHloiy438JavxWJ8VCs7AGHlWlRvBzppliZmDh3HeK2Hu-ggV55Me6urQBaaijU-JJChYt-NeW2p0EX9kIfUcMeeDIgWIZ9IY6IctyApfiGeEHTrWrK9Joo/s200/google-analytics.png&quot; title=&quot;Google Analytics&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Google Analytics team has released two free Chrome Plugins:&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/google-analytics-debugger/jnkmfdileelhofjcijamephohjechhna/related?hl=en&quot; target=&quot;_blank&quot;&gt;Google Analytics Debugger Chrome extension&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/page-analytics-by-google/fnbdnhhicmebfgdgglcdacdapkcihcoh?hl=en&quot; target=&quot;_blank&quot;&gt;Google Page Analytics Chrome Extension&amp;nbsp;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-2TQZhJULLsLpMwTY0PDN86q_RICuKUiiR95saPDDZ4b1jPL2aWCrlu_P2qEs3GaCG5mR5xi39gwkJfYiblomNe641Fm4buZKRATYUU3HnJZT6DR5STYZc7sR3Gk1wjVOXU-VXF-qxbk/s1600/google-chrome-analytics-extensions.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Google Chrome Browser&#39;s Google Analytics extension&quot; border=&quot;0&quot; height=&quot;88&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-2TQZhJULLsLpMwTY0PDN86q_RICuKUiiR95saPDDZ4b1jPL2aWCrlu_P2qEs3GaCG5mR5xi39gwkJfYiblomNe641Fm4buZKRATYUU3HnJZT6DR5STYZc7sR3Gk1wjVOXU-VXF-qxbk/s320/google-chrome-analytics-extensions.png&quot; title=&quot;Google Chrome Browser&#39;s Google Analytics extension&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As soon as you install the plugins, you will see them reside next to Google Chrome address bar.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/google-analytics-debugger/jnkmfdileelhofjcijamephohjechhna/related?hl=en&quot; target=&quot;_blank&quot;&gt;Google Analytics Debugger&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
This Google Analytics debugger plugin helps to debug whether Google Analytics is working correctly on a page.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2vM0Q0tdq7pIXD30-clQ2atKBQ6V4QxMbNCArrM65Vd8djemeu7apNtK5cGFNxq0e3DYxEKl6jMSdT2pcBJ8cB69yqh8PPowh17_WrieleR45pnJdFk8-DcMxm-n6azMJYZrbXy65Gho/s1600/google-analytics-debugger-chrome-extension.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Google Analytics debugger chrome extension&quot; border=&quot;0&quot; height=&quot;290&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2vM0Q0tdq7pIXD30-clQ2atKBQ6V4QxMbNCArrM65Vd8djemeu7apNtK5cGFNxq0e3DYxEKl6jMSdT2pcBJ8cB69yqh8PPowh17_WrieleR45pnJdFk8-DcMxm-n6azMJYZrbXy65Gho/s640/google-analytics-debugger-chrome-extension.png&quot; title=&quot;Google Analytics debugger chrome extension&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
You can easily debug a webpage by enabling the plugin and clicking on the console tab in Google Chrome.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;https://chrome.google.com/webstore/detail/page-analytics-by-google/fnbdnhhicmebfgdgglcdacdapkcihcoh?hl=en&quot; target=&quot;_blank&quot;&gt;Google Page Analytics Chrome Extension&amp;nbsp;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5pobnSAGI7PZsLndBUJq_cIx_Bae1yKpYxZ_igT78hdq1MFFKai4H9dY3Kba79iS5fCpNEM41aD_dN64b7MTGIRRdMMNMssG2TjXVPbnVj8eFHwKL8tal5VIuzqA6bk9P2i1jX0ldhbI/s1600/google-analytics-page-level-analytics-extension.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Google Page Level Analytics Extesnion&quot; border=&quot;0&quot; height=&quot;236&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5pobnSAGI7PZsLndBUJq_cIx_Bae1yKpYxZ_igT78hdq1MFFKai4H9dY3Kba79iS5fCpNEM41aD_dN64b7MTGIRRdMMNMssG2TjXVPbnVj8eFHwKL8tal5VIuzqA6bk9P2i1jX0ldhbI/s640/google-analytics-page-level-analytics-extension.png&quot; title=&quot;Google Page Level Analytics Extesnion&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
This extension gives an overview how web site visitors are interacting with the website by visualising the data collected from Google Analytics.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://www.sundeepmachado.com/feeds/3529356143721493683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.sundeepmachado.com/2017/04/google-analytics-chrome-plugins-how-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/3529356143721493683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6065001694786660108/posts/default/3529356143721493683'/><link rel='alternate' type='text/html' href='http://www.sundeepmachado.com/2017/04/google-analytics-chrome-plugins-how-to.html' title='Google Analytics Chrome plugins : How to use them?'/><author><name>sjmach</name><uri>http://www.blogger.com/profile/08269837582976340110</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFI8BOAl55YYZMAvfx_NLFLHloiy438JavxWJ8VCs7AGHlWlRvBzppliZmDh3HeK2Hu-ggV55Me6urQBaaijU-JJChYt-NeW2p0EX9kIfUcMeeDIgWIZ9IY6IctyApfiGeEHTrWrK9Joo/s72-c/google-analytics.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>