Wednesday, December 23, 2020

Leetcode discuss: 687. Longest Univalue Path | 10 upvotes | 474 views

 Here is the link. 

C# post order - check with parent value with step by step illustration

Added on Feb. 2019

The idea to solve the problem is to avoid using root node to compare with left and right child, two user cases; Every node works with its parent node instead.

It is very challenge to explain and prove the code written is correct based on counting the edge from node to it's parent node.

What I like to suggest is to go over a few steps based on an example to test manually before writing the code. First step is to number every node in the tree using a, b, c, d,..; And then work on edge value calculation following the order of nodes in traversal, specify each edge using node id; third step is to calculate cross path and explain how it works for the maximum value.

I like to show the steps to work on an example, how to explain the idea and come out the design. Since there are so many ways to approach the problems, it is important to make the approach easy to understand.

Added on June 2019
Case study a binary tree

To understand the approach, let us work on simple test case, a binary tree with three nodes, root node with value 5, and left and right child both with value 5 as well:

Here is the overview to display, after that, I will go over one step a time.
Here are hightlights:

  1. Traversal the tree using post order traversal, mark with a, b, c in the order of traversal for each node;
  2. Add edge value to each node, every node will check its parent and see its value equal to parent value;
  3. Add cross path value next to the node from 5a, 5b, 5c. Only 5c has cross path value 2.

image

Quick overview for each step

Three steps, each step is illustrated one diagram:
step 1: Post order traversal the tree, mark the order using a, b, c next to the node.

image

step 2: Calculate edge value, and add value next to the node.
image

step 3: Calculate the cross path value, add value next to the node
image

The following tree with node value 5 is very helpful to illustrate the process.
image

The longest univalue path is 2, and the edge count is 2, including one edge from root node to its left child, and one edge from root node to its right child.

There are so many ways to approach the problem, to check with parent value is different from the above counting. The edge is counted from left child to it's parent, likewise the right child to its parent. The node is counting the edges toward itself from direct children nodes first, and also includes it's child's count if need.

How to approach the problem in detail?

A few steps will be explained in the following. using postorder traversal
image

First, we work on recursive function. Every node is to check with its parent node's path value. Post order traversal, bottom up, three steps, left child 5a, right child 5b, root node 5c, all nodes in the tree have value 5, using a, b c to mark them with unique id, and also alphabetic order is the order of post order traversal.

step 1:
image

The first node visited is 5a, and its value is equal to it's parent node 5c. 1 edge is added next to 5a. The edge is from node 5a to node 5c.
step 2:
image

The second node visted is 5b, and its value is equal to it's parent node 5c. One edge is added next to 5b.

step 3:
image

The third visited node is 5c, and the value does not equal to it's parent node's value. 0 is added next to 5c.

Combination of step 1, 2, 3:

The above tree left child with node value 5, 1 counts for the edge of the node 5 to its parent, in other words, edge from node 5a to 5c;

likewise the right child.
Now the calucation of cross path, bottom up, post order, in the order of 5a, 5b, 5c

Step 1: work on 5a-1-?, cross path value
image

Step 2: work on 5b-1
image

Step 3: work on 5c-1
Cross path should be two edges, 5a->5c, 5b->5c
image

The node 5c's cross path value is 2, since two edges, one is 5a to 5c, and the other is 5b to 5c.

I think that it is definitely good idea in general to go over an example first, and then write the code based on the idea to check with parent value.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace longest_univalue_path___compare_to_root
{
    public class TreeNode
    {
        public int val;
        public TreeNode left;
        public TreeNode right;
        public TreeNode(int x) { val = x; }
    }

    class Program
    {
        static void Main(string[] args)
        {
        }

        int maxCrossPath = 0; // global variable
        public int LongestUnivaluePath(TreeNode root)
        {
            if (root == null)
            {
                return 0;
            }

            maxCrossPath = 0;
            postOrderTraversal(root, root.val);

            return maxCrossPath;
        }

        private int postOrderTraversal(TreeNode node, int parentValue)
        {
            if (node == null)
            {
                return 0;
            }

            var current = node.val;

            int left  = postOrderTraversal(node.left,  current);
            int right = postOrderTraversal(node.right, current);

            maxCrossPath = Math.Max(maxCrossPath, left + right); // longest univalue path crossing the root

            if (parentValue == node.val)
            {
                return Math.Max(left, right) + 1;
            }

            return 0;
        }
    }
}

Free stand range: Best buy - boca raton - on sale

Here is the link.  

$449.99 

Amana - 4.8 Cu. Ft. Freestanding Electric Range - Stainless steel

Model:AER6303MFS
SKU:5509105

Tuesday, December 22, 2020

Adam Khoo: Low Risk High Profit Swing Trading for Stocks

 Here is the link. 

In this video, Adam Khoo will show you how successful swing trading strategies that professional stock traders use to achieve consistent profits trading the stock markets. These are essential stock investing, stock trading, forex trading and options trading skills that will help individuals to beat the stock market and to generate consistent profits to build their wealth.



SNGX stock: Invest for short term more than 3 months less than six months

 I like to look into investment of SNGX stock. 

Dr. Schaber continued, "With approximately $20 million of cash and our non-dilutive government funding, we will evaluate strategic options as we continue to execute on the multiple development programs across our rare disease pipeline. Most importantly, this will include the preparation of a New Drug Application for SGX301 in the treatment of cutaneous T-cell lymphoma, which demonstrated statistical significance in its pivotal Phase 3 clinical trial earlier this year, as well as continuing activities towards SGX301 U.S. commercialization where we expect peak annual sales to exceed $75 million."

  • Soligenix (NASDAQ:SNGX) plunges 44% premarket in reaction to the announcement of preliminary top-line results for its Phase 3 DOM-INNATE (Dusquetide treatment in Oral Mucositis – by modulating INNATE Immunity) trial evaluating SGX942 (dusquetide) in the treatment of severe oral mucositis (SOM) in patients with head and neck cancer (HNC) receiving chemoradiation.

Actionable Items

I plan to purchase 300 shares of SNGX, and if it continues to drop more than 20%, then I will purchase at most 100 shares. 

I like to see what will happen about the business. 


Adam khoo: Stock Price Falls! Sell, Hold Or Buy More? Part 1 of 2

 Here is the link. 

Investment

Fundamentally great business

When do you sell?

Sell when fundamentals deteriorate

  • Sales, net income or cash flow inconsistent or negative
  • Negative growth rate
  • Loss of competitive advantage
  • Debt levels increase
  • Price over valued
Buy more during temporary price weakness

Accumulate more with uptrend momentum 

Using moving average to determine the trend - show uptrend momentum


Adam Khoo: Stock Market Secret: How to Always Buy Low and Sell High

 Here is the link. 

Watch how Adam consistently buys low and sells high in the stock market by calculating the intrinsic value of a stock. Knowing how to determine if s stock is expensive or cheap is one of the most important stock market investing skills you need. Adam Khoo is a professional stock and forex trader and the best-selling author of 'Winning the Game of Stocks" and "Profit from the Panic".

Take my notes in the following: 9:53 PM - 21:38 videos

Intrinsic value 

PE ratio - coca cola vs Amazon, 

Piece of business - how do you know the worth of business? How to calculate the value?


Adam khoo: How I Analyze the Stock Market for Massive Profits

 Here is the link. 

The key to getting rich investing in stocks is buying when stock prices are selling below intrinsic value. This is known as Value Momentum Investing. In this video, you will learn how to identifying fundamentally good stocks and to buy them when they are undervalued and on an uptrend. The recent stock market correction presents an opportunity to stock investors to invest at great prices Adam Khoo is a professional stock and forex trader and the best-selling author of 'Winning the Game of Stocks" and "Profit from the Panic". He is the four-time winner of the 'Most Preferred Financial Educator' Award and 'Most Preferred Investment Speaker Award' in Singapore. Thousands of students have profited from his sharp investment insights into the world of stock investing (value investing), stock trading and Forex trading.

Take some notes in the following:

Trader - pyschology - trader, not a gambler, and buy low and sell high. Do not follow the news, follow the herd effect.




赵伟 中国计算机学会 - 学界泰斗 华人楷模——忆刘炯朗教授

Here is the article.  

Here is the article. 

古人言“五十知天命”,五十之后人生过半,前半生若为生活而活,后半生倒不妨为自己为热爱而活,体验未曾体验过的人生,幸甚至哉。


刘教授身体力行,为了出任台湾清华大学校长,不仅放弃了美国大学终身教职的“金饭碗”,还直面较大的薪水落差,但他似乎也不以为意。刘教授的这一举动,影响并带动了许多海外华人回国效力。笔者常于不经意间想到,他的高徒姚期智先生放弃普林斯顿大学终身讲席教授职位加盟清华大学,是不是也是和这个“金句”有关?


退休以后的刘教授更把传道解惑的善举“职业化”了。刘教授曾在台湾电台开了一档“我爱谈天你爱笑”的广播节目,听众追捧、多年不衰。在节目里,刘教授常引经据典、深入浅出地谈及科技、文化、教育、生活等诸多方面。他诙谐幽默,又辛辣讽刺地谈到人生哲理的深处,金句不断。有一期节目谈到了求职问题,说是有3个毕业生去某公司面试,面试官提问让他们想象自己10年后的样子。第一个学生说,自己要十年如一日,忠诚为公司服务;第二个学生说面试官的岗位很重要,自己以后也要成为面试官;第三个学生说自己想当总经理。这个故事居然被刘教授说出了2种不同的结局:第一种结局是,面试官觉得第一个学生忠诚踏实、第二个很会奉承、第三个吹牛不打草稿,分别分配到了研发部、市场部、广告宣传部,各尽其能;第二种结局是,面试官觉得第一个学生胸无大志、第二个天生反骨、第三个自不量力,所以这三个学生都被拒绝了。他用故事的形式传达需要跳出思维定势,从多角度看待事情的人生道理。


刘炯朗 - 国立清华大学校长

 刘炯朗(1934年10月25日-2020年11月7日),生于广东广州,台湾资讯学者,曾于美国麻省理工学院、伊利诺伊大学任教,并曾担任过伊利诺伊大学香槟校区助理副校长职务,2000年时当选中央研究院院士。1998-2002年间,放弃美国籍而返台担任国立清华大学校长。自国立清华大学卸任后,担任集邦科技股份有限公司董事长、香港城市大学访问学者、国立成功大学电机工程学系李国鼎科技讲座教授与国立清华大学蒙民伟荣誉讲座教授。

Leetcode discuss: 496. Next Greater Element I

 Here is the link. 

Second practice - C# - reading skill challenge

Dec. 22, 2020
It was so challenge for me to figure out how the test case works. The problem is related to my reading skills.

Case study
Input: nums1 = [4,1,2], nums2 = [1,3,4,2].
Output: [-1,3,-1]

I just could not figure out why 2 in the first array called nums1 has no greater element. I thought about 2's index in nums1 is 1, and then check nums2's array starting from index = 1 to find greater element compared to 2, 4 should be the answer.

I read the problem statement again and again, 2 is in num2 array at position of 3, last element, no right side elements in num2.

I was so patient to figure out this interesting challenge in my Leetcode premium online assessment Facebook mock session. Patient is important.

Original statement given in Leetcode
The Next Greater Number of a number x in nums1 is the first greater number to its right in nums2.

I think that it should rephrase to make it easier to understand.
"its right" refers to the right side of x's index position in nums2. It is not x's index position in nums1.

Time complexity:
O(M), M is the size of array nums2
Space complexity:
O(M), M is the size of array nums2

public class Solution {
    public int[] NextGreaterElement(int[] nums1, int[] nums2) {
        if(nums1 == null || nums2 == null || nums1.Length > nums2.Length)
            return new int[0];
        
        var length1 = nums1.Length; 
        var length2 = nums2.Length; 
        
        var nextGreater = new int[length1];
        
        var map = new Dictionary<int, int>(); 
        for(int i = 0; i < length2; i++)
        {
            map.Add(nums2[i], i);    
        }
        
        for(int i = 0; i < length1; i++)
        {
            nextGreater[i] = -1; 
        }
        
        for(int i = 0; i < length1; i++)
        {
            var current = nums1[i];
            
            for(int j = map[current] + 1; j < length2; j++)
            {
                if(nums2[j] > current)
                {
                    nextGreater[i] = nums2[j];
                    break;
                }
            }
        }
        
        return nextGreater; 
    }
}


Leetcode discuss: 325. Maximum Size Subarray Sum Equals k

 Here is the link. 

First practice - C# - prefix sum - exclusive

Dec. 22, 2020
It takes O(N) time to find maximum size subarray sum equals k using prefix sum to calculate subarray's sum, whereas N is the length of the array.

I used to have problem to define prefix sum, so this time I chose the tip to define (0, 0) as first value, 0 is value of prefix sum, index 0 is exclusive.

Case study
Input: nums = [1, -1, 5, -2, 3], k = 3
Output: 4
Prefix sum is calculated and defined in the following way:
prefixSum[0] - 0, not include any element in the array.
prefixSum[1] - sum of nums[0], exclusive 1 itself.
So for any subarray it will take O(1) to calculate the sum. For example, subarray from [i, j], prefix sum's start index should be i, end index is j + 1, so prefixSum[j + 1] - prefixSum[i] is the subarray's sum. It will take O(1).

All preprocess of prefixSum array takes O(N) time.

public class Solution {
    public int MaxSubArrayLen(int[] nums, int k) {
        if(nums == null || nums.Length == 0)
            return 0; 
        
        var map = new Dictionary<int, int>();
        map.Add(0, 0); // exclude index = 0
        
        var prefixSum = 0; 
        var length = nums.Length; 
        var max = 0;
        for(int i = 0; i < length; i++)
        {
            prefixSum += nums[i];
            var target = prefixSum - k;
            if(map.ContainsKey(target))
            {
                var span = i + 1 - map[target];
                max = span > max? span : max; 
            }
            
            if(!map.ContainsKey(prefixSum))
            {
                map.Add(prefixSum, i + 1); // exclusive i + 1
            }
        }
        
        return max; 
    }
}


14 day break: Dec. 8 - Dec 22, 2020

 Dec. 22, 2020

Introduction

I took 14 days break and today I went back to spend two hours to write four algorithm, worked on Leetcode premium Facebook online code screen. I like to talk about 14 days break. 

14 days break

I worked full time last two weeks. But in the evening and weekends, I tried to do a few things in the past two weeks. I like to write down first, and then review them. It is important for me to learn how to invest on stock market. I had some issues to understand how uptrend works, but I was busy to prepare Google onsite, I did not catch the gains until those gains are from 20% to 80% for some stocks. 

I learn the importance to learn more first, and then I have ideas how stock market works. 


Leetcode discuss: 1329. Sort the Matrix Diagonally

 Here is the link. 

First practice - C# - Define key as (row - col)

Dec. 21, 2020
Introduction
It is hard to manage my performance on this algorithm. I came out a few ideas to shorten the time in less than 25 minutes to code.

My ideas
I thought about how to define if the position is the first one in diagonal. The naive idea is to check if it is the first one then (row -1, col - 1) should be outside of matrix range. I came cross the idea to define key using row - col, all distinct diagonals can be defined using this value, which is a sequence of rows - 1, rows - 2, ..., - columns + 1 to match from bottom left -> up -> right direction.

Next I thought about using C# List, List.Sort() API to sort the list; To make it easy, I decided to remove the used one from list as well.

Case study
Example:
3, 3, 1, 1,
2, 2, 1, 2,
1, 1, 1, 2

To define diagonal using key value, all positions are marked using key value:
0, -1, -2, -3
1,
2

Use A, B, C, D, E, F, G to mark the order,
0C, -1D, -2E, -3F
1B,
2A
So the key value sequence is [2, 1, 0, -1, -2, -3] to match the order of A, B, C, D, E, F. There are six diagonal lists which start from A or B or C or D or E or F.

Define a hashMap using the above key to identify each distinct diagonal list.

The above positions are head of diagonal list. Next populate the list's key value for each position, position can be determined by it's row - col to match key.
0, -1, -2, -3
1, 0, -1, -2
2, 1, 0, -1

I do think that the above calculation helps me to come out working solution easy and accurate.

My performance
My first practice is to explicitly update hashMap value as a C# List and it takes three statements, which can be simplified by called one statement:

map[key].Sort();

I will figure out how it works and explain to myself.

Production-ready code
I worked on onsite interview feedback, one of feedbacks is to be able to write production-ready code, not just optimized code with a few hints to work with interviewers. It is hard to write production-ready code during onsite interviews.

It is easy to solve another 200 hard level algorithms, I can quickly study top voted discussion post and write C# practice, hopefully I can complete project in less than three months.

Solved algorithms
Right now I only solved 599 algorithms, 238 easy, 289 medium, hard level 72. I like to solve another 200 hard level algorithms.

public class Solution {
    public int[][] DiagonalSort(int[][] mat) {
        if(mat == null || mat.Length == 0 || mat[0].Length == 0)
        {
            return new int[0][];
        }
        
        var rows = mat.Length; 
        var columns = mat[0].Length; 
        
        var sorted = new int[rows][];
        for(int row = 0; row < rows; row++)
        {
            sorted[row] = new int[columns];
        }
        
        var map = new Dictionary<int, List<int>>();        
        
        for(int row = 0; row < rows; row++)
        {
            for(int col = 0; col < columns; col++)
            {
                var key = row - col; 
                if(!map.ContainsKey(key))
                {
                    map.Add(key, new List<int>());
                    
                    int index = 0; 
                    while(row + index < rows && col + index < columns)
                    {
                        map[key].Add(mat[row + index][col + index]);
                        index++;
                    }
                    
					// First writing - explicitly update hashMap value as a C# List<int>
                    // var listTmp = map[key];
                   // listTmp.Sort(); 
                   // map[key]= listTmp; 
				   
				   // After the first submission, the code can be simplified by 
				   // calling Sort(), and it is easy to argue that hashMap will automatically 
				   // keep the sorted list. 
                    map[key].Sort();
                }
                
                var list = map[key];
                sorted[row][col] = list[0];
                list.RemoveAt(0);
                map[key] = list; 
            }            
        }
        
        return sorted; 
    }
}


13380 108 AVENUE 1102, Surrey

 $329,000 - built in 2010 

560 square foot, one bedroom - 

Monday, December 21, 2020

Adam Khoo: Beating the Stock Market with Value Momentum Investing

 Here is the link. 


13277 108 AVENUE 302, Surrey

 $324,500 CAD, built in 2008. 


Value Momentum Stock Investing™ Course by Adam Khoo

 Here is the link. 

Adam Khoo is a professional stock and forex trader and the best-selling author of 'Winning the Game of Stocks" and "Profit from the Panic". He is the 5-time winner of the 'Most Preferred Financial Educator' Award and 2-time winner of the 'Most Preferred Investment Speaker' Award in Singapore. Thousands of students have profited from his sharp investment insights into the world of stock investing and Forex trading.

Lessons Adam Khoo learned:

  1. Buy good companies
  2. Buy undervalue - when it is undervalued
  3. Stock market is irrational, fear or recession hit or down trend, only buy uptrend, and there is momentum called value momentum
  4. Generate cash value - start from few hundred dollars, age 26, make his million, next one is easy to make
  5. Top 25 richest Singaporeans under 40 - first 10 years to make a million
  6. My job in this program is to show shortcut, how to learn right principle - build your financial freedom
  7. Teach and coach people all around the world
  8. Wealth academy -

Identify the best companies
(The top 3% in the market)

  • Consistently increasing sales, earnings and cash flow from operations
  • Sustainable competitive advantage ( Economic moat)
    • Brand monopoly
    • High barriers to entry
    • High switching costs
    • Network effect
  • Conservative debt

Invest when the stock price is undervalued - Fairly valued and at support levels/ uptrends


13728 108 AVENUE 407, Surrey, British Columbia V3T0G2

13728 108 AVENUE 407, Surrey, British Columbia V3T0G2

$320,000 - Dec. 21, 2020


Adam Khoo: Will the Stock Market Bull Run Continue into 2021? Part 2 of 2

 Here is the link. 

The US Stock market (S&P 500) is up 12% year to date. Will the stock market continue its bull into 2021? Is the stock market too expensive and disconnected from the real economy? Is the stock market in a bubble and ready for a crash? Is the stock market bull run just getting started? Stock investment & trading insights by Adam Khoo shows you profitable trading and investment opportunities in today's stock markets. These are essential strategies for stock traders and investors who want to improve their investment and trading performance. Adam Khoo is a professional stocks and forex trading and the best-selling author of 'Winning the Game of Stocks" and "Profit from the Panic". Thousands of students have profited from his sharp investment insights into the world of stock investing and trading.


Last 10 minutes

Zoom stock, over $400/ share, intrinsic value is around $170 dollars, 140 overvalue.

Great fool's game - predict short term direction, drive by emotion, not logic, it can be disrupted by Cisco or other competitors.

NO stock - intrinsic value $29.00, price $45.35

Very good teaching. I like the idea to avoid those momentum stock.

Do not think about how much I can make, think about how much I will lose instead.


Adam Khoo: Will the Stock Market Bull Run Continue into 2021? Part 1 of 2

 Here is the link. 

S&P 500 P/E ratio says market is crazy expensive 

Average 21.21x

High 38.96x

Low 9.47x

Source: Capital

5 reason bull run - 

  1. Technical uptrend

Sunday, December 20, 2020

Why SolarWinds Stock Got Crushed Today

 Here is the link. 

I like to take some consideration to invest on WSI as a company. Stock price went down 43%, but it may have over 20% return in next 12 months after the incident is settled. 


Cybersecurity technology company FireEye, which itself was the target of a cyber attack earlier this month, said in a blog post yesterday that it had discovered a widespread intrusion campaign targeting SolarWinds' Orion platform, which provides IT monitoring and management services to enterprise and government customers. The hackers were able to attack SolarWinds' supply chain in order to insert malware into an Orion software update as early as this spring, according to FireEye.

SolarWinds confirmed additional details regarding the attack in a regulatory filing, saying that it believes it was targeted "by an outside nation state." The company warns that it has not confirmed the identity of the attacker and has retained third-party cybersecurity experts to help investigate. SolarWinds adds that it is cooperating with the FBI, U.S. intelligence agencies, and other government organizations.

The company estimates that less than 18,000 customers out of over 300,000 total customers have been impacted by the vulnerability. SolarWinds is working on a software update to address the vulnerability, which it expects to release tomorrow. Orion represented around 45% of the company's total revenue in the first three quarters of 2020. The company notes that the investigations are still ongoing and warns that it cannot currently estimate the financial, legal, or reputational impacts to the business.

Credit service: Finviz research

 Dec. 20, 2020

Introduction

I like to spend 20 minutes to look into those credit service company, and see if I can learn something about business. What is good time to invest? Recently there is 100% gains from November to December 2020. 



Is Datadog Stock a Buy?

 Here is the article. 

Putting the puns aside for the moment, Datadog offers operational analysis of a company through what it calls "monitoring as a service." It compiles data from all aspects of cloud applications to make the entire stack of a tech company's operations observable from one point.

At first glance, it may not look like an appealing tech stock. For one, it is far from the only cloud monitoring company. Companies can turn to the likes of New Relic, Splunk, and Sumo Logic for similar functionality. Datadog must also compete with established tech giants such as Cisco Systems and International Business Machines.

Moreover, with a forward P/E ratio that has risen above 430, Datadog stock sells for a considerable premium. The fact that the stock has risen by more than 140% this year partially explains the multiple. 


Datadog: wikipedia

 I plan to spend 10 minutes to read about datadog - stock went up 5 times more. 


Reception[edit]

Datadog was listed in Forbes’ Cloud 100[27] and was ranked in the top ten fastest growing companies in North America in Deloitte's 2016 Fast 500 List.[28] In both 2015[29] and 2016,[30] Crain's named Datadog to its list of the 100 Best Places to Work in New York City. Datadog was also listed on Wealthfront's 2017 Career-Launching Companies List[31] and Business Insider's 51 enterprise startups to bet your career on in 2017.[2] BuiltIn named it Boston's 5th top company to work for in 2019. [32]


They built Datadog to be a cloud infrastructure monitoring service, with a dashboard, alerting, and visualizations of metrics. As cloud adoption increased, Datadog grew rapidly and expanded its product offering to cover service providers including Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform, Red Hat OpenShift, VMware, and OpenStack.[4]

Cyren: Stock went up 50% from 1.0 to 1.5 from Dec. 21 to Dec. 25

Clare Zhao: tips how to communicate in Chinese - Microsoft project manager and her mentor

 Here is the link. 

If you work together, then you two should be in the same level. It is better for you to be considerate. 

How to manage conversation? 

Sharing panel  - dancing with stars 

professional dance with star - lead good communication with meaningful. 

  1. Do not try to change others; learn some communication skills;
  2. Do not argue. Very good example, a dev lead is very tough, ask him why he used those two words, when you say A, he used one word, when you say B, he used another word; 
  3. Be considerate - Do not judge others; you should be same level as your coworker. 
  4. ...

The Rise Of Open-Source Software

 Here is the link. 

Open-source software powers nearly all the world’s major companies. This software is freely available, and is developed collaboratively, maintained by a broad network that includes everyone from unpaid volunteers to employees at competing tech companies. Here’s how giving away software for free has proven to be a viable business model.


Delivery Scams Imitating Amazon, UPS, FedEx And DHL Are On The Rise

 Here is the link. 

As online shopping sees its biggest holiday season ever, hackers are sending fake delivery notices impersonating Amazon, UPS and FedEx, with scams up 72% from last year and 440% from October to November. Clicking a fake shipping notification link can launch ransomware or launch a counterfeit branded site to trick users into entering credit card and personal information to “reroute” a package that never existed.