show
+
+
+```bash
+for a in `find . -maxdepth 2 -type l -name "default*"`; do find $a/conf/ -type f -name "*.json"; done;
+
+
+### Merge all the file with name..
+show
+
+
+```bash
+for file in `find . -name "*.yml"` ; do echo $file; cat $file; done
+
+
+### find command line arguments
+show
+
+
+```bash
+ps -ww -fp 28862
+cat /proc/28862/cmdline
+
+### Find all the process that is connecting to remote port 1468
+show
+
+
+```bash
+lsof+-i+:1468
+
+### Recent Files
+show
+
+
+```bash
+find . -mmin -$((60*24)) -name "*[^0-9].log" | grep -v something.log
+
+### Old Files
+show
+
+
+```bash
+find . -mmin +$((60*24)) -name "*[^0-9].log" | grep -v something.log
+
+### Merge all the files
+show
+
+
+```bash
+find . -iname '*.java' -exec cat {} \; -exec echo \; > concatenated_source.java
+
+### file with 1 to 100
+show
+
+
+```bash
+for var in `seq 1 100`; do echo $var; done > seq.txt
+
+### recursively egrep only in html files
+show
+
+
+```bash
+egrep -r -l --include=*.html some_text *
+
+
+### SBT command line behind proxy
+show
+
+
+```bash
+set JAVA_OPTS=-Dhttp.proxySet=true -Dhttp.proxyHost=proxy.com -Dhttp.proxyPort=8080 -Dhttp.proxyUser=test -Dhttp.proxyPassword=Password
+
+### Execute script that is available in URL
+show
+
+
+```bash
+curl -sSL https://get.docker.io/ubuntu/ | sudo sh
+
+### Find and replace set of files
+show
+
+
+```bash
+sed -i ‘s/textToFind/replacementText/g’ `grep -ril ‘textToFind’ *`
+
+### Find all the file extensions recursively from current folder.
+show
+
+
+```bash
+find -type f | awk -F. '{print $NF}' | sort | uniq -c | sort -nr
+```
+
+
+
+### recursively unzip files
+show
+
+
+```bash
+find . -name "*.gz" -exec gunzip '{}' \;
+```
+
+
+
+### Bulk rename of gz to xml
+show
+
+
+```bash
+ls -1 | awk -F. '{print "mv \"" $1".gz\"", "\""$1".xml\""}'
+```
+
+
+
+### Sort based on substring of filename
+show
+
+
+```bash
+find -type f -name \*gz | awk -F"/" '{print substr($4,1,16)}' | sort -nr
+```
+
+
+
+### Find the number of files group by directory
+show
+
+
+```bash
+find . -type d -exec sh -c "fc=\$(find '{}' -type f | wc -l); echo -e \"\$fc\t{}\"" \; | sort -nr
+```
+
+
+
+### Find if className available in any of the jar file
+show
+
+
+```bash
+find /home/user/project/ -name "dependency*.jar" -exec jar tvf '{}' \; | grep -i "classname"
+```
+
+
+
+### Count number of lines in all successive directory in certain files alone.
+show
+
+
+```bash
+for file in `find -name "InputLog.csv"`; do echo $file; grep -v 'NotInterestedLines' $file | grep -E -w -c InteresteLine; done
+```
+
+
+
+### Print rows into columns
+show
+
+
+```bash
+awk 'BEGIN { FS = "," }; {for (i=1;i
+
+
+### Grep set of string in single file.
+show
+
+
+```bash
+
+while read i ; do egrep ",$i," input_text.log; done setOfStringInMultipleLine.txt &
+```
+
+
+
+### Or Generate egrep using following command
+show
+
+
+```bash
+cat files.txt | sort -r | tr '\n' '|' | sed s'/.$//' | sed s'/|/_|_/g' | sed s'/^/_/' | sed s'/$/_/' | sed s'/^/egrep "(/' | sed s'/$/)"/'
+sdiff -w 175 file1.csv file2.csv |egrep '\||>| diff.txt
+```
+
+
+
+### Find which svn commit, a souce line removed/added inside code/configuration file.
+show
+
+
+```bash
+C:\Mohan\Workspaces\workspace\TRUNK\application-component\src\main\resources>svn log -l 30 -v --diff configuration_server.xml > svn_log_entries.txt
+cat svn_log_entries.txt | grep "ChangedLine"
+```
+
+
+
+### Find all the Epoch seconds (date) that are not not fall in 10:00AM
+show
+
+
+```bash
+gawk '{print $1, $2, $3, strftime("%c", $6)}' isProblematic.txt | grep -v "10:00:00 AM"
+```
+
+
+
+### Given key value tex file, replace all the key with value recusively in text file.
+show
+
+
+```bash
+while read line;do export oldTime=`echo $line | awk '{print $1}'`; export newTime=`echo $line | awk '{print $2}'`; find ./ -type f -name "*.properties" -exec perl -p -i -e s/$oldTime/$newTime/g {} \; ; done < /var/tmp/Mohan/find_and_replace/diff_time.csv
+
+echo "[{\"toto\":5},{\"toto2\":5}]" | python -c 'import json,sys;obj=json.load(sys.stdin);print str(obj[0]["toto"]) + "," + str(obj[0]["toto"])'
+```
+
+
+
+### Create sbt directories using shell script
+show
+
+
+```bash
+#!/bin/sh
+mkdir -p src/{main,test}/{java,resources,scala}
+mkdir lib project target
+```
+
+
diff --git a/src/main/md/Tools/speed_read.md b/src/main/md/Tools/speed_read.md
new file mode 100644
index 00000000..79adeae1
--- /dev/null
+++ b/src/main/md/Tools/speed_read.md
@@ -0,0 +1,26 @@
+# How to read 800 words per minutes
+
+* Use below exercise with pencil
+* During initial practice don't worry about comprehension, it is to improve eye speed and reading muscle memory
+* Rapidly move pencil and try to read on only one direction for 2 minutes
+ * Avoid your eye move going back
+ * Stop using snapshot reading apprach
+* Now use exactly 0.5 second for one line, and move fast to next line continiously for next 3 minutes
+ * Improving the last step, little more challenging
+ * This exercise should be done for 3 minutes
+* Try to use your peripheral vision, and increase speed
+ * Start from second word and complete last but one word and move to next line but start from second word
+ * This would also improves periperhal vision and reading speed
+ * This exercise should be done for 1 minutes
+ * Here in this exercise, we can use 1 second for each line
+* Try to use your peripheral vision, and increase speed but now for 2 words (start with 3rd word, and stop at 3rd last word)
+ * This exercise should be done for 1 minutes
+* Try to use your peripheral vision, and increase speed but now for 3 words (start with 3rd word, and stop at 3rd last word)
+ * Here in this exercise, we can use 0.5 second for each line
+ * This exercise should be done for 3 minutes
+
+
+
+# References
+* [Learn To Speed Read: Read 300% Faster in 15 Minutes](https://www.youtube.com/watch?v=PZqXBhGR_W8)
+* [Measure reading speed](https://www.staples.com/sbd/cre/marketing/technology-research-centers/ereaders/speed-reader/index.html)
\ No newline at end of file
diff --git a/src/main/md/Tools/spring-security.md b/src/main/md/Tools/spring-security.md
new file mode 100644
index 00000000..22fe7e5b
--- /dev/null
+++ b/src/main/md/Tools/spring-security.md
@@ -0,0 +1,127 @@
+## Security
+
+* Castle approach / Multiple layers of defense
+* Browser, Url, Classes and methods
+
+## Lombox
+# @Getter
+# @Setter
+# @AllArgsConstructor
+# @RequiredArgsConstructor
+# @EqualsAndHashCode
+# Delombok
+# @Delegate
+# @Cleanup
+# @Builder
+
+
+## Spring Security
+* Heavy use of filter
+* [Filter](https://tomcat.apache.org/tomcat-9.0-doc/servletapi/javax/servlet/http/HttpFilter.html)
+ * init(servletcofig)
+ * doFilter(req, res)
+ * destrory()
+* [DelegatingFilterSecuity](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/filter/DelegatingFilterProxy.html)
+ * It would forward all the request to other spring security filter
+ * Other security filter would be responsible for authentication/authorization
+ * registered in web.xml
+* DelegatingFilterSecuity delegates to FilterChainProxy
+* FilterChainProxy delegates to SecurityFilterChain
+* Sample XML
+```xml
+
+ springSecurityFilterChain
+ org.springframework.web.filter.DelegatingFilterProxy
+
+
+ springSecurityFilterChain
+ /*
+
+
+ org.springframework.web.context.ContextLoaderListener
+
+```
+* There could be multiple filter chain for different url pattern
+ * /portfolio - BasicAuthenticaionFilter
+ * /admin - DigestAuthenticaionFilter
+* [SecurityFilterChain](https://docs.spring.io/spring-security/site/docs/3.0.x/reference/security-filter-chain.html)
+ *
+ ```java
+ interface SecurityFilterChain{
+ boolean matches(HttpServletRequest req);
+ List getFilters();
+ }
+ ```
+* data class SecurityContext(auhtentication)
+* data class SecurityContextHolder(securityContext)
+* FilterChain
+ * SecurityContextPersistenceFilter
+ * AuthenticationFilters
+ * Basic
+ * Digest
+ * OIDC
+ * RememberMeAuthenticationFilter
+ * AnonymousAuthenticationFilter
+ * ExceptionTranslationFilter
+ * FilterSecurityInterceptor
+ * Interceptor performs authroization
+* SecurityContextPersistenceFilter
+ * Manages security context
+ * Tries to find securityContext from SecurityContextRepository
+ * In WebApplication SecurityContextRepository is Session using HttpSessionRepository
+ * SecurityContextHolder is ThreadLocal
+
+
+## Authentication
+* Many flavours of authentication
+ * BasicAuthenticationFilter
+ * OpenIDAuthenticationFilter
+ * DigestAuthenticationFilter
+ * UsernamePasswordAuthenticationFilter
+* Authentication filter intercepts requests and extracts authenticationToken
+ * Authentication filter generates AutenticationRequest
+ * Authentication filter delegates AutenticationMnager to authenticate AutenticationRequest
+ * There are many flavours of tokens are there
+ * UsernamePasswordAuthenticationToken
+ * OpenIDAuthenticationToken
+* Filter delegates authentication to AuthenticationManager
+* AuthenticationManager delegates to one ore more AuthenticationProvider
+ * OpenIDAuthenticationProvider
+ * DaoAuthenticationProvider
+ * LdapAuthenticationProvider
+ * Provider delegates to UserDetailsService
+ * Identity store is accessed by UserDetailService
+ * Every identity service requires its own Service and AuthenticationProvider
+ * DigestAuthenticationFilter is an exception, it doesn't delegates rather directly interacts with UserDetailsService
+*
+ ```java
+ public interface AuthenticationManager
+ {
+ public Authentication authenticate(Authentication authentication) throws AuthenticationException
+ }
+ ```
+*
+ ```java
+ public interface Authentication
+ {
+ public boolean isAuthenticated();
+ public boolean getPrincipal();
+ Object getCredentials(); //password or ssl
+ Collection extends GrantedAuthority> getAuthorities();
+ }
+ ```
+*
+ ```java
+ public interface AuthenticationProvider
+ {
+ public Autentication authenticate(Aunthentication authentication) throws AutenticationException
+ public boolean supprts(class> authentication)
+ }
+ public interface UserDetailsInterface{
+ UserDetails loadUserByUsername(String username) throws UsernameNotFoundException
+ }
+ ```
+
+## Reference
+* Spring security authentication/authorizaion - building effective layers of defense - pluralsite course
+* [Spring Security Primer](https://spring.io/guides/topicals/spring-security-architecture/)
\ No newline at end of file
diff --git a/src/main/md/Tools/text_to_sql.md b/src/main/md/Tools/text_to_sql.md
new file mode 100644
index 00000000..53a0b8c5
--- /dev/null
+++ b/src/main/md/Tools/text_to_sql.md
@@ -0,0 +1,69 @@
+* [TextQL: Execute SQL Against CSV or TSV](https://news.ycombinator.com/item?id=16781294)
+* SQLite can do
+ * ```bash
+ sqlite> create table test (id integer, datatype_id integer, level integer, meaning text);
+ sqlite> .separator ","
+ sqlite> .import no_yes.csv test
+ ```
+ * sqlite import will not accept stdin, breaking unix pipes. textql will happily do so.
+ * sqllite - Need to create table upfront
+ * https://github.com/mingodad/sqlite3-hashcode-2018
+ * textql supports quote escaped delimiters, sqlite does not.
+ * extql leverages the sqlite in memory database feature as much as possible and only touches disk if asked.
+ * https://github.com/dinedal/textql#key-differences-between-textql-and-sqlite-importing
+* https://jsvine.github.io/intro-to-visidata/
+ * Quickly open, explore, summarize, and analyze datasets
+ * Wonderul documentation
+* http://harelba.github.io/q/
+ * q - the name can make it a littler harder to find if you don't remember the repo.
+ * q can read stdin and write CSV to stdout
+ * q can chain several queries on the command line, or use it in series with other with other commands such as cat, grep, sed, etc.
+ * Highly recommended if you like SQL and deal with delimited files.
+ * q "SELECT COUNT(*) FROM ./clicks_file.csv WHERE c3 > 32.3"
+ * ps -ef | q -H "SELECT UID,COUNT(*) cnt FROM - GROUP BY UID ORDER BY cnt DESC LIMIT 3"
+ * Supports multiple encodin
+* https://csvkit.readthedocs.io/en/1.0.3/
+ * csvsql --query "select name from data where age > 30" data.csv > new.csv
+ * Csvsql uses sqlite under neath and you can do some nice things with this like joins, using sql functions, etc
+ * amazon athena that allows to do similar things in s3 at scale.
+ * Csvkit is great with pipes and you can also easily convert between csv tsv and even stuff like json
+* Python's pandas library can also do sql-like queries against csv data.
+* Charlatan - https://github.com/BatchLabs/charlatan#charlatan
+ * much lower memory footprint and faster execution
+ * works on stream
+ * subset of SQL that’s implemented
+* [Windows you may consider using Log Parser Studio](https://gallery.technet.microsoft.com/office/Log-Parser-Studio-cd458765)
+ * https://en.m.wikipedia.org/wiki/Logparser
+* [Apache Drill](https://drill.apache.org/)
+ * It works perfectly fine on local CSV and JSON files
+* [BigBash](http://bigbash.it)
+ * Converts an Sql statement to a bash one-liner (using sed, grep, awk,...)
+ * Can execute the query using linux commands
+ * on very large file(s) because of the streaming nature
+* https://github.com/kamac/AskXML
+ * Works on XML and JSON
+* ClickHouse
+ * ```bash
+ ps aux | tail -n +2 | awk '{ printf("%s\t%s\n", $1, $4) }' | \
+ clickhouse-local -S "user String, mem Float64" \
+ -q "SELECT user, round(sum(mem), 2) as memTotal FROM table GROUP BY user ORDER BY memTotal DESC FORMAT Pretty"
+ ```
+* Sqawk
+ * ```bash
+ $ ps aux | sqawk -output table \
+ 'select user, round(sum("%mem"), 2) as memtotal
+ from a
+ group by user
+ order by memtotal desc' \
+ header=1
+ ```
+* http://quisp.sourceforge.net/shsqlhome.html
+ * Similat to textql
+* Facebook's osquery.
+ * Turns even complex structures into sql tables
+* https://www.lnav.org/
+ * An advanced log file viewer
+ * File formats are automatically detected and compressed files are unpacked on the fly.
+* fsql - https://metacpan.org/pod/distribution/App-fsql/bin/fsql
+ * lets you perform SQL queries against one or several "flat" files of various formats.
+ * can modify data (currently CSV only) via SQL INSERT or DELETE commands.
\ No newline at end of file
diff --git a/src/main/md/Tools/tools_to_explore.md b/src/main/md/Tools/tools_to_explore.md
new file mode 100644
index 00000000..38fa6c7e
--- /dev/null
+++ b/src/main/md/Tools/tools_to_explore.md
@@ -0,0 +1,5 @@
+* [puppeteer recorder](https://github.com/checkly/puppeteer-recorder)
+* Video speed controller chrome extension
+* httpie
+* tmux
+* [paste command] (https://www.geeksforgeeks.org/paste-command-linux-examples/)
diff --git a/src/main/md/Tools/virtualbox.md b/src/main/md/Tools/virtualbox.md
new file mode 100644
index 00000000..52673fd5
--- /dev/null
+++ b/src/main/md/Tools/virtualbox.md
@@ -0,0 +1,7 @@
+# Virutal box
+* Guest os is running inside VM
+* Host os is the one which hosting virtualbox itself
+
+
+# Virutalbox network
+* When simple NAT is being used ensure all the service are listening on port 0.0.0.0 instead of 127.0.0.1, so that host can reach the guest OS
diff --git a/src/main/md/Tools/vscode.md b/src/main/md/Tools/vscode.md
new file mode 100644
index 00000000..3bfff7e3
--- /dev/null
+++ b/src/main/md/Tools/vscode.md
@@ -0,0 +1,52 @@
+# Ctrl + Shift + P > "Interactive Playground" > "Practice"
+* ctrl + p + ? = Navigation tips from vscode
+# https://vscodecandothat.com/
+
+
+
+* select variable and press f2 - rename/refactor variable.
+* select variable and press ctl+f2 - rename similar text (non programming language).
+* ctrl + pp - goto the recently closed file
+* zen mode (full screen)
+* ctrl + p + @ = Navigate faster within the editor
+* ctrl + p + @ + : = Split editor with classes, methods and functions
+*
+
+## Settings
+* User settings - %APPDATA%\Code\User\settings.json
+* "files.eol": "\n" --setttings
+* "editor.mouseWheelZoom"
+* editor.fontFamily=fira
+
+# Icons and Theme
+* Materials - Icon Theme
+* Cobalt2
+
+* [Alt + H + K](Keyboard shortcuts)
+* [Ctrl + 1 / 2](Swith between split editor)
+* [Ctrl + B](Toggle between sidebar)
+* [Ctrl + `]([Ctrl + J] (Toggle between lower terminal windowd)
+
+
+* [Code runner](https://github.com/formulahendry/vscode-code-runner)
+* [VS Code emmet](https://code.visualstudio.com/docs/editor/emmet)
+
+
+ * https://docs.emmet.io/cheatsheet-a5.pdf
+* [Visual Studio Code Can Do That: Tips & Tricks](https://www.youtube.com/watch?v=OOG3xcUQY5k)
+* https://wiki.nikitavoloboev.xyz/text-editors/vs-code/vs-code-extensions.html
+* https://code.visualstudio.com/blogs/2017/11/15/live-share
+
+* Checklist
+* Material, Cobalt2, Fira Font and font.ligature
+* Mouse zoom
+
+## Plugins
+* Quokka.js
+* REST Client
+* Prettier
+* 30 seconds of code
+
+# References
+* Command Palette
+* [10 Essential Plugins](https://hackernoon.com/10-essential-vs-code-extensions-for-javascript-developers-in-2019-e8320e3f421e)
\ No newline at end of file
diff --git a/src/main/md/W3SelectorApi.md b/src/main/md/W3SelectorApi.md
new file mode 100644
index 00000000..fca4eb1b
--- /dev/null
+++ b/src/main/md/W3SelectorApi.md
@@ -0,0 +1,33 @@
+# W3C Selectors API
+* Basic API used accepted to iterate and navigate and read dom nodes, All browswers, JSoup and D3S
+* Even if the method is invoked on a sepcific node element, selectors are still evaluated in the context of the entire document.
+* The querySelector() methods on the Document, DocumentFragment, and Element interfaces must return the first matching Element node within the subtrees of the context node. If there is no matching Element, the method must return null.
+* The querySelectorAll() methods on the Document, DocumentFragment, and Element interfaces must return a NodeList containing all of the matching Element nodes within the subtrees of the context node, in document order. If there are no matching nodes, the method must return an empty NodeList.
+
+
+| Selector | Usage | Example |
+|:--------:|:--------:|:--------:|
+| #id | "#content" | Select using id of the tag, Generally container tag |
+| p.description | className applied to a tag p | if we need to select all tag that has a class description |
+| "selector1, selector2" | "p.warning, p.error" | select all p elements in the document that have a class of either "error" or "warning". |
+| img:nth-of-type(n) | "#content img:nth-of-type(1)" | returns the 1st image within container "#content" |
+| form[action="feedback.php"] | "#content" | Select using id of the tag, Generally container tag } |
+| #body img[src^="http" | within body | selects 1st image with src beginning with "http" |
+| #body img[src^="http" | within body | selects 1st image with src ending with "http" |
+
+
+## DOM API
+* Node and Element, NamedNodeMap, NodeList
+* Document, DocumentFragment
+* Document interface gives the factory methods needed to create elements, nodes
+```IDL
+# - 0 index
+interface NodeList {
+ Node item(in unsigned long index);
+ readonly attribute unsigned long length;
+};
+```
+
+* [DOM API](https://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-536297177)
+* [Selector API](https://www.w3.org/TR/selectors-api/)
+* [Examples](http://www.javascriptkit.com/dhtmltutors/css_selectors_api.shtml)
\ No newline at end of file
diff --git a/src/main/md/Wise_use_of_time.md b/src/main/md/Wise_use_of_time.md
new file mode 100644
index 00000000..48dce785
--- /dev/null
+++ b/src/main/md/Wise_use_of_time.md
@@ -0,0 +1,12 @@
+* Creating many good habits would by default occupy time effectively
+
+
+* Yoga
+* Meditation
+* Listening some ted talk
+* Listening some spritual talks
+* Listening technical conference videos
+* Play/Learn music
+* Learning astrology
+* Reading book that was planned to read "someday"
+*
\ No newline at end of file
diff --git a/src/main/md/Work/BuildAppInModernWay.md b/src/main/md/Work/BuildAppInModernWay.md
new file mode 100644
index 00000000..65374856
--- /dev/null
+++ b/src/main/md/Work/BuildAppInModernWay.md
@@ -0,0 +1,7 @@
+* https://webflow.com/
+* Airtable
+* Zapier
+
+
+## Reference
+* [What people build](https://news.ycombinator.com/item?id=19701783)
\ No newline at end of file
diff --git a/src/main/md/Work/Complements.md b/src/main/md/Work/Complements.md
new file mode 100644
index 00000000..ad378ff4
--- /dev/null
+++ b/src/main/md/Work/Complements.md
@@ -0,0 +1,27 @@
+* He's friendly and can count on him to help people
+* Always available when needed and quite responsive
+* She/he was able to build relationship
+* Was able to drive various engagements with top executives
+* He has very good functional knowledge and also very good management skills.
+* He is amiable, approachable and team player.
+* He has a perfect mix of soft skills and technical proficiency.
+* Good problem solving ability and helping nature.
+* Who has vast technical knowledge and the generous ability to share it.
+* He is always focused on business value, and excels in translating to..
+* He is detail oriented and has ability to manage complex projects
+* He collaborate very well across the entire organization both horizontally and vertically.
+
+
+# For constructive - Focus on behavior rather than the person
+
+* You demonstrate a high degree of confidence when you answer customer questions about registration procedures, rather than "Your communication skills are good"
+* You talked considerably during the staff meeting, which prevented me from getting to some of the main points, rather than "You talk too much"
+
+* THE SIX STEP METHOD FOR GIVING CONSTRUCTIVE FEEDBACK
+
+* Step 1: State the constructive purpose of your feedback.
+* Step 2: Describe specifically what you have observed.
+* Step 3: Describe your reactions.
+* Step 4: Give the other person an opportunity to respond
+* Step 5: Offer specific suggestions.
+* Step 6: Summarize and express your support
\ No newline at end of file
diff --git a/src/main/md/Work/DevOps_SRE.md b/src/main/md/Work/DevOps_SRE.md
new file mode 100644
index 00000000..98e0eee6
--- /dev/null
+++ b/src/main/md/Work/DevOps_SRE.md
@@ -0,0 +1,40 @@
+# Which is better DevOps or SRE?
+## DevOps
+* Back in the day operators and developers had a lot of contention developers used to throw their code over the metaphorical wall and operators were responsible for keeping that code running in production operators had little understanding of the code bases and developers had little understanding of operational practices
+* Developers were concerned with shipping code and operators were concerned with reliability this misalignment often caused tension within the organization
+* Developers were responsible for features and the operators were responsible for stability
+* Being the developers wanted to move faster to get their features out faster a
+* Operators wanted to move slower to keep things stable DevOps is a set of practices and a culture designed to break down those barriers between developers operators and other parts of the organization
+----
+## DevOps five key areas
+* first reduce organizational silos
+ * by breaking down barriers across teams
+ * we can increase collaboration and thoroughput
+* second accept failure is normal computers are inherently unreliable
+ * so we can't expect perfection
+ * when we introduce humans into the system we get even more imperfection
+* third implement gradual change
+ * changes are not small, incremental changes easier to review
+ * but in the event that a gradual change does make a bug in production it allows us to reduce our mean time to recover making it simple to rollback
+* fourth - leverage tools
+ * we need to leverage tooling and automation
+* fifth
+ * we need to measure everything
+ * measurement is a critical gauge for success
+ * Without a way a measure of our first four pillars were successful we would have no way of knowing if they were so
+```java
+ class SRE implements DevOps
+```
+
+## Role of SRE
+* SRE share ownership of production with our developers
+* SRE use the same tooling in order to make sure everyone has the same view and same approach to working with production
+* SRE should have blameless post-mortems where SRE should make sure that the failures that happen in our production systems don't happen the exact same way more than once
+* SRE accept the failures as normal by encoding a concept of an error
+* SRE can try canary things that roll things out to a small percentage of the fleet before move them out for all
+* Auotmate as much as possible.
+* Fifth when you talked about measuring everything
+ * Measuring the reliability and health of our systems
+
+## References
+* [DevOps vs SRE](https://www.youtube.com/watch?time_continue=297&v=uTEL8Ff1Zvk)_
\ No newline at end of file
diff --git a/src/main/md/Work/DifficultConversation.md b/src/main/md/Work/DifficultConversation.md
new file mode 100644
index 00000000..6335b39d
--- /dev/null
+++ b/src/main/md/Work/DifficultConversation.md
@@ -0,0 +1,131 @@
+## Don't delay the difficulat conversation
+## Great communication
+* Great communication isn’t just about what you say, it’s about what other people hear.
+----
+## Myths to delay
+* ‘It will sort itself out.’;
+* ‘They’ll eventually stop doing it.’;
+* ‘There are more important things to focus on.’
+----
+## Balancing empathy
+* Too much empathy, we forget the cause behind the conversation
+* Too much of our need, loose the empathy
+----
+## NVC (Non-violent communiation)
+1. When ____[observation],
+1. I feel ____[emotion],
+1. because I’m needing some ____[universal needs].
+1. Would you be able to ____[request]?
+----
+## NVC makes some subtle but critical distinctions:
+1. Observations vs. evaluations
+1. Emotions vs. thoughts
+1. Universal needs vs. strategies
+1. Requests vs. demands
+----
+## Evaluation vs Observation
+* What we saw or hear without judgement is Observation.
+* What we interpret what we saw was evulation (can have emotion attached)
+----
+## Example of Evaluation vs Observation
+1. Evaluation: ‘You are lazy.’ (a character attack)
+1. Observation: ‘You said that you’d send the document last week and I haven’t received it.’
+1. Evaluation: ‘Your work is sloppy.’ (a criticism)
+1. Observation: ‘Three of the numbers in the report were inaccurate.’
+1. Evaluation: ‘You’re always late.’ (a generalisation)
+1. Observation: ‘You arrived ten minutes late to the meeting this morning.’
+1. Evaluation: You ignored me.’ (implied intent)
+1. Observation: ‘I sent you two emails and I haven’t received a response.’----
+----
+## Emotions vs Thoughts
+1. Emotions has powerful impact on other people
+1. During difficult coversation watch-out words about emotions, it describes how they feel
+ * Annoyed/Anxious/Confused/Embarrassed
+ * Hurt/Sad/Scared/Tired
+----
+## What comes after I feel, is a thought
+* What comes after ‘I feel,’ isn’t an emotion — it’s a thought.
+----
+## Can we share our thoughts on difficult conversation
+* Sharing our thoughts in difficult conversations can often get us into trouble
+----
+## Emotions that require extra attention and curiosity before sharing them
+* Anger
+* Evluative words
+----
+## Emotion - Anger
+* Most often hides more painful other emotion
+ * Hurt
+ * Shame
+ * Cheated
+* Find what is underneath the anger before difficult conversation
+* Anger would let speak impulsively, will let us forget NVC
+----
+## Evluative words
+* Some of the evaluative words are indirect question
+ * I feel blamed (you are blaming me?)
+* Recognize evaluative words and find how you feel and impacts you emotionally.
+ * Judged/Misunderstood/Rejected/Hurt
+----
+## Universal Needs
+* Everyone has few univesal needs
+ * Autonomy/Collaboration/Consistency/Clarity
+ * Integrity/Recognition/Respect/Reassurance
+ * Security/Support/Understanding
+* Universal needs can be met using strategy
+----
+## Universal Needs
+* Need: ‘I need some transparency.’
+ * Strategy: ‘I need you to copy me into every email.’
+* Need: I need support
+ * Strategy: ‘I need support from you.’
+----
+## Sample conversation
+* I request that you be more respectful’
+ * ‘I request that you arrive at meetings on time.’
+* ‘I request that you don’t dismiss other people’s ideas straightaway,’
+ * ‘I request that when a team member shares an idea, you ask two or three probing questions before sharing your conclusion.’
+* Ensure on same page
+ * ‘Just so we know we’re on the same page, could you play back what I’m asking of you?’
+----
+## What not to say?
+* Say what you want, not what you don’t want.
+----
+## Sample communications
+* Try to communicate within 30-40 words.
+ * Difficult but should learn
+* Preparation for 30–40 words may sound like a lot of work. It is a lot of work.
+* To a co-founder: ‘When you said, “I’m not happy with your work,” to me in front of the team, I felt embarrassed because it didn’t meet my need for trust and recognition. Please, could we set up a weekly one-on-one session to share feedback in private?’
+* To an investor: ‘I haven’t received any responses from the last three monthly updates. I’m feeling concerned because I need input. Please, would you mind getting back to me with responses to my questions in the last update?’
+* To a teammate: ‘You arrived 10 minutes late to the last three team meetings. I am frustrated because, as a team, we have a need for efficiency. Please, could you help me understand what’s happening?’
+----
+## Despite all effort, when there is 'No', how to react?
+* Delivering 'NO' was difficult to other person
+* Show empathy - Empathy is the gift of hearing someone without taking it personally
+* When you have to say ‘no’
+ * State the underlying need that stops you from saying ‘yes’.
+## Effective communication consequences
+* Purpose is to protect our needs, not to punish the other person.
+----
+##Key points
+1. If you understand the subconversations that exist within a difficult conversation, you will be able to manage the issues more effectively.
+1. Never assume that you understand someone else’s motives.
+1. Instead of trying to assign blame, consider how harnessing the associated anger will help you prevent a bad outcome in future.
+1. Learn to see the “third story,” the impartial account, rather than fighting over whose story is true.
+1. Venting your feelings is not useful.
+1. Describing them carefully can be.
+1. Don’t try to control other people’s responses.
+1. You aren’t perfect and neither is anyone else.
+1. The best way to get someone to listen to you is to listen to them first.
+1. Reframing a difficult conversation is a great way to defuse it.
+1. Pick your difficult conversations carefully. You won’t live long enough to have them all.
+----
+## Reference
+[Difficult conversation guide](https://medium.dave-bailey.com/the-essential-guide-to-difficult-conversations-41f736e63ccf)
+[Comments on Hacker News](https://news.ycombinator.com/item?id=19490573)
+[How to give (and receive) constructive criticism: a primer](https://www.reddit.com/r/femalefashionadvice/comments/3jfxk8/how_to_give_and_receive_constructive_criticism_a/)
+[When giving negative feedback](https://www.reddit.com/r/LifeProTips/comments/9e4oc9/lpt_when_giving_negative_feedback_take_a_small/)
+[Unable to receieve cc](https://www.reddit.com/r/howtonotgiveafuck/comments/29lvjq/i_am_unable_to_handle_constructive_criticism_in_a/)
+[Emotional Literacy](https://en.wikipedia.org/wiki/Emotional_literacy)
+[NVC Marshall Rosenberg - San Francisco Workshop - FULL ENGLISH SUBTITLES TRANSCRIPTION](https://www.youtube.com/watch?v=l7TONauJGfc)
+----
\ No newline at end of file
diff --git a/src/main/md/Work/WhyIQuitGoogle.md b/src/main/md/Work/WhyIQuitGoogle.md
new file mode 100644
index 00000000..7467f949
--- /dev/null
+++ b/src/main/md/Work/WhyIQuitGoogle.md
@@ -0,0 +1,15 @@
+* You're only promoted when you're consistently showing you're working at the level you want to be promoted to
+* When the existence of an indicator of a problem becomes a metric in itself, it ceases to indicate anything
+ * "When a measurement becomes a target, it ceases to be a good measurement".
+ * https://en.wikipedia.org/wiki/Goodhart%27s_law
+ * https://en.wikipedia.org/wiki/Campbell%27s_law
+
+* When there is new task, Employee asked himself whether it would help his case for promotion. If the answer was no, he didn’t do it.
+
+* [Reddit: Why I Quit google](https://www.reddit.com/r/programming/comments/80whkc/why_i_quit_google_to_work_for_myself/)
+* [HackerNews: Why I Quit google](https://news.ycombinator.com/item?id=16483241)
+
+* Contracting
+ * Maybe that small companies in areas with no local devs will take on remote contractors because they have no other choice?
+ * It's less about what you know (pass some baseline of competence/ability) and more about targeting the right market and knowing the right people
+ *
\ No newline at end of file
diff --git a/src/main/md/Work/dress_code.md b/src/main/md/Work/dress_code.md
new file mode 100644
index 00000000..bf4febdd
--- /dev/null
+++ b/src/main/md/Work/dress_code.md
@@ -0,0 +1,10 @@
+* Formal business attire
+* Casual pants, capris
+* Business appropriate casual shirts, polo shirts, sweaters, tops
+* Denim and blue jeans
+* T-Shirts and atheletics shoes are not cosnidered business causals
+
+## Casual Dress Code
+* Denim/Jeans
+* Athelitic Shoes and casual shoes that are in good condition
+* Business Appropriate T-shirts in good condition, prefessional and do not include inappropriate messages or logos
\ No newline at end of file
diff --git a/src/main/md/books/Better_Books_ToRead.md b/src/main/md/books/Better_Books_ToRead.md
new file mode 100644
index 00000000..63259d74
--- /dev/null
+++ b/src/main/md/books/Better_Books_ToRead.md
@@ -0,0 +1,80 @@
+# Priority
+* [Event-Driven Microservices - Chris Richardson] (https://www.safaribooksonline.com/videos/event-driven-microservices/9781491944165)
+* Code: The Hidden Language of Computer Hardware and Software
+* Understanding Computation - From Simple Machines to Impossible Programs
+* Building Microservices: Designing Fine-Grained Systems
+* SRE book
+* Cassandra: The Definitive Guide: Distributed Data at Web Scale 2nd Edition
+* Fluent Python
+
+
+
+## Done
+* [Elasticsearch: The Definitive Guide] (https://www.safaribooksonline.com/library/view/elasticsearch-the-definitive/9781449358532/)
+
+# Communication
+* Marshall Rosenberg - https://www.amazon.co.uk/Nonviolent-Communication-Language-Marshall-Rosenberg/dp/1892005034
+
+# Math series
+* The Signal and the Noise: Why So Many Predictions Fail--but Some Don't (Statistics)
+* Everybody-Lies-Internet-About-Really
+* Weapons of Math Destruction: How Big Data Increases Inequality and Threatens Democracy
+* The Theory That Would Not Die (Bayes' rule)
+* Bayes' Theorem Examples: A Visual Introduction For Beginners
+* How Not to Be Wrong - Jordan Ellenberg
+
+# Memory
+* Unlimited Memory: How to Use Advanced Learning Strategies to Learn Faster, Remember More and be More Productive Kindle Edition by Kevin Horsley
+*
+
+# Demystified Math series
+* Discrete Mathematics
+* Calculus DeMYSTiFieD
+* Math Proofs Demystified by Stan Gibilisco
+* Math Word Problems Demystified by Allan Bluman
+* Mathematica Demystified by Jim Hoste
+* Technical Math Demystified by Stan Gibilisco
+* Business Math Demystified by Allan Bluman
+* Everyday Math Demystified by Stan Gibilisco
+* Advanced Statistics Demystified by Larry Stephens
+* Business Statistics Demystified by Steven M Kemp
+* Engineering Statistics Demystified by Larry J. Stephens
+* Statistical Process Control Demystified by Paul Keller
+* Statistics Demystified by Stan Gibilisco
+* Differential Equations Demystified by Steven G. Krantz
+* Probability Demystified 2/E 2nd Edition
+* Geometry DeMYSTiFieD, 2nd Edition Stan Gibilisco
+* Trigonometry Demystified 2/E
+
+## Cloud Books
+* Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations
+* Cloudonomics, + Website: The Business Value of Cloud Computing 1st Edition
+* Cloud Native Java: Designing Resilient Systems with Spring Boot, Spring Cloud, and Cloud Foundry
+* INSPIRED: How to Create Tech Products Customers Love
+* Product Roadmaps Relaunched: How to Set Direction while Embracing Uncertainty
+
+
+# Other books
+* Amazon "Best Sellers in Computer Science"
+* https://www.amazon.com/Best-Sellers-Books-Computer-Science/zgbs/books/3508/ref=zg_bs_nav_b_2_5
+* Tech books that were translated to other languages
+* https://www.amazon.com/Best-Sellers-Kindle-Store-Information-Management/zgbs/digital-text/154927011/ref=zg_bs_nav_kstore_5_154902011
+* https://www.amazon.com/Heart-Logs-Stream-Processing-Integration
+* The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win 5th Anniversary Edition
+* Everybody Lies: Big Data, New Data, and What the Internet Can Tell Us About Who We Really Are
+* Thinking in Systems: A Primer
+* The Design of Everyday Things: Revised and Expanded Edition
+* Principles: Life and Work
+
+* ["Cartoon guide to Physics"](https://www.amazon.com/Cartoon-Guide-Physics/dp/0062731009)
+* ["The Cartoon Guide to Calculus"](https://www.amazon.com/Cartoon-Guide-Calculus/dp/0061689092/ref=sr_1_5?s=books&ie=UTF8&qid=1537065864&sr=1-5&keywords=cartoon+guide+to+statistics&dpID=51gQZ9XpaYL&preST=_SX218_BO1,204,203,200_QL40_&dpSrc=srch)
+* Larry Gonick - books - https://www.amazon.com/Larry-Gonick/e/B000AQ75IY/ref=dp_byline_cont_book_1
+
+# Self help books
+* The Subtle Art of Not Giving a F*ck: A Counterintuitive Approach to Living a Good Life - Mark Manson
+* Thinking in Bets - Annie Duke
+* How will you measure your Life - Clayton M/Christensen
+* Stress Proof - Mithu Storoni
+
+## Ebooks
+* [The subtle art of not giving fuck](https://issuu.com/magiimaa/docs/_mark_hanson__the_subtle_art_of_not)
\ No newline at end of file
diff --git a/src/main/md/books/Notes/5 elements of effective thinking.md b/src/main/md/books/Notes/5 elements of effective thinking.md
new file mode 100644
index 00000000..a9ccc482
--- /dev/null
+++ b/src/main/md/books/Notes/5 elements of effective thinking.md
@@ -0,0 +1,85 @@
+# Essential thinking
+* Thought provking ideas to provke thoughts
+* Curiousity, Obsession, Dogged Endurance, Combined with Self-Criticism bring new ideas (Einestein)
+* Education is all about how we solve problems even after forgetting everything that we learnt
+
+## Esential & Core
+* Master the core
+* Shadows are colors of the sky
+* What does the Picasso - "The Bull" diagram teaches?
+* Cut the bull, describe what you see (Stop assuming, bullshit)
+* Earth
+ * Earth - Deep understanding
+ * Fire - Effective Failure
+ * Air - Question
+ * Water - Flow of Idea
+----
+## Understand Deeply
+* Understanding is not yes/no, it is spectrum
+* We understand some aspect of understanding
+* There are aspects of this issue that I don't understand, I now must uncover them and work toward making greater meaning.
+
+1. Start with simple
+ * When complex issue is encountered
+ * Find simplest problem that is still unsolvable
+ * find simper version of it, and solve it
+1. Spot the specific
+ * Find special case and scrtuanize micro-level details, and try to generalize
+1. Add the adjuctive
+ * Challenge yourself to add as many as adjective as possible
+ * Do not leave an adjective for another descriptor untill some new facet is revealed
+ * Uncover the hidden confusion or misunderstanding using new adjectives
+ * First-world-war, the war that ends all the war, 2nd world-war
+----
+## Fail Effectively
+* We may not know what is the right way to do it right, but we can always start with someting wrong
+* Failure as a process to solve the problem
+ * Kid solving 36 into to two halves
+ * Find answer something definitely it is wrong (16)
+ * He answered 16, and successive question, what makes to prove that 16 is wrong?
+ * Kid came back with 18 is the answer
+* There is no better teacher than one's own failure, but stay with failure and learn a new lesson
+* Fail fast
+ * Fail fast, revise, rethink and relearn
+ * Don't stare at screen, rather fail fast with new draft mail
+ * Don't stare at screen, rather fail fast with buggy code that doesn't even compile
+* Fail again - n times
+ * For enormous task, should fail n times before succeeding
+ * One failure done, nine to go
+* Fail intentionally
+ * Clever failed ideas are started as failed attempts
+----
+## Create questions
+* Creating questions makes us from bystander to active participant
+* Prompt - "What are your questions?"
+* What are your questions to share with this group?
+* One who raises question is open minded
+* What is the real issue here?
+* Raise "What if questions?"
+* Fundamental Question
+ * What does the simples case look like?
+ * What happens in that trivial situation?
+* Ask something else
+ * What is a different but related question?
+ * What is the opposite point of view?
+----
+## Go with the Flow of Ideas
+* With one idea in hand, what is next?
+* Extend the current idea
+* Generalize
+* Reapply this new notion
+* Run down all the paths of ideas till the dead-end and learn, and come back
+----
+## Embrace Doubt
+* Opposite of doubt is not certainity, it is closed mind
+* What if I am wrong?
+* Empathize without sympathize for opposite view
+* Live and believe opposite view for certain time as if it logically make sense
+* Live like thiest for a week, and athiest for a week. Try and experiment alternate
+
+## Never stop the idea
+* Tenacity and Perseverance is very important to learn the complete impact about the idea
+----
+## Be open to change
+* Small and incremental changes will transform how we think and engage with the world
+* How we see a problem wille effectively change about our perception over period of time
\ No newline at end of file
diff --git a/src/main/md/books/Notes/5 elements_puzzle.md b/src/main/md/books/Notes/5 elements_puzzle.md
new file mode 100644
index 00000000..4dc3bf71
--- /dev/null
+++ b/src/main/md/books/Notes/5 elements_puzzle.md
@@ -0,0 +1,9 @@
+## Lesson learnt
+* Who' who?
+ * Take some path. If you hit dead end, your initial assumption could be wrong, find all if clasuses
+* When six equals eight?
+ *
+
+# Whos and who, http://highered.blog.statesman.com/2016/05/31/a-sample-puzzle-from-southwestern-presidents-seinfeld-of-classes/
+ * “One afternoon on a college campus over a hundred miles from Georgetown, two students — a math major and a philosophy major — were talking. ‘I am a math major,’ said the one with black hair. ‘I am a philosophy major,’ said the one with red hair. Given that at least one of these students is lying, what color hair does the math major have?”
+
\ No newline at end of file
diff --git a/src/main/md/books/current_reading_queue.md b/src/main/md/books/current_reading_queue.md
new file mode 100644
index 00000000..44f1b895
--- /dev/null
+++ b/src/main/md/books/current_reading_queue.md
@@ -0,0 +1,12 @@
+1. Spring in Action, Fifth Edition
+2. After the trade is made
+3. Securities Operations: A Guide to Trade and Position Management
+4. Productivity book - xyz
+5. deep-learning-with-python
+6. Hands-On-Machine-Learning-with-Scikit-Learn-and-TensorFlow
+7. Java-Comparison-Become-Craftsman-Examples
+8. Effective java 3rd edition
+9. Refactoring: Improving the Design of Existing Code, Second Edition
+10. https://www.goodreads.com/en/book/show/6251150-what-intelligence-tests-miss
+11. https://www.goodreads.com/en/book/show/40647884-making-up-your-own-mind
+12. https://www.goodreads.com/book/show/17286670-scarcity
\ No newline at end of file
diff --git a/src/main/md/books/stoicsm_books.md b/src/main/md/books/stoicsm_books.md
new file mode 100644
index 00000000..aa8495d7
--- /dev/null
+++ b/src/main/md/books/stoicsm_books.md
@@ -0,0 +1,4 @@
+* [Resources for new comers](https://www.reddit.com/r/Stoicism/comments/1br1tp/resources_for_those_new_to_stoicism/)
+* [The Enchiridion](http://classics.mit.edu/Epictetus/epicench.html)
+* [Commentary on Epictetus' Enchiridion](https://web.archive.org/web/20050519213611/http://www.geocities.com/stoicvoice/journal/0301/sc0301b0.htm)
+* [Marcus Aurelius](https://www.iep.utm.edu/marcus/)
\ No newline at end of file
diff --git a/src/main/md/bpm/bpm_readme.md b/src/main/md/bpm/bpm_readme.md
new file mode 100644
index 00000000..605f2c7a
--- /dev/null
+++ b/src/main/md/bpm/bpm_readme.md
@@ -0,0 +1,26 @@
+# Influential developers
+* Tom Baeyens
+ * jBPM-1-4, Activiti 5.0, Signavio and RockScript.io
+* Joram Barrez
+ * jBPM-1-4, Activiti 5.0
+ * http://www.jorambarrez.be/blog/category/bpmn/
+* Paul Holmes-Higgin - Alfresco, Flowable
+ * https://paulhh.wordpress.com/category/flowable/
+* Bernd Rücker - Camunda co-founder
+ * https://blog.bernd-ruecker.com/
+* Daniel Meyer
+ * https://github.com/meyerdan
+
+# Flowable blogs
+* http://bpmn20inaction.blogspot.sg/2017/02/event-sub-processes-in-flowable-6.html
+* http://www.jorambarrez.be/blog/2016/11/02/running-flowable-on-cockroachdb/
+* https://spring.io/blog/2015/03/08/getting-started-with-activiti-and-spring-boot
+* https://paulhh.wordpress.com/category/flowable/
+
+# Camunda blogs
+*
+
+# Tools
+* The Yaoqiang BPMN Editor - Can connect to Activiti engine and thus can be used as a graphical workflow authoring interface
+* The DocuBrain® Workflow Editor - Can connect to Activiti engine
+*
\ No newline at end of file
diff --git a/src/main/md/career.md b/src/main/md/career.md
new file mode 100644
index 00000000..b38f07e0
--- /dev/null
+++ b/src/main/md/career.md
@@ -0,0 +1 @@
+* https://capd.mit.edu/sites/default/files/about/files/career-handbook.pdf
\ No newline at end of file
diff --git a/src/main/md/dataintensive.md b/src/main/md/dataintensive.md
new file mode 100644
index 00000000..0eeb88bd
--- /dev/null
+++ b/src/main/md/dataintensive.md
@@ -0,0 +1,33 @@
+* Read-after-write consistency - Users should always see data that they submitted themselves.
+* Monotonic reads - After users have seen the data at one point in time, they shouldnt later see the data from some earlier point in time.
+* Consistent prefix reads - Users should see the data in a state that makes causal sense: for example, seeing a question and its reply in the correct order.
+* Read Repair
+* r + w > n (replica)
+* Hinted Handoff
+* Failure reasons
+ * different order at different nodes
+ * due to variable network delays
+ * partial failures
+* two operations concurrent if they are both unaware of each other, regardless of the physical time at which they occurred
+* Handling Write Conflicts.
+ * Last write wins
+ * Happens before
+* Use of a version number per replica as well as per key - is kind of vector clock with subtle difference
+* The collection of version numbers from all the replicas is called a version vector
+* Partition
+ * Key range partitioning
+ * Hash partitioning
+ * Hybrid approaches are also possible, for example with a compound key: using one part of the key to identify the partition and another part for the sort order
+ * Document-partitioned indexes (local indexes), where the secondary indexes are stored in the same partition as the primary key and value.
+ * Term-partitioned indexes (global indexes), where the secondary indexes are partitioned separately, using the indexed values
+
+* Transaction
+* Lost Updates
+ * ATOMIC WRITE OPERATIONS - ORM may spoil it
+ * UPDATE counters SET value = value + 1 WHERE key = 'foo';
+ * EXPLICIT LOCKING
+ * AUTOMATICALLY DETECTING LOST UPDATES
+ * COMPARE-AND-SET
+ * last write wins (LWW) conflict resolution method is prone to lost updates - Don't use them
+* Write Skew and Phantoms
+ * d
\ No newline at end of file
diff --git a/src/main/md/dlt.md b/src/main/md/dlt.md
new file mode 100644
index 00000000..2bf6e1ea
--- /dev/null
+++ b/src/main/md/dlt.md
@@ -0,0 +1 @@
+* https://www.asx.com.au/services/chess-replacement.htm
diff --git a/src/main/md/english/vocabulary.md b/src/main/md/english/vocabulary.md
new file mode 100644
index 00000000..d3b07175
--- /dev/null
+++ b/src/main/md/english/vocabulary.md
@@ -0,0 +1,205 @@
+*Apparition* - Ghost like image of a person. “This is not an apparition, but my flesh and blood form."
+
+*Surmise* - Suppose that something is true without having evidence to confirm it.
+
+*Evanescent* - Unstable. Astrally-produced objects are structurally evanescent
+
+*Placate* - to appease or pacify, especially by concessions or conciliatory gestures. After the fight, He now spoke placatingly.
+
+*Spasmodic* - Irregular bursts. My classroom attendance had been very spasmodic.
+
+*Allegory* - 'Story or poem that can be interpreted to reveal hidden meaning, typically a moral or political one' - Though this book looks like fiction, it is kind of allegory of History
+
+*Intransigent* - `Refusing to change one's views` - The most thrillingly intransigent ever uttered: "Heaven and earth shall pass away, but words shall not pass away"
+
+*Nihilism* - Philisophy that argues that life is without objective meaning, purpose or intrinsic value. "If teenagers go through life in nihilistic frme of mind. Nothing would seem matter for them.
+
+*Scornfully* - Is defined as something done without respect. Raising eyebrows scornfully. Laughing scornfully.
+
+*Allegiance* - Loyalty or Commitment to a superior - Monks transfer allegiance from the creation to the Creator
+
+*Automaton* - a moving mechanical device made in imitation of a human being. Example: That job is to make difficult and sometimes unpopular decisions, and not for members of Parliament to become Brexit-delivering automatons as some would have it.
+
+*Occidental* - Relating to the countries of the West. Example: Three scales—major, harmonic minor, melodic minor—are the only ones which Occidental music employs, but Indian music outlines 72 thatas or scales.
+
+*Compunction* - Anxiety arising from awareness of guilt. Example: Despite guru was wrong, He was laughing heartily, without compunction for my disillusionment.
+*Indignant* - Feeling or showing anger or annoyance at what is perceived as unfair treatment. Example: On Friday, Meyer posted an indignant response on Twitter to recent media coverage.
+
+*Surfeit* - An overabundant supply. Having surfeited ourselves on raw oysters, we had to decline the rest of the restaurant's offerings
+
+*Beguile* - Attract to deceive. God will beguile you with an infinite ingenuity.
+
+*Altiloquent* - (Adj) Pompous in speech - You remind me of an occasion some time past when reading a book of an altiloquent style.
+
+Pompous, or pretentious in speech
+*Empyrean* - Highest part of heaven, thought by the ancients to be the realm of pure fire. I cognized the center of the empyrean as a point of intuitive perception in my heart. The empyrean domain where human will and God's will became as one.
+
+*Umbrageous* - Affording shade, spotted with shadows. - A garden with umbrageous trees Is here for you to take your ease.
+
+*Oracular* - Something that's oracular is giving off an oracle-like vibe: mysterious, enigmatic, prophetic and probably a little weird. Example: “When you come to a crossroad, turn right and keep going,” he finally pronounced oracularly.
+
+*Genuflection* - Genuflection or genuflexion is the act of bending at least one knee to the ground. Example: I left the temple without genuflection and walked briskly toward the outlying village of Ranbajpur.
+
+*imperturbable* - Calm - My imperturbable guru listened politely, analyzing himself to see if any shred of truth lay within the denunciation.
+
+*Inveterate* - "Done as a habit and not likely to change" - Example: My guru ordinarily was gentle and affable to guests; his welcome was given with charming cordiality. Yet inveterate egotists sometimes suffered an invigorating shock. I never trust anything he says - the man's an inveterate liar.
+
+*Inveterate* - "Done as a habit and not likely to change" - Example: My guru ordinarily was gentle and affable to guests; his welcome was given with charming cordiality. Yet inveterate egotists sometimes suffered an invigorating shock. I never trust anything he says - the man's an inveterate liar.
+
+*Affable* - Friendly - My guru ordinarily was gentle and affable to guests;
+
+*Supercilious* - (Adj) Arrogant, A supercilious smile or a glance of amused tolerance occasionally betrayed that the newcomers anticipated nothing more than a few pious platitudes.
+
+*Flinty* - (Adj) Severe and determined. Example: I thought that he had a flinty tone about him tonight.
+
+*Imbibe* - To assimilate or to receive into the mind and retain. Examples: From transient teachers of my life I had imbibed a few erroneous lessons. She imbibed vast quantities of coffee.
+*Extol* - (v) to praise highly; laud; eulogize: Example: McConnell has extolled the virtues of Medicare Part D and even called President Obama “smart.”, Sri Yukteshwar extolled the superiority of mental therapy, and often repeated: “Wisdom is the greatest cleanser.”
+
+*ineffable* - Ineffable - Unable to decribe via words. Exeorable - Unable to prevent. I am caught up in the ineffable, seemingly inexorable event that is out of my hands.
+
+*Cauterize* - Cauterization (or cauterisation, or cautery) is a medical practice or technique of burning a part of a body to remove or close off a part of it. Example: The undesirable habit-mechanisms in the brain can be often cauterized.
+*Promiscuous* - demonstrating or implying an unselective approach; indiscriminate or casual. Example: “God does not wish the secrets of His creation revealed promiscuously.
+*Recant* - to announce in public that your past beliefs or statements were wrong and that you no longer agree with them: Example: After a year spent in solitary confinement, he publicly recanted (his views).
+
+*immediacy* - noun - The quality of bringing one into direct and instant involvement with something, giving rise to a sense of urgency or excitement.
+Example: Master was keeping track of student's attention with a devastating immediacy.
+
+*convalescence* -
+ * He is convalescing from his leg injuries.
+ * Youth soccer team members rescued more than two weeks after sudden flooding trapped them in a cave complex in Thailand are now convalescing at a hospital in the northern city of Chiang Rai.
+
+*Perspicacious* - having a ready insight into and understanding of things. His perspicacious grandfather had bought the land as an investment, guessing that there might be gold underground.
+
+*Indelibly* - adjective - making marks that cannot be erased, removed, or the like: The manifest need of it had been deeply and indelibly impressed. That impression became so indelibly fixed that even after my marriage I refused all positions.
+
+*consternation* - /kɒnstəˈneɪʃ(ə)n/ - noun -a feeling of anxiety or dismay, typically at something unexpected. the two … stared at each other in consternation, and neither knew what to do. "I hid my consternation."
+
+*Obeisance* :- Demonstration of an obedient attitude, especially by bowing deeply; a deep bow which demonstrates such an attitude.
+
+*Lugubrious* :- looking or sounding sad and dismal.
+Jitendra maintained a lugubrious silence as our train covered the miles.
+
+*Beneficent*: the quality or state of doing or producing good : the quality or state of being beneficent
+"admired for her beneficence"
+
+exigency - /ˈɛksɪdʒ(ə)nsi,ˈɛɡzɪdʒ(ə)nsi,ɪɡˈzɪdʒ(ə)nsi,ɛɡˈzɪdʒ(ə)nsi
+plural noun: exigencies
+an urgent need or demand.
+"women worked long hours when the exigencies of the family economy demanded it"
+synonyms: need, demand, requirement, want; More
+
+self-effacement noun.
+The act of making oneself, one's actions, etc, inconspicuous, esp because of humility or timidity.
+
+sojourn - /ˈsɒdʒ(ə)n,ˈsɒdʒəː - noun
+a temporary stay. - "her sojourn in Rome"
+synonyms: stay, visit, stop, stopover, residence; More
+stay somewhere temporarily. - "she had sojourned once in Egypt"
+synonyms: stay, live; More
+
+Irrefragable - /ɪˈrɛfrəɡəb(ə)l/
+adjective - not able to be refuted or disproved; indisputable
+With an antenna of irrefragable insight I sensed that my guru knew God
+
+Exhume - /ɛksˈ(h)juːm,ɪɡˈzjuːm/
+"I was exhuming a knowledge not found in lecture halls."
+gerund or present participle: exhuming
+dig out (something buried, especially a corpse) from the ground.
+"the bodies were exhumed on the orders of a judge"
+synonyms: disinter, dig up, unearth, bring out of the ground; More
+GEOLOGY
+expose (a land surface) that was formerly buried.
+"various landforms have been exhumed from beneath a covering of Triassic sediments"
+
+Placidity - a state of freedom from storm or disturbance
+the placidity of the area makes it a perfect vacation spot for people who just want to relax
+Here expanse water placidity reminds us of the vast calmness of Universe.
+
+Chastisement - is the act of scolding or punishing someone. If you talk back to your stern teacher, you won't be surprised by the chastisement that follows. The noun chastisement usually means a verbal reprimand, like the chastisement a basketball coach might give his team after a terrible loss.
+
+capitulation - /kəpɪtjʊˈleɪʃ(ə)n - noun
+the action of ceasing to resist an opponent or demand.
+"she gave a sigh of capitulation"
+
+intercession - /ˌɪntəˈsɛʃ(ə)n/ - noun
+the action of intervening on behalf of another.
+"he only escaped ruin by the intercession of his peers with the king"
+synonyms: mediation, intermediation, negotiation, arbitration, conciliation, intervention, interposition, involvement, action; the action of saying a prayer on behalf of another.
+"prayers of intercession"
+
+Indefatigable - /ˌɪndɪˈfatɪɡəb(ə)l/ adjective
+(of a person or their efforts) persisting tirelessly.
+"an indefatigable defender of human rights"
+synonyms: tireless, untiring, never-tiring, unwearied, unwearying, unflagging;
+
+Noumenon - noun, plural nou·me·na [noo-muh-nuh] /ˈnu mə nə/.
+The object, itself inaccessible to experience, to which a phenomenon is referred for the basis or cause of its sense content.
+a thing in itself, as distinguished from a phenomenon or thing as it appears.
+In metaphysics, the noumenon is a posited object or event that exists independently of human sense and/or perception. The term noumenon is generally used when contrasted with, or in relation to, the term phenomenon, which refers to anything that can be apprehended by or is an object of the senses.
+
+crescograph - A crescograph is a device for measuring the growth in plants. It was invented in the early 20th century by Sir Jagadish Chandra Bose. The Bose crescograph uses a series of clockwork gears and a smoked glass plate to record the movement of the tip of a plant (or its roots) at magnifications of up to 10,000.
+
+Ensanguined - simple past tense and past participle of ensanguine
+Adjective - ensanguined (comparative more ensanguined, superlative most ensanguined)
+Bloodstained, bloody.
+
+ostentatious -/ˌɒstɛnˈteɪʃəs/ - adjective
+characterized by pretentious or showy display; designed to impress.
+"a simple design that is glamorous without being ostentatious"
+synonyms: showy, pretentious, conspicuous, obtrusive, flamboyant, gaudy, garish, tinsel, tinselly, brash, vulgar, loud, extravagant, fancy, ornate, affected, theatrical, actorly, overdone, over-elaborate, kitsch, tasteless; More
+
+garrulous
+/ˈɡar(j)ʊləs/
+adjective
+excessively talkative, especially on trivial matters.
+"a garrulous cab driver"
+synonyms: talkative, loquacious, voluble, verbose, long-winded, chatty, chattery, chattering, gossipy, gossiping, babbling, blathering, prattling, prating, jabbering, gushing, effusive, expansive, forthcoming, conversational, communicative; More
+
+importunity
+Importunity is when you beg someone to do something. "Please, please take me to the mall!" is probably something said by many teens with importunity.
+
+clairvoyance - /klɛːˈvɔɪəns/ - noun
+the supposed faculty of perceiving things or events in the future or beyond normal sensory contact.
+"she stared at the card as if she could contact its writer by clairvoyance"
+
+
+Quaint - attractively unusual or old-fashioned.
+"quaint country cottages"
+synonyms: picturesque, charming, sweet, attractive, pleasantly old-fashioned, old-fashioned, old-world, toytown; More cunning; informaltwee, arty-crafty;
+"narrow streets lead to a quaint bridge over the river"
+
+Aesthete - Appreciator or beauty. Steve jobs is a aesthete
+
+Eponym - Derived from a name
+Alexandria - is an eponym because it is derived from name "Alexandar the Great"
+
+facetious - /fəˈsiːʃəs/ - adjective
+treating serious issues with deliberately inappropriate humour; flippant.
+"a facetious remark"
+synonyms: flippant, flip, glib, frivolous, tongue-in-cheek, waggish, whimsical, joking, jokey, jesting, jocular, playful, roguish, impish, teasing, arch, mischievous, puckish; More
+
+malapropism - /ˈmaləprɒˌpɪz(ə)m/ - noun
+the mistaken use of a word in place of a similar-sounding one, often with an amusing effect (e.g. ‘dance a flamingo ’ instead of flamenco ).
+synonyms: wrong word, solecism, error, misuse, misusage, misapplication, infelicity, slip of the tongue
+
+
+peevish - /ˈpiːvɪʃ/ - adjective
+having or showing an irritable disposition.
+"a thin peevish voice"
+
+maladroit - /ˌmaləˈdrɔɪt/ - adjective
+inefficient or inept; clumsy.
+"both men are unhappy about the maladroit way the matter has been handled"
+synonyms: bungling, awkward, inept, clumsy, bumbling, incompetent, unskilful, heavy-handed, ungainly, inelegant, inexpert, graceless, ungraceful, gauche, unhandy, uncoordinated, gawky, cloddish, clodhopping, all fingers and thumbs, flat-footed, lumbering; More
+
+
+abrogate - /ˈabrəɡeɪt/ - verbFORMAL
+repeal or do away with (a law, right, or formal agreement).
+"a proposal to abrogate temporarily the right to strike"
+synonyms: repudiate, revoke, repeal, rescind, overturn, overrule, override, do away with, annul, cancel, break off, invalidate, nullify, void, negate, dissolve, countermand, veto, declare null and void, discontinue; More
+evade (a responsibility or duty).
+"we believe the board is abrogating its responsibilities to its shareholders
+
+schadenfreude - /ˈʃɑːd(ə)nˌfrɔɪdə,German ˈʃɑːdənˌfrɔydə/ - noun
+pleasure derived by someone from another person's misfortune.
+"a business that thrives on Schadenfreude"
\ No newline at end of file
diff --git a/src/main/md/fsync.md b/src/main/md/fsync.md
new file mode 100644
index 00000000..6c1edbe0
--- /dev/null
+++ b/src/main/md/fsync.md
@@ -0,0 +1,26 @@
+##FSync
+
+## Durability and Concept of checkpoint
+ * Every time check point is invoked
+ * Shared buffers (Managed by PGSQL) - WAL Buffers (Top layer)
+ * Page Cache (Kernel Managed) (mid layer)
+ * [Data Files] and [WAL - TransactonLog]
+
+## Shared buffers
+* Are written to page cache
+
+## Page Cache (Kernel Managed) (mid layer)
+* It invokes fsync to store to underlying file (DataFiles and WAL)
+
+## When IO error happens
+* We expect fsync to tries to rewrite the same data
+* fsync may write data on network storage, even tiny network failure might cause fsync to fail
+* But fsync won't retry next time, but marks the actual buffer as clean (kind of insync with io) (ext4)
+
+## One file might have multile FILE descriptor
+* When failure reported in one process the should be reported to other process, but only first process gets the error
+
+
+## Reference
+*[PostgreSQL vs. fsync How is it possible that PostgreSQL used fsync incorrectly for 20 years, and wh…](https://www.youtube.com/watch?v=1VWIGBQLtxo)
+* Write-Ahead Logging (WAL)
\ No newline at end of file
diff --git a/src/main/md/gcp/Debian_VM.md b/src/main/md/gcp/Debian_VM.md
new file mode 100644
index 00000000..44326f37
--- /dev/null
+++ b/src/main/md/gcp/Debian_VM.md
@@ -0,0 +1,39 @@
+```bash
+sudo passwd //TO: Change root password
+sudo apt-get update
+sudo apt-get install default-jdk
+sudo apt-get install openjdk-11-jdk
+sudo apt-get install software-properties-common
+sudo add-apt-repository "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main"
+sudo apt-get update
+sudo apt-get install oracle-java8-installer
+
+ls -ltar /usr/bin/java
+/usr/bin/java -> /etc/alternatives/java
+ls -ltar /etc/alternatives/java
+/etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-amd64/bin/java
+```
+
+```bash
+sudo snap install docker
+docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.8.6
+```
+
+```bash
+sudo install unzip
+sudo bash
+sudo mkdir -p /project/elasticsearch/
+cd /project/elasticsearch/
+wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.6.zip
+wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.6.zip.sha512
+shasum -a 512 -c elasticsearch-6.8.6.zip.sha512
+unzip elasticsearch-6.8.6.zip
+cd elasticsearch-6.8.6/
+```
+
+```bash
+mkdir -p /project/elasticsearch/
+useradd -d /project/elasticsearch/ elasticsearch
+chown elasticsearch:elaticsearch /project/elasticsearch
+passwd elasticsearch
+```
\ No newline at end of file
diff --git a/src/main/md/gcp/GCP_GKE.md b/src/main/md/gcp/GCP_GKE.md
new file mode 100644
index 00000000..df3f1dba
--- /dev/null
+++ b/src/main/md/gcp/GCP_GKE.md
@@ -0,0 +1,105 @@
+## Basic commands
+```bash
+gcloud config list account
+gcloud config list project
+gcloud config set compute/zone asia-southeast1
+gcloud config list
+export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
+gsutil ls gs://$PROJECT_ID
+gsutil -m cp -r gs://$PROJECT_ID/* ~/
+chmod +x ~/guestbook-frontend/mvnw
+chmod +x ~/guestbook-service/mvnw
+gcloud services enable pubsub.googleapis.com
+gcloud services enable container.googleapis.com
+gcloud services enable containerregistry.googleapis.com
+gcloud pubsub topics create messages
+```
+
+## Twelth lab (deploying simple application in GCP without db)
+
+```bash
+export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
+gsutil ls gs://$PROJECT_ID
+gsutil -m cp -r gs://$PROJECT_ID/* ~/
+chmod +x ~/guestbook-frontend/mvnw
+chmod +x ~/guestbook-service/mvnw
+gcloud services enable container.googleapis.com
+gcloud services enable containerregistry.googleapis.com
+
+## Create a Kubernetes Engine cluster that has Stackdriver Logging and Monitoring enabled.
+gcloud container clusters create guestbook-cluster --zone=us-central1-a --num-nodes=2
+ --machine-type=n1-standard-2 \
+ --enable-autorepair \
+ --enable-cloud-monitoring \
+ --enable-cloud-logging
+gcloud config list --format 'value(core.project)'
+~/guestbook-frontend/pom.xml
+remove this line - tomcat
+
+ com.google.cloud.tools
+ jib-maven-plugin
+ 0.9.6
+
+ gcr.io/[PROJECT_ID]/guestbook-frontend
+
+
+Replace the PROJECT_ID with actual project id
+cd ~/guestbook-frontend
+./mvnw clean compile jib:build
+cd ~/guestbook-service
+./mvnw clean compile jib:build
+
+# you create a service account with permissions to access your GCP services.
+# You then store the service account that you generated earlier in Kubernetes as a secret so that it is accessible from the containers.
+gcloud iam service-accounts create guestbook
+export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
+gcloud projects add-iam-policy-binding ${PROJECT_ID} --member serviceAccount:guestbook@${PROJECT_ID}.iam.gserviceaccount.com --role roles/editor
+gcloud iam service-accounts keys create ~/service-account.json --iam-account guestbook@${PROJECT_ID}.iam.gserviceaccount.com
+## Kubernetes server version
+kubectl version
+kubectl create secret generic guestbook-service-account --from-file=$HOME/service-account.json
+kubectl describe secret guestbook-service-account
+~/kubernetes/guestbook-frontend-deployment.yaml
+image: saturnism/spring-gcp-guestbook-frontend:latest replace with gcr.io/[PROJECT_ID]/guestbook-frontend
+~/kubernetes/guestbook-service-deployment.yaml.
+image: saturnism/spring-gcp-guestbook-frontend:latest replace with gcr.io/[PROJECT_ID]/guestbook-service
+kubectl apply -f ~/kubernetes/
+kubectl get svc guestbook-frontend
+kubectl get svc
+http://[EXTERNAL_IP]:8080
+```
+
+## Thirteen events, monitoring (promethus kubernetes monitoring)
+
+```bash
+export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
+gsutil ls gs://$PROJECT_ID
+gsutil -m cp -r gs://$PROJECT_ID/* ~/
+chmod +x ~/guestbook-frontend/mvnw
+chmod +x ~/guestbook-service/mvnw
+gcloud services enable container.googleapis.com
+gcloud services enable containerregistry.googleapis.com
+
+gcloud container clusters get-credentials guestbook-cluster --zone=us-central1-a
+kubectl apply -f https://storage.googleapis.com/stackdriver-prometheus-documentation/rbac-setup.yml --as=admin --as-group=system:masters
+export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
+curl -s https://storage.googleapis.com/stackdriver-prometheus-documentation/prometheus-service.yml | sed -e "s/\(\s*_kubernetes_cluster_name:*\).*/\1 'guestbook-cluster'/g" | sed -e "s/\(\s*_kubernetes_location:*\).*/\1 'us-central1'/g" | sed -e "s/\(\s*_stackdriver_project_id:*\).*/\1 '${PROJECT_ID}'/g" | kubectl apply -f -
+kubectl get pods -n stackdriver
+~/guestbook-frontend/pom.xml
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ io.micrometer
+ micrometer-registry-prometheus
+ runtime
+
+@~/guestbook-frontend/src/main/resources/application.properties
+management.server.port=8081
+management.endpoints.web.exposure.include=*
+cd ~/guestbook-frontend
+./mvnw clean compile jib:build
+~/kubernetes/guestbook-frontend-deployment.yaml
+
+```
diff --git a/src/main/md/gcp/GCP_Images.md b/src/main/md/gcp/GCP_Images.md
new file mode 100644
index 00000000..848f30d7
--- /dev/null
+++ b/src/main/md/gcp/GCP_Images.md
@@ -0,0 +1,51 @@
+{
+ "archiveSizeBytes": "12301305600",
+ "creationTimestamp": "2019-12-16T09:52:31.658-08:00",
+ "description": "Debian, Debian GNU/Linux, 9 (stretch), amd64 built on 20191210",
+ "diskSizeGb": "10",
+ "family": "debian-9",
+ "guestOsFeatures": [
+ {
+ "type": "VIRTIO_SCSI_MULTIQUEUE"
+ }
+ ],
+ "id": "4836861303305435824",
+ "kind": "compute#image",
+ "labelFingerprint": "42WmSpB8rSM=",
+ "licenseCodes": [
+ "1000205"
+ ],
+ "licenses": [
+ "projects/debian-cloud/global/licenses/debian-9-stretch"
+ ],
+ "name": "debian-9-stretch-v20191210",
+ "rawDisk": {
+ "containerType": "TAR",
+ "source": ""
+ },
+ "selfLink": "projects/debian-cloud/global/images/debian-9-stretch-v20191210",
+ "sourceType": "RAW",
+ "status": "READY",
+ "storageLocations": [
+ "eu",
+ "us",
+ "eu",
+ "eu",
+ "asia",
+ "us",
+ "eu",
+ "asia",
+ "asia",
+ "us",
+ "us",
+ "asia",
+ "eu",
+ "us",
+ "us",
+ "asia",
+ "eu",
+ "us",
+ "asia",
+ "asia"
+ ]
+}
\ No newline at end of file
diff --git a/src/main/md/gcp/GCP_Most_useful_commands.md b/src/main/md/gcp/GCP_Most_useful_commands.md
new file mode 100644
index 00000000..e8c22c4d
--- /dev/null
+++ b/src/main/md/gcp/GCP_Most_useful_commands.md
@@ -0,0 +1,19 @@
+## Often useful commands
+```bash
+gcloud compute zones list
+gcloud compute images list
+gcloud compute instances list
+gcloud config set compute/zone asia-southeast1-b
+# --maintenance-policy=MIGRATE or Terminate
+gcloud compute --project=qwiklabs-gcp-01-ecced1382d7b instances create instance-1 --zone=asia-southeast1-b --machine-type=f1-micro --subnet=default --network-tier=PREMIUM --service-account=881468636460-compute@developer.gserviceaccount.com --tags=http-server,https-server --image=ubuntu-1804-bionic-v20191211 --image-project=ubuntu-os-cloud --boot-disk-size=10GB --boot-disk-type=pd-standard --boot-disk-device-name=instance-1 --reservation-affinity=any --preemptible
+
+gcloud compute --project=qwiklabs-gcp-01-ecced1382d7b firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server
+
+gcloud compute --project=qwiklabs-gcp-01-ecced1382d7b firewall-rules create default-allow-https --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:443 --source-ranges=0.0.0.0/0 --target-tags=https-server
+
+gcloud compute ssh instance-1
+
+gcloud compute --project=gcp-nikias-data-search firewall-rules create tomcat --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:8080 --source-ranges=0.0.0.0/0 --target-tags=tomcat
+
+```
+
diff --git a/src/main/md/gcp/Gcp_commands_pluralsight_spring.md b/src/main/md/gcp/Gcp_commands_pluralsight_spring.md
new file mode 100644
index 00000000..3fa056f9
--- /dev/null
+++ b/src/main/md/gcp/Gcp_commands_pluralsight_spring.md
@@ -0,0 +1,728 @@
+
+## Basic commands
+```bash
+gcloud config list account
+gcloud config list project
+gcloud config set compute/zone asia-southeast1
+gcloud config list
+```
+
+## First lab (deploying simple application in GCP without db)
+```bash
+cd ~/
+git clone https://github.com/saturnism/spring-cloud-gcp-guestbook.git
+cp -a ~/spring-cloud-gcp-guestbook/1-bootstrap/guestbook-service ~/guestbook-service
+cd ~/guestbook-service
+./mvnw -q spring-boot:run -Dserver.port=8081
+curl http://localhost:8081/guestbookMessages
+curl -XPOST -H "content-type: application/json" -d '{"name": "Ray", "message": "Hello"}' http://localhost:8081/guestbookMessages
+curl http://localhost:8081/guestbookMessages
+
+cp -a ~/spring-cloud-gcp-guestbook/1-bootstrap/guestbook-frontend ~/guestbook-frontend
+curl -s http://localhost:8081/guestbookMessages
+curl -s http://localhost:8081/guestbookMessages | jq -r '._embedded.guestbookMessages[] | {name: .name, message: .message}'
+```
+
+## second lab (deploying spring database application in GCP with Cloud SQL)
+```bash
+export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
+gsutil ls gs://$PROJECT_ID
+gsutil -m cp -r gs://$PROJECT_ID/* ~/
+chmod +x ~/guestbook-frontend/mvnw
+chmod +x ~/guestbook-service/mvnw
+# Edit guestbook-service/pom.xml
+
+
+
+ org.springframework.cloud
+ spring-cloud-gcp-dependencies
+ 1.2.0.RELEASE
+ pom
+ import
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-gcp-starter-sql-mysql
+
+Update guestbook-service/src/main/resources/application.properties
+spring.cloud.gcp.sql.enabled=false
+gcloud sql instances describe guestbook --format='value(connectionName)'
+qwiklabs-gcp-4d0ab38f9ff2cc4c:us-central1:guestbook
+application-cloud.properties
+spring.cloud.gcp.sql.enabled=true
+spring.cloud.gcp.sql.database-name=messages
+spring.cloud.gcp.sql.instance-connection-name=YOUR_INSTANCE_CONNECTION_NAME
+spring.datasource.hikari.maximum-pool-size=5
+
+cd ~/guestbook-service
+./mvnw spring-boot:run -Dserver.port=8081 -Dspring.profiles.active=cloud
+curl -XPOST -H "content-type: application/json" -d '{"name": "Ray", "message": "Hello Cloud SQL"}' http://localhost:8081/guestbookMessages
+curl http://localhost:8081/guestbookMessages
+gcloud sql connect guestbook;
+use messages;
+select * from guestbook_message;
+
+
+```
+## Enable cloud sql
+```bash
+gcloud services enable sqladmin.googleapis.com
+gcloud services list | grep sqladmin
+gcloud sql instances list
+gcloud sql instances create guestbook --region=asia-southeast1
+gcloud sql databases create messages --instance guestbook
+gcloud sql connect guestbook
+show databases;
+use messages;
+CREATE TABLE guestbook_message (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ name CHAR(128) NOT NULL,
+ message CHAR(255),
+ image_uri CHAR(255),
+ PRIMARY KEY (id)
+);
+exit
+```
+
+## Thrid lab (Cloud configuration)
+```bash
+export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
+gsutil ls gs://$PROJECT_ID
+gsutil -m cp -r gs://$PROJECT_ID/* ~/
+chmod +x ~/guestbook-frontend/mvnw
+chmod +x ~/guestbook-service/mvnw
+@guestbook-frontend/pom.xml
+
+ org.springframework.cloud
+ spring-cloud-gcp-starter-config
+
+
+ com.google.guava
+ guava
+ 20.0
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+@guestbook-frontend/pom.xml
+
+
+ org.springframework.cloud
+ spring-cloud-gcp-dependencies
+ 1.2.0.RELEASE
+ pom
+
+@guestbook-frontend/pom.xml
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+ false
+
+
+
+
+guestbook-frontend/src/main/resources/bootstrap.properties
+spring.cloud.gcp.config.enabled=false
+
+guestbook-frontend/src/main/resources/bootstrap-cloud.properties
+spring.cloud.gcp.config.enabled=true
+spring.cloud.gcp.config.name=frontend
+spring.cloud.gcp.config.profile=cloud
+
+guestbook-frontend/src/main/resources/application.properties
+management.endpoints.web.exposure.include=*
+
+@guestbook-frontend/src/main/java/com/example/frontend/FrontendController.java
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+
+@RefreshScope
+
+gcloud services enable runtimeconfig.googleapis.com
+gcloud beta runtime-config configs create frontend_cloud
+gcloud beta runtime-config configs variables set greeting "Hi from Runtime Config" --config-name frontend_cloud
+gcloud beta runtime-config configs variables list --config-name=frontend_cloud
+gcloud beta runtime-config configs variables get-value greeting --config-name=frontend_cloud
+
+cd ~/guestbook-service
+./mvnw -q spring-boot:run -Dserver.port=8081 -Dspring.profiles.active=cloud
+cd ~/guestbook-frontend
+./mvnw spring-boot:run -Dspring.profiles.active=cloud
+
+gcloud beta runtime-config configs variables set greeting "Hi from Updated Config" --config-name frontend_cloud
+curl -XPOST http://localhost:8080/actuator/refresh
+curl http://localhost:8080/actuator/configprops | jq
+```
+
+## Fourth lab - Tracing, configuration management, and integration
+```bash
+export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
+gsutil ls gs://$PROJECT_ID
+gsutil -m cp -r gs://$PROJECT_ID/* ~/
+chmod +x ~/guestbook-frontend/mvnw
+chmod +x ~/guestbook-service/mvnw
+gcloud services enable cloudtrace.googleapis.com
+dependencies@~/guestbook-service/pom.xml
+
+ org.springframework.cloud
+ spring-cloud-gcp-starter-trace
+
+dependencies@~/guestbook-frontend/pom.xml
+
+ org.springframework.cloud
+ spring-cloud-gcp-starter-trace
+
+@guestbook-frontend/src/main/resources/application.properties
+spring.cloud.gcp.trace.enabled=false
+@guestbook-service/src/main/resources/application.properties
+spring.cloud.gcp.trace.enabled=false
+@guestbook-service/src/main/resources/application-cloud.properties
+spring.cloud.gcp.trace.enabled=true
+spring.sleuth.sampler.probability=1
+spring.sleuth.web.skipPattern=(^cleanup.*|.+favicon.*)
+guestbook-frontend/src/main/resources/application-cloud.properties
+spring.cloud.gcp.trace.enabled=true
+spring.sleuth.sampler.probability=1
+spring.sleuth.web.skipPattern=(^cleanup.*|.+favicon.*)
+
+#Create a service account with permissions to propagate trace data to Stackdriver Trace
+gcloud iam service-accounts create guestbook
+export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
+gcloud projects add-iam-policy-binding ${PROJECT_ID} --member serviceAccount:guestbook@${PROJECT_ID}.iam.gserviceaccount.com --role roles/editor
+
+#Generate the JSON key file to be used by the application to identify itself using the service account
+gcloud iam service-accounts keys create ~/service-account.json --iam-account guestbook@${PROJECT_ID}.iam.gserviceaccount.com
+# Above command creates service account credentials that are stored in the $HOME/service-account.json file. Treat the service-account.json file as your own username/password
+
+cd ~/guestbook-service
+./mvnw spring-boot:run -Dserver.port=8081 -Dspring.profiles.active=cloud -Dspring.cloud.gcp.credentials.location=file:///$HOME/service-account.json
+cd ~/guestbook-frontend
+./mvnw spring-boot:run -Dspring.profiles.active=cloud -Dspring.cloud.gcp.credentials.location=file:///$HOME/service-account.json
+curl http://localhost:8080
+Gconsole > Stackdriver > Trace > Trace List.
+```
+
+## Fifth lab -message handling service with Cloud Pub/Sub
+```bash
+export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
+gsutil ls gs://$PROJECT_ID
+gsutil -m cp -r gs://$PROJECT_ID/* ~/
+chmod +x ~/guestbook-frontend/mvnw
+chmod +x ~/guestbook-service/mvnw
+gcloud services enable pubsub.googleapis.com
+gcloud pubsub topics create messages
+
+@~/guestbook-frontend/pom.xml
+
+ org.springframework.cloud
+ spring-cloud-gcp-starter-pubsub
+
+@guestbook-frontend/src/main/java/com/example/frontend/FrontendController.java
+import org.springframework.cloud.gcp.pubsub.core.*;
+@Autowired
+private PubSubTemplate pubSubTemplate;
+# /** Add inside the if statement to process messages that aren't null or empty, just above the comment Post **/
+
+pubSubTemplate.publish("messages", name + ": " + message);
+
+cd ~/guestbook-service
+./mvnw -q spring-boot:run -Dserver.port=8081 -Dspring.profiles.active=cloud
+
+cd ~/guestbook-frontend
+./mvnw spring-boot:run -Dspring.profiles.active=cloud
+gcloud pubsub subscriptions list
+gcloud pubsub subscriptions create messages-subscription-1 --topic=messages
+//Post message using UI and run below command
+gcloud pubsub subscriptions pull messages-subscription-1
+//Post message using UI and run below command, but below one would remove
+gcloud pubsub subscriptions pull messages-subscription-1 --auto-ack
+```
+
+## Fifth lab (part-2) Process messages in subscription
+```bash
+cd ~
+curl https://start.spring.io/starter.tgz -d dependencies=cloud-gcp-pubsub -d baseDir=message-processor | tar -xzvf -
+@~/message-processor/pom.xml
+
+
+ org.springframework.cloud
+ spring-cloud-gcp-starter-pubsub
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+@~/message-processor/src/main/java/com/example/demo/DemoApplication.java
+import org.springframework.context.annotation.Bean;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.cloud.gcp.pubsub.core.*;
+
+
+ @Bean
+ public CommandLineRunner cli(PubSubTemplate pubSubTemplate) {
+ return (args) -> {
+ pubSubTemplate.subscribe("messages-subscription-1",
+ (msg, ackConsumer) -> {
+ System.out.println(msg.getData().toStringUtf8());
+ ackConsumer.ack();
+ });
+ };
+ }
+cd ~/message-processor
+./mvnw -q spring-boot:run
+//Open the browser with the frontend application, and post a few messages.
+//Verify that the Cloud Pub/Sub messages are received in the message processor
+```
+
+
+## Sixt lab - Spring Integration that abstracts from the underlying messaging system (rather integration with Cloud Pub/Sub)
+```bash
+export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
+gsutil ls gs://$PROJECT_ID
+gsutil -m cp -r gs://$PROJECT_ID/* ~/
+chmod +x ~/guestbook-frontend/mvnw
+chmod +x ~/guestbook-service/mvnw
+gcloud pubsub topics list
+dependencies@~/guestbook-frontend/pom.xml
+
+ org.springframework.integration
+ spring-integration-core
+
+OutboundGateway.java@~/guestbook-frontend/src/main/java/com/example/frontend
+package com.example.frontend;
+
+import org.springframework.integration.annotation.MessagingGateway;
+
+@MessagingGateway(defaultRequestChannel = "messagesOutputChannel")
+public interface OutboundGateway {
+ void publishMessage(String message);
+}
+@~/guestbook-frontend/src/main/java/com/example/frontend/FrontendController.java
+ @Autowired
+ private PubSubTemplate pubSubTemplate; //remove this
+ @Autowired
+ private OutboundGateway outboundGateway; //add this
+ outboundGateway.publishMessage(name + ": " + message); //instead of pubSubTemplate.publish("messages", name + ": " + message);
+
+@~/guestbook-frontend/src/main/java/com/example/frontend/FrontendApplication.java
+
+import org.springframework.context.annotation.*;
+import org.springframework.cloud.gcp.pubsub.core.*;
+import org.springframework.cloud.gcp.pubsub.integration.outbound.*;
+import org.springframework.integration.annotation.*;
+import org.springframework.messaging.*;
+
+ @Bean
+ @ServiceActivator(inputChannel = "messagesOutputChannel")
+ public MessageHandler messageSender(PubSubTemplate pubsubTemplate) {
+ return new PubSubMessageHandler(pubsubTemplate, "messages");
+ }
+
+cd ~/guestbook-service
+./mvnw -q spring-boot:run -Dserver.port=8081 -Dspring.profiles.active=cloud
+cd ~/guestbook-frontend
+./mvnw spring-boot:run -Dspring.profiles.active=cloud
+gcloud pubsub subscriptions pull messages-subscription-1 --auto-ack
+gcloud pubsub subscriptions list
+```
+
+* Spring Integration for Cloud Pub/Sub works for both inbound messages and outbound messages.
+* Cloud Pub/Sub also supports Spring Cloud Stream to create reactive microservices.
+
+## Seventh lab - Add the ability to upload an image associated with a message. You store the image in Cloud Storage.
+```bash
+export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
+gsutil ls gs://$PROJECT_ID
+gsutil -m cp -r gs://$PROJECT_ID/* ~/
+chmod +x ~/guestbook-frontend/mvnw
+chmod +x ~/guestbook-service/mvnw
+dependencies@~/guestbook-frontend/pom.xml
+
+ org.springframework.cloud
+ spring-cloud-gcp-starter-storage
+
+~/guestbook-frontend/src/main/resources/templates/index.html
+