<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Knoldus - Technical Insights - Medium]]></title>
        <description><![CDATA[Knols, Insights and Opinions from the curious minds at Knoldus Inc. - Medium]]></description>
        <link>https://medium.com/knoldus?source=rss----223897590590---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Knoldus - Technical Insights - Medium</title>
            <link>https://medium.com/knoldus?source=rss----223897590590---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 13 Nov 2026 18:49:04 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/knoldus" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Introduction]]></title>
            <link>https://medium.com/knoldus/introduction-fd5d7e0b53ec?source=rss----223897590590---4</link>
            <guid isPermaLink="false">https://medium.com/p/fd5d7e0b53ec</guid>
            <category><![CDATA[estimations]]></category>
            <category><![CDATA[wb]]></category>
            <category><![CDATA[pert]]></category>
            <category><![CDATA[complex-task]]></category>
            <dc:creator><![CDATA[Knoldus Inc.]]></dc:creator>
            <pubDate>Sun, 20 Feb 2022 20:34:16 GMT</pubDate>
            <atom:updated>2022-02-20T20:34:16.274Z</atom:updated>
            <content:encoded><![CDATA[<p>We all know there are two critical questions that are associated with every project that we get:</p><ul><li>How much is the project cost?</li><li>When will the project get finished?</li></ul><p>The response to the above question will be quick if we are very certain about the work items that need to be completed.</p><p>But what if there are uncertainties in the scope of the project?</p><p>Estimating a Job or Task becomes a nightmare if there are uncertainties in the deliverables work items. And Project Sponsors always required the estimate to be accurate, which is sometimes difficult with uncertainties.</p><p>Estimated time is important even if there are uncertainties in your project. Let’s take a look at a real-life situation.</p><p>We all have Google maps used for navigating or driving to a location, if you see Google shows you an estimated time based on the uncertainties like road conditions, traffics, etc. No matter what’s the uncertainty we always get a single number from Google as an estimate which most of the time is accurate.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/152/0*P5PZo9HdIrIlqoHi.jpg" /></figure><p>How to estimate these uncertainties? PERT is the answer.</p><p>PERT is used both for estimating and also to define the schedule of the project. In this article, we will be discussing only how to use PERT in estimating tasks.</p><h4>What is PERT?</h4><p>Back in 1950, US Navy faced the issues while developing the nation’s first, submarine-launched, ballistic missile — Polaris. These issues were probable and improbable project outcomes for task outcomes.</p><p>The program needed a new method to create a schedule for the Polaris, which would create a risk-adjusted schedule that considers uncertain project outcomes for the given task duration.</p><p>The Project Evaluation and Review Technique is founded to overcome these issues.</p><p>The <strong>PERT</strong> method is still widely used for project estimation by Project Managers/BA.</p><h4>Lets understand</h4><p>PERT wants you to come up with three estimates, considering the uncertainties and risks associated with the task.</p><p>These estimates are:</p><ul><li>Optimistic (O) — The estimate assuming that all the resources are available and understood, for the task to be able to deliver.</li><li>Pessimistic (P) — The estimate assuming the worst-case scenario where all the uncertainty is considered, for eg: resource unavailability.</li><li>Most Likely (M) — This will be estimated based on the experience or on the fact that if there is any Risk encountered, the Project team can manage it as they would have handled a similar risk in the past.</li></ul><p>After gathering the estimates, the expected completion time for a task can be calculated as below:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/595/0*3IdtS7wQBWs_8q5m.png" /></figure><h4>Understanding with Example</h4><p>Suppose, you are going to get your Mobile phone fixed which has its screen broken and you tell your wife that you’ll be back in an hour. This announcement is purely based on assumptions, not on experience. Now Let’s put PERT into action and see how much you are confident about that promise you made to your wife.</p><p><strong>Optimistic</strong>:</p><ul><li>Reach the service center, following Google Map, and register the token for service desk: 10 min.</li><li>Wait for your Token no. to be called: 30 minutes. (Yes, truly optimistic)</li><li>Show the broken screen to the service engineer, understand the process and leave the phone for repair: 10 minutes.</li><li>That’s 50 minutes, which is well within the hour. (Leaving room to visit a flower shop to buy some flowers for your wife, necessary sometimes).</li></ul><p>Total estimate: 60 minutes</p><p><strong>Most Likely:</strong></p><ul><li>Reach the service center by following the Google map, there was a Roadblock in between so google has shown a long route: 20 min.</li><li>Register for the token: 5 min. (Kiosk system was slow responding slow due to erratic network)</li><li>Wait for your Token no. to be called: 40 minutes. (Less optimistic)</li><li>Show the broken screen to the service engineer, understand the process and leave the phone for repair: 15 minutes. (Assuming engineer is taking time to check the phone and other issues in the phone if any)</li></ul><p>Total estimate: 80 minutes</p><p><strong>Pessimistic</strong>:</p><ul><li>Reach the service center by following the Google map: 30 minutes. (Traffic situations in consideration, considering if there is a flat tire situation or any other non-probable events)</li><li>Register for the token: 15 min (Long waiting line and Kiosk is responding slow as well for each token to be raised).</li><li>Wait for your Token no. to be called: 60 mins. (Those crowd on the front…)</li><li>Show the broken screen to the service engineer, understand the process and leave the phone for repair: 15 mins</li></ul><p>Total estimate: 120 minutes</p><p>Let’s what PERT say by when you will be back,</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/624/0*Ks9WGhzdqX2kyM8J.png" /></figure><p>That means it would take approximately 80 mins for you to reach home. Now the question is How much confidence are you that you will reach in 80 mins (Approx.). For this, we will be using Standard deviation.</p><p><strong>Standard Deviation (SD)</strong></p><p>The standard deviation formula is,</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/603/0*S_kzbsTqS38YlEAC.png" /></figure><p>Calculating Standard Deviation for the above problem,</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/505/0*UP4Lb1A3CT6yx3G2.png" /></figure><p>That means it would take <strong>80±10</strong> mins you to reach home.</p><h4>Conclusion</h4><p>We all know estimation sometime gives us nightmare, and if there are uncertainties, that worsen the situation. I recommend the above estimate technique should be known to every individual. I have been using PERT since the beginning of PM Life.</p><p>The most important thing about PERT is, it’s easy to learn and will help you to make good and trustworthy estimates.</p><p><em>Originally published at </em><a href="https://blog.knoldus.com/pert-estimating-uncertainty/"><em>Knoldus Blogs</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fd5d7e0b53ec" width="1" height="1" alt=""><hr><p><a href="https://medium.com/knoldus/introduction-fd5d7e0b53ec">Introduction</a> was originally published in <a href="https://medium.com/knoldus">Knoldus - Technical Insights</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Let’s Mindmap: Cloud Native]]></title>
            <link>https://medium.com/knoldus/lets-mindmap-cloud-native-64f01641c8dc?source=rss----223897590590---4</link>
            <guid isPermaLink="false">https://medium.com/p/64f01641c8dc</guid>
            <dc:creator><![CDATA[Knoldus Inc.]]></dc:creator>
            <pubDate>Sun, 02 Jan 2022 00:19:33 GMT</pubDate>
            <atom:updated>2022-01-02T00:19:33.320Z</atom:updated>
            <content:encoded><![CDATA[<p>Cloud-Native evokes different responses from <a href="https://cncf.io/">every engineer</a> on any team. As a part of this visual presentation, we would like to get a common understanding of what is cloud native, talk about its pillars and which applications are a good candidate for the same.</p><p>With this vlog the idea is to make a common denominator of understanding so that the team can be succesful together.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/642/0*S_yngVKr2C9JowQg.png" /></figure><p>Happy viewing!</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F4q5XwvC_hN4%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D4q5XwvC_hN4&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F4q5XwvC_hN4%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/679f59ce62583f7cf07a12f11f18ad1d/href">https://medium.com/media/679f59ce62583f7cf07a12f11f18ad1d/href</a></iframe><p>Want us to help with building a well architected cloud native product. <a href="https://www.knoldus.com/connect/contact-us">We are waiting to say hello :)</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=64f01641c8dc" width="1" height="1" alt=""><hr><p><a href="https://medium.com/knoldus/lets-mindmap-cloud-native-64f01641c8dc">Let’s Mindmap: Cloud Native</a> was originally published in <a href="https://medium.com/knoldus">Knoldus - Technical Insights</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best Practices for Moving to the Cloud]]></title>
            <link>https://medium.com/knoldus/best-practices-for-moving-to-the-cloud-89cc1e1350f4?source=rss----223897590590---4</link>
            <guid isPermaLink="false">https://medium.com/p/89cc1e1350f4</guid>
            <category><![CDATA[cloud]]></category>
            <category><![CDATA[best-practices]]></category>
            <category><![CDATA[emerging-technology]]></category>
            <category><![CDATA[gae]]></category>
            <dc:creator><![CDATA[Knoldus Inc.]]></dc:creator>
            <pubDate>Thu, 18 Mar 2021 13:10:34 GMT</pubDate>
            <atom:updated>2021-03-18T13:10:34.337Z</atom:updated>
            <content:encoded><![CDATA[<p>Recently there has been a<a href="http://thoughts.inphina.com/2010/10/21/is-this-the-tipping-point-for-cloud-adoption-by-enterprises/"> lot of interest in the cloud</a>. There have been <a href="http://thoughts.inphina.com/2010/10/21/is-this-the-tipping-point-for-cloud-adoption-by-enterprises/">some major developments</a> that have ignited the interest of many enterprises. It would not be late before enterprises start looking around and find that their competitors have already taken the first step towards the cloud. Before you get to that situation and start panicking, here is a list of best practices that would make your move easy and successful.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/200/0*NDJ3z_-cWZX5xKI4.png" /></figure><ol><li><strong>Determine the need — </strong>There are multiple, multiple benefits of moving to the cloud. However, “I would like to move because he moved” is not a valid reason. Crucial reasons could be the need for elastic infrastructure, faster provisioning, cost-saving, focus on the core business than IT, etc. Once you are convinced about the need to move to the cloud, prepare a worksheet to evaluate what benefits could you actually achieve after the move. If the results are positive, you are a case study for making a planned move.</li><li><strong>Understand the cloud ecosystem — </strong>There are <a href="http://www.inphina.com/wwd/cloud/ecology.htm">multiple cloud providers offering competing specifications</a>. Understand the pros and cons of each cloud vendor for your business. Some providers would have extensive APIs for development, some would have a better storage infrastructure, then there are networking options, pricing structures and service-level agreements (SLAs). Decide your need on the basis of your core business. If your business demands that you have to store a lot of data and that data is not referenced very often then you might choose a provider with better availability of data space for the same dollar.<br>You would also want to make sure your management and monitoring tools can access the cloud-based applications and that cloud resources, in turn, can access data center services that remain behind the firewall. This would ensure that your costs of moving to the cloud are low and that they do not eclipse the advantages.</li><li><strong>Chose your migration partner — </strong>This is a critical piece and one of the very important practices. With the evolution of the cloud, everybody is offering their piece of advice. When you chose a migration partner be sure to understand their prior experience in the cloud, <a href="http://thoughts.inphina.com/tag/GAE/">their thoughts on their blogs</a>, their presence in <a href="http://www.inphina.com/ot/ourThoughts.htm">discussion forums and conferences</a>. Do a reference check with their existing clients. Understand the companies that they partner with and the solutions that they offer. You might have heard that the best investment advisors are those who also have their money invested the right way. Likewise, the best cloud partners are those who themselves make heavy use of the cloud. If there is a cloud provider who does not have a serverless office, I would be worried.</li><li><strong>Pick a pilot project wisely </strong>— Just like any other pilot project, the first application that you intend to move to the cloud should not be overly simple, which gives skeptics a chance to say that it was too easy, neither it should be very complex such that instead of understanding the significance of moving it to the cloud, you are worried about making it work.<br>The application should not have a millisecond response time expectation. If the response time is that critical then perhaps this application is not a good candidate.</li><li><strong>Involve the stakeholders — </strong>One of the missing pieces in cloud adoption is that the relevant stakeholders are not involved and they turn out to be the biggest barriers at a later stage. It is always prudent to involve the CIOs CFOs to show them the advantages and the cost-saving. It is important for the network and security experts to validate the cloud and voice their concerns opinions in the beginning rather than later.</li><li><strong>Create a working sandbox — </strong>When you decide to move the application to the cloud, be sure to have a demo sandbox exposed to all the people who were using the earlier application. This allows the users to become comfortable with using the application on the cloud and point out any potential glitches. This also helps them feel that their feedback is being solicited and is important. If the users feel that the application is as good as or better than what they have been using, you have buy-in.</li><li><strong>Have a plan B — </strong>Stuff happens. Sometimes even with the best of intentions, we do not achieve what we set out to. It is always important to have a well-laid-out plan B. This might include a decision not to go to the cloud at least for now. Make sure that all your data is available and can be ported back to the existing systems.</li></ol><p>Once you take your first steps towards the cloud with above mentioned best practices, there is little chance of surprise on the way. If you are ready to take the first step, <a href="http://www.inphina.com/contactUs.htm">contact us</a>.</p><blockquote><strong><em>An assessment can help an organization create a cloud migration plan to ensure a more successful migration. </em></strong><a href="https://blog.knoldus.com/migration-assessment/"><strong><em>Explore more here if you are ready for migration&gt;&gt;</em></strong></a></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=89cc1e1350f4" width="1" height="1" alt=""><hr><p><a href="https://medium.com/knoldus/best-practices-for-moving-to-the-cloud-89cc1e1350f4">Best Practices for Moving to the Cloud</a> was originally published in <a href="https://medium.com/knoldus">Knoldus - Technical Insights</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Event Sourcing — Does it make sense for your business?]]></title>
            <link>https://medium.com/knoldus/event-sourcing-does-it-make-sense-for-your-business-344c1e8e075b?source=rss----223897590590---4</link>
            <guid isPermaLink="false">https://medium.com/p/344c1e8e075b</guid>
            <dc:creator><![CDATA[Knoldus Inc.]]></dc:creator>
            <pubDate>Sat, 02 Jan 2021 02:36:12 GMT</pubDate>
            <atom:updated>2021-01-02T02:36:12.049Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/521/0*mrJ6qvAFLKdFgJEz.png" /></figure><p>You would always get a ton of literature on Event Sourcing and CQRS. The key question is WHEN do you use it? Under what circumstances? Is your problem really in need of ES?</p><p>I would not go into the details of what <a href="https://martinfowler.com/eaaDev/EventSourcing.html">Event Sourcing </a>and <a href="https://martinfowler.com/bliki/CQRS.html">CQRS</a> is. The industry stalwarts have covered that in adequate detail. This post delves into battle-tested scenarios on where we should have used and otherwise ignored ES.</p><h4>Reasons to use Event Sourcing</h4><p>There are always tons of reasons to use event sourcing. Not necessarily all of them hold water. Some of them include</p><ol><li><strong>It is a natural extension of DDD</strong> — Well yes, it does find relevance along with the DDD patterns but then we could very well use all the concepts of DDD without event sourcing.</li><li><strong>Helps in separating out write and read models</strong> — Hmm, do that with plain CQRS instead.</li><li><strong>Allows building asynchronous and eventually consistent</strong> communication models — Well, you could do that with Actors and all the goodness of Akka like framework.</li><li><strong>It helps you answer WHY </strong>— <em>This one I would take hands down</em>. If you really need to know the WHY you got to the current state rather than just knowing WHAT the current state is then yes, you would need ES.</li><li><strong>Helps maintain an audit log</strong> — You could still maintain an audit log the old-fashioned way without ES but yes, it does make it easy because you have all the events that led to the current state. These audit logs can be used for analytics as well. There would possibly not be a debug problem and possibly no information would be lost.</li><li><strong>Performance</strong> — Because events are immutable, you can use an append-only operation when you save them. Events are also simple, standalone objects. Both these factors can lead to better performance and scalability for the system than approaches that use complex relational storage models.</li><li><strong>Deriving additional business value from the event history</strong>. By storing events, you have the ability to determine the state of the system at any previous point in time by querying the events associated with a domain object up to that point in time. This enables you to answer historical questions from the business about the system.</li><li><strong>Replayability</strong> — You might discover a coding error that results in the system calculating an incorrect value or you want to gather additional statistics from the events which came in 6 months back until now. Rather than performing a manual adjustment on a stored item of data, you can replay the event stream so that the system calculates the value correctly and populates those additional data points based on the new version of the code.</li></ol><h4>Reasons not to choose Event Sourcing</h4><p>Now let us look at some of the reasons to avoid ES.</p><ol><li><strong>Performance </strong>— Although event sourcing typically improves the performance of updates, you may need to consider the time it takes to load the domain object state by querying the event store for all of the events that relate to the state of an aggregate.</li><li><strong>Versioning — </strong>You may find it necessary to change the definition of a particular event type or aggregate at some point in the future. When the event changes or the command changes, so does your way of handling them. Then you would have to deal with multiple versions of the event. One which came in historically and one which is current.</li><li><strong>The development costs are high </strong>— Frameworks in this area tend to be heavyweight, overly prescriptive, and inflexible in terms of tech stacks. There is quite a bit of plumbing needed. You have to deal with classes for commands, command handlers, command validators, events, aggregates, <em>AND THEN</em> your projections, those model classes, their access classes, custom materialization code, and so on. The entire process needs quite a bit of scaffolding.</li><li><strong>The UI needs to work heavily with eventual consistency</strong> — This is something that bit us real bad in the real world. First, the UI needs to be aware that any command which is sent through would have its own eventual consistency cycle time and it should be prepared for that. It should not expect that the user registration would have actually synchronously registered the user once the command went through. So, the UI needs to play along. It is said that for such scenarios the system should follow the usual CRUD which brings us to then building 2 kinds of systems. One which would follow the usual CRUD and the other which would use ES.</li><li><strong>Projections are expensive as well </strong>— <a href="https://chriskiehl.com/article/event-sourcing-is-hard">That first extra projection</a> you add doubles the amount of code that touches your event stream. You would be writing more than one projection. So now you have N things processing this event stream instead of 1 thing. There’s no more <a href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself">DRY</a> from this point forward.</li><li><strong>An audit log has too much noise</strong> — most of it ends up being pure noise that actually needs to be filtered out. Both by end-users and by consuming sub-systems. A lot of information captured by the audit log would not be used 99% of the time.</li></ol><h4>So how do you decide?</h4><p>OK, I believe by the time you get to this part, I should have managed to confuse you already. The question that I ask myself and I ask our clients to answer to make a final call is the following</p><p><strong>Are you interested in the WHY of the current state? Does the history of collective data records add any value to you?</strong></p><p>They would not have a straight answer to this and hence a story works.</p><p>Suppose you’re operating an e-commerce system with a CRUD based order module. At some point, you may ask yourself the question. How often does it happen that customers put items in their shopping cart, but remove them again before checking out? In the CRUD system, you ordinarily wouldn’t have the information required to answer the question. Unless it was explicitly known beforehand that this information would be relevant and logging of the removal event has been included. By contrast, in an ES system, you can always answer such questions about the past, even if didn’t know you were going to have that question because <em>all</em> history is available.</p><p>Some of our clients say, hmm that is interesting and we might need it in the future. For them, I would skip the ES journey. When they are interested in such events (which 90% of the time they would not be) then we would start writing some of these events in a actor, synchronously to a queue.</p><p>Or as <a href="https://chriskiehl.com/article/event-sourcing-is-hard">Chris put it in his blog</a></p><blockquote>I think you can generally answer it with some alone time, deep introspection, and two questions:</blockquote><blockquote>For which <em>core problem</em> is event sourcing the solution?</blockquote><blockquote>Is what you actually want just a plain old queue?</blockquote><blockquote>If you can’t answer the first question concretely <strong>Don’t</strong>. Those are not problems exclusively solved by event sourcing. A good ol’ fashion history table gets you 80% of the value of a ledger with essentially none of the cost.</blockquote><blockquote><strong>Similarly, CQRS doesn’t require event sourcing. You can have all the power of different projections <em>without</em> putting the ledger at the heart of your system.</strong></blockquote><blockquote>The latter question is to understand do those downstream systems care about those intermediate states, or will it just be noise that needs to be filtered out? If the end goal is just decoupled processes that communicate via <em>something</em>, event sourcing is not required. Put a queue between those two bad boys and start enjoying the good life.</blockquote><h4>How the hell did we get here?</h4><p>Well these are battle scars from several projects where we had a chance to make a decision on the architecture. In some we did use ES and in others we did not. We might have used them where did not need to and the other way round as well.</p><p>We get too consumed by the latest toys in the industry and we forget about why we became software developers and architects in the first place. Software architecture best practices, enterprise architecture patterns, and formalized ways to describe systems are all tools that are useful to know of and might come in handy one day. But <strong>when designing systems, start simple and stay as simple as you can. Try to avoid the complexity that more complex architecture and formal tools inherently introduce.</strong></p><p>This brings me back to something that I had learned almost 15 years back</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*goFOj9FB5Cd8fQm2.jpg" /></figure><p>The <a href="https://www.infoq.com/articles/driving-architectural-simplicity/">best architects are the ones</a> who can keep the architecture simple without the need for needless complexity unless it is needed.</p><p><a href="https://www.knoldus.com/services/academy">Talk to us</a> for building beautiful systems with the right architecture.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=344c1e8e075b" width="1" height="1" alt=""><hr><p><a href="https://medium.com/knoldus/event-sourcing-does-it-make-sense-for-your-business-344c1e8e075b">Event Sourcing — Does it make sense for your business?</a> was originally published in <a href="https://medium.com/knoldus">Knoldus - Technical Insights</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Opinion: Is your Business Ready for AI on the Edge?]]></title>
            <link>https://medium.com/knoldus/opinion-is-your-business-ready-for-ai-on-the-edge-c91a53501c97?source=rss----223897590590---4</link>
            <guid isPermaLink="false">https://medium.com/p/c91a53501c97</guid>
            <dc:creator><![CDATA[Knoldus Inc.]]></dc:creator>
            <pubDate>Sun, 25 Oct 2020 01:07:12 GMT</pubDate>
            <atom:updated>2020-10-25T01:07:12.114Z</atom:updated>
            <content:encoded><![CDATA[<p>AI has traditionally been deployed in the cloud. AI algorithms crunch massive amounts of data and consume massive computing resources. But AI doesn’t only live in the cloud. In many situations, AI-based data crunching and decisions need to be made locally, on devices that are close to the edge of the network.</p><h4>At the Edge</h4><p>AI at the edge allows mission-critical and time-sensitive decisions to be made faster, more reliably and with greater security. Cloud-based AI suffers from latency. The delay as data moves to the cloud for processing and the results are transmitted back over the network to a local device. In many situations, latency can have serious consequences. For instance, when a security camera at an airport or a factory must recognise intruders and react immediately. An autonomous vehicle cannot wait even for a tenth of a second to activate emergency braking when the AI algorithm predicts an imminent collision. In these situations, AI must be located at the edge. This is where decisions can be made faster without relying on network connectivity and without moving massive amounts of data back and forth over a network.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ykFxdaFJScq3raAF.png" /></figure><p>As Gartner analyst Thomas Bittman points out his blog <a href="https://blogs.gartner.com/thomas_bittman/2017/03/06/the-edge-will-eat-the-cloud/">The Edge will Eat the Cloud</a>:</p><blockquote>“The agility of cloud computing is great — but it simply isn’t enough. Massive centralization, economies of scale, self-service and full automation get us most of the way there — but it doesn’t overcome physics — the weight of data, the speed of light. As people need to interact with their digitally-assisted realities in real-time, waiting on a data center miles (or many miles) away isn’t going to work,” writes Bittman. “Latency matters. I’m here, right now, and I’m gone in seconds. Put up the right appealing advertising before I look away, point out the store that I’ve been looking for as I drive, let me know that a colleague is heading my way, help my self-driving car avoid other cars through a busy intersection. And do it now.”</blockquote><p>Moving AI to the edge has other strong reasons as well</p><ul><li>Across the plethora of industries, the edges are not usually connected to the cloud and they are not smart either. Every industry and every manufacturing unit might need to build smartness in the edge for its own needs. For example, a security camera in a chemical factory might need different set of intelligence tools than the one in manufacturing unit.</li><li>AI will have more economic impact than AI in the cloud. The edge is where real money is being invested right now, and putting AI there even to get a small sliver of increased productivity will have a massive impact.</li><li>While cloud computing offers unquestionable economies of scale, a distributed computing model is driven by the nature of the data itself. The volume of data will make it difficult or expensive to move due to bandwidth costs or availability. The velocity of data will catalyse more real-time applications that cannot be limited by network latency. <strong>And the variety of data will be governed by regulatory, privacy and security constraints.</strong></li></ul><h4>Considerations</h4><h4>Processing Power</h4><p>The edge needs more processing power. This will enable enterprises to run AI models at the edge, thereby bringing more intelligence to the edge.</p><p>Nowadays, a lot of edge devices have inbuilt compute power. A lot of IoT edge devices have GPU, TPU or VPU. For example, some of the high-end security <a href="https://themerkle.com/nvidias-ai-driven-surveillance-camera-project-will-help-monitor-smart-cities/">cameras now feature GPU</a> cards, which enables them to run AI-based image recognition models on the edge itself instead of sending all the HD video back to the cloud for processing. Moving the processing to the edge ensures better response times and reduced bandwidth usage.</p><h4>Lifecycle on the edge</h4><p>The heterogeneous nature of devices on the edge in an IoT world has its own set of challenges. Remote deployment of the models and monitoring the edge for performance is another big area that has immense potential. One has to have a robust mechanism to deploy and fine-tune the AI models remotely. It’s also critical to keep a close eye on the health of the hardware.</p><p>Continuous monitoring of the performance of these models is also a high ask. Managing the continuous deployment, debugging and fine-tuning of AI models on the edge is also an area in which few companies have made real advancements.</p><h4>Security</h4><p>Bringing the processing closer to the edge puts more pressure on having rock-solid security in and around the edge. Security at the edge has to be a multi-pronged strategy to ensure the safety of the hardware and software stack. You need to remain vigilant to detect rogue nodes entering the edge network. Once rogue nodes are detected, they need to be isolated and not be allowed to enter the edge network.</p><h4>Learn</h4><p>AI that learns at the edge is a paradigm-shifting technology that will finally empower AI to truly serve its purpose. This is by shifting intelligence to the compute edge where it is needed, at speeds, latency and costs that make it affordable for every device. This learning could be brought in by the cloud or better still the edge nodes learn themselves and pass on their learnings to the cloud to be propagated to other edges as well.</p><h4>Synergies with Cloud</h4><p>This is not to say that AI On the cloud is a thing of the past. Both edge and cloud would continue to co-exist.</p><p>There is a limit to the amount of computation power that can be put into a camera, sensor, or a smartphone. In addition, many of the devices at the edge of the network are not connected to a power source, which raises issues of battery life and heat dissipation. This gives a strong reason to train the model on the cloud and allow it to inference on the edge. Consider an AI-powered vehicle. AI at the edge powers decisions in real time such as braking, steering, and lane changes. At night, when the car is parked and connected to a Wi-Fi network, data is uploaded to the cloud to further train the algorithm. This is called call home data and this would allow the feedback loop to be completed to train the model better. Now consider that there are thousands of vehicles doing this in the night. The central server would take in all this data, work on it and send across a smarter algorithm back to the vehicles in a couple of days not if the next morning.</p><h4>Conclusion</h4><p>There will be a need for AI in the cloud, just as there will be more reasons to put AI at the edge. It is an AND depending on where the intelligence needs to live. In this vision of the future, intelligence at the edge will complement intelligence in the cloud, for better balance between the demands of centralised computing and localised decision making.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c91a53501c97" width="1" height="1" alt=""><hr><p><a href="https://medium.com/knoldus/opinion-is-your-business-ready-for-ai-on-the-edge-c91a53501c97">Opinion: Is your Business Ready for AI on the Edge?</a> was originally published in <a href="https://medium.com/knoldus">Knoldus - Technical Insights</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI: Making Agents Learn for Better Business Decisions]]></title>
            <link>https://medium.com/knoldus/ai-making-agents-learn-for-better-business-decisions-361d29196340?source=rss----223897590590---4</link>
            <guid isPermaLink="false">https://medium.com/p/361d29196340</guid>
            <category><![CDATA[ai]]></category>
            <dc:creator><![CDATA[Knoldus Inc.]]></dc:creator>
            <pubDate>Sun, 11 Oct 2020 17:55:44 GMT</pubDate>
            <atom:updated>2020-10-11T17:55:44.637Z</atom:updated>
            <content:encoded><![CDATA[<p>In our previous post we have talked about <a href="https://blog.knoldus.com/ai-right-structure-of-agents-for-your-business/">different types of agents</a> that can be built for business. Any type of agent (model-based, goal-based, utility-based, etc.) can be built as a learning agent (or not). Learning allows the agent to know more than what it initially started with in terms of the operating environment.</p><h4>Components of a Learning Agent</h4><p>The learning agent can be divided into four components</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/457/0*nLAF4UHZhsQrq3dR.png" /></figure><ol><li><strong>Learning Element</strong> — Responsible for making improvements.</li><li><strong>Performance Element</strong> — Selecting and taking appropriate action. Takes the percepts from the sensor and passes on action to the actuator</li><li><strong>Critic</strong> — Gives measures on how the agent is doing. The percepts received by themselves do not tell about the metrics of success. The critic puts the metrics in perspective. Learning element takes constant feedback from the critic to pass on better decision making logic to the performance element</li><li><strong>Problem generator</strong> — This is like the<a href="https://netflix.github.io/chaosmonkey/"> chaos monkey</a>. It would cause conditions which would lead to informative experiences. It can suggest exploratory actions which would be taken by the performance element and the knowledge of the results would be passed back to the Learning Element.</li></ol><p>If we go through the sequence of steps, this is how the action might flow. The sensor gets an input from the environment (1). This inputs goes to the critic and the performance element (3). The performance element has to take an action on the basis of the input for which it consults with the Learning element to decide the best action (4). This action is passed to the actuator (5) which passes it to the environment (6).</p><p>At all times in the background or in parallel (T1), there is a process of learning which is running between the critic, learning element, problem generator and performance element which allows the problem generator to suggest alternative actions on the basis of what the learning element is learning. It allows the performance element to take actions and keep learning from that. This allows the learning cycle keeps going on.</p><h4>Working together of components</h4><p>Working of components together can be pretty involved depending on the use case. There are a few ways in which components can interact with each other</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/861/0*yvbA3y0mbrzrd9B9.png" /></figure><ul><li><strong>Atomic — This is the simplest way.</strong> The components are not concerned about the internal state of other components. They treat them as black boxes with input and output. The output of the component B is just dependent on the input from component A. As an example, in our case the performance element might just get a knowledge from Learning element and base its action on that.</li><li><strong>Factored</strong> — This representation splits the state between variables and attributes. It tries to look into the state of the individual component. Many important areas of AI are based on factored representations, including constraint satisfaction algorithms, propositional logic, planning , Bayesian networks, and various machine learning algorithms.</li><li><strong>Structured</strong> — This is the most complex of the three. Each state has a series of object each of which might have attributes of its own and relationship to other objects. There would be many real life scenarios in which the variable and attribute associations would not occur in Factored representations. As an example for a drone to cross a tree an association might be present where the height of the drone and height of the tree might result in a true or false. As an instance, in this scenario, HeightOfDroneGreaterThanHeightOfTree might be true but if it is dependent on other factors like birds flying around the tree then such representations would not be possible in factored approach and would require a <strong>structured representation</strong>.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/728/0*AnXozYswMb84Npz9.jpg" /></figure><p><em>What kind of agents are you setting up for your AI practice. Knoldus would be excited to </em><a href="https://www.knoldus.com/connect/contact-us"><em>help you</em></a><em> on the journey.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=361d29196340" width="1" height="1" alt=""><hr><p><a href="https://medium.com/knoldus/ai-making-agents-learn-for-better-business-decisions-361d29196340">AI: Making Agents Learn for Better Business Decisions</a> was originally published in <a href="https://medium.com/knoldus">Knoldus - Technical Insights</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Can we stop talking about Big Data now?]]></title>
            <link>https://medium.com/knoldus/can-we-stop-talking-about-big-data-now-3d1da8ff9356?source=rss----223897590590---4</link>
            <guid isPermaLink="false">https://medium.com/p/3d1da8ff9356</guid>
            <category><![CDATA[fast-data]]></category>
            <category><![CDATA[opinion]]></category>
            <category><![CDATA[lightbend]]></category>
            <dc:creator><![CDATA[Knoldus Inc.]]></dc:creator>
            <pubDate>Fri, 09 Oct 2020 09:20:27 GMT</pubDate>
            <atom:updated>2020-10-09T09:20:27.317Z</atom:updated>
            <content:encoded><![CDATA[<p>If it was still 2012 I would have eagerly heard and responded to any conversation about Big Data. Well, it was the buzz and you had to be speaking the magic words for getting people to listen to the latest and greatest in technology. But fortunately/unfortunately, it is 2017 now and it is <strong>disappointing to note that most of the world has not moved beyond Big Data</strong>. And believe me, it is not just the CIOs/CDOs who have been sitting in the ivory tower who are stuck with Big Data.It is also the energetic developers who are being scouted by talent firms for having Big Data on their resume.</p><p>We at <a href="http://www.knoldus.com/">Knoldus</a> build a holistic software development capability for anyone who joins us as an intern. It does not matter if you have been working in the industry for 2 years or 10. When you undergo the internship we would give you a holistic software development immersion right from the Code Quality, Code conventions, Principles, practices, and patterns of software development further leading to Reactive Platforms and the ecosystem tailing into the stack that we embrace which is the Scala ecosystem and the Fast Data Platform.</p><p>The trigger for this post is the conversation with a top talent who joined us 3 months back. He was sad because he was not working on Big Data. When asked what did he mean by Big Data, the quick answer was Hadoop/<a href="https://databricks.com/spark/about">Spark</a>. When countered by the fact that he was learning <a href="https://www.lagomframework.com/">Lagom</a> and event sourcing which would allow him to build better solutions but he was not too convinced.</p><p>Now, there is nothing wrong with these technologies and in fact, they are what has made the ecosystem popular but these technologies are only a part, <strong>sometimes a very small part</strong>, of the product that would have any business value. They solve a particular piece of the puzzle and more often than not if you base your product <strong>“just”</strong> on these technologies you are bound to fail!</p><p>So where should we be headed if we are not talking about Big Data? The answer is to talk about <a href="https://www.entrepreneur.com/article/273561">Fast Data</a>. <strong>Big Data as anomer/misnomer gets used in all kinds of scenarios</strong>. Talk to 10 CIOs and 9 would say that they struggle with Big Data. It is of no consequence whether one manages 1TB of data and the other is managing several hundred PB of data. I think where we should be headed is that with our solution/ product how do we make sure that the customers get the best experience. <a href="https://blog.knoldus.com/2017/07/07/forget-it-going-digital-you-havent-heard-reactive/">Customer Experience (CX) </a>is going to be the king of the modern day applications. Just focusing on Spark/Hadoop/Flink and thinking that you can do Big Data is a fallacy.</p><p>Let us see how these set of so-called Big Data technologies fit into the grand scheme of things.</p><ul><li>If you are going to build a product which would include user interaction then you need a reactive front end to the product so that you can provide amazing customer experience.</li><li>When hundreds and thousands of user requests come in, the product has to handle them without degrading performance. It has to be resilient.</li><li>There are going to be transaction based processes like someone querying for something, adding an item, viewing their trades for the day. These could be handled by different micro services. These would have their individual life cycles and should be able to scale independently.</li><li>You would like your system to be extensible and plan for any future business operations which are unforeseen at the moment. For this, you need to have event sourcing.</li><li>You would want to separate out writes and reads to your system for making sure that the read and write SLAs are met and you are able to scale the read and write side separately.</li><li>You would need to store your transaction data in the DB and for that, you would need either a SQL or NoSQL DB.</li><li>Now some of your functionalities would also need analysis of data and come back with analyzed data. Now depending on the SLAs, this is where you would need Big Data frameworks to jump in.</li><li>You would need to run some machine learning or deep learning algorithms for your product to stand out.</li></ul><p>Of course, we are simplifying the scenario a lot but hopefully, you get the idea. <strong>Just being dependent upon a Big Data framework or hiring consultants who know a bit about Hadoop/Spark is not going to fly.</strong> You need an entire gamut of technologies that you need to work on. Right from</p><ul><li>Reactive UI</li><li>Microservices framework</li><li>Asynchronous Messaging System</li><li>Big Data framework (there I said it!)</li><li>Database</li><li>Hosting strategy based on containers</li><li>Monitoring and Telemetry</li><li>Machine learning and AI</li></ul><p>And believe me, this is a partial list.</p><p>And overlaying all of this is the Principles, Patterns, and Practices of effective software development. The main drivers of technology which are based on the principles of Reactive Manifesto would be</p><ol><li>Scalable</li><li>Secure</li><li>Flexible</li><li>Realtime</li><li>Resilient</li><li>Everywhere</li><li>Intelligent</li><li>Agile</li></ol><p>To sum it up here is one possible scheme of technologies that can fulfill the product vision.</p><figure><img alt="DAhSCTUWsAAVctd" src="https://cdn-images-1.medium.com/max/600/0*uQWefIkzxXDoRJO-.jpg" /></figure><p><strong>As you would see Big Data frameworks are only a part of what you want to do.</strong> More than a drop in the ocean but still not big enough.</p><p>Hence, next time when someone comes and talks about Big Data and using Big Data framework to build the product, then do talk to them about all the other ancillaries and take what they say with a big bag of salt :)</p><figure><img alt="HypertensionPinchSalt" src="https://cdn-images-1.medium.com/max/356/0*bUUvhs9o58Otr2Yt.gif" /></figure><p>Knoldus has implemented its Digital Transformation product <strong>KDP</strong> at two Fortune 50 organizations. The third implementation is underway.</p><figure><img alt="knoldus-advt-sticker" src="https://cdn-images-1.medium.com/max/842/0*1dSlHyCKoXuFIY3X.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3d1da8ff9356" width="1" height="1" alt=""><hr><p><a href="https://medium.com/knoldus/can-we-stop-talking-about-big-data-now-3d1da8ff9356">Can we stop talking about Big Data now?</a> was originally published in <a href="https://medium.com/knoldus">Knoldus - Technical Insights</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Knoldus Partners with Confluent to Power Real-Time Streams]]></title>
            <link>https://medium.com/knoldus/knoldus-partners-with-confluent-to-power-real-time-streams-b5584b0c14a4?source=rss----223897590590---4</link>
            <guid isPermaLink="false">https://medium.com/p/b5584b0c14a4</guid>
            <category><![CDATA[fast-data]]></category>
            <category><![CDATA[partnerships]]></category>
            <category><![CDATA[reactive]]></category>
            <category><![CDATA[strategy]]></category>
            <category><![CDATA[reactive-programming]]></category>
            <dc:creator><![CDATA[Knoldus Inc.]]></dc:creator>
            <pubDate>Wed, 07 Oct 2020 05:44:26 GMT</pubDate>
            <atom:updated>2020-10-07T05:44:26.383Z</atom:updated>
            <content:encoded><![CDATA[<p>Knoldus is pleased to announce a Consulting and System Integrator partnership with <a href="http://www.confluent.io/">Confluent</a>, the company founded by the creators of Apache KafkaTM</p><p>Confluent, creators of the first streaming platform based on Apache KafkaTM, provides the most complete platform to build enterprise-scale streaming pipelines using Apache Kafka and simplify the development of stream processing applications. Via rapid adoption in the Fortune 500, Apache Kafka is quickly emerging as the leading streaming platform for real-time applications. Data-centric businesses can scale their production environments with confidence in its reliability, efficiency, and scalability for hundreds of use cases, thousands of applications, and trillions of messages.</p><p>Leveraging the power of Apache Kafka and Confluent Platform, Knoldus has already deployed several fast data solutions into production. One of the very first deployments of Knoldus on Kafka was in early 2012 for a real-time sentiment analysis platform that is being used by Coke, Target, P&amp;G, T-Mobile to name a few. Since then, Kafka is being utilized as the heart of the system for <strong>Knoldus Fast Data Strategy</strong>.</p><p>Always-on streaming systems raise the bar for the product. In batch jobs, there are concerns about high availability, resilience, etc. However, a streaming job is expected to run for days, weeks, even years. Streaming systems must embody the <a href="http://www.reactivemanifesto.org/">Reactive principles</a> of excellent responsiveness, scalability, resiliency, etc. That’s changing infrastructure for data-centric systems, in addition to the long-standing concerns about having sufficient capacity, security, etc. for using very large datasets.</p><pre>Kafka ends up being the heart of such systems.</pre><p>To build robust systems around Kafka, Knoldus fully acknowledges and utilizes the Lightbend Fast Data Platform. The general architecture of the products is as follows</p><p><strong>The Fast Data Platform:</strong></p><figure><img alt="Fast Data Platform" src="https://cdn-images-1.medium.com/max/1024/0*WTUwznSMIRVQqPkb.png" /></figure><p>Our team is well equipped to qualify and deliver projects on the Confluent Platform and Apache Kafka through architectural guidance, team augmentation, training, and strong development support across multiple geographies.</p><p><strong>“We’re excited to have Knoldus join our partnership program given their proven track record of implementing Apache Kafka-based solutions for their clients,” said Jabari Norton, vice president of business development at Confluent. “As both a Lightbend and Confluent partner, Knoldus is well-positioned to deliver stream-centric, real-time solutions to customers.”</strong></p><p><strong>About Confluent</strong></p><p>Confluent, founded by the creators of open-source Apache Kafka™, provides the stream data platform that enables enterprises to maximize the value of data. Confluent Platform lets leaders in industries such as retail, logistics, manufacturing, financial services, technology, and media, move data from isolated systems into a real-time data pipeline where they can act on it immediately. Backed by Benchmark, Data Collective, Index Ventures, and LinkedIn, Confluent is based in Palo Alto. To learn more, please visit: <a href="http://www.confluent.io/">www.confluent.io</a></p><p><strong>About Knoldus</strong></p><p>Knoldus specializes in building reactive products using the Scala ecosystem and data science platforms using Spark. Their strong background in Scala makes them attractive when you need deep Spark understanding. They work on a broad variety of big data initiatives like Knowledge graph systems (Ontology and semantic web), time-series &amp; Real-time (IoT), Structured ( Relational &amp; NoSQL), and cover varied domains including Pharma, Manufacturing, and Finance.</p><p>Knoldus is active in the Open source community with contributions to various libraries like Spark, Scala, Akka, Neo4j, Deeplearning4j, etc. Knoldus is known for its tech blogs and open source contributions in the area of big data and functional programming.</p><p>Some of the known direct clients of Knoldus include Huawei, Philips, Schlumberger, Elsevier, BoA, and quite a few niche startups. To learn more, visit <a href="http://www.knoldus.com/">www.knoldus.com</a></p><p>Leverage Knoldus strengths for your streaming product? <a href="http://www.knoldus.com/connect/contactus.knol">Contact us</a> today.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b5584b0c14a4" width="1" height="1" alt=""><hr><p><a href="https://medium.com/knoldus/knoldus-partners-with-confluent-to-power-real-time-streams-b5584b0c14a4">Knoldus Partners with Confluent to Power Real-Time Streams</a> was originally published in <a href="https://medium.com/knoldus">Knoldus - Technical Insights</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI: Right Structure of Agents For your Business]]></title>
            <link>https://medium.com/knoldus/ai-right-structure-of-agents-for-your-business-28f0f713c675?source=rss----223897590590---4</link>
            <guid isPermaLink="false">https://medium.com/p/28f0f713c675</guid>
            <category><![CDATA[ai-and-ml]]></category>
            <dc:creator><![CDATA[Knoldus Inc.]]></dc:creator>
            <pubDate>Sun, 04 Oct 2020 20:37:51 GMT</pubDate>
            <atom:updated>2020-10-04T20:37:51.589Z</atom:updated>
            <content:encoded><![CDATA[<p>In the previous post, we discussed the environment in which the agent operates and the characteristics of those environments. In this post let us talk about the types of agents and challenges of data set for the agents.</p><p>All agents have the same skeletal structure. They get percepts as inputs from the sensors and the actions are performed through the actuators. Now the agent can either just act on a percept as a reflex for example if you throw a ball at me and I try to catch it (or duck from it given that I am bad at baseball) than that is a quick reaction to the percept. On the other hand if you throw a ball at me and tell me to arrange it by color or count the number different colors that you are throwing at me then I would have to maintain a state to do the counts correctly. So this would involve some state but is still ok. Now, if you want to trouble me further and you tell me to jump twice if you throw red ball at me and do a burpee if you throw a green ball at me apart from catching and counting then you got me for sure :)</p><p>This would involve a complex logic of me maintaining a mind table of what needs to be done on what percept and this is called<strong> condition-action rule</strong>. Now if all these percepts were to be indexed then this would become a significant data set.</p><blockquote>Consider the automated taxi: the visual input from a single camera (eight cameras is typical) comes in at the rate of roughly 70 megabytes per second (30 frames per second, 1080 × 720 pixels with 24 bits of color information). This gives a lookup table with over 10 600,000,000,000 entries for an hour’s driving. Even the lookup table for chess — a tiny, well-behaved fragment of the real world — has (it turns out) at least 10 150 entries.</blockquote><p>This can become a lot of information.</p><p>The key challenge for AI is to find out how to write programs that, to the extent possible, produce rational behavior from a smallish program rather than from a vast table.</p><p>So this brings us to 4 documented types of agent programs</p><h4>Simple Reflex Agents</h4><p>As the name suggests, these agents behave on reflex. Someone passes by a sensor on a motion detection light, the light goes on. It does not hold any state, any intelligence. Super cool! This agent has a list of condition rules. As soon it gets a percept (1) , it acts as per the condition rules (2) and then it responds back to the environment with the actuators (3).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/441/0*dgj4-Gz59AHdKX5A.png" /></figure><p>In this scenario the agent does not claim to know more about the environment than what is presented as an event to the sensor.</p><h4>Model Based Reflex Agents</h4><p>These agents handle the scenario where the observability is incomplete. It would get events from the sensor but in order to determine the next step of action, it must consult its<strong> internal state</strong>.</p><p>The internal state of the agent is a combination of 2 things, transition model and sensor model.</p><p><strong>Transition model</strong> is further divided into (i) How does the external environment change on the basis of agents action (ii) How does the external change over time. For example, a motion detector camera knows that when it asks the head to move 30 degrees right then it would see a different view of the environment in which it expects some objects. On the other hand given the changes in seasons, it would expect snow in winters and leaves in fall.</p><p><strong>Sensor model</strong> is how the environment is represented in the percept of the agent. For example for this motion detector camera, if it has a big tree on the right then it knows that most of the motion that it needs to track would be concentrated on the left side of the area.</p><p>A combination of data from transition model and sensor model, further combined with the current event received from the sensor allows it to create a current state model.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/449/0*g66Dwi7ObTWq3Ua0.png" /></figure><p>The new percept coming from the environment (1) is matched with the results from the internal state i.e transition model + sensor model (2). This results in a new current state being generated (3). This current state is then checked with the condition-action rules to determine the next action (4).</p><h4>Goal Based Agents</h4><p>Many a times just getting to understand the current state based on the new percept and the internal state is not enough. The agent needs to determine whether it is getting closer to the goal or not. The goal for our motion detector camera could be to find the red car and send an alert as soon as it finds it. Now this would be very different from just an condition-action scenario. The condition-action might want the camera to turn left on the basis of internal state but the goal condition might want it to keep facing right for extra 10 seconds if it found a hint of a red car.</p><blockquote>Notice that decision making of this kind is fundamentally different from the condition–action rules described earlier, in that it involves consideration of the future — both “What will happen if I do such-and-such?” and “Will that make me happy?” In the reflex agent designs, this information is not explicitly represented, because the built-in rules map directly from percepts to actions.</blockquote><p>Goal based agents might be less efficient and costlier but they are more flexible.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/443/0*9UPAi207l0OKxRA0.png" /></figure><h4>Utility Based Agents</h4><p>Goal based agents are not always high quality. The goal could be to capture the number of red cars but to achieve that goal, the agent might do constant movements from left to right, up and down but it would be costly, consume more power and probably reduce the life of the agent.</p><p>Utility takes the performance characteristics into account and refers to the quality of being useful.</p><p>There might be several ways for the camera to detect a red car but it tries to find the most performant, least costly way to do that. That is the utility angle to the equation. It must try to maximise the utility. Choosing the<br>utility-maximizing course of action is also a difficult task. A utility-based agent has to model and keep track of its environment, tasks that have involved a great deal of research on perception, representation, reasoning,<br>and learning.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/443/0*Qn5IF_R76r35vaRG.png" /></figure><p>Utility based agent uses a model of the world, along with a utility function that measures its preferences among states of the world. Then it chooses the action that leads to the best expected utility, where expected utility is computed by averaging over all possible outcome states, weighted by the probability of the outcome.</p><p><em>What kind of agents are you setting up for your AI practice. Knoldus would be excited to </em><a href="https://www.knoldus.com/connect/contact-us"><em>help you</em></a><em> on the journey.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=28f0f713c675" width="1" height="1" alt=""><hr><p><a href="https://medium.com/knoldus/ai-right-structure-of-agents-for-your-business-28f0f713c675">AI: Right Structure of Agents For your Business</a> was originally published in <a href="https://medium.com/knoldus">Knoldus - Technical Insights</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Thinking AI? Think Data First]]></title>
            <link>https://medium.com/knoldus/thinking-ai-think-data-first-6c77cb6c545e?source=rss----223897590590---4</link>
            <guid isPermaLink="false">https://medium.com/p/6c77cb6c545e</guid>
            <category><![CDATA[data-cleaning]]></category>
            <dc:creator><![CDATA[Knoldus Inc.]]></dc:creator>
            <pubDate>Sat, 26 Sep 2020 22:44:36 GMT</pubDate>
            <atom:updated>2020-09-26T22:44:36.390Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*0opOoF0EAYvVL7zr.png" /></figure><p>There is a <a href="https://blog.knoldus.com/category/ai/">lot of interest in Machine Learning and AI</a>. Ofcourse, a lot of it is still the <a href="https://blog.knoldus.com/understanding-ai/">level 1 of AI </a>. This is when we are thinking about machines acting like humans. Everyone wants to jump on the bandwagon of AI. It is an amazing field and man organizations do not want to be left behind. <strong>That said, something which is ignored most of the time is the fuel, the data!</strong></p><p>Teaching the machines required showing them a lot of “training data”. This could be in the form of videos, images, text, structured, unstructured, inhouse, locked in private spaces, public spaces, etc etc. Machines need to learn with a lot of data. They also need to learn with the Right Data.</p><blockquote>In theory, the world is awash with data, the lifeblood of modern AI. A market-research firm, reckons the world generated 33 zettabytes of data in 2018, enough to fill seven trillion dvds.</blockquote><p>Data issues are one of the most common sticking-points in any AI project.</p><h4><strong>Considerations of working with Data</strong></h4><p><strong>Data-wrangling of various sorts</strong> takes up<strong> about 80% of the time consumed in a typical AI project</strong>. Machines, in order to perform accurately need a lot of training.</p><p>According to the economist, 80% of the time is spent in getting the right data. This is where most organizations falter. They spend too much time working on the model training and algorithms without realizing the data ownership and cleansing mechanisms.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*TfB-RpeZCTcWe3HF.png" /></figure><p>These result in data anemic models where either the data is incorrect or inadequate . The results from these systems are usually questionable.</p><p>Two course data scientists (Engineers who take a couple of courses on data science) and proclaim mastery in the field, are almost always a victim to the pattern of ignoring the importance of data. The attention on detail for cleansing, labeling and combining of data cannot be ignored. Without that you are hunting for your car keys under the lamp post. Not because you lost them here but because there is more light here.</p><p>All said and done, internally, getting access to the right data is a huge challenge for many organizations. The data science and machine learning departments would quickly like to start building models with subset of data. Procurement and cleanliness of data come as an afterthought and that is where most ML/AI failures would happen.</p><p><strong>Inadequate attention on building the pipelines.</strong> Once the data ownership and the cleansing etc are identified, the job is not complete. Many organizations would fail in building the pipelines to get the data from the source to the sink. Many AI/ML models would work on a streamflow of data. Consider adjusting the medicine dispensed to a patient in the hospital which depends on his vital statistics or detecting fraud in real time. These systems need robust data pipelines which can be high-availability and scale well.</p><p>Modern data pipelines include acquisition of data from various systems and combining that data to together to run analytics. A possible architecture would be the following</p><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*JESWg3rv_t8CH9NY" /></figure><p>Data is collected from various systems, flowing into a lake with an orchestration layer. It is finally fed into a datawarehouse from where different modeling systems and AI systems can consume it further.</p><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*5n2Oi4jPS9fTTMuv" /></figure><p><strong>Data needs a lot of handholding</strong>. The training labels usually have to be applied by humans. Big tech firms often do the work internally. Companies that lack the required resources or expertise can take advantage of a growing outsourcing industry to do it for them. Mechanical turk from Amazon brings data labelling to a huge population of data entry operators who can label a lot of data like x-rays, image etc.</p><p><strong>Further, the data itself contains traps.</strong> Machine-learning systems correlate inputs with outputs, but they do it blindly, with no understanding of broader context. That has led to a lot of bias being built into machines. A recent case which exploded in the media was the face recognition used in US. This was more often than not biased to skin tones other than white for identifying suspects. This is completely dependent on the kind of data being fed into the training set. It seemed that most of the colored data set fed in was for suspects which resulted in the algorithm behaving in unprecedented ways.</p><blockquote>In 2017 Amazon abandoned a recruitment project designed to hunt through cvs to identify suitable candidates when the system was found to be favouring male applicants. The post mortem revealed a circular, self-reinforcing problem. The system had been trained on the cvs of previous successful applicants to the firm. But since the tech workforce is already mostly male, a system trained on historical data will latch onto maleness as a strong predictor of suitability.</blockquote><h4><strong>Other Considerations</strong></h4><p><strong>Privacy of data</strong> is another issue where a lot of legal and medical data is not readily available. This results in a lot of organizations generate synthetic data which can be close, in best case. In most cases it ends up being disjoint from the real data.</p><p><strong>Another interesting one is drift in the data</strong>. Sometimes this drift is gradual. As in the case of shopping preferences for a region in the country where the population is aging and does not have too many kids. Other drift scenarios could be overnight. For example, booking a one way ticket on a credit card would trigger alerts but this was a norm in COVID situation. Similarly any prediction models which were based on forecasting the need for toilet paper or home gym equipment were thrown off with the surge in demand during the pandemic.</p><p>The world’s changeability means more training, which means providing the machines with yet more data, in a never-ending cycle of re-training.</p><blockquote>AI is definitely not an install-and-forget system</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6c77cb6c545e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/knoldus/thinking-ai-think-data-first-6c77cb6c545e">Thinking AI? Think Data First</a> was originally published in <a href="https://medium.com/knoldus">Knoldus - Technical Insights</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>