<?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:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[SrcCodes]]></title><description><![CDATA[Java, Agile, Scrum, Spring Boot, Microservices, Web Development, AWS Cloud, Internet of Things, Esp8266, Raspberry Pi, Hadoop, Micropython tutorials, examples and web tools.]]></description><link>https://www.srccodes.com/</link><image><url>https://www.srccodes.com/favicon.png</url><title>SrcCodes</title><link>https://www.srccodes.com/</link></image><generator>Ghost 5.70</generator><lastBuildDate>Thu, 30 Apr 2026 21:28:32 GMT</lastBuildDate><atom:link href="https://www.srccodes.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Demo: Apache Log4j2 Vulnerability | CVE-2021-45046 | CVE-2021-44228 | CVE-2021-45105 | Mitigation]]></title><description><![CDATA[<p>Now, most Java developers are busy mitigating <strong>Apache Log4j2 Vulnerability</strong> (CVE-2021-44228 and CVE-2021-45046). Applications are literally on fire. Here, I have created a sample project using Spring Boot and Log4j2 to demonstrate (Video Demo) the vulnerability and possible remediation. Please take a look in case if you are curious.</p><h3 id="what-is-the-famous-apache-log4j2-vulnerability">What</h3>]]></description><link>https://www.srccodes.com/apache-log4j2-vulnerability-cve-2021-4428-demo-mitigation-remote-code-execution-exploit/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5ab7</guid><category><![CDATA[Apache Log4j2]]></category><category><![CDATA[Log4j2 Vulnerability]]></category><category><![CDATA[CVE-2021-4428]]></category><category><![CDATA[Security Vulnerability]]></category><category><![CDATA[Spring Boot]]></category><category><![CDATA[Log4j2]]></category><category><![CDATA[Log4jShell]]></category><category><![CDATA[Remote Code Execution]]></category><category><![CDATA[JNDI Lookup]]></category><category><![CDATA[LDAP Server]]></category><category><![CDATA[formatMsgNoLookups]]></category><category><![CDATA[JndiLookup class]]></category><category><![CDATA[trustUrlCodebase]]></category><category><![CDATA[mitre]]></category><category><![CDATA[Security Breach]]></category><category><![CDATA[Demo]]></category><category><![CDATA[CVE-2021-45046]]></category><category><![CDATA[Log4j v2.16.0]]></category><category><![CDATA[Log4j 2.12.2]]></category><category><![CDATA[Log4j v2.15.0]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[user]]></dc:creator><pubDate>Fri, 10 Dec 2021 20:14:00 GMT</pubDate><media:content url="https://www.srccodes.com/content/images/2021/12/log4j-vulnerability-srccodes.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.srccodes.com/content/images/2021/12/log4j-vulnerability-srccodes.jpg" alt="Demo: Apache Log4j2 Vulnerability | CVE-2021-45046 | CVE-2021-44228 | CVE-2021-45105 | Mitigation"><p>Now, most Java developers are busy mitigating <strong>Apache Log4j2 Vulnerability</strong> (CVE-2021-44228 and CVE-2021-45046). Applications are literally on fire. Here, I have created a sample project using Spring Boot and Log4j2 to demonstrate (Video Demo) the vulnerability and possible remediation. Please take a look in case if you are curious.</p><h3 id="what-is-the-famous-apache-log4j2-vulnerability">What is the famous Apache Log4j2 Vulnerability?</h3><!--kg-card-begin: markdown--><p><strong>Reference:</strong> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046&amp;ref=srccodes.com">https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046</a></p>
<blockquote>
<p>Apache Log4j2 versions 2.0-alpha1 through 2.16.0 (excluding 2.12.3) did not protect from uncontrolled recursion from self-referential lookups. This allows an attacker with control over Thread Context Map data to cause a denial of service when a crafted string is interpreted. <strong>This issue was fixed in Log4j 2.17.0 and 2.12.3</strong>.</p>
</blockquote>
<p><strong>Reference:</strong> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046&amp;ref=srccodes.com">https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046</a></p>
<blockquote>
<p><strong>It was found that the fix to address CVE-2021-44228 in Apache Log4j 2.15.0 was incomplete in certain non-default configurations.</strong> This could allows attackers with control over Thread Context Map (MDC) input data when the logging configuration uses a non-default Pattern Layout with either a Context Lookup (for example, $${ctx:loginId}) or a Thread Context Map pattern (%X, %mdc, or %MDC) to craft malicious input data using a JNDI Lookup pattern resulting in a denial of service (DOS) attack. Log4j 2.15.0 makes a best-effort attempt to restrict JNDI LDAP lookups to localhost by default. <strong>Log4j 2.16.0</strong> fixes this issue by removing support for message lookup patterns and disabling JNDI functionality by default.</p>
</blockquote>
<p><strong>Reference:</strong> <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228&amp;ref=srccodes.com">https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228</a></p>
<blockquote>
<p>Apache <strong>Log4j2 &lt;=2.14.1</strong> JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. <strong>An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled</strong>. From log4j 2.15.0, this behavior has been disabled by default. In previous releases (<strong>&gt;2.10</strong>) this behavior can be mitigated by setting system property &quot;<strong>log4j2.formatMsgNoLookups</strong>&quot; to &#x201C;<strong>true</strong>&#x201D; or by removing the JndiLookup class from the classpath (example: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class). Java 8u121 (see <a href="https://www.oracle.com/java/technologies/javase/8u121-relnotes.html?ref=srccodes.com">https://www.oracle.com/java/technologies/javase/8u121-relnotes.html</a>) protects against remote code execution by defaulting &quot;com.sun.jndi.rmi.object.trustURLCodebase&quot; and &quot;com.sun.jndi.cosnaming.object.trustURLCodebase&quot; to &quot;false&quot;.</p>
</blockquote>
<!--kg-card-end: markdown--><h3 id="reproduce-">Reproduce:</h3><!--kg-card-begin: markdown--><ol>
<li>Create a Spring Boot project (Gradle) using <a href="https://start.spring.io/?ref=srccodes.com">https://start.spring.io/</a> or Spring STS IDE.</li>
<li>Exclude the default logging module and use <code>spring-boot-starter-log4j2</code> in <strong>build.gradle</strong> file.</li>
</ol>
<pre><code class="language-xml">plugins {
	id &apos;org.springframework.boot&apos; version &apos;2.5.7&apos;
	id &apos;io.spring.dependency-management&apos; version &apos;1.0.11.RELEASE&apos;
	id &apos;java&apos;
}

group = &apos;com.srccodes&apos;
version = &apos;0.0.1-SNAPSHOT&apos;
sourceCompatibility = &apos;1.8&apos;

repositories {
	mavenCentral()
}

dependencies {
	implementation (&apos;org.springframework.boot:spring-boot-starter-web&apos;) {
		exclude group: &apos;org.springframework.boot&apos;, module: &apos;spring-boot-starter-logging&apos;
	}
	
	implementation &apos;org.springframework.boot:spring-boot-starter-log4j2:2.6.1&apos;	
	testImplementation &apos;org.springframework.boot:spring-boot-starter-test&apos;
}

test {
	useJUnitPlatform()
}

</code></pre>
<ol start="3">
<li>Sample code for SpringBootApplication</li>
</ol>
<pre><code class="language-java">package com.srccodes.app;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Log4jVulnApplication {

	public static void main(String[] args) {
		SpringApplication.run(Log4jVulnApplication.class, args);

	}

}
</code></pre>
<ol start="4">
<li>Sample code for RestController that exposes an endpoint (say <code>/vuln</code>) which takes input (say request parametr <code>userInput</code>) from end user.</li>
</ol>
<pre><code class="language-java">package com.srccodes.app;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
	private static final Logger LOGGER = LogManager.getLogger(TestController.class);
	
	@GetMapping(&quot;/vuln&quot;)
	public String test(@RequestParam(&quot;userInput&quot;) String userInput) {
		LOGGER.info(&quot;User Input:&quot; + userInput);
		
		return &quot;{}&quot;;
	}

}

</code></pre>
<ol start="5">
<li>Now, start the SpringBoot apllication and pass <code>${jndi:ldap://127.0.0.1:3089/}</code> (URL Encoded: <code>%24%7Bjndi%3Aldap%3A%2F%2F127.0.0.1%3A3089%2F%7D</code>) to exploit the vulnerability. And you will see, it will try to connect to LDAP using JNDI look up (&quot;...<code>looking up JNDI resource [ldap://127.0.0.1:3089/]</code>...&quot;). And sure enough, it will fail as LDAP server is not running in my local.</li>
</ol>
<pre><code class="language-bash">2021-12-12 13:01:17.174  INFO 26872 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/]                        : Initializing Spring DispatcherServlet &apos;dispatcherServlet&apos;
2021-12-12 13:01:17.175  INFO 26872 --- [nio-8080-exec-1] o.s.w.s.DispatcherServlet                : Initializing Servlet &apos;dispatcherServlet&apos;
2021-12-12 13:01:17.176  INFO 26872 --- [nio-8080-exec-1] o.s.w.s.DispatcherServlet                : Completed initialization in 1 ms
2021-12-12 13:01:17,221 http-nio-8080-exec-1 WARN Error looking up JNDI resource [ldap://127.0.0.1:3089/]. javax.naming.CommunicationException: 127.0.0.1:3089 [Root exception is java.net.ConnectException: Connection refused: connect]
	at java.naming/com.sun.jndi.ldap.Connection.&lt;init&gt;(Connection.java:253)
	at java.naming/com.sun.jndi.ldap.LdapClient.&lt;init&gt;(LdapClient.java:137)
	at java.naming/com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1616)
	at java.naming/com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2848)
	at java.naming/com.sun.jndi.ldap.LdapCtx.&lt;init&gt;(LdapCtx.java:348)
	at java.naming/com.sun.jndi.url.ldap.ldapURLContextFactory.getUsingURLIgnoreRootDN(ldapURLContextFactory.java:60)
	at java.naming/com.sun.jndi.url.ldap.ldapURLContext.getRootURLContext(ldapURLContext.java:61)
	at java.naming/com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:204)
	at java.naming/com.sun.jndi.url.ldap.ldapURLContext.lookup(ldapURLContext.java:94)
	at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)
	at org.apache.logging.log4j.core.net.JndiManager.lookup(JndiManager.java:172)
	at org.apache.logging.log4j.core.lookup.JndiLookup.lookup(JndiLookup.java:56)
	at org.apache.logging.log4j.core.lookup.Interpolator.lookup(Interpolator.java:221)
	at org.apache.logging.log4j.core.lookup.StrSubstitutor.resolveVariable(StrSubstitutor.java:1110)
	at org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute(StrSubstitutor.java:1033)
	at org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute(StrSubstitutor.java:912)
	at org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(StrSubstitutor.java:467)
	at org.apache.logging.log4j.core.pattern.MessagePatternConverter.format(MessagePatternConverter.java:132)
	at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:38)
	at org.apache.logging.log4j.core.layout.PatternLayout$PatternSerializer.toSerializable(PatternLayout.java:344)
	at org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:244)
	at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:229)
	at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:59)
	at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:197)
	at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:190)
	at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:181)
	at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
	at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
	at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
	at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
	at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:540)
	at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:498)
	at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:481)
	at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:456)
	at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
	at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
	at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205)
	at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159)
	at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142)
	at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2017)
	at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
	at org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:1320)
	at com.srccodes.app.TestController.test(TestController.java:15)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1722)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.net.ConnectException: Connection refused: connect
	at java.base/sun.nio.ch.Net.connect0(Native Method)
	at java.base/sun.nio.ch.Net.connect(Net.java:579)
	at java.base/sun.nio.ch.Net.connect(Net.java:568)
	at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
	at java.base/java.net.Socket.connect(Socket.java:633)
	at java.base/java.net.Socket.connect(Socket.java:583)
	at java.base/java.net.Socket.&lt;init&gt;(Socket.java:507)
	at java.base/java.net.Socket.&lt;init&gt;(Socket.java:287)
	at java.naming/com.sun.jndi.ldap.Connection.createSocket(Connection.java:346)
	at java.naming/com.sun.jndi.ldap.Connection.&lt;init&gt;(Connection.java:232)
	... 92 more

2021-12-12 13:01:17.202  INFO 26872 --- [nio-8080-exec-1] c.s.a.TestController                     : User Input:${jndi:ldap://127.0.0.1:3089/}

</code></pre>
<h3 id="videodemo">Video Demo:</h3>
<figure class="kg-card kg-embed-card"><iframe width="459" height="344" src="https://www.youtube.com/embed/ziZnU3t-DRM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><!--kg-card-end: markdown--><h3 id="mitigation-">Mitigation:</h3><!--kg-card-begin: markdown--><p>No action is required for <strong>Log4j 1.x</strong>. It is not impacted by vulnerabilities <strong>CVE-2021-45046</strong>, <strong>CVE-2021-44228</strong> and <strong>CVE-2021-45105</strong>.</p>
<p>For <strong>Log4j 2.x,</strong></p>
<blockquote>
<p>Implement one of the mitigation techniques below.</p>
<ul>
<li>Java 8 (or later) users should upgrade to release <strong>2.17.0</strong>.</li>
</ul>
<p>Alternatively, this can be mitigated in configuration:</p>
<ul>
<li>In PatternLayout in the logging configuration, <strong>replace Context Lookups like ${ctx:loginId} or $${ctx:loginId} with Thread Context Map patterns (%X, %mdc, or %MDC)</strong>.</li>
<li>Otherwise, in the configuration, <strong>remove references to Context Lookups like ${ctx:loginId} or $${ctx:loginId}</strong> where they originate from sources external to the application such as HTTP headers or user input.</li>
</ul>
<p>Note that only the log4j-core JAR file is impacted by this vulnerability. Applications using only the <strong>log4j-api JAR file without the log4j-core JAR file are not impacted</strong> by this vulnerability.</p>
<p>Also note that Apache Log4j is the only Logging Services subproject affected by this vulnerability. Other projects like <strong>Log4net and Log4cxx are not impacted</strong> by this.</p>
<p><strong>Reference:</strong> <a href="https://logging.apache.org/log4j/2.x/security.html?ref=srccodes.com">https://logging.apache.org/log4j/2.x/security.html</a></p>
</blockquote>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="references">References</h2>
<ul>
    <li><a href="https://youtu.be/ziZnU3t-DRM?ref=srccodes.com" title="Apache Log4j2 Vulnerability | CVE-2021-44228 | JNDI Lookup | LDAP Server | Mitigation | Remediation" rel="noopener" target="_blank">Apache Log4j2 Vulnerability | CVE-2021-44228 | JNDI Lookup | LDAP Server | Mitigation | Remediation</a></li>
    <li><a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45105&amp;ref=srccodes.com" title="CVE-2021-45105" rel="noopener" target="_blank">CVE-2021-45105</a></li>
    <li><a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228&amp;ref=srccodes.com" title="CVE-2021-44228" rel="noopener" target="_blank">CVE-2021-44228</a></li>
    <li><a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046&amp;ref=srccodes.com" title="CVE-2021-45046" rel="noopener" target="_blank">CVE-2021-45046</a></li>
    <li><a href="https://logging.apache.org/log4j/2.x/security.html?ref=srccodes.com" title="Apache Log4j Security Vulnerabilities" rel="noopener" target="_blank">Apache Log4j Security Vulnerabilities</a></li>
</ul><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[How to Install Windows Subsystem for Linux (WSL2) on Windows 10?]]></title><description><![CDATA[<p><strong>Windows Subsystem for Linux (WSL)</strong> is an awesome feature of Windows 10. No more VMware or Oracle VirtualBox is required to run Linux on Windows. <strong>WSL is faster and less resource consuming, zero or less configuration compared to any other traditional Virtual Machines (VM)</strong>. Installation and setup of Linux Distribution</p>]]></description><link>https://www.srccodes.com/how-to-install-windows-subsystem-for-linux-wsl2-on-windows-10/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5ab4</guid><category><![CDATA[Windows Subsystem for Linux]]></category><category><![CDATA[WSL2]]></category><category><![CDATA[VMware]]></category><category><![CDATA[Oracle VM]]></category><category><![CDATA[VirtualBox]]></category><category><![CDATA[Virtual Machine]]></category><category><![CDATA[Docker]]></category><category><![CDATA[Putty]]></category><category><![CDATA[WinSCP]]></category><category><![CDATA[Linux Kernel]]></category><category><![CDATA[Windows 10]]></category><category><![CDATA[Ubuntu on Windows 10]]></category><category><![CDATA[WSL]]></category><category><![CDATA[Virtual Machine Platform]]></category><category><![CDATA[Windows Feature]]></category><category><![CDATA[winver]]></category><category><![CDATA[2-step Verification]]></category><category><![CDATA[optionalfeatures]]></category><category><![CDATA[Easy Development]]></category><category><![CDATA[Build 18362]]></category><category><![CDATA[Version 1903]]></category><category><![CDATA[x64]]></category><category><![CDATA[ARM64]]></category><category><![CDATA[PowerShell]]></category><category><![CDATA[Ubuntu]]></category><category><![CDATA[Kali]]></category><category><![CDATA[Debian]]></category><category><![CDATA[OpenSUSE]]></category><category><![CDATA[Alpine WSL]]></category><category><![CDATA[wsl --install]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[user]]></dc:creator><pubDate>Thu, 26 Aug 2021 06:11:51 GMT</pubDate><media:content url="https://www.srccodes.com/content/images/2021/08/install-wsl2-windows10-linux-subsystem-srccodes-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.srccodes.com/content/images/2021/08/install-wsl2-windows10-linux-subsystem-srccodes-1.jpg" alt="How to Install Windows Subsystem for Linux (WSL2) on Windows 10?"><p><strong>Windows Subsystem for Linux (WSL)</strong> is an awesome feature of Windows 10. No more VMware or Oracle VirtualBox is required to run Linux on Windows. <strong>WSL is faster and less resource consuming, zero or less configuration compared to any other traditional Virtual Machines (VM)</strong>. Installation and setup of Linux Distribution is lightning-fast. Because of <strong>seamless integration</strong> between Windows Host OS and Linux Guest OS, no separate SSH client (e.g. Putty) or SCP client (e.g. WinSCP) is required. &#xA0;<strong>Docker </strong>can run directly inside of WSL2 (a <strong>full Linux Kernel</strong> built by Microsoft). Easy to setup isolated AWS cloud development environment locally using Docker, LocalStack, AWS CLI, SAM CLI, VSCode etc. What else do we, developers need!</p><p></p><h3 id="prerequisite">Prerequisite</h3><!--kg-card-begin: markdown--><p>For WSL2, Windows 10 has to be  on</p>
<ul>
<li><strong>Version 1903 or higher</strong> with <strong>Build 18362 or higher</strong> for <strong>x64</strong> systems.</li>
<li><strong>Version 2004 or higher</strong> with <strong>Build 19041 or higher</strong> for <strong>ARM64</strong> systems.</li>
</ul>
<p>In case, if you are wondering how to verify this,<br>
Open <strong>Windows Run command</strong> (Windows logo key + R), type <code>winver</code> and click &quot;OK&quot; button&quot;.</p>
<figure class="kg-card kg-image-card">
    <picture class="kg-image">
        <source type="image/webp" srcset="//cdn.srccodes.com/c/2021/08/71/windows10-version-build-number-winver-ver-wsl2.webp">
        <img src="//cdn.srccodes.com/c/2021/08/71/windows10-version-build-number-winver-ver-wsl2.jpg" alt="How to Install Windows Subsystem for Linux (WSL2) on Windows 10?">
    </picture>
</figure>
<p><strong>or,</strong> open <strong>Windows command prompt</strong> and type <code>ver</code></p>
<pre><code class="language-bash">c:\&gt;ver
Microsoft Windows [Version 10.0.18363.1679]
</code></pre>
<!--kg-card-end: markdown--><p></p><h3 id="enable-windows-optional-feature">Enable Windows Optional Feature</h3><!--kg-card-begin: markdown--><p>Next, we&apos;ll turn on following two windows feature</p>
<ul>
<li><strong>Windows Subsystem for Linux</strong></li>
<li><strong>Virtual Machine Platform</strong></li>
</ul>
<p>We can do it in two ways:<br>
<strong>Option#1:</strong></p>
<ol>
<li>Open <strong>Windows Run command</strong> (Windows logo key + R)</li>
<li>Type <code>optionalfeatures</code></li>
<li>Click &quot;OK&quot; button&quot;.</li>
<li>Select checkboxes for <strong>Windows Subsystem for Linux</strong> and <strong>Virtual Machine Platform</strong> features. <figure class="kg-card kg-image-card kg-width-full">
     <picture class="kg-image">
         <source type="image/webp" srcset="//cdn.srccodes.com/c/2021/08/71/windows10-turn-optional-feature-on-vm-wsl2.webp">
         <img src="//cdn.srccodes.com/c/2021/08/71/windows10-turn-optional-feature-on-vm-wsl2.jpg" alt="How to Install Windows Subsystem for Linux (WSL2) on Windows 10?">
     </picture>
 </figure>
</li>
<li>Click &quot;OK&quot; button to apply changes.</li>
<li>Once done, &quot;<em>Windows needs to reboot your PC to finish installing the requested changes</em>&quot;. So, click &quot;Restart now&quot; button.</li>
</ol>
<p><strong>Option#2:</strong></p>
<ol>
<li>Open <strong>Windows PowerShell</strong> in &quot;<strong>Run as Administrator</strong>&quot;.</li>
<li>Execute following command</li>
</ol>
<pre><code class="language-ps">PS C:\&gt; Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux, VirtualMachinePlatform

Do you want to restart the computer to complete this operation now?
[Y] Yes  [N] No  [?] Help (default is &quot;Y&quot;): Y             
</code></pre>
<ol start="3">
<li>To apply this change, you need to restart the system. Therefore, enter &quot;Y&quot; when you will be asked to restart.</li>
</ol>
<p><a href="https://docs.microsoft.com/en-us/powershell/module/dism/enable-windowsoptionalfeature?view=windowsserver2019-ps&amp;ref=srccodes.com">Reference: Enable-WindowsOptionalFeature</a></p>
<blockquote>
<pre><code>Enable-WindowsOptionalFeature
      -FeatureName &lt;String[]&gt;
      [-PackageName &lt;String&gt;]
      [-All]
      [-LimitAccess]
      [-Source &lt;String[]&gt;]
      [-NoRestart]
      [-Online]
      [-WindowsDirectory &lt;String&gt;]
      [-SystemDrive &lt;String&gt;]
      [-LogPath &lt;String&gt;]
      [-ScratchDirectory &lt;String&gt;]
      [-LogLevel &lt;LogLevel&gt;]
      [&lt;CommonParameters&gt;]
</code></pre>
<h3 id="description">Description:</h3>
<p>The <strong>Enable-WindowsOptionalFeature cmdlet enables or restores an optional feature</strong> in a Windows image.</p>
<p>Use the <strong>Online</strong> parameter to specify the running operating system on your local computer, or use the Path parameter to specify the location of a mounted Windows image.</p>
<p>The <strong>FeatureName</strong> parameter specifies the feature to add. You can specify more than one feature in the same package. Separate feature names with a comma.</p>
</blockquote>
<p><strong>Notes:</strong><br>
<strong>Get-WindowsOptionalFeature</strong> cmdlet gives all the features availble in the running operating system.</p>
<pre><code class="language-ps">PS C:\&gt; Get-WindowsOptionalFeature -Online

FeatureName : Printing-PrintToPDFServices-Features
State       : Enabled

FeatureName : Printing-XPSServices-Features
State       : Enabled

FeatureName : TelnetClient
State       : Disabled

FeatureName : TFTP
State       : Disabled

FeatureName : LegacyComponents
State       : Disabled

FeatureName : DirectPlay
State       : Disabled

FeatureName : Printing-Foundation-Features
State       : Enabled

FeatureName : Printing-Foundation-InternetPrinting-Client
State       : Enabled

FeatureName : Printing-Foundation-LPDPrintService
State       : Disabled

FeatureName : Printing-Foundation-LPRPortMonitor
State       : Disabled

FeatureName : SimpleTCP
State       : Disabled

FeatureName : Windows-Identity-Foundation
State       : Disabled

FeatureName : NetFx3
State       : DisabledWithPayloadRemoved

FeatureName : WCF-HTTP-Activation
State       : Disabled

FeatureName : WCF-NonHTTP-Activation
State       : Disabled

FeatureName : IIS-WebServerRole
State       : Disabled

FeatureName : IIS-WebServer
State       : Disabled

FeatureName : IIS-CommonHttpFeatures
State       : Disabled

FeatureName : IIS-HttpErrors
State       : Disabled

FeatureName : IIS-HttpRedirect
State       : Disabled

FeatureName : IIS-ApplicationDevelopment
State       : Disabled

FeatureName : IIS-Security
State       : Disabled

FeatureName : IIS-RequestFiltering
State       : Disabled

FeatureName : IIS-NetFxExtensibility
State       : Disabled

FeatureName : IIS-NetFxExtensibility45
State       : Disabled

FeatureName : IIS-HealthAndDiagnostics
State       : Disabled

FeatureName : IIS-HttpLogging
State       : Disabled

FeatureName : IIS-LoggingLibraries
State       : Disabled

FeatureName : IIS-RequestMonitor
State       : Disabled

FeatureName : IIS-HttpTracing
State       : Disabled

FeatureName : IIS-URLAuthorization
State       : Disabled

FeatureName : IIS-IPSecurity
State       : Disabled

FeatureName : IIS-Performance
State       : Disabled

FeatureName : IIS-HttpCompressionDynamic
State       : Disabled

FeatureName : IIS-WebServerManagementTools
State       : Disabled

FeatureName : IIS-ManagementScriptingTools
State       : Disabled

FeatureName : IIS-IIS6ManagementCompatibility
State       : Disabled

FeatureName : IIS-Metabase
State       : Disabled

FeatureName : WAS-WindowsActivationService
State       : Disabled

FeatureName : WAS-ProcessModel
State       : Disabled

FeatureName : WAS-NetFxEnvironment
State       : Disabled

FeatureName : WAS-ConfigurationAPI
State       : Disabled

FeatureName : IIS-HostableWebCore
State       : Disabled

FeatureName : WCF-Services45
State       : Enabled

FeatureName : WCF-HTTP-Activation45
State       : Disabled

FeatureName : WCF-TCP-Activation45
State       : Disabled

FeatureName : WCF-Pipe-Activation45
State       : Disabled

FeatureName : WCF-MSMQ-Activation45
State       : Disabled

FeatureName : WCF-TCP-PortSharing45
State       : Enabled

FeatureName : IIS-StaticContent
State       : Disabled

FeatureName : IIS-DefaultDocument
State       : Disabled

FeatureName : IIS-DirectoryBrowsing
State       : Disabled

FeatureName : IIS-WebDAV
State       : Disabled

FeatureName : IIS-WebSockets
State       : Disabled

FeatureName : IIS-ApplicationInit
State       : Disabled

FeatureName : IIS-ASPNET
State       : Disabled

FeatureName : IIS-ASPNET45
State       : Disabled

FeatureName : IIS-ASP
State       : Disabled

FeatureName : IIS-CGI
State       : Disabled

FeatureName : IIS-ISAPIExtensions
State       : Disabled

FeatureName : IIS-ISAPIFilter
State       : Disabled

FeatureName : IIS-ServerSideIncludes
State       : Disabled

FeatureName : IIS-CustomLogging
State       : Disabled

FeatureName : IIS-BasicAuthentication
State       : Disabled

FeatureName : IIS-HttpCompressionStatic
State       : Disabled

FeatureName : IIS-ManagementConsole
State       : Disabled

FeatureName : IIS-ManagementService
State       : Disabled

FeatureName : IIS-WMICompatibility
State       : Disabled

FeatureName : IIS-LegacyScripts
State       : Disabled

FeatureName : IIS-LegacySnapIn
State       : Disabled

FeatureName : IIS-FTPServer
State       : Disabled

FeatureName : IIS-FTPSvc
State       : Disabled

FeatureName : IIS-FTPExtensibility
State       : Disabled

FeatureName : MSMQ-Container
State       : Disabled

FeatureName : MSMQ-DCOMProxy
State       : Disabled

FeatureName : MSMQ-Server
State       : Disabled

FeatureName : MSMQ-ADIntegration
State       : Disabled

FeatureName : MSMQ-HTTP
State       : Disabled

FeatureName : MSMQ-Multicast
State       : Disabled

FeatureName : MSMQ-Triggers
State       : Disabled

FeatureName : IIS-CertProvider
State       : Disabled

FeatureName : IIS-WindowsAuthentication
State       : Disabled

FeatureName : IIS-DigestAuthentication
State       : Disabled

FeatureName : IIS-ClientCertificateMappingAuthentication
State       : Disabled

FeatureName : IIS-IISCertificateMappingAuthentication
State       : Disabled

FeatureName : IIS-ODBCLogging
State       : Disabled

FeatureName : MediaPlayback
State       : Enabled

FeatureName : WindowsMediaPlayer
State       : Enabled

FeatureName : DataCenterBridging
State       : Disabled

FeatureName : SmbDirect
State       : Enabled

FeatureName : HostGuardian
State       : Disabled

FeatureName : SMB1Protocol-Deprecation
State       : Disabled

FeatureName : MSRDC-Infrastructure
State       : Enabled

FeatureName : TIFFIFilter
State       : Disabled

FeatureName : NetFx4-AdvSrvs
State       : Enabled

FeatureName : NetFx4Extended-ASPNET45
State       : Disabled

FeatureName : MultiPoint-Connector
State       : Disabled

FeatureName : MultiPoint-Connector-Services
State       : Disabled

FeatureName : MultiPoint-Tools
State       : Disabled

FeatureName : Windows-Defender-Default-Definitions
State       : Disabled

FeatureName : SearchEngine-Client-Package
State       : Enabled

FeatureName : MicrosoftWindowsPowerShellV2Root
State       : Enabled

FeatureName : MicrosoftWindowsPowerShellV2
State       : Enabled

FeatureName : Client-DeviceLockdown
State       : Disabled

FeatureName : Client-EmbeddedShellLauncher
State       : Disabled

FeatureName : Client-EmbeddedBootExp
State       : Disabled

FeatureName : Client-EmbeddedLogon
State       : Disabled

FeatureName : Client-KeyboardFilter
State       : Disabled

FeatureName : Client-UnifiedWriteFilter
State       : Disabled

FeatureName : AppServerClient
State       : Disabled

FeatureName : WorkFolders-Client
State       : Enabled

FeatureName : Client-ProjFS
State       : Disabled

FeatureName : SMB1Protocol
State       : Disabled

FeatureName : SMB1Protocol-Client
State       : Disabled

FeatureName : SMB1Protocol-Server
State       : Disabled

FeatureName : Internet-Explorer-Optional-amd64
State       : Enabled

FeatureName : Microsoft-Windows-Subsystem-Linux
State       : Disabled

FeatureName : HypervisorPlatform
State       : Disabled

FeatureName : VirtualMachinePlatform
State       : Disabled

FeatureName : Containers-DisposableClientVM
State       : Enabled

FeatureName : Microsoft-Hyper-V-All
State       : Disabled

FeatureName : Microsoft-Hyper-V
State       : Disabled

FeatureName : Microsoft-Hyper-V-Tools-All
State       : Disabled

FeatureName : Microsoft-Hyper-V-Management-PowerShell
State       : Disabled

FeatureName : Microsoft-Hyper-V-Hypervisor
State       : Disabled

FeatureName : Microsoft-Hyper-V-Services
State       : Disabled

FeatureName : Microsoft-Hyper-V-Management-Clients
State       : Disabled

FeatureName : DirectoryServices-ADAM-Client
State       : Disabled

FeatureName : Windows-Defender-ApplicationGuard
State       : Disabled

FeatureName : ServicesForNFS-ClientOnly
State       : Disabled

FeatureName : ClientForNFS-Infrastructure
State       : Disabled

FeatureName : NFS-Administration
State       : Disabled

FeatureName : Containers
State       : Disabled
</code></pre>
<!--kg-card-end: markdown--><p></p><h3 id="download-and-install-linux-kernel-update-package">Download and Install Linux Kernel update package</h3><!--kg-card-begin: markdown--><p>Based on your System type download corresponding Linux Kernel update package.</p>
<ul>
<li><a href="https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi?ref=srccodes.com">WSL2 Linux Kernel update package for x64-based PC</a></li>
<li><a href="https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi?ref=srccodes.com">WSL2 Linux Kernel update package for ARM64-based PC</a></li>
</ul>
<p><strong>Installation Steps:</strong></p>
<ol>
<li>Double click to run the downloaded Windows Installer Package.</li>
<li>In <strong>User Access Control</strong> Wizard, click &quot;<strong>Yes</strong>&quot; when it will ask &quot;<em>Do you want to allow this app to make changes to your device?</em>&quot;</li>
<li>Click &quot;Finish&quot; button to complete.</li>
</ol>
  <figure class="kg-card kg-image-card kg-width-full">
    <picture class="kg-image">
        <source type="image/webp" srcset="//cdn.srccodes.com/c/2021/08/71/windows10-wsl2-linux-kernel-update-package-x64-arm64.webp">
        <img src="//cdn.srccodes.com/c/2021/08/71/windows10-wsl2-linux-kernel-update-package-x64-arm64.jpg" alt="How to Install Windows Subsystem for Linux (WSL2) on Windows 10?">
    </picture>
</figure>  
<!--kg-card-end: markdown--><p></p><h3 id="set-wsl-default-version-to-2-wsl2-">Set WSL default version to 2 (WSL2)</h3><!--kg-card-begin: markdown--><p>Run the below command in Windows Command Prompt or Windows PowerShell to change the default installation version for new Linux distribution.</p>
<pre><code class="language-bash">C:\Users\Abhijit&gt;wsl  --set-default-version 2
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
The operation completed successfully.
</code></pre>
<!--kg-card-end: markdown--><p></p><h3 id="install-linux-distribution">Install Linux Distribution</h3><!--kg-card-begin: markdown--><p>Finally, we are good to install the preferred Linux distribution. We can do it in multiple ways.</p>
<p><strong>Option#1:</strong></p>
<ol>
<li>Run the following command in Windows Command Prompt or Windows PowerShell to display a list of available distributions for installation with <code>wsl --install</code><pre><code class="language-ps">C:\Users\Abhijit&gt;wsl --list --online
The following is a list of valid distributions that can be installed.
Install using &apos;wsl --install -d &lt;Distro&gt;&apos;.

NAME            FRIENDLY NAME
Ubuntu          Ubuntu
Debian          Debian GNU/Linux
kali-linux      Kali Linux Rolling
openSUSE-42     openSUSE Leap 42
SLES-12         SUSE Linux Enterprise Server v12
Ubuntu-16.04    Ubuntu 16.04 LTS
Ubuntu-18.04    Ubuntu 18.04 LTS
Ubuntu-20.04    Ubuntu 20.04 LTS
</code></pre>
</li>
<li>Now, pass the desired distribution name while running <code>wsl --install</code><pre><code>C:\Users\Abhimun&gt;wsl --install --distribution Ubuntu-20.04
Downloading: Ubuntu 20.04 LTS
Installing: Ubuntu 20.04 LTS
Ubuntu 20.04 LTS has been installed.
Launching Ubuntu 20.04 LTS...
</code></pre>
</li>
<li>Once installed, it will be Launched automatically.</li>
</ol>
<p><strong>Option#2:</strong></p>
<ol>
<li>Open <a href="https://aka.ms/wslstore?ref=srccodes.com">Microsoft Store</a></li>
<li>Choose your preferred Linux Distributions (e.g. Ubuntu).</li>
<li>Click &quot;Install&quot; button to start. <figure class="kg-card kg-image-card kg-width-full">
     <picture class="kg-image">
         <source type="image/webp" srcset="//cdn.srccodes.com/c/2021/08/71/windows10-wsl2-install-ubuntu-microsoft-store.webp">
         <img src="//cdn.srccodes.com/c/2021/08/71/windows10-wsl2-install-ubuntu-microsoft-store.jpg" alt="How to Install Windows Subsystem for Linux (WSL2) on Windows 10?">
     </picture>
 </figure> 
</li>
</ol>
<p><strong>Option#3:</strong></p>
<ol>
<li>In case if Microsoft Store app is retricted by your organization or not avilable, then you can download offline installer.</li>
</ol>
<blockquote>
<p><a href="https://docs.microsoft.com/en-us/windows/wsl/install-manual?ref=srccodes.com#downloading-distributions">Downloading distributions:</a></p>
<ul>
    <li><a href="https://aka.ms/wslubuntu2004?ref=srccodes.com" data-linktype="external">Ubuntu 20.04</a></li>
    <li><a href="https://aka.ms/wslubuntu2004arm?ref=srccodes.com" data-linktype="external">Ubuntu 20.04 ARM</a></li>
    <li><a href="https://aka.ms/wsl-ubuntu-1804?ref=srccodes.com" data-linktype="external">Ubuntu 18.04</a></li>
    <li><a href="https://aka.ms/wsl-ubuntu-1804-arm?ref=srccodes.com" data-linktype="external">Ubuntu 18.04 ARM</a></li>
    <li><a href="https://aka.ms/wsl-ubuntu-1604?ref=srccodes.com" data-linktype="external">Ubuntu 16.04</a></li>
    <li><a href="https://aka.ms/wsl-debian-gnulinux?ref=srccodes.com" data-linktype="external">Debian GNU/Linux</a></li>
    <li><a href="https://aka.ms/wsl-kali-linux-new?ref=srccodes.com" data-linktype="external">Kali Linux</a></li>
    <li><a href="https://aka.ms/wsl-sles-12?ref=srccodes.com" data-linktype="external">SUSE Linux Enterprise Server 12</a></li>
    <li><a href="https://aka.ms/wsl-SUSELinuxEnterpriseServer15SP2?ref=srccodes.com" data-linktype="external">SUSE Linux Enterprise Server 15 SP2</a></li>
    <li><a href="https://aka.ms/wsl-opensuseleap15-2?ref=srccodes.com" data-linktype="external">openSUSE Leap 15.2</a></li>
    <li><a href="https://github.com/WhitewaterFoundry/WSLFedoraRemix/releases/?ref=srccodes.com" data-linktype="external">Fedora Remix for WSL</a></li>
</ul>
<p>This will cause the <distro>.appx packages to download to a folder of your choosing.</distro></p>
</blockquote>
<ol start="2">
<li>Double click the downloaded package.</li>
<li>Click &quot;Install&quot; to start. <figure class="kg-card kg-image-card kg-width-full">
     <picture class="kg-image">
         <source type="image/webp" srcset="//cdn.srccodes.com/c/2021/08/71/windows10-wsl2-install-ubuntu-offline.webp">
         <img src="//cdn.srccodes.com/c/2021/08/71/windows10-wsl2-install-ubuntu-offline.jpg" alt="How to Install Windows Subsystem for Linux (WSL2) on Windows 10?">
     </picture>
 </figure> </li>
</ol>
<!--kg-card-end: markdown--><p></p><h3 id="launch-linux-distribution">Launch Linux Distribution</h3><!--kg-card-begin: markdown--><p>At the end of installation, you will get option to Launch the installed Linux Distribution. In my case, it is Ubuntu 20.04 and I am seeing the following in my screen.</p>
<pre><code class="language-bash">Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: abhijit
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user &quot;root&quot;), use &quot;sudo &lt;command&gt;&quot;.
See &quot;man sudo_root&quot; for details.

Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.10.16.3-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Thu Aug 26 01:36:36 EDT 2021

  System load:  0.0                Processes:             8
  Usage of /:   0.4% of 250.98GB   Users logged in:       0
  Memory usage: 1%                 IPv4 address for eth0: 172.23.22.192
  Swap usage:   0%

0 updates can be installed immediately.
0 of these updates are security updates.


The list of available updates is more than a week old.
To check for new updates run: sudo apt update


This message is shown once once a day. To disable it please create the
/home/abhijit/.hushlogin file.
abhijit@playground:~$
</code></pre>
<!--kg-card-end: markdown--><h3 id="bonus-section">Bonus Section</h3><!--kg-card-begin: markdown--><p>If you&apos;re wondering how to change the <strong>hostname</strong> permanently on Ubuntu running on WSL2, then following video will help you.</p>
<figure class="kg-card kg-embed-card"><iframe width="459" height="344" src="https://www.youtube.com/embed/YJXtJWYLDPo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>
<p>If you prefer reading, then check the following article on <a href="https://www.srccodes.com/change-hostname-ubuntu-microsoft-windows-subsystem-for-linux-wsl-wsl2-wsl-conf-unable-resolve-hosts-name-service-not-known-list-running-shutdown-vm-srccodes/">How to change hostname on Ubuntu running on Windows WSL?</a></p>
<!--kg-card-end: markdown--><h3 id="summary">Summary</h3><p>Because of &quot;<strong><em>..seamless integration between Windows and Linux, fast boot times, a small resource footprint, and requires no VM configuration or management</em></strong>&quot;<strong>, lightning-fast</strong> <strong>installation &amp; setup</strong> <strong>of Linux distribution, </strong>WSL2 is becoming the popular choice for local development.</p><p></p><!--kg-card-begin: markdown--><h2 id="references">References</h2>
<ul>
    <li><a href="https://docs.microsoft.com/en-us/windows/wsl/compare-versions?ref=srccodes.com" title="Comparing WSL 1 and WSL 2" rel="noopener" target="_blank">Comparing WSL 1 and WSL 2</a></li>
    <li><a href="https://docs.microsoft.com/en-us/windows/wsl/install-manual?ref=srccodes.com#downloading-distributions" title="Offline Linux Distributions" rel="noopener" target="_blank">Offline Linux Distributions</a></li>
     <li><a href="https://docs.microsoft.com/en-us/powershell/module/dism/?view=windowsserver2019-ps&amp;ref=srccodes.com" title="Deployment Image Servicing and Management (DISM) platform" rel="noopener" target="_blank">Deployment Image Servicing and Management (DISM) platform</a></li>
</ul><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Scrum Master - A Leader who Serves]]></title><description><![CDATA[<p>The launch of the 2020 version of the Scrum Guide reimagined the role of the Scrum Leader. Servant-leader a term that had become synonymous with the role of a Scrum Master was coined by Robert Greenleaf in his essay published in 1970. </p><!--kg-card-begin: markdown--><blockquote>
<p>A servant-leader focuses primarily on the growth and</p></blockquote>]]></description><link>https://www.srccodes.com/scrum-master-a-servant-leader-no-more-true-leader-agile-scrum-waterfall-standish-group-chaos-report-failed/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5ab3</guid><category><![CDATA[Scrum Master]]></category><category><![CDATA[Professional Scrum Master]]></category><category><![CDATA[Agile]]></category><category><![CDATA[Agile Methodology]]></category><category><![CDATA[Agile Project Management]]></category><category><![CDATA[Waterfall]]></category><category><![CDATA[Agile vs Waterfall]]></category><category><![CDATA[Robert Greenleaf]]></category><category><![CDATA[servant leader]]></category><category><![CDATA[True Leader]]></category><category><![CDATA[Standish Group]]></category><category><![CDATA[Chaos Report]]></category><category><![CDATA[Chaos Studies]]></category><category><![CDATA[Chaos Manifesto]]></category><category><![CDATA[Jeff Sutherland]]></category><category><![CDATA[Agile Projects]]></category><category><![CDATA[Agile projects failed]]></category><category><![CDATA[The New New Product Development Game]]></category><category><![CDATA[Scrum Guide 2020]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[Debjani Sinha]]></dc:creator><pubDate>Mon, 16 Aug 2021 19:42:33 GMT</pubDate><media:content url="https://www.srccodes.com/content/images/2021/08/scrum-master-leader-who-serves.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.srccodes.com/content/images/2021/08/scrum-master-leader-who-serves.jpg" alt="Scrum Master - A Leader who Serves"><p>The launch of the 2020 version of the Scrum Guide reimagined the role of the Scrum Leader. Servant-leader a term that had become synonymous with the role of a Scrum Master was coined by Robert Greenleaf in his essay published in 1970. </p><!--kg-card-begin: markdown--><blockquote>
<p>A servant-leader focuses primarily on the growth and well-being of people and the communities to which they belong. While traditional leadership generally involves the accumulation and exercise of power by one at the &#x201C;top of the pyramid,&#x201D; servant leadership is different. The servant-leader shares power, puts the needs of others first and helps people develop and perform as highly as possible.<br>
<em><strong>Ref:</strong> <a href="https://www.greenleaf.org/what-is-servant-leadership/?ref=srccodes.com">https://www.greenleaf.org/what-is-servant-leadership/</a></em></p>
</blockquote>
<!--kg-card-end: markdown--><p>This style of leadership worked well for Scrum, where the importance of a Scrum Master is not in lieu of any designation and influence enjoyed by him/ her is drawn from the team itself. &#xA0;</p><!--kg-card-begin: markdown--><blockquote>
<p>Jeff Sutherland: The 2020 Scrum Guide is shorter, more focused, and has One Team. In addition to tying the three artifacts to goals with commitments, we addressed two of the biggest challenges in the industry: servant leaders who don&#x2019;t lead, and self-organizing developers doing whatever they want and not meeting the commitments.<br>
After wrestling for a long time with servant leadership, we finally just changed the word order. A Scrum master is a leader who serves.<br>
<em><strong>Ref:</strong> <a href="https://www.infoq.com/articles/changes-2020-Scrum-guide/?ref=srccodes.com">Changes in the 2020 Scrum Guide: Q&amp;A with Ken Schwaber and Jeff Sutherland</a></em></p>
</blockquote>
<!--kg-card-end: markdown--><p>One of the major catalyst for certain changes made to the Scrum Guide was the <em><em>Comprehensive Human Appraisal for Originating Software</em></em> Report published in 2019. It stated that 58% Agile projects failed or were challenged. And one of the major reasons for this was attributed to Scrum Masters not leading the teams.</p><p>Today, the Scrum Master needs to be a leader first. Anyone in the organization, who delivers value, enables the team and embodies the principles of Agile is a Scrum Master. </p><!--kg-card-begin: markdown--><p><strong>Scrum Master - A Leader who Serves | From Servant Leader to True Leader - Scrum Guide 2020:</strong></p>
<figure class="kg-card kg-embed-card"><iframe width="459" height="344" src="https://www.youtube.com/embed/T2ghwaQzhHw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>
<h2 id="references">References</h2>
<ul>
    <li><a href="https://www.greenleaf.org/what-is-servant-leadership/?ref=srccodes.com" title="What is Servant Leadership?" rel="noopener" target="_blank">What is Servant Leadership?</a></li>
    <li><a href="https://www.infoq.com/articles/changes-2020-Scrum-guide/?ref=srccodes.com" title="Changes in the 2020 Scrum Guide: Q&amp;A with Ken Schwaber and Jeff Sutherland" rel="noopener" target="_blank">Changes in the 2020 Scrum Guide: Q&amp;A with Ken Schwaber and Jeff Sutherland</a></li>
     <li><a href="https://vitalitychicago.com/blog/agile-projects-are-more-successful-traditional-projects/?ref=srccodes.com" title="Agile Project Success Rates Are 2X Higher Than Traditional Projects (2019)" rel="noopener" target="_blank">Agile Project Success Rates Are 2X Higher Than Traditional Projects (2019)</a></li>
</ul><!--kg-card-end: markdown--><p><br></p>]]></content:encoded></item><item><title><![CDATA[How to change hostname on Ubuntu running on Windows WSL?]]></title><description><![CDATA[<p>If you are running <strong>Ubuntu</strong> on Windows <strong>WSL</strong> (<strong>Windows Subsystem for Linux</strong>) and wondering how to change hostname permanently then follow all steps mentioned below.</p><p>Once <strong>hostname</strong> is changed, if you get &quot;<strong><em>unable to resolve host &lt;hostname&gt;: Name or service not known&quot;</em></strong> then follow the step</p>]]></description><link>https://www.srccodes.com/change-hostname-ubuntu-microsoft-windows-subsystem-for-linux-wsl-wsl2-wsl-conf-unable-resolve-hosts-name-service-not-known-list-running-shutdown-vm-srccodes/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5ab2</guid><category><![CDATA[WSL]]></category><category><![CDATA[WSL2]]></category><category><![CDATA[Ubuntu]]></category><category><![CDATA[Windows Subsystem for Linux]]></category><category><![CDATA[How to change hostname on Linux]]></category><category><![CDATA[Unable to resolve host]]></category><category><![CDATA[Name or service not known]]></category><category><![CDATA[How To]]></category><category><![CDATA[Fixed]]></category><category><![CDATA[etc-hosts]]></category><category><![CDATA[etc-hostname]]></category><category><![CDATA[Update Hosts file]]></category><category><![CDATA[WSL-Conf]]></category><category><![CDATA[wsl-list]]></category><category><![CDATA[wsl-running]]></category><category><![CDATA[wsl-shutdown]]></category><category><![CDATA[Windows 10]]></category><category><![CDATA[PowerShell]]></category><category><![CDATA[Windows Terminal]]></category><category><![CDATA[Windows Console]]></category><category><![CDATA[Ubuntu on Windows 10]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Oracle VM]]></category><category><![CDATA[VirtualBox]]></category><category><![CDATA[Virtual Machine]]></category><category><![CDATA[VM]]></category><category><![CDATA[Hyper-V]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[user]]></dc:creator><pubDate>Tue, 13 Jul 2021 17:48:55 GMT</pubDate><media:content url="https://www.srccodes.com/content/images/2021/07/srccodes-change-hostname-ubuntu-wsl2-1.jpeg" medium="image"/><content:encoded><![CDATA[<img src="https://www.srccodes.com/content/images/2021/07/srccodes-change-hostname-ubuntu-wsl2-1.jpeg" alt="How to change hostname on Ubuntu running on Windows WSL?"><p>If you are running <strong>Ubuntu</strong> on Windows <strong>WSL</strong> (<strong>Windows Subsystem for Linux</strong>) and wondering how to change hostname permanently then follow all steps mentioned below.</p><p>Once <strong>hostname</strong> is changed, if you get &quot;<strong><em>unable to resolve host &lt;hostname&gt;: Name or service not known&quot;</em></strong> then follow the step <strong>#4</strong> for the fix.</p><!--kg-card-begin: markdown--><h3 id="videotutorial">Video Tutorial:</h3>
<figure class="kg-card kg-embed-card"><iframe width="459" height="344" src="https://www.youtube.com/embed/YJXtJWYLDPo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>
<h3 id="1notedownyourhostname">1. Note down your <code>hostname</code></h3>
<pre><code class="language-bash">abhijit@DESKTOP-ABC222:~$ hostname
DESKTOP-ABC222
</code></pre>
<p>Here, <code>DESKTOP-ABC222</code> is hostname of Ubuntu running in my Windows 10 (<em><strong>OS Build 19043.1083</strong></em>) WSL.</p>
<h3 id="2openetcwslconforcreatethesameifitdoesnotexist">2. Open <code>/etc/wsl.conf</code> or create the same if it does not exist.</h3>
<pre><code class="language-bash">abhijit@DESKTOP-ABC222:~$ sudo nano /etc/wsl.conf
[sudo] password for abhijit:
</code></pre>
<h3 id="3addfollowinglinesinetcwslconf">3. Add following lines in <code>/etc/wsl.conf</code>.</h3>
<pre><code class="language-shell">[network]
hostname = SrcCodes
generateHosts = false
</code></pre>
<p><code>hostname = SrcCodes</code> will update the hostname in <code>/etc/hostname</code>.<br>
<code>generateHosts = false</code> will prevent WSL from automatic generation of <code>/etc/hosts</code> file. Otherwise, <code>hosts</code> file change will be overwritten during re-launch of Ubuntu and we&apos;ll get &quot;<em><strong>unable to resolve host &lt;hostname&gt;: Name or service not known</strong></em>&quot;</p>
<pre><code class="language-bash">abhijit@SrcCodes:~$ sudo apt update
sudo: unable to resolve host SrcCodes: Name or service not known
</code></pre>
<table>
<thead>
<tr>
<th>key</th>
<th>value</th>
<th>default</th>
<th>notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>generateHosts</td>
<td>boolean</td>
<td>true</td>
<td>true sets WSL to generate /etc/hosts. The hosts file contains a static map of hostnames corresponding IP address.</td>
</tr>
</tbody>
</table>
<p><em><strong>Reference</strong>: <a href="https://docs.microsoft.com/en-us/windows/wsl/wsl-config?ref=srccodes.com#network">https://docs.microsoft.com/en-us/windows/wsl/wsl-config#network</a></em></p>
<h3 id="4openetchostsandupdate">4. Open <code>/etc/hosts</code> and update</h3>
<pre><code class="language-bash">abhijit@DESKTOP-ABC222:~$ sudo nano /etc/hosts
</code></pre>
<p>You will see some entries similar to below</p>
<pre><code class="language-shell"># This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateHosts = false
127.0.0.1       localhost
127.0.1.1       DESKTOP-ABC222.localdomain     DESKTOP-ABC222
192.168.2.14    host.docker.internal
192.168.2.14    gateway.docker.internal
127.0.0.1       kubernetes.docker.internal
44.99.0.122     ip-44-99-0-122.lazerpenguin.com

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
</code></pre>
<p>Find all occurences of hostname (e.g. &quot;DESKTOP-ABC222&quot;) and replace with new one (e.g. &quot;SrcCodes&quot;).</p>
<pre><code class="language-bash">127.0.1.1       SrcCodes.localdomain     SrcCodes
</code></pre>
<p>Save and exit from the nano editor.</p>
<h3 id="5closeubuntuandrelaunch">5. Close Ubuntu and re-launch.</h3>
<p>Change will not reflect immediately. You must wait ~8 seconds as mentioned below in the document.</p>
<blockquote>
<p>If you launch a distribution (ie. Ubuntu), modify the wsl.conf file, close the distribution, and then re-launch it. You might assume that your changes to the wsl.conf file have immediately gone into effect. This is not currently the case as the subsystem could still be running. <strong>You must wait ~8 seconds</strong> for the subsystem to stop before relaunching in order to give enough time for your changes to be picked up. You can check to see whether your Linux distribution (shell) is still running after closing it by using PowerShell with the command: wsl --list --running. If no distributions are running, you will receive the response: &quot;There are no running distributions.&quot; You can now restart the distribution to see your wsl.conf updates applied.</p>
<p><em><strong>Reference</strong>: <a href="https://docs.microsoft.com/en-us/windows/wsl/wsl-config?ref=srccodes.com#configure-per-distro-launch-settings-with-wslconf">https://docs.microsoft.com/en-us/windows/wsl/wsl-config#configure-per-distro-launch-settings-with-wslconf</a></em></p>
</blockquote>
<p>If you don&apos;t want to wait, then open <a href="https://www.microsoft.com/en-us/p/windows-terminal/9n0dx20hk701?cid=msft_web_chart&amp;activetab=pivot%3Aoverviewtab&amp;ref=srccodes.com" title="Windows Terminal" rel="noopener" target="_blank">Windows Terminal</a> or <strong>Windows PowerShell</strong> run <code>wsl --shutdown</code> to shut down the WSL 2 VM or terminate a specific distribution (e.g. &quot;Ubuntu&quot;) using <code>wsl -t Ubuntu</code> and relaunch it.</p>
<p>Check what all are running.</p>
<pre><code class="language-shell">PS C:\Users\Abhijit\Desktop&gt; wsl --list --running
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
</code></pre>
<p>Then run shutdown or terminate command.</p>
<pre><code class="language-shell">PS C:\Users\Abhijit\Desktop&gt; wsl --shutdown
</code></pre>
<p><strong>or</strong></p>
<pre><code class="language-shell">PS C:\Users\Abhijit\Desktop&gt; wsl -t Ubuntu
</code></pre>
<p>Verify it is stopped.</p>
<pre><code class="language-shell">PS C:\Users\Abhijit\Desktop&gt; wsl --list --running
There are no running distributions.
PS C:\Users\Abhijit\Desktop&gt;
</code></pre>
<h3 id="6finallyrelaunchandverify">6. Finally re-launch and verify.</h3>
<p>Launch Ubuntu and check hostname.</p>
<pre><code class="language-bash">abhijit@SrcCodes:~$ hostname
SrcCodes
</code></pre>
<p>Verify &quot;hosts&quot; entry is also working correctly. You will not see following message anymore &quot;<em><strong>unable to resolve host &lt;hostname&gt;: Name or service not known</strong></em>&quot;</p>
<pre><code class="language-bash">abhijit@SrcCodes:~$ sudo apt update
[sudo] password for abhijit:
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Hit:2 http://archive.ubuntu.com/ubuntu focal InRelease
Hit:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease
Fetched 114 kB in 1s (135 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
abhijit@SrcCodes:~$
</code></pre>
<h2 id="references">References</h2>
<ul>
    <li><a href="https://docs.microsoft.com/en-us/windows/wsl/?ref=srccodes.com" title="Windows Subsystem for Linux Documentation" rel="noopener" target="_blank">Windows Subsystem for Linux Documentation</a></li>
    <li><a href="https://ubuntu.com/wsl?ref=srccodes.com" title="Ubuntu on WSL" rel="noopener" target="_blank">Ubuntu on WSL</a></li>
     <li><a href="https://www.microsoft.com/en-us/p/windows-terminal/9n0dx20hk701?cid=msft_web_chart&amp;activetab=pivot%3Aoverviewtab&amp;ref=srccodes.com" title="Windows Terminal" rel="noopener" target="_blank">Windows Terminal</a></li>
</ul><!--kg-card-end: markdown--><p></p>]]></content:encoded></item><item><title><![CDATA[Scrum Guide - November 2020 version - Updates you can't miss]]></title><description><![CDATA[<p>Ever since the November 2020 version was released, I had been curious about the what&apos;s and why&apos;s of the changes that were made to the July 2017 version. Whether we choose to drop the term &quot;servant-leader&quot; (to describe a Scrum Master) from our vocabulary</p>]]></description><link>https://www.srccodes.com/scrum-guides-comparision-july-2017-vs-november-2020-editions-side-by-side-video/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5ab0</guid><category><![CDATA[Scrum]]></category><category><![CDATA[Scrum Guide 2020]]></category><category><![CDATA[What's new in Scrum Guide 2020?]]></category><category><![CDATA[Scrum Guide 2020 vs 2017]]></category><category><![CDATA[Things you must know]]></category><category><![CDATA[servant leader]]></category><category><![CDATA[Professional Scrum Master]]></category><category><![CDATA[Product Goal]]></category><category><![CDATA[Sprint Goal]]></category><category><![CDATA[Sprint Planning]]></category><category><![CDATA[Sprint Retrospective]]></category><category><![CDATA[Daily Scrums]]></category><category><![CDATA[Definition of Done]]></category><category><![CDATA[Scrum Team]]></category><category><![CDATA[Jeff Sutherland]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[Debjani Sinha]]></dc:creator><pubDate>Sun, 02 May 2021 20:47:43 GMT</pubDate><media:content url="https://www.srccodes.com/content/images/2021/05/scrum-guide-2020-srccodes.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.srccodes.com/content/images/2021/05/scrum-guide-2020-srccodes.jpg" alt="Scrum Guide - November 2020 version - Updates you can&apos;t miss"><p>Ever since the November 2020 version was released, I had been curious about the what&apos;s and why&apos;s of the changes that were made to the July 2017 version. Whether we choose to drop the term &quot;servant-leader&quot; (to describe a Scrum Master) from our vocabulary is altogether a different (and contentious) conversation. For now, let us quickly take a look at the noticeable changes. </p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/xCGY4QiXlh0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><h2 id="development-team-v-s-developers">Development Team v/s Developers</h2><p>The 2020 update does away with the concept of Development Team, which had the connotation of a team within the Scrum Team. Henceforth, we would be using the term Developers.</p><blockquote>The Scrum Team consists of one Scrum Master, one Product Owner, and Developers. Within a Scrum Team, there are no sub-teams or hierarchies.</blockquote><!--kg-card-begin: html--><figure class="kg-card kg-image-card kg-width-full"><picture class="kg-image">
<source type="image/webp" srcset="//cdn.srccodes.com/c/2021/05/70/deveopment-team-vs-developers-srccodes.webp">
<img src="//cdn.srccodes.com/c/2021/05/70/deveopment-team-vs-developers-srccodes.jpg" alt="Scrum Guide - November 2020 version - Updates you can&apos;t miss">
</picture></figure><!--kg-card-end: html--><h2 id="self-organizing-v-s-self-managing">Self-organizing v/s Self-managing</h2><p>The Scrum Guide now uses the terms &#x201C;self-managing&#x201D; and &#x201C;self-management&#x201D; to emphasize that Scrum Teams choose &#x201C;who, how and what to work on&#x201D;. The 2017 version used the terms &#x201C;self-organizing&#x201D; and &#x201C;self-organization&#x201D; to describe that Development Teams chose &#x201C;who and how to do work&#x201D;. In both cases however, it was evident that the Scrum Team does not operate as directed by those outside the team.</p><!--kg-card-begin: html--><figure class="kg-card kg-image-card kg-width-full"><picture class="kg-image">
<source type="image/webp" srcset="//cdn.srccodes.com/c/2021/05/70/self-organizing-self-managing-srccodes.webp">
<img src="//cdn.srccodes.com/c/2021/05/70/self-organizing-self-managing-srccodes.jpg" alt="Scrum Guide - November 2020 version - Updates you can&apos;t miss">
</picture></figure><!--kg-card-end: html--><h2 id="servant-leader-v-s-true-leader">Servant-leader v/s True Leader</h2><p>The term servant-leader was removed, and Scrum Masters are now described as &#x201C;true leaders who serve the Scrum Team and the larger organization&#x201D; The Scrum Master is accountable for the Scrum Team&#x2019;s effectiveness.</p><p>Though it has been almost six-months since the release of the 2020 update, the term &quot;servant-leader&quot; is still very much in use in all the conversations taking place within the Agile community.</p><!--kg-card-begin: html--><figure class="kg-card kg-image-card kg-width-full"><picture class="kg-image">
<source type="image/webp" srcset="//cdn.srccodes.com/c/2021/05/70/scrum-master-leader-srccodes.webp">
<img src="//cdn.srccodes.com/c/2021/05/70/scrum-master-leader-srccodes.jpg" alt="Scrum Guide - November 2020 version - Updates you can&apos;t miss">
</picture></figure><!--kg-card-end: html--><h2 id="sprint-planning">Sprint Planning</h2><!--kg-card-begin: markdown--><p>The Sprint Planning ceremony now attempts to answer the following questions:</p>
<ol>
<li>Why is this Sprint valuable?</li>
<li>What can be Done this Sprint?</li>
<li>How will the chosen work get done?</li>
</ol>
<p>The question &quot;why is the Sprint valuable?&quot; was added to draw more focus on the commitment that is &quot;Sprint Goal&quot;. So, this change echoes the newly introduced concepts of Commitments.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: html--><figure class="kg-card kg-image-card kg-width-full"><picture class="kg-image">
<source type="image/webp" srcset="//cdn.srccodes.com/c/2021/05/70/sprint-planning-srccodes.webp">
<img src="//cdn.srccodes.com/c/2021/05/70/sprint-planning-srccodes.jpg" alt="Scrum Guide - November 2020 version - Updates you can&apos;t miss">
</picture></figure><!--kg-card-end: html--><h2 id="daily-scrums">Daily Scrums</h2><p>As a stance, the Scrum Guide November 2020 version is less prescriptive and no longer lists the set of three questions like the older version. The purpose of the ceremony is clearly stated, but the structure and technique is left open-ended to the interpretations of the Developers. </p><!--kg-card-begin: html--><figure class="kg-card kg-image-card kg-width-full"><picture class="kg-image">
<source type="image/webp" srcset="//cdn.srccodes.com/c/2021/05/70/daily-scrum-srccodes.webp">
<img src="//cdn.srccodes.com/c/2021/05/70/daily-scrum-srccodes.jpg" alt="Scrum Guide - November 2020 version - Updates you can&apos;t miss">
</picture></figure><!--kg-card-end: html--><h2 id="sprint-retrospective">Sprint Retrospective</h2><p>Earlier, it was suggested that by the end of the Sprint Retrospective, <em>the Scrum Team should have identified improvements that it will implement in the next Sprint</em>. But now, though the Scrum Team identifies <em>the most helpful changes to improve its effectiveness</em> their addition to the upcoming Sprint Backlog is optional.</p><!--kg-card-begin: html--><figure class="kg-card kg-image-card kg-width-full"><picture class="kg-image">
<source type="image/webp" srcset="//cdn.srccodes.com/c/2021/05/70/retrospective-srccodes.webp">
<img src="//cdn.srccodes.com/c/2021/05/70/retrospective-srccodes.jpg" alt="Scrum Guide - November 2020 version - Updates you can&apos;t miss">
</picture></figure><!--kg-card-end: html--><h2 id="accountabilities-v-s-roles">Accountabilities v/s Roles</h2><p>The current update of the Scrum Guide is sprinkled with a generous dose of the terms &quot;accountable&quot; and &quot;responsible&quot;. One of the most frequently used term &quot;roles&quot; has now been replaced by &quot;accountabilities&quot;.</p><!--kg-card-begin: html--><figure class="kg-card kg-image-card kg-width-full"><picture class="kg-image">
<source type="image/webp" srcset="//cdn.srccodes.com/c/2021/05/70/accountability-srccodes.webp">
<img src="//cdn.srccodes.com/c/2021/05/70/accountability-srccodes.jpg" alt="Scrum Guide - November 2020 version - Updates you can&apos;t miss">
</picture></figure><!--kg-card-end: html--><h2 id="commitments">Commitments</h2><p>The Scrum Guide November 2020 version clearly outlines the commitment for each artifact. </p><blockquote><strong>Jeff Sutherland</strong>: The 2020 Scrum Guide is shorter, more focused, and has One Team. In addition to tying the three artifacts to goals with commitments, we addressed two of the biggest challenges in the industry: servant leaders who don&#x2019;t lead, and self-organizing developers doing whatever they want and not meeting the commitments.</blockquote><!--kg-card-begin: html--><figure class="kg-card kg-image-card kg-width-full"><picture class="kg-image">
<source type="image/webp" srcset="//cdn.srccodes.com/c/2021/05/70/scrum-artifacts.webp">
<img src="//cdn.srccodes.com/c/2021/05/70/scrum-artifacts.jpg" alt="Scrum Guide - November 2020 version - Updates you can&apos;t miss">
</picture></figure><!--kg-card-end: html--><h2 id="product-goal">Product Goal</h2><p>In the 2017 version of the Scrum Guide &quot;vision&quot; is only mentioned once in the context of the Increment. </p><blockquote><br>The increment is a step toward a vision or goal.<br></blockquote><p>An ode to the importance of Product Goal, the 2020 version goes on to emphasize</p><blockquote>The Product Goal is in the Product Backlog. The rest of the Product Backlog emerges to define &#x201C;what&#x201D; will fulfill the Product Goal.</blockquote><!--kg-card-begin: html--><figure class="kg-card kg-image-card kg-width-full"><picture class="kg-image">
<source type="image/webp" srcset="//cdn.srccodes.com/c/2021/05/70/product-goal-srccodes.webp">
<img src="//cdn.srccodes.com/c/2021/05/70/product-goal-srccodes.jpg" alt="Scrum Guide - November 2020 version - Updates you can&apos;t miss">
</picture></figure><!--kg-card-end: html--><h2 id="definition-of-done">Definition of Done</h2><p>As consequence of removing the idea of Development Teams from the Scrum Guide, the responsibility to create the Definition of Done now falls upon the Scrum Team. Earlier, it was the created by the Development Teams if there wasn&apos;t one defined by the development organizations. &#xA0;</p><!--kg-card-begin: html--><figure class="kg-card kg-image-card kg-width-full"><picture class="kg-image">
<source type="image/webp" srcset="//cdn.srccodes.com/c/2021/05/70/definition-of-done-dod-scrum-srccodes.webp">
<img src="//cdn.srccodes.com/c/2021/05/70/definition-of-done-dod-scrum-srccodes.jpg" alt="Scrum Guide - November 2020 version - Updates you can&apos;t miss">
</picture></figure><!--kg-card-end: html--><h2 id="team-size">Team Size</h2><p>In stance of being less prescriptive, the Scrum Guide 2020 update simply suggests a team size of 10 or fewer people. &#xA0;</p><!--kg-card-begin: html--><figure class="kg-card kg-image-card kg-width-full"><picture class="kg-image">
<source type="image/webp" srcset="//cdn.srccodes.com/c/2021/05/70/scrum-team-size-srccodes.webp">
<img src="//cdn.srccodes.com/c/2021/05/70/scrum-team-size-srccodes.jpg" alt="Scrum Guide - November 2020 version - Updates you can&apos;t miss">
</picture></figure><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[Got My Scrum Certifications. What's Next?]]></title><description><![CDATA[<p>Let me begin by congratulating you for securing the Scrum certification!</p><p>But I hope you realize that a certification simply validates your awareness about the guiding concepts and theories. It is not a living proof of your actual ability to bring those thoughts to life. </p><p>So, how do you build</p>]]></description><link>https://www.srccodes.com/got-my-scrum-certifications-whats-next-pspo-psm/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5aaf</guid><category><![CDATA[Scrum]]></category><category><![CDATA[Professional Scrum Master]]></category><category><![CDATA[Professional Scrum Product Owner]]></category><category><![CDATA[PSM I]]></category><category><![CDATA[PSPO I]]></category><category><![CDATA[Agile Mentorship Program]]></category><category><![CDATA[Scrum Mastery]]></category><category><![CDATA[Scrum A Pocket Guide]]></category><category><![CDATA[The New New Product Development Game]]></category><category><![CDATA[Geoff Watts]]></category><category><![CDATA[Gunther Verheyen]]></category><category><![CDATA[Jeff Sutherland]]></category><category><![CDATA[Ken Schwaber]]></category><category><![CDATA[Scrum Org]]></category><category><![CDATA[Scrum Master]]></category><category><![CDATA[Scrum Product Owner]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[Debjani Sinha]]></dc:creator><pubDate>Fri, 02 Apr 2021 03:36:24 GMT</pubDate><media:content url="https://www.srccodes.com/content/images/2021/05/scrum-master-product-owner-career-path-srccodes.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.srccodes.com/content/images/2021/05/scrum-master-product-owner-career-path-srccodes.jpg" alt="Got My Scrum Certifications. What&apos;s Next?"><p>Let me begin by congratulating you for securing the Scrum certification!</p><p>But I hope you realize that a certification simply validates your awareness about the guiding concepts and theories. It is not a living proof of your actual ability to bring those thoughts to life. </p><p>So, how do you build your knowledge and skill? What can you do before you land that Scrum Master role? This article briefly discusses actions that we all can take to further our career goals. </p><!--kg-card-begin: markdown--><figure class="kg-card kg-embed-card"><iframe width="560" height="315" src="https://www.youtube.com/embed/DhVSB-z5WNA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="reading">Reading</h2>
<p>Reading might sound old fashioned to some in the world of social media and video content. But we have to agree that content is the key (&quot;king&quot;). So, it is for you to decide whether you choose to read a book, e-book or listen to an audio-book, but these are the ones that you mustn&apos;t overlook.</p>
<ul>
<li>The New New Product Development Game - by Hirotaka Takeuchi and Ikujiro Nonaka (<a href="https://hbr.org/1986/01/the-new-new-product-development-game?ref=srccodes.com">https://hbr.org/1986/01/the-new-new-product-development-game</a>)</li>
<li>Scrum: The Art of Doing Twice the Work in Half the Time by Jeff Sutherland  (Author), J.J. Sutherland  (Author)</li>
<li>Scrum - A Pocket Guide Gunther Verheyen</li>
<li>Scrum Mastery - Watts Geoff</li>
<li>Software in 30 Days - by Ken Schwaber  (Author), Jeff Sutherland  (Author)</li>
</ul>
<h2 id="findingamentor">Finding a Mentor</h2>
<p>Seek out a mentor. It has been my experience that Scrum Masters happen to be excellent mentors in their private lives as well. The problem is if you&#x2019;re seeking them out solely for job referrals and job postings, you might face a challenge. But if your goal is to understand how to develop yourself, what courses to take, which ceritificates to acquire and which books to read, more often than not, you shall find yourself being guided in the right direction by your mentor.</p>
<h2 id="joiningagilementorshipprogram">Joining Agile Mentorship Program</h2>
<p>Can&#x2019;t find a Mentor, connect with an Agile Mentorship program. I am aware that major cities have Agile Mentorship groups that conduct workshops. With COVID everything has gone virtual, and so you might be able to participate in a program that is based out of a different city and a different country as well. Take advantage of joining a program that mentors and nurtures talent in this field.</p>
<h2 id="buildinganetwork">Building a Network</h2>
<p>Finally, try to build your network. This doesn&#x2019;t only mean sending a LinkedIn request. Join a professional group on LinkedIn and be a part of the conversation. This is a dynamic field and every day new ideas and tools are coming up. These groups are a great place to stay on top of things.</p>
<h2 id="whatsnextsettingagoal">What&apos;s Next? Setting a goal</h2>
<p>What&#x2019;s next? You completed Scrum certification, set your next goal. Which field are you planning to join? What knowledge area do you need to master to build your confidence and profile? Never stop growing. Always know where you&#x2019;re going next. A job is simply incidental to your journey. Focus on setting your leanring goals that keep you motivated and pivot you forward.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="references">References</h2>
<ul>
<li><a href="https://www.scrum.org/pathway/scrum-master?ref=srccodes.com" title="Scrum Master Learning Path" rel="noopener" target="_blank">Scrum Master Learning Path</a></li>  
<li><a href="https://www.scrum.org/pathway/product-owner-learning-path?ref=srccodes.com" title="Product Owner Learning Path" rel="noopener" target="_blank">Product Owner Learning Path</a></li>
</ul><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[PSPO I Certification - Preparation Strategies and Tips]]></title><description><![CDATA[<p>There are many reasons why one would want to become a Professional Scrum Product Owner. An IT professional working as a part of a Scrum Team, in the scope of a Business Analyst, might decide to transition to the role of a Product Manager/ Product Owner, while a person not</p>]]></description><link>https://www.srccodes.com/pspo-1-certification-preparation-strategies-and-tips-profession-scrum-product-owner/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5aae</guid><category><![CDATA[Scrum]]></category><category><![CDATA[PSPO 1]]></category><category><![CDATA[PSPO I]]></category><category><![CDATA[Professional Scrum Product Owner]]></category><category><![CDATA[Scrum Product Owner]]></category><category><![CDATA[Professional Scrum Master]]></category><category><![CDATA[Scrum Glossary]]></category><category><![CDATA[Scrum Guide 2020]]></category><category><![CDATA[Scrum Open Assessment]]></category><category><![CDATA[Scrum Quizzes]]></category><category><![CDATA[Scrum Master]]></category><category><![CDATA[Scrum Guide Comparison]]></category><category><![CDATA[What is Scrum]]></category><category><![CDATA[Product Owner Learning Path]]></category><category><![CDATA[Scrum Org]]></category><category><![CDATA[How to pass]]></category><category><![CDATA[Exam Tips]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[Debjani Sinha]]></dc:creator><pubDate>Mon, 22 Mar 2021 01:56:20 GMT</pubDate><media:content url="https://www.srccodes.com/content/images/2021/05/pspo-1-certification-preparation-strategies-srccodes.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.srccodes.com/content/images/2021/05/pspo-1-certification-preparation-strategies-srccodes.jpg" alt="PSPO I Certification - Preparation Strategies and Tips"><p>There are many reasons why one would want to become a Professional Scrum Product Owner. An IT professional working as a part of a Scrum Team, in the scope of a Business Analyst, might decide to transition to the role of a Product Manager/ Product Owner, while a person not from the industry might use this as a stepping stone to joining the IT industry as a domain-specific Product Owner. Once you decide that you want to get certified, the next question is which organization you choose. There are a few organizations that provide training and certification for the role of a Scrum Product Owner like Scrum Alliance and Scrum.org. <br></p><p>My reason to go with Scrum.org was because of the following reasons:</p><ol><li>I had the option to prepare for the test on my own, without having to mandatorily undertake their training (which are quite expensive); and</li><li>The PSPO I certificate doesn&#x2019;t have an expiry date.</li></ol><h2 id="pspo-i-assessment-details"><strong>PSPO I Assessment Details</strong></h2><!--kg-card-begin: markdown--><p>The Professional Scrum Product OwnerTM level I (PSPO I) test details</p>
<p>Fee: USD 200 per attempt<br>
Passing score: 85%<br>
Time limit: 60 minutes<br>
Number of Questions: 80<br>
Format: Multiple Choice, Multiple Answer, and True/False<br>
Difficulty: Intermediate<br>
Language: English only</p>
<p>The PSPO I assessment includes questions from the following Focus Areas as defined in the Professional Scrum Competencies.</p>
<ul>
<li>Understanding and Applying the Scrum Framework:
<ul>
<li>Empiricism, Scrum Team, Events, Artifacts, Done.</li>
</ul>
</li>
<li>Developing People and Teams:
<ul>
<li>Self-Managing Teams.</li>
</ul>
</li>
<li>Managing Products with Agility:
<ul>
<li>Forecasting &amp; Release Planning, Product Vision, Product Value, Product Backlog Management, Business Strategy, Stakeholders &amp; Customers.</li>
</ul>
</li>
</ul>
<!--kg-card-end: markdown--><p><em><strong>Source:</strong> <a href="https://www.scrum.org/professional-scrum-product-owner-i-certification?ref=srccodes.com#Details">Scrum.org</a></em></p><h2 id="two-weeks-to-go">Two Weeks To Go</h2><p>These videos have been developed from my personal experience of preparing and clearing the PSPO I test. I suggest that you invest two weeks in the preparation of the test. In case you are unable to spend 3-4 hours a day for the test, kindly adjust the days based on your availability. </p><p>In the Week 1 of your prep (or when the test is 2 Weeks away) the following could be your first course of action:</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/OQdF6nc8CeI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><ul><li><strong>Step 1 - Register with Scrum.org</strong> Create your account. This will give you access to all their blogs, resources, and even training schedules. Do note, these can be accessed without registering but the act of creating an account helps set the stage for the next couple of weeks.</li><li><strong><strong><strong>Step 2 - Download the Scrum Guide</strong></strong></strong> Download the latest November 2020 issue of The Scrum Guide. Read the guide. Please don&#x2019;t underestimate the volume and depth of knowledge, ideas, and concepts shared in this 14-paged document. As you read, you&#x2019;ll realize that a lot of the understanding is left open to interpretation, and only a serious and thorough study of The Scrum Guide shall help you understand what Ken Schwaber and Jeff Sutherland wanted to convey to its readers. Read and reflect. After that start adding your notes and interpretations to your copy of the Guide.</li><li><strong>Step 3 - What is Scrum?</strong> Go through the page as it has links to all the articles, blogs, and resources you need for your test preparation.</li><li><strong><strong><strong>Step 4 - Product Owner Learning Path </strong></strong></strong>This page will provide links to resources for Understanding and Applying the Scrum Framework / Empiricism.</li><li><strong><strong><strong>Step 5 - Scrum Glossary </strong></strong></strong>This is a quick peek into the terms and concepts of Scrum and should be referred to multiple times.</li><li><strong>Step 6 - Online Nexus Guide</strong> Even though this relates to Scaling Scrum, I have seen many suggest this in the reading list for Product Owners. Hence, I also read it once before the exam.</li><li><strong>Step 7 - Take the Scrum Open assessment</strong> Taking the Scrum Open Assessment will give you an idea about the structure of the questions as well as develop familiarity with the interface. Save a pdf after every test.</li><li><strong>Step 8 - Take the Product Owner Open assessment</strong> This week, take this a few times. It will help set a baseline of your current knowledge and monitor your improvement going forward. The assessment has 15 questions selected from a larger pool. Save a pdf after every test as it details the right answer and over time you will develop a repository of questions (with their correct answers)</li></ul><h1 id="one-week-to-go">One Week To Go</h1><p>Into the second week of your preparation, you can consider the following action points:</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/YGmnZlXcFPg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><ul><li><strong>Step 1 - Buy PSPO I Assessment</strong> When you buy the assessment, it acts as a driver and motivator for you as you inch closer to the test. While making the purchase you don&#x2019;t need to set a date, hence, there is no problem with rescheduling or any last-minute hiccups. You can take it when you feel you&#x2019;re ready to do so using the code mailed to you by Scrum.org.</li></ul><!--kg-card-begin: markdown--><ul>
<li><strong>Step 2</strong> - Time Management  By now, you should have taken the open assessments many times.
<ol>
<li><strong>Scrum Open</strong> In the assessment, you have to answer 30 questions in 30 minutes. Try to increase your speed, so that you can attain accuracy within 15-20 minutes. This might sound absurd, but will help you save time on D-day. Also, after taking the test 6-8 times, you will see that the questions appear from a pool of 100 (approx) questions, and over time you are answering known questions. Practice time-management.</li>
<li><strong>Product Owner Open</strong> In the assessment, you are expected to answer 15 questions in 30 minutes. Please try to complete the test in 10 minutes to develop a time advantage for yourself when you take the test. Continue saving pdfs, revise and ensure you can eliminate recurring mistakes.</li>
</ol>
</li>
</ul>
<!--kg-card-end: markdown--><ul><li><strong>Step 3 - Try the Free Product Owner Assessments from the Mikhail Lapshin</strong> <strong>website </strong>These are free tests that you can take either in Learning Mode or Real Mode. I took them at least once every day and find them useful. The only problem is that it is still being updated for the 2020 version of Scrum Guide and hence you might find a few answers to be incorrect from the latest Scrum Guide standpoint. Even then, most of the questions should still be relevant to your preparation.</li><li><strong>Step 4 - Continue Reading the Scrum Guide </strong>&amp; <strong>Product Owner Learning Path</strong> resources. You must have a very well-used and inked copy of The Scrum Guide. Also, concepts of empiricism, team, and other concepts and terms should be familiar by now.</li><li><strong>Step 5 - When are you ready to take the PSPO I Test? </strong>When you are consistently scoring over 95% in your Scrum Open and Product Owner Assessments and above 90% in your mlapshin.com Free Assessments.</li></ul><h2 id="day-of-the-test">Day of the Test</h2><p>These are the most important tips for your test.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/cLtACH7VpHM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><ul><li><strong>No distractions.</strong> You&#x2019;re taking the test at a time and place that is convenient for you. For me it was post-midnight, but only when you can focus without any distractions.</li><li><strong><strong><strong>Internet Connectivity </strong></strong></strong>This is an online test with a time box. Ensure you have stable Wi-fi, else take it on your mobile just to be sure.</li><li><strong><strong><strong>Flag all doubts </strong></strong></strong>You cannot leave any question unanswered. When you are faced with doubt, flag the question and move on. You can look back at the flagged questions once you sail through the 80 questions.</li><li><strong><strong><strong>Clear Desk </strong></strong></strong>Even though this exam is not proctored, a clear desk with a bottle of water should be sufficient. Answering 80 questions within the hour doesn&#x2019;t leave you any time for reading your notes or interpreting the Guide. Having a clear desk helps you focus and that&#x2019;s the most important tool.</li><li><strong><strong>Tests your depth of knowledge of the Scrum framework and its application </strong></strong>While answering questions, always base them on the Guide and not on your personal work experience. Every organization might have a few practices that are not in sync with the Guide. This test only wants to test your understanding of the Scrum framework.</li></ul><!--kg-card-begin: markdown--><h2 id="references">References</h2>
<ul>
    <li><a href="https://mlapshin.com/index.php/scrum-quizzes/?ref=srccodes.com" title="PSM 1 PSPO 1 Mlapshin Scrum Quizzes" rel="noopener" target="_blank">Mlapshin Scrum Quizzes</a></li>
    <li><a href="https://www.scrum.org/resources/scrum-guide?ref=srccodes.com" title="PSM 1  Scrum Guide" rel="noopener" target="_blank">Scrum Guide</a></li>
    <li><a href="https://www.scrum.org/open-assessments/scrum-open?ref=srccodes.com" title="PSM 1 Scrum Open assessment" rel="noopener" target="_blank">Scrum Open assessment</a></li>
    <li><a href="https://www.scrum.org/open-assessments/product-owner-open?ref=srccodes.com" title="PSPO 1 Scrum Product Owner Open Assessment" rel="noopener" target="_blank">Scrum Product Owner Open Assessment</a></li>
    <li><a href="https://www.scrum.org/resources/scrum-glossary?ref=srccodes.com" title="PSM 1 Glossary of Scrum Terms" rel="noopener" target="_blank">Glossary of Scrum Terms</a></li>
    <li><a href="https://www.scrum.org/resources/blog/scrum-guide-2020-and-2017-side-side-comparison?ref=srccodes.com" title="PSM 1 Scrum Guide Comparison - A side-by-side comparison of The Scrum Guide 2017 &amp; The Scrum Guide 2020." rel="noopener" target="_blank">Scrum Guide Comparison 2020 &amp; 2017</a></li>
    <li><a href="https://www.scrum.org/resources/what-is-scrum?ref=srccodes.com" title="PSM 1 What is Scrum?" rel="noopener" target="_blank">What is Scrum?</a></li>
<li><a href="https://www.scrum.org/pathway/product-owner-learning-path?ref=srccodes.com" title="Product Owner Learning Path" rel="noopener" target="_blank">Product Owner Learning Path</a></li>
</ul><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[PSM I Certification - Preparation Strategies and Tips]]></title><description><![CDATA[<p>There are many reasons why one would want to become a Professional Scrum Master. An IT professional working as a part of a Scrum Team might decide to transition to the role of a Scrum Master, while a person not from an IT background might use this as a foothold</p>]]></description><link>https://www.srccodes.com/psm-1-certification-preparation-strategies-and-tips/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5aac</guid><category><![CDATA[Scrum]]></category><category><![CDATA[PSM I]]></category><category><![CDATA[Professional Scrum Master]]></category><category><![CDATA[Scrum Master]]></category><category><![CDATA[Scrum Guide 2020]]></category><category><![CDATA[Scrum Open Assessment]]></category><category><![CDATA[Scrum Quizzes]]></category><category><![CDATA[What is Scrum]]></category><category><![CDATA[Scrum Glossary]]></category><category><![CDATA[Preparation]]></category><category><![CDATA[Certification]]></category><category><![CDATA[Exam Tips]]></category><category><![CDATA[PSM 1]]></category><category><![CDATA[Scrum Guide Comparison]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[Debjani Sinha]]></dc:creator><pubDate>Sun, 14 Mar 2021 20:30:39 GMT</pubDate><media:content url="https://www.srccodes.com/content/images/2021/05/psm-1-certification-preparation-strategies-srccodes.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.srccodes.com/content/images/2021/05/psm-1-certification-preparation-strategies-srccodes.jpg" alt="PSM I Certification - Preparation Strategies and Tips"><p>There are many reasons why one would want to become a Professional Scrum Master. An IT professional working as a part of a Scrum Team might decide to transition to the role of a Scrum Master, while a person not from an IT background might use this as a foothold to join the IT industry. Once you decide that you want to get certified, the next question is which organization you choose. There are currently a few organizations that provide training and certifications for the role of Scrum Master like Scrum Alliance, Scrum.org, Scrum Inc., etc.</p><p>My reason to go with Scrum.org was because of the following reasons:</p><ol><li>I had the option to prepare for the test on my own, without having to mandatorily undertake their training (which are quite expensive); and</li><li>The PSM I certificate doesn&#x2019;t have an expiry date. (e.g. Scrum Alliance certificates have to be renewed every two years)</li></ol><!--kg-card-begin: markdown--><h2 id="psmiassessmentdetails">PSM I Assessment Details</h2>
<p>The Professional Scrum Master level I (PSM I) test details</p>
<p>Fee: $150 USD per attempt<br>
Passing score: 85%<br>
Time limit: 60 minutes<br>
Number of Questions: 80<br>
Format: Multiple Choice, Multiple Answer and True/False<br>
Difficulty: Intermediate<br>
Language: English only</p>
<p>Source: <a href="https://www.scrum.org/professional-scrum-master-i-certification?ref=srccodes.com">Scrum.org</a></p>
<!--kg-card-end: markdown--><h2 id="two-weeks-to-go">Two Weeks To Go</h2><p>These videos have been developed from my personal experience of preparing and clearing the PSM I test. I suggest that you invest two weeks in the preparation of the test. In case you are unable to spend 3-4 hours a day for the test, kindly adjust the days based on your availability. </p><p>In the Week 1 of your prep (or when the test is 2 Weeks away) the following could be your first course of action:</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/sUpTNB33jgg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><ul><li><strong>Step 1 - Register with Scrum.org</strong> Create your account. This will give you access to all their blogs, resources, and even training schedules. Do note, these can be accessed without registering but the act of creating an account helps set the stage for the next couple of weeks.</li><li><strong><strong><strong>Step 2 - Download the Scrum Guide</strong></strong> </strong>Download the latest November 2020 issue of The Scrum Guide. Read the guide. Please don&#x2019;t underestimate the volume and depth of knowledge, ideas, and concepts shared in this 14-paged document. As you read, you&#x2019;ll realize that a lot of the understanding is left open to interpretation, and only a serious and thorough study of The Scrum Guide shall help you understand what Ken Schwaber and Jeff Sutherland wanted to convey to its readers. Read and reflect. After that start adding your own notes and interpretations to your copy of the Guide.</li><li><strong>Step 3 - What is Scrum?</strong> Go through the page as it has links to all the articles, blogs, and resources you need for your test preparation.</li><li><strong><strong><strong>Step 4 - Scrum Glossary</strong></strong> </strong>This is a quick peek into the terms and concepts of Scrum and should be referred to multiple times. </li><li><strong>Step 5 - Take the Scrum Open assessment.</strong> This week, taking the Scrum Open Assessment will give you an idea about the structure of the questions as well as develop familiarity with the interface. Save a pdf after every test, as it details the right answer and over time you will develop a repository of questions (with their correct answers)</li></ul><h1 id="one-week-to-go">One Week To Go</h1><p>Into the second week of your preparation, you can consider the following action points:</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/erghQK6a8tk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><ul><li><strong>Step 1 - Buy PSM I Assessment</strong> When you buy the assessment, it acts as a driver and motivator for you as you inch closer to the test. While making the purchase you don&#x2019;t need to set a date, hence, there is no problem with rescheduling or any last-minute hiccups. You can take it when you feel you&#x2019;re ready to do so using the code mailed to you by Scrum.org.</li><li><strong>Step 2 Start Timing the Scrum Open assessments </strong>By now, you should have taken the open assessments many times. In the assessment, you have to answer 30 questions in 30 minutes. Try to increase your speed, so that you can attain accuracy within the span of 15-20 minutes. This might sound absurd, but will help you save time on D-day. Also, after taking the test 6-8 times, you will see that the questions appear from a pool of 100 (approx.) questions, and over time you are answering known questions. Practice time-management.</li><li><strong>Step 3 - Try the Free PSM Assessments from the Mikhail Lapshin</strong> <strong>website </strong>These are free tests that you can take either in Learning Mode or Real Mode. I took them at least once every day and find them really useful. The only problem is that it is still being updated for the 2020 version of Scrum Guide and hence you might find a few answers to be incorrect from the latest Scrum Guide standpoint. Even then, most of the questions should still be relevant to your preparation.</li><li><strong>Step 4 - Continue Reading the Scrum Guide </strong>You must have a very well-used and inked copy of The Scrum Guide. </li><li><strong>Step 5 - When are you ready to take the PSM I Test? </strong>When you are consistently scoring over 95% in your Open Scrum Assessments and above 90% in your mlapshin.com Free Assessments.</li></ul><h1 id="day-of-the-test">Day of the Test</h1><p>These are the most important tips for your test.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/cLtACH7VpHM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><ul><li><strong>No distractions.</strong> You&apos;re taking the test at a time and place that is convenient for you. For me it was post-midnight, but only when you are able to focus without any distractions.</li><li><strong><strong><strong>Internet Connectivity </strong></strong></strong>This is an online test with a time box. Ensure you have stable Wi-fi, else take it on your mobile just to be sure.</li><li><strong><strong><strong>Flag all doubts </strong></strong></strong>You cannot leave any question unanswered. When you are faced with doubt, flag the question and move on. You can look back at the flagged questions once you sail through the 80 questions.</li><li><strong><strong><strong>Clear Desk </strong></strong></strong>Even though this exam is not proctored, a clear desk with a bottle of water should be sufficient. Answering 80 questions within the hour doesn&#x2019;t leave you any time for reading your notes or interpreting the Guide. Having a clear desk helps you focus and that&#x2019;s the most important tool.</li><li><strong><strong>Tests your depth of knowledge of the Scrum framework and its application </strong></strong>While answering questions, always base them on the Guide and not on your personal work experience. Every organization might have a few practices that are not in sync with the Guide. This test only wants to test your understanding of the Scrum framework.</li></ul><!--kg-card-begin: markdown--><h2 id="references">References</h2>
<ul>
    <li><a href="https://mlapshin.com/index.php/scrum-quizzes/?ref=srccodes.com" title="PSM 1 Mlapshin Scrum Quizzes" rel="noopener" target="_blank">Mlapshin Scrum Quizzes</a></li>
    <li><a href="https://www.scrum.org/resources/scrum-guide?ref=srccodes.com" title="PSM 1  Scrum Guide" rel="noopener" target="_blank">Scrum Guide</a></li>
    <li><a href="https://www.scrum.org/open-assessments/scrum-open?ref=srccodes.com" title="PSM 1 Scrum Open assessment" rel="noopener" target="_blank">Scrum Open assessment</a></li>
    <li><a href="https://www.scrum.org/resources/scrum-glossary?ref=srccodes.com" title="PSM 1 Glossary of Scrum Terms" rel="noopener" target="_blank">Glossary of Scrum Terms</a></li>
    <li><a href="https://www.scrum.org/resources/blog/scrum-guide-2020-and-2017-side-side-comparison?ref=srccodes.com" title="PSM 1 Scrum Guide Comparison - A side-by-side comparison of The Scrum Guide 2017 &amp; The Scrum Guide 2020." rel="noopener" target="_blank">Scrum Guide Comparison 2020 &amp; 2017</a></li>
    <li><a href="https://www.scrum.org/resources/what-is-scrum?ref=srccodes.com" title="PSM 1 What is Scrum?" rel="noopener" target="_blank">What is Scrum?</a></li>
</ul><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Breach COMB List 3.2B - Mine got exposed. Check yours.]]></title><description><![CDATA[<p>&quot;<strong>No News is Good News</strong>&quot;. That is what I used to get from <strong>Identity Guard&#xAE;</strong>. But yesterday, I got email &amp; sms notification &quot;<strong>Alert: Your Login Credentials Have Been Exposed Online</strong>&quot;. And partial password shared in that notification is actually matching with my credentials. So,</p>]]></description><link>https://www.srccodes.com/security-breach-comb-list-3-2b-login-credential-compilation-dark-web-linkedin-netflix-bitcoin-mfa-otp-data-leak/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5aad</guid><category><![CDATA[COMB 3.2]]></category><category><![CDATA[Login Credentials Leaked]]></category><category><![CDATA[Data Breach]]></category><category><![CDATA[Dark Web]]></category><category><![CDATA[MFA]]></category><category><![CDATA[OTP]]></category><category><![CDATA[Multi Factor Authentication]]></category><category><![CDATA[One Time Password]]></category><category><![CDATA[2-step Verification]]></category><category><![CDATA[LinkedIn]]></category><category><![CDATA[Netflix]]></category><category><![CDATA[Online Security]]></category><category><![CDATA[Security Breach]]></category><category><![CDATA[CyberNews]]></category><category><![CDATA[Identity Guard]]></category><category><![CDATA[Personal Data Leak Checker]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[user]]></dc:creator><pubDate>Sat, 20 Feb 2021 22:15:00 GMT</pubDate><media:content url="https://www.srccodes.com/content/images/2021/03/breach-comb-3.2B-cover.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.srccodes.com/content/images/2021/03/breach-comb-3.2B-cover.jpg" alt="Breach COMB List 3.2B - Mine got exposed. Check yours."><p>&quot;<strong>No News is Good News</strong>&quot;. That is what I used to get from <strong>Identity Guard&#xAE;</strong>. But yesterday, I got email &amp; sms notification &quot;<strong>Alert: Your Login Credentials Have Been Exposed Online</strong>&quot;. And partial password shared in that notification is actually matching with my credentials. So, mine got exposed. Check yours.</p><h2 id="what-is-breach-combo-list-3-2b">What is &quot;Breach Combo List 3.2B&quot; ?</h2><p>&quot;<strong>COMB List 3.2B</strong>&quot; is a compilation of many breaches. 3.2 billions loginid and password has been published in plain text format. It contains billions of login credentials from LinkedIn, Netflix, Exploit.in and many more from past breaches. 3.2 billions is massive considering 4.66 billion active internet users worldwide. </p><!--kg-card-begin: markdown--><blockquote>
<h3 id="howmanypeopleusetheinternet">How many people use the internet?&quot;</h3>
<p>As of January 2021 there were <strong>4.66 billion</strong> active internet users worldwide - 59.5 percent of the global population. Of this total, 92.6 percent (4.32 billion) accessed the internet via mobile devices.&quot;<br>
Source: <a href="https://www.statista.com/statistics/617136/digital-population-worldwide/?ref=srccodes.com">statista.com</a></p>
</blockquote>
<!--kg-card-end: markdown--><p>I always use separate set of emails &amp; password combinations for email communication, banking sites, major social media sites and third party OAuth. Based on the below combination, I easily identified that my LinkedIn login credentials got exposed on the Dark Web in this mind-boggling breach. </p><!--kg-card-begin: html--><figure class="kg-card kg-image-card kg-width-full">
<picture class="kg-image">
<source type="image/webp" srcset="//cdn.srccodes.com/c/2021/02/68/identity-guard-alert.webp">
<img src="//cdn.srccodes.com/c/2021/02/68/identity-guard-alert.jpg" alt="Breach COMB List 3.2B - Mine got exposed. Check yours.">
</picture>
</figure><!--kg-card-end: html--><!--kg-card-begin: markdown--><p>Market research company &quot;<a href="https://cybernews.com/about-us/?ref=srccodes.com">CyberNews</a>&quot; has provided a online tool &quot;<a href="https://cybernews.com/personal-data-leak-check/?ref=srccodes.com">Personal Data Leak Checker</a>&quot;. It has 500 GB database (15 billion compromised accounts) of hashed emails that have been leaked over time.</p>
<figure class="kg-card kg-image-card kg-width-full">
    <picture class="kg-image">
        <source type="image/webp" srcset="//cdn.srccodes.com/c/2021/02/68/personal-data-leak-checker.webp">
        <img src="//cdn.srccodes.com/c/2021/02/68/personal-data-leak-checker.jpg" alt="Breach COMB List 3.2B - Mine got exposed. Check yours.">
    </picture>
</figure>
<blockquote>
<h3 id="howdoesthistoolwork">How does this tool work?</h3>
<p>Our checker has a 500 GB database of hashed emails that have been leaked. To check if your email address was leaked:</p>
<ol>
<li>You enter the email address in the search field. Your email is not collected, logged or stored</li>
<li>The tool hashes the email you entered and uses only this hash to perform a search in our database</li>
<li>The search results appear on the same page<br>
<strong>Source:</strong> <a href="https://cybernews.com/personal-data-leak-check/?ref=srccodes.com">https://cybernews.com/personal-data-leak-check/</a></li>
</ol>
</blockquote>
<blockquote>
<h3 id="howdowestoredatafrombreaches">How do we store data from breaches?</h3>
<p>Our database contains nothing more than the email address and the source of the leak. All information in our database is hashed with Blowfish based crypt (bcrypt) hashing algorithm. It is one of the safest hashing algorithms. All emails are anonymised and linked only to the source of the leak.</p>
<h3 id="whathappenswhenyoucheckifyourdatahasbeenleaked">What happens when you check if your data has been leaked?</h3>
<p>The email address that you enter in the search field is hashed and we use only this hash to perform a search in our database. We do not collect entered emails, nothing is logged when you perform the data leak check.<br>
<strong>Source:</strong> <a href="https://cybernews.com/leak-check-faq/?ref=srccodes.com">Leak check FAQ</a></p>
</blockquote>
<!--kg-card-end: markdown--><p>Many of us use the same email id for communication, social sites, banking sites etc. Sometime, same password everywhere. It is an unsafe practice. </p><p>The SMS breach alert got me worried, but it did not have catastrophic consequences for me. Solely because I use different set of credentials for all major sites / applications and always enable <strong>Multi-Factor Authentication (MFA) </strong>or <strong>2-step verification</strong>. Even if someone has access to my credentials, <strong>One-Time-Password (OTP) / second level of verification</strong> will work as second line of defence. This significantly reduces limits the risk if your login credentials are exposed on Dark Web.</p><!--kg-card-begin: html--><figure class="kg-card kg-image-card kg-width-full">
    <picture class="kg-image">
        <source type="image/webp" srcset="//cdn.srccodes.com/c/2021/02/68/multi-factor-authentication.webp">
        <img src="//cdn.srccodes.com/c/2021/02/68/multi-factor-authentication.jpg" alt="Breach COMB List 3.2B - Mine got exposed. Check yours.">
    </picture>
</figure><!--kg-card-end: html--><!--kg-card-begin: markdown--><p>Sharing few recommendations that I received from <strong>Identity Guard&#xAE;</strong> along with the security alert.</p>
<blockquote>
<h3 id="whatshouldido">What should I do?</h3>
<ol>
<li>We recommend that you update your password for any account where the email address shown in your alert is used as a user name.</li>
<li>Always use unique passwords for all of your accounts. This limits your risk if your login credentials are exposed.</li>
<li>Consider activating multi-factor authentication&#x2014;which means your password in addition to one or more other means of authentication&#x2014;on any account that allow this option. Multi-factor authentication is the best way to keep your accounts more secure.<br>
<strong>Source:</strong> <a href="https://kb.identityguard.com/hc/en-us/articles/1500002870702-Why-am-I-receiving-this-data-breach-alert-and-what-does-it-mean-?ref=srccodes.com">Identity Guard&#xAE; FAQ</a></li>
</ol>
</blockquote>
<!--kg-card-end: markdown--><p>Gmail, Facebook, Twitter, LinkedIn, etc. all are amazing services. We mostly don&apos;t pay anything directly to them. It is absolutely free, if one is gone, we can open another one. But reality is beyond this. If we loose access, it may create huge damage in terms of reputation, financially or inconvenience based on kind of user we are and our usage pattern.</p><!--kg-card-begin: markdown--><h2 id="references">References</h2>
<ul>
    <li><a href="https://kb.identityguard.com/hc/en-us/articles/1500002870702-Why-am-I-receiving-this-data-breach-alert-and-what-does-it-mean-?ref=srccodes.com" title="Identity Guard&#xAE; FAQ" rel="noopener" target="_blank">Identity Guard&#xAE; FAQ</a></li>
    <li><a href="https://cybernews.com/personal-data-leak-check/?ref=srccodes.com" title="CyberNews - Personal Data Leak Checker" rel="noopener" target="_blank">CyberNews - Personal Data Leak Checker</a></li>
    <li><a href="https://cybernews.com/leak-check-faq/?ref=srccodes.com" title="CyberNews - Leak check FAQ" rel="noopener" target="_blank">CyberNews - Leak check FAQ</a></li>
</ul><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[[SOLVED] How to Add Quick Properties in Techsmith Camtasia 2020 | Reusable Assets, Group & Template]]></title><description><![CDATA[<p>Techsmith Camtasia 2020 introduces a video template. Now, we can create a video template and share it with the team to build consistent and professional videos quickly. This is really great. But like many Camtasia users, I also terribly miss the feature to add Quick Properties to the custom groups,</p>]]></description><link>https://www.srccodes.com/how-to-add-quick-properties-in-techsmith-camtasia-2020-reusable-assets-group-template/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5aab</guid><category><![CDATA[Camtasia]]></category><category><![CDATA[Techsmith]]></category><category><![CDATA[Video Template]]></category><category><![CDATA[Quick Properties]]></category><category><![CDATA[Quick Properties Tab]]></category><category><![CDATA[Camtasia Asset]]></category><category><![CDATA[Camtasia Group]]></category><category><![CDATA[Camtasia 2020]]></category><category><![CDATA[tscproj]]></category><category><![CDATA[json]]></category><category><![CDATA[json viewer]]></category><category><![CDATA[assetProperties]]></category><category><![CDATA[Placeholders]]></category><category><![CDATA[Replaceable Media]]></category><category><![CDATA[How To]]></category><category><![CDATA[Solved]]></category><category><![CDATA[Fixed]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[user]]></dc:creator><pubDate>Mon, 25 Jan 2021 17:50:28 GMT</pubDate><media:content url="https://www.srccodes.com/content/images/2021/01/camtasia-add-quick-properties.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.srccodes.com/content/images/2021/01/camtasia-add-quick-properties.jpg" alt="[SOLVED] How to Add Quick Properties in Techsmith Camtasia 2020 | Reusable Assets, Group &amp; Template"><p>Techsmith Camtasia 2020 introduces a video template. Now, we can create a video template and share it with the team to build consistent and professional videos quickly. This is really great. But like many Camtasia users, I also terribly miss the feature to add Quick Properties to the custom groups, assets, or templates. As a result, we can share assets but we can not customize <strong>quickly</strong>. Therefore, it is not truly reusable. However, they allow this for assets that are downloaded from the Techsmith Camtasia assets library. In this post, I&#x2019;ll share quick steps to enable you to make custom assets having Quick Properties.</p><p>I went through all the Camtasia forums, Google Search, and YouTube contents, but I have not found any solution or workaround anywhere. Therefore, I am creating this content to share what I have found after reverse-engineering the Camtasia project file.</p><p>When we create a new project in Camtasia, all the configurations get saved in the project file with the <strong>.tscproj </strong>extension. This file is nothing but a human-readable <strong>JSON</strong> file. We can open it in any text editor (optionally <strong>JSON viewer)</strong> to explore it. When I compared a Camtasia project having assets downloaded from the Camtasia library with a project having a custom group, I can see only the below difference.</p><!--kg-card-begin: markdown--><pre><code class="language-json"> &quot;assetProperties&quot; : [
	{
	  &quot;type&quot; : 0,
	  &quot;name&quot; : &quot;Name of imput&quot;,
	  &quot;objects&quot; : [ id1 ]
	},
	{
	  &quot;type&quot; : 1,
	  &quot;name&quot; : &quot;Color 1&quot;,
	  &quot;objects&quot; : [ id1, id2 ]
	}
  ]
</code></pre>
<!--kg-card-end: markdown--><p>When I was playing around with these configs, I have noticed that we can add quick properties for a custom asset just by making required changes in the <strong>.tscproj</strong>.</p><p>I have created a detailed YouTube video to explain how the <strong>.tscproj </strong>is structured and exactly what changes you need to make to add quick properties. In the end, I shared 3 easy steps that you can apply to the Camtasia project file using any text editor to get it done in 5 minutes.</p><figure class="kg-card kg-embed-card"><iframe width="356" height="200" src="https://www.youtube.com/embed/aFHkY4UEJtg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><p><strong>Note: </strong>Please keep a backup copy of your .tscproj before you start making any changes.</p>]]></content:encoded></item><item><title><![CDATA[Exception: Falling with style. Error: Failing with smile]]></title><description><![CDATA[<p>Andy &#xA0;learning to code. He seemed a little worried. Mike happens to stop by.</p><p>&quot;You seem worried. What&#x2019;s on your mind?&quot; asked Mike.</p><p>&quot;Well Mike, I&#x2019;ve been trying to understand exception handling. But I can&#x2019;t seem to wrap my head</p>]]></description><link>https://www.srccodes.com/exception-falling-with-style-error-failing-with-smile/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5aaa</guid><category><![CDATA[ExceptionHandling]]></category><category><![CDATA[RuntimeException]]></category><category><![CDATA[ErrorHandling]]></category><category><![CDATA[ExceptionAndError]]></category><category><![CDATA[Programming]]></category><category><![CDATA[Coding]]></category><category><![CDATA[Learn To Code]]></category><category><![CDATA[Computer Program]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[user]]></dc:creator><pubDate>Fri, 01 Jan 2021 01:46:15 GMT</pubDate><media:content url="https://www.srccodes.com/content/images/2021/01/exception-error-handling.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.srccodes.com/content/images/2021/01/exception-error-handling.jpg" alt="Exception: Falling with style. Error: Failing with smile"><p>Andy &#xA0;learning to code. He seemed a little worried. Mike happens to stop by.</p><p>&quot;You seem worried. What&#x2019;s on your mind?&quot; asked Mike.</p><p>&quot;Well Mike, I&#x2019;ve been trying to understand exception handling. But I can&#x2019;t seem to wrap my head around it.&quot; answered Andy.</p><p>Mike laughed and said &quot;I see. Come with me. First we will watch a video, then, I&#x2019;ll explain.&quot;</p><p>Andy was excited! They watched the following clip from the movie &quot;<strong>Toy Story</strong>&quot;. </p><figure class="kg-card kg-embed-card"><iframe width="267" height="200" src="https://www.youtube.com/embed/lbkwHb9p5Ds?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><p>After the video ended, Mike said with a smile &quot;So Andy, now let&#x2019;s discuss exception handling. You know that Buzz cannot fly, he knows that too. But when the rocket is about to blow up him and Woody, he manipulates the situation and uses its force to propel them to the safety of the car!! Two things happen - One, the rocket doesn&apos;t kill them. Second, they land in their desired spot! In Buzz&#x2019;s words, they were falling with style!!!&quot;</p><p>&quot;I get that. But how does that explain exception handling?&quot; wondered Andy.</p><p>&quot;You see Andy, what Buzz did was &#x2018;exception handling&#x2019;. When the standard code does not yield the expected output due to some uncontrollable factors; you can use a smart code to handle the exception to your advantage. Thereby, avoiding an unpleasant user experience.&quot;</p><p>&quot;Now I see your point Mike. Exception handling is nothing but &quot;<strong>falling with style!!!</strong>&quot;</p>]]></content:encoded></item><item><title><![CDATA[gyp: No Xcode or CLT version detected - ERR! configure error in macOS Catalina]]></title><description><![CDATA[Is node-gyp (Node.js native addon build tool) failing during yarn install or npm install? If your macOS got upgraded to Catalina (10.15) recently, then you will find the fix right here. ]]></description><link>https://www.srccodes.com/gyp-no-xcode-or-clt-version-detected-err-configure-error-macos-catalina/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5aa9</guid><category><![CDATA[node-gyp]]></category><category><![CDATA[No Xcode]]></category><category><![CDATA[CLT version]]></category><category><![CDATA[configure error]]></category><category><![CDATA[MacOS]]></category><category><![CDATA[Catalina]]></category><category><![CDATA[NodeJs]]></category><category><![CDATA[XCode Command Line Tools]]></category><category><![CDATA[xcode-select]]></category><category><![CDATA[npm]]></category><category><![CDATA[YARN]]></category><category><![CDATA[Troubleshooting]]></category><category><![CDATA[gyp]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[user]]></dc:creator><pubDate>Wed, 26 Aug 2020 21:28:38 GMT</pubDate><media:content url="https://www.srccodes.com/content/images/2020/08/No-Xcode-or-CLT-version-detected.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.srccodes.com/content/images/2020/08/No-Xcode-or-CLT-version-detected.jpg" alt="gyp: No Xcode or CLT version detected - ERR! configure error in macOS Catalina"><p>Is <strong>node-gyp</strong> (Node.js native addon build tool) failing during <code>yarn install</code> or <code>npm install</code>? If your macOS got upgraded to Catalina (10.15) recently, then you will find the fix right here.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="explainervideo">Explainer Video:</h2>
<figure class="kg-card kg-embed-card"><iframe width="459" height="344" src="https://www.youtube.com/embed/7330qQRyw3c" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>
<h2 id="sampleerror">Sample Error</h2>
<pre><code class="language-shell">abhijit@macpro gulp-responsive % npm install --save-dev gulp-responsive
&gt; sharp@0.21.3 install /Users/abhijit/workspace/image-optimization/gulp-responsive/node_modules/sharp
&gt; (node install/libvips &amp;&amp; node install/dll-copy &amp;&amp; prebuild-install) || (node-gyp rebuild &amp;&amp; node install/dll-copy)
info sharp Detected globally-installed libvips v8.9.2
info sharp Building from source via node-gyp
gyp: No Xcode or CLT version detected!
gyp ERR! configure error 
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16)
</code></pre>
<h2 id="sowhatwentwrong">So, what went wrong?</h2>
<p>node-gyp uses <strong>XCode Command Line Tools</strong> for macOS.</p>
<blockquote>
<p><strong>Both upgrading to macOS Catalina and running a Software Update in Catalina may cause normal node-gyp installations to fail. This might manifest as the following error during npm install:</strong></p>
<p><code>gyp: No Xcode or CLT version detected!</code><br>
Reference: <a href="https://github.com/nodejs/node-gyp/blob/master/macOS_Catalina.md?ref=srccodes.com" title="Installation notes for macOS Catalina (v10.15)" rel="noopener" target="_blank">Installation notes for macOS Catalina (v10.15)</a></p>
</blockquote>
<h2 id="checkmacosversion">Check MacOS version</h2>
<p>Run <code>sw_vers</code> in terminal to check your MacOS version. Actually, if <code>ProductVersion</code> is less then <strong>10.15</strong>, then fix of this post may not be applicable.</p>
<pre><code class="language-shell">abhijit@macpro ~ % sw_vers
ProductName:	Mac OS X
ProductVersion:	10.15.6
BuildVersion:	19G2021
</code></pre>
<h2 id="howtofix">How to fix?</h2>
<p>Reinstall the <strong>XCode Command Line Tools</strong>.</p>
<ol>
<li>Remove the XCode Command Line Tools.<pre><code class="language-shell">abhijit@macpro gulp-responsive % xcode-select --print-path
/Library/Developer/CommandLineTools
abhijit@macpro gulp-responsive % sudo rm -r -f /Library/Developer/CommandLineTools
Password:

</code></pre>
or<pre><code class="language-shell">abhijit@macpro gulp-responsive % sudo rm -rf $(xcode-select -print-path)
Password:

</code></pre>
</li>
<li>Install the XCode Command Line Tools.<pre><code class="language-shell">abhijit@macpro gulp-responsive % xcode-select --install
xcode-select: note: install requested for command line developer tools
</code></pre>
Click &quot;Install&quot; button in the wizard, accept &quot;License Agreement&quot; and click &quot;Done&quot; once the software is installed.</li>
</ol>
<h2 id="acidtest">Acid Test</h2>
<p>If the below acid test passes, we are good to go.</p>
<pre><code class="language-shell">abhijit@macpro ~ % curl -sL https://github.com/nodejs/node-gyp/raw/master/macOS_Catalina_acid_test.sh | bash
Command Line Tools version: 12.0.0.0.1.1597368733
</code></pre>
<h2 id="verify">Verify</h2>
<p>Finally, we&apos;ll run the initial <code>npm install</code> that failed for us.</p>
<pre><code class="language-shell">bhijit@macpro gulp-responsive % npm install --save-dev gulp-responsive
&gt; sharp@0.23.4 install /Users/abhijit/workspace/image-optimization/gulp-responsive/node_modules/gulp-responsive/node_modules/sharp
&gt; (node install/libvips &amp;&amp; node install/dll-copy &amp;&amp; prebuild-install) || (node-gyp rebuild &amp;&amp; node install/dll-copy)
info sharp Detected globally-installed libvips v8.9.2
info sharp Building from source via node-gyp
  TOUCH Release/obj.target/libvips-cpp.stamp
  CXX(target) Release/obj.target/sharp/src/common.o
  CXX(target) Release/obj.target/sharp/src/metadata.o
  CXX(target) Release/obj.target/sharp/src/stats.o
  CXX(target) Release/obj.target/sharp/src/operations.o
  CXX(target) Release/obj.target/sharp/src/pipeline.o
  CXX(target) Release/obj.target/sharp/src/sharp.o
  CXX(target) Release/obj.target/sharp/src/utilities.o
  SOLINK_MODULE(target) Release/sharp.node
npm WARN RespImg@1.0.0 No repository field.

+ gulp-responsive@3.0.1
added 43 packages from 120 contributors and audited 389 packages in 23.309s
</code></pre>
<h2 id="references">References</h2>
<ul>
    <li><a href="https://github.com/nodejs/node-gyp?ref=srccodes.com" title="node-gyp - Node.js native addon build tool" rel="noopener" target="_blank">node-gyp</a></li>
    <li><a href="https://github.com/nodejs/node-gyp/blob/master/macOS_Catalina.md?ref=srccodes.com" title="Installation notes for macOS Catalina (v10.15)" rel="noopener" target="_blank">Installation notes for macOS Catalina (v10.15)</a></li>
</ul><!--kg-card-end: markdown--><h3></h3>]]></content:encoded></item><item><title><![CDATA[Customize Logback Configuration for Log Optimization]]></title><description><![CDATA[Customize Logger Name Length ("shortenedLoggerNameLength" - "%logger{length}") and 
Stack Traces ("ShortenedThrowableConverter") of LogstashEncoder ("logstash-logback-encoder") for Log optimization (Log aggregator ELK - ElasticSearch, Logstash, Filebeat, Kibana).]]></description><link>https://www.srccodes.com/shorten-logger-name-customize-optimize-exception-stack-traces-logback-logstashencoder-shortenedthrowableconverter/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5aa6</guid><category><![CDATA[Logging Framework]]></category><category><![CDATA[Logback]]></category><category><![CDATA[Optimization]]></category><category><![CDATA[SLF4J]]></category><category><![CDATA[Log4j]]></category><category><![CDATA[Log4j2]]></category><category><![CDATA[Logstash]]></category><category><![CDATA[logstash-logback-encoder]]></category><category><![CDATA[ShortenedThrowableConverter]]></category><category><![CDATA[throwableConverter]]></category><category><![CDATA[rootCauseFirst]]></category><category><![CDATA[shortenedClassNameLength]]></category><category><![CDATA[logback.xml]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[user]]></dc:creator><pubDate>Wed, 12 Aug 2020 16:12:29 GMT</pubDate><media:content url="https://www.srccodes.com/content/images/2020/08/logback-logstash-configuration.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.srccodes.com/content/images/2020/08/logback-logstash-configuration.jpg" alt="Customize Logback Configuration for Log Optimization"><p><strong>4,153,406 hits in single day!</strong> </p><p>Sounds like a really big number for many of us. I was surprised when I noticed this in Production ELK for the first time. I didn&apos;t expect that many hits for an application with only 5 microservices. That too for a Beta application with a handful (~2k) of users. It will grow to 25+ microservices within next one year. Once migration completes, millions of users will use this application. I can not imagine where this number shall skyrocket then.</p><p>We should <strong>Log smartly, not in Volume</strong>. Its great if this is already taken care of in your application. But if you are looking for more, then reading this post might add value. </p><p>As a developer, we at times don&apos;t give much thought to what we are logging and how much we are logging. Everything is taken care of by the underlying logging framework. It has hardly any cost considerations for us, the developers. &#xA0;</p><!--kg-card-begin: markdown--><p>While talking about cost, following few comes to  mind.</p>
<ul>
<li><strong>IO</strong>:
<ul>
<li>Logger - To write log statements in file or console</li>
<li>Beats - To collect data from environment.</li>
</ul>
</li>
<li><strong>Network</strong>:
<ul>
<li>Beats - To ship data from edge machines to Logstash</li>
<li>Logstash - To ship processed data to preferred &quot;Stash&quot;</li>
</ul>
</li>
<li><strong>Processing</strong>:
<ul>
<li>Beats: To parse collected raw data.</li>
<li>Logstash: To ingest, parse, transform, ship log to destination</li>
<li>Elasticsearch: To index, search &amp; run analytics.</li>
</ul>
</li>
<li><strong>Storage</strong>: To store &amp; retain huge logs from all sources for a certain period of time</li>
</ul>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><p>Enough talk! Let&apos;s see what we can optimize using the following two configurations. There are more. Plan is to reduce log volume without impacting your existing applications.</p>
<ol>
<li><strong>Customizing Logger Name Length</strong></li>
<li><strong>Customizing Stack Traces</strong></li>
</ol>
<!--kg-card-end: markdown--><h3 id="1-customizing-logger-name-length">1. Customizing Logger Name Length</h3><!--kg-card-begin: markdown--><p>Define appropriate length for <code>shortenedLoggerNameLength</code> of <code>LogstashEncoder</code> in Logback configuration.</p>
<p><strong>How?</strong></p>
<pre><code class="language-xml">&lt;encoder class=&quot;net.logstash.logback.encoder.LogstashEncoder&quot;&gt;
  &lt;shortenedLoggerNameLength&gt;30&lt;/shortenedLoggerNameLength&gt;
&lt;/encoder&gt;
</code></pre>
<p>It works in same way <code>%logger{length}</code> conversion pattern works.</p>
<p><strong>Let&apos;s do the Math</strong><br>
Take an example of bare minimum Logger name <code>com.srccodes.lob.project.service.api.MyService</code> (<strong>46</strong> characters). Now if we shorten to <code>c.s.l.p.s.a.MyService</code> (<strong>21</strong> characters), we&apos;ll save <strong>25</strong> characters for each hit. So total unrealized savings of storage &amp; bandwidth would be <strong>103+ millions</strong> (<strong>4153406 X 25 = 103835150</strong>) characters each day in the current Beta application. Just to give a rough idea, 1 million characters is equivalent of ~23 hours 8 min of speech duration.</p>
<blockquote>
<p><strong><a href="http://logback.qos.ch/manual/layouts.html?ref=srccodes.com#conversionWord">Conversion Word</a></strong><br>
<code>%logger{length}</code> will shorten the logger name, usually without significant loss of meaning. Setting the value of length option to zero constitutes an exception. It will cause the conversion word to return the sub-string right to the rightmost dot character in the logger name. The next table provides examples of the abbreviation algorithm in action.</p>
<table>
<thead>
<tr>
<th style="text-align:left">Conversion specifier</th>
<th style="text-align:center">Logger name</th>
<th style="text-align:left">Result</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">%logger</td>
<td style="text-align:center">mainPackage.sub.sample.Bar</td>
<td style="text-align:left">mainPackage.sub.sample.Bar</td>
</tr>
<tr>
<td style="text-align:left">%logger{0}</td>
<td style="text-align:center">mainPackage.sub.sample.Bar</td>
<td style="text-align:left">Bar</td>
</tr>
<tr>
<td style="text-align:left">%logger{5}</td>
<td style="text-align:center">mainPackage.sub.sample.Bar</td>
<td style="text-align:left">m.s.s.Bar</td>
</tr>
<tr>
<td style="text-align:left">%logger{10}</td>
<td style="text-align:center">mainPackage.sub.sample.Bar</td>
<td style="text-align:left">m.s.s.Bar</td>
</tr>
<tr>
<td style="text-align:left">%logger{15}</td>
<td style="text-align:center">mainPackage.sub.sample.Bar</td>
<td style="text-align:left">m.s.sample.Bar</td>
</tr>
<tr>
<td style="text-align:left">%logger{16}</td>
<td style="text-align:center">mainPackage.sub.sample.Bar</td>
<td style="text-align:left">m.sub.sample.Bar</td>
</tr>
<tr>
<td style="text-align:left">%logger{26}</td>
<td style="text-align:center">mainPackage.sub.sample.Bar</td>
<td style="text-align:left">mainPackage.sub.sample.Bar</td>
</tr>
</tbody>
</table>
<p>Please note that the rightmost segment in a logger name is never abbreviated, even if its length is longer than the length option. Other segments may be shortened to at most a single character but are never removed.</p>
</blockquote>
<!--kg-card-end: markdown--><h3 id="2-customizing-stack-traces">2. Customizing Stack Traces</h3><!--kg-card-begin: markdown--><p><code>logstash-logback-encoder</code> includes a very powerful <code>throwableConverter</code> called <code>ShortenedThrowableConverter</code>. It&apos;ll be a good idea to customize stack traces for optimizations.<br>
<code>rootCauseFirst</code> is a cool feature. It is very handy to see the root cause first rather than browsing through chains of &quot;Caused by:&quot;. Logs gets truncated beyond <code>buffer_size</code> of Logstash (65536 bytes on Logstash &gt;= 5.1). In such cases, root cause will be lost and toubleshooting might be a nightmare.<br>
Otherside, <code>maxLength</code> &amp; <code>shortenedClassNameLength</code> will help to reduce log message size.</p>
<blockquote>
<p><strong><a href="https://github.com/logstash/logstash-logback-encoder?ref=srccodes.com#customizing-stack-traces">Customize Stack Traces</a></strong></p>
<ul>
<li>Limiting the number of stackTraceElements per throwable (applies to each individual throwable. e.g. caused-bys and suppressed)</li>
<li>Limiting the total length in characters of the trace</li>
<li>Abbreviating class names</li>
<li>Filtering out consecutive unwanted stackTraceElements based on regular expressions.</li>
<li>Using evaluators to determine if the stacktrace should be logged.</li>
<li>Outputing in either &apos;normal&apos; order (root-cause-last), or root-cause-first.</li>
<li>Computing and inlining hexadecimal hashes for each exception stack</li>
</ul>
<p>For example:</p>
<pre><code class="language-xml">&lt;encoder class=&quot;net.logstash.logback.encoder.LogstashEncoder&quot;&gt;
 &lt;throwableConverter class=&quot;net.logstash.logback.stacktrace.ShortenedThrowableConverter&quot;&gt;
   &lt;maxDepthPerThrowable&gt;30&lt;/maxDepthPerThrowable&gt;
   &lt;maxLength&gt;2048&lt;/maxLength&gt;
   &lt;shortenedClassNameLength&gt;20&lt;/shortenedClassNameLength&gt;
   &lt;exclude&gt;sun\.reflect\..*\.invoke.*&lt;/exclude&gt;
   &lt;exclude&gt;net\.sf\.cglib\.proxy\.MethodProxy\.invoke&lt;/exclude&gt;
   &lt;evaluator class=&quot;myorg.MyCustomEvaluator&quot;/&gt;
   &lt;rootCauseFirst&gt;true&lt;/rootCauseFirst&gt;
   &lt;inlineHash&gt;true&lt;/inlineHash&gt;
 &lt;/throwableConverter&gt;
&lt;/encoder&gt;
</code></pre>
</blockquote>
<!--kg-card-end: markdown--><p>Though the cost of storage, network &amp; processing power are getting cheaper by the day, applications are also scaling up and scaling out in many folds over time. So, I believe, it is important to optimize as much as possible. </p><p>Please share your thoughts and experiences on this. Thanks in advance.</p><!--kg-card-begin: markdown--><h2 id="references">References</h2>
<ul>
    <li><a href="https://github.com/logstash/logstash-logback-encoder?ref=srccodes.com" title="logstash logback encoder" rel="noopener" target="_blank">logstash-logback-encoder</a></li>
    <li><a href="http://logback.qos.ch/manual/layouts.html?ref=srccodes.com#conversionWord" title="logstash logback encoder" rel="noopener" target="_blank">Logback Layout - Conversion Word</a></li>
</ul><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Top 6 characteristics of a successful entrepreneur]]></title><description><![CDATA[Entrepreneurs are not homogeneous and hence attributing their success or failure to a set of characteristics might be difficult as well as open to challenges.  People often have the notion that entrepreneurs are born with their natural affinity to innovation and an appetite for risk taking. ]]></description><link>https://www.srccodes.com/what-are-the-characteristics-of-a-successful-entrepreneur/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5aa7</guid><category><![CDATA[Entrepreneurship]]></category><category><![CDATA[Characteristics of Entrepreneurs]]></category><category><![CDATA[Successful Entrepreneurship]]></category><category><![CDATA[Passion]]></category><category><![CDATA[Conviction]]></category><category><![CDATA[Networking]]></category><category><![CDATA[Resourcefulness]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[Debjani Sinha]]></dc:creator><pubDate>Tue, 11 Aug 2020 22:22:32 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1507679799987-c73779587ccf?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1507679799987-c73779587ccf?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Top 6 characteristics of a successful entrepreneur"><p>Entrepreneurs are not a homogeneous group and hence attributing their success or failure to a set of characteristics might be difficult as well as open to challenges. &#xA0;People often have the notion that entrepreneurs are born with their natural affinity to innovation and an appetite for risk taking. Their success in businesses is simply a consequence of these inherent qualities. While one can argue that the product ideas of the likes of Bill Gates, Steve Jobs and Larry Page were enough to skyrocket their start-ups to hugely successful business empires; the newer breed of entrepreneurs like Mark Zuckerberg &#xA0;and Jeff Bezos are riding on the promise of smarter delivery and better consumer experience. </p><p>In the dynamic landscape of business, a few key traits form the fabric of their character.</p><h3 id="passion">Passion </h3><p>An entrepreneur has to be passionate about their product or idea. Reaping the dividend of their business venture might be the ultimate motivator, but being able to live their passion everyday is what fuels them on during the initial trials and testing times.</p><h3 id="consumer-insight">Consumer insight </h3><p>One might have an idea for a new product or service but it must be deliberated whether there exists a market for it or can it generate future consumer demand. An ability to survey the current consumer trends and forecast the projected demand for the new product or service would be invaluable. &#xA0; &#xA0; </p><h3 id="conviction">Conviction </h3><p>An entrepreneur with a strong belief in his idea and vision will be adept to sell it to various groups &#xA0;ranging from reluctant investors to first time customers. Conviction also endows upon you the confidence to heed only the good from the avalanche of advice mounted upon you from all quarters. </p><h3 id="networking">Networking</h3><p>The benefits of having an amiable and extrovert personality cannot be emphasised enough. The ability to make a good impression on people goes a long way in securing the financing deal or making that first sale. A good news for introverted and shy people is that networking can now happen virtually through social media and might be quite effective for following up and keeping in touch. The success of your new endeavour weighs heavily of your network of friends and business acquaintances. &#xA0; </p><h3 id="ability-to-learn-from-failure">Ability to learn from failure </h3><p>An entrepreneur must always be prepared to fail. If he is able to treat a setback as a lesson learnt, he will be able to move forward with better understanding and preparation. </p><h3 id="resourcefulness">Resourcefulness </h3><p>There will be occasions when one would be expected to make the most of available resources. This attitude would help the business in the initial days of operation when resources are limited. A resourceful person is not only able to use sparse supplies sensibly but also find novel uses for them. </p><p>Other personality traits like ability to take risks, work hard, empathize, observe respectfulness, etc. are also important in the successful launch of a start-up. This article however chooses to focus only on the key qualities that help set apart the successful entrepreneurs from the crowd. </p>]]></content:encoded></item><item><title><![CDATA[Pandemic in Application - Circuit Breaker Pattern]]></title><description><![CDATA[<p>Pandemic! Human race is now at stake. Flatten the curve. Whole world is running after this epidemic curve. Why it so important? </p><!--kg-card-begin: html--><p><a href="https://commons.wikimedia.org/wiki/File:20200403_Flatten_the_curve_animated_GIF.gif?ref=srccodes.com#/media/File:20200403_Flatten_the_curve_animated_GIF.gif"><img src="https://upload.wikimedia.org/wikipedia/commons/e/e9/20200403_Flatten_the_curve_animated_GIF.gif" alt="20200403 Flatten the curve animated GIF.gif" height="360" width="640"></a><br>By <a href="//commons.wikimedia.org/wiki/User:RCraig09" title="User:RCraig09">RCraig09</a> - <span class="int-own-work" lang="en">Own work</span>, <a href="https://creativecommons.org/licenses/by-sa/4.0?ref=srccodes.com" title="Creative Commons Attribution-Share Alike 4.0">CC BY-SA 4.0</a>, <a href="https://commons.wikimedia.org/w/index.php?curid=88883759&amp;ref=srccodes.com">Link</a></p><!--kg-card-end: html--><p>Fight or Flight. Neither medicine nor vaccine for COVID-19 &#xA0;is out there. Naturally, second one would be</p>]]></description><link>https://www.srccodes.com/microservice-circuit-breaker-pattern-spring-boot-cloud-netflix-hystrix-resilience4j-half-open-closed-vavr-java8/</link><guid isPermaLink="false">6543eb5b7e6ff80d34cb5aa5</guid><category><![CDATA[Microservices]]></category><category><![CDATA[Netflix]]></category><category><![CDATA[Netflix Hystrix]]></category><category><![CDATA[Circuit Breaker Pattern]]></category><category><![CDATA[Resilience4j]]></category><category><![CDATA[Vavr]]></category><category><![CDATA[Java8]]></category><category><![CDATA[Design Pattern]]></category><category><![CDATA[Bulk Head]]></category><category><![CDATA[Rate Limiter]]></category><category><![CDATA[Retry]]></category><category><![CDATA[Fallback Response]]></category><category><![CDATA[Threshold]]></category><category><![CDATA[Wait Duration]]></category><category><![CDATA[Sliding Window]]></category><category><![CDATA[Failure Rate]]></category><category><![CDATA[classic]]></category><dc:creator><![CDATA[user]]></dc:creator><pubDate>Sun, 09 Aug 2020 06:36:00 GMT</pubDate><media:content url="https://www.srccodes.com/content/images/2021/04/circuit-breaker-pattern-state-diagram-cover.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.srccodes.com/content/images/2021/04/circuit-breaker-pattern-state-diagram-cover.jpg" alt="Pandemic in Application - Circuit Breaker Pattern"><p>Pandemic! Human race is now at stake. Flatten the curve. Whole world is running after this epidemic curve. Why it so important? </p><!--kg-card-begin: html--><p><a href="https://commons.wikimedia.org/wiki/File:20200403_Flatten_the_curve_animated_GIF.gif?ref=srccodes.com#/media/File:20200403_Flatten_the_curve_animated_GIF.gif"><img src="https://upload.wikimedia.org/wikipedia/commons/e/e9/20200403_Flatten_the_curve_animated_GIF.gif" alt="Pandemic in Application - Circuit Breaker Pattern" height="360" width="640"></a><br>By <a href="//commons.wikimedia.org/wiki/User:RCraig09" title="User:RCraig09">RCraig09</a> - <span class="int-own-work" lang="en">Own work</span>, <a href="https://creativecommons.org/licenses/by-sa/4.0?ref=srccodes.com" title="Creative Commons Attribution-Share Alike 4.0">CC BY-SA 4.0</a>, <a href="https://commons.wikimedia.org/w/index.php?curid=88883759&amp;ref=srccodes.com">Link</a></p><!--kg-card-end: html--><p>Fight or Flight. Neither medicine nor vaccine for COVID-19 &#xA0;is out there. Naturally, second one would be the wisest choice. </p><p>Wash hand, disinfection, wear mask, keep distance, stay at home, social bubbles, lockdown - so many temporary strategies. But for what? </p><p>Idea here is don&apos;t fall sick. <strong>Delay the &#xA0;peak</strong> number of infected people that health care system can handle at a time. Don&apos;t put more pressure on already stressed out healthcare system. Help administration to buy time to increase health care capacity (&quot;<strong>raise the line</strong>&quot;) . </p><p>Why am I talking all these in the context of microservices? Probably, you got me . Just think microservice application as healthcare system and each person (who requires health care support) as request to that application then you&apos;ll find <strong>amazing similarities</strong>.</p><p>We may have experienced 1-2 pandemics in 100 years. But we see it frequently in IT application environment. &#xA0;Therefore, it is very important to know how to handle pandemic in application.</p><!--kg-card-begin: markdown--><p>Broadly, there are three different states of dealing with this epidemic. This is almost same across all countries (except Big Bro :-)).</p>
<ol>
<li><strong>Open</strong> (Pre Covid-19 / Hopefully Post Covid-19)</li>
<li><strong>Locked Down</strong> (Everything absolutely closed)</li>
<li><strong>Slowly opening</strong> / <strong>Semi-open</strong> / <strong>half-open</strong> (Social bubbles, Stage 1, Stage 2, Stage 3  etc.)</li>
</ol>
<!--kg-card-end: markdown--><p>Third state is very tricky. Wait, watch and take action. If situation continuously improves, then open &#xA0;particular area / city / business otherwise close it immediately.</p><p>For our applications, we use to have Input Sanitization (Wash Hand), &#xA0;Virus / Malware / Vulnerability scanner (Disinfection), Firewall / VPC / Security Group / ACL / Private Subnet etc. (Face Mask, Home Isolation, Social bubbles etc.). We also need something that will help us to continuously monitor and decide when not to pass request if underlying system is already stressed out.</p><p>Roughly, Circuit Breaker pattern helps to address this and make an application more resilient. It is partially works like an electric circuit breaker that protects electrical appliances from unexpected level of current flow at our home. It is absolutely essential and most important safety mechanism for our home. Similarly, Circuit Breaker pattern is also absolutely necessary for our modern software applications. &#xA0;</p><p>Circuit Breaker pattern is implemented as finite state machine with 3 main states - <strong>&quot;Closed&quot;, &quot;Open&quot; and &quot;Half-Open&quot;</strong>. <strong>It monitors and aggregate outcome of calls in a rolling / sliding window</strong>. Once, &#xA0;failures rate crosses the configured threshold, Circuit Breaker trips (&quot;Closed&quot; --&gt; &quot;Open&quot;) and <strong>all subsequent calls get rejected with immediate error or fallback response</strong>. After configured wait time, it goes to &quot;Half-Open&quot; state and allow configured number of calls to verify the backend health. If all calls are successful then it moves to &quot;Closed&quot; state, otherwise again goes back to &quot;Open&quot; state and restart the wait timer.</p><!--kg-card-begin: html--><figure class="kg-card kg-image-card kg-width-full">
    <picture class="kg-image">
      <source type="image/webp" srcset="//cdn.srccodes.com/c/2021/03/69/circuit-breaker-pattern-state-diagram.webp"> 
      <img src="//cdn.srccodes.com/c/2021/03/69/circuit-breaker-pattern-state-diagram.jpg" alt="Pandemic in Application - Circuit Breaker Pattern">
    </picture>
</figure><!--kg-card-end: html--><!--kg-card-begin: markdown--><p>Two java implementations of Circuit Breaker pattern are very popular.<br>
<strong>1. Netflix Hystrix:</strong></p>
<blockquote>
<p><strong>Hystrix is no longer in active development, and is currently in maintenance mode.</strong></p>
<p>Hystrix (at version 1.5.18) is stable enough to meet the needs of Netflix for our existing applications. Meanwhile, our focus has shifted towards more adaptive implementations that react to an application&#x2019;s real time performance rather than pre-configured settings (for example, through adaptive concurrency limits). For the cases where something like Hystrix makes sense, <strong>we intend to continue using Hystrix for existing applications, and to leverage open and active projects like resilience4j for new internal projects.</strong><br>
<em><strong>Source:</strong></em> <a href="https://github.com/Netflix/Hystrix?ref=srccodes.com">https://github.com/Netflix/Hystrix</a></p>
</blockquote>
<p><strong>2. Resilience4j</strong></p>
<blockquote>
<p>Resilience4j is a <strong>lightweight</strong> fault tolerance library inspired by Netflix Hystrix, but designed for Java 8 and functional programming. Lightweight, because the library only uses <strong>Vavr</strong>, which does not have any other external library dependencies. Netflix Hystrix, in contrast, has a compile dependency to Archaius which has many more external library dependencies such as Guava and Apache Commons Configuration.<br>
<em><strong>Source:</strong></em> <a href="https://github.com/resilience4j/resilience4j?ref=srccodes.com">https://github.com/resilience4j/resilience4j</a></p>
</blockquote>
<!--kg-card-end: markdown--><p>Personally, I prefer Resilience4j for my projects. Reason is obvious from above quotes. Please let me know in the comment what are you using in your projects?</p><p>Thanks for reading! :)</p><!--kg-card-begin: markdown--><h2 id="references">References</h2>
<ul>
<li><a href="https://martinfowler.com/bliki/CircuitBreaker.html?ref=srccodes.com" title="CircuitBreaker - Martin Fowler" rel="noopener" target="_blank">CircuitBreaker - Martin Fowler</a></li>
<li><a href="https://github.com/resilience4j/resilience4j?ref=srccodes.com" title="Resilience4j" rel="noopener" target="_blank">Resilience4j</a></li> 
<li><a href="https://github.com/Netflix/Hystrix?ref=srccodes.com" title="Netflix Hystrix" rel="noopener" target="_blank">Netflix Hystrix</a></li> 
<li><a href="https://resilience4j.readme.io/docs/comparison-to-netflix-hystrix?ref=srccodes.com" title="Comparison to Netflix Hystrix" rel="noopener" target="_blank">Comparison to Netflix Hystrix</a></li>
</ul><!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>