diff --git a/.jekyll-cache/Jekyll/Cache/Jekyll--Cache/b7/9606fb3afea5bd1609ed40b622142f1c98125abcfe89a76a661b0e8e343910 b/.jekyll-cache/Jekyll/Cache/Jekyll--Cache/b7/9606fb3afea5bd1609ed40b622142f1c98125abcfe89a76a661b0e8e343910
index 09a6a02..34fe350 100644
--- a/.jekyll-cache/Jekyll/Cache/Jekyll--Cache/b7/9606fb3afea5bd1609ed40b622142f1c98125abcfe89a76a661b0e8e343910
+++ b/.jekyll-cache/Jekyll/Cache/Jekyll--Cache/b7/9606fb3afea5bd1609ed40b622142f1c98125abcfe89a76a661b0e8e343910
@@ -1 +1 @@
-I"�{"source"=>"/home/coder/share/CoderSherlock.github.io", "destination"=>"/home/coder/share/CoderSherlock.github.io/_site", "collections_dir"=>"", "cache_dir"=>".jekyll-cache", "plugins_dir"=>"_plugins", "layouts_dir"=>"_layouts", "data_dir"=>"_data", "includes_dir"=>"_includes", "collections"=>{"posts"=>{"output"=>true, "permalink"=>"/posts/:title"}}, "safe"=>false, "include"=>[".htaccess"], "exclude"=>["CHANGELOG.md", "HOW_TO_RELEASE.md", "Gemfile", "Gemfile.lock", "LICENSE", "README-*.md", "README.md", "gulpfile.js", "jekyll-text-theme.gemspec", "package-lock.json", "package.json", "/docs", "/node_modules", "/screenshots", "/test", "/vendor", "configure.sh", ".sass-cache", ".jekyll-cache", "gemfiles", "node_modules", "vendor/bundle/", "vendor/cache/", "vendor/gems/", "vendor/ruby/"], "keep_files"=>[".git", ".svn"], "encoding"=>"utf-8", "markdown_ext"=>"markdown,mkdown,mkdn,mkd,md", "strict_front_matter"=>false, "show_drafts"=>nil, "limit_posts"=>0, "future"=>false, "unpublished"=>false, "whitelist"=>[], "plugins"=>["jekyll-feed", "jekyll-paginate", "jekyll-sitemap", "jemoji", "jekyll-last-modified-at", "jekyll-seo-tag"], "markdown"=>"kramdown", "highlighter"=>"rouge", "lsi"=>false, "excerpt_separator"=>"<!--more-->", "incremental"=>false, "detach"=>false, "port"=>"4000", "host"=>"127.0.0.1", "baseurl"=>"", "show_dir_listing"=>false, "permalink"=>"/posts/:title", "paginate_path"=>"/page:num", "timezone"=>"America/New_York", "quiet"=>false, "verbose"=>false, "defaults"=>[{"scope"=>{"path"=>"", "type"=>"posts"}, "values"=>{"layout"=>"article", "sharing"=>true, "license"=>true, "aside"=>{"toc"=>true}, "show_edit_on_github"=>false, "show_subscribe"=>true, "pageview"=>true}}], "liquid"=>{"error_mode"=>"warn", "strict_filters"=>false, "strict_variables"=>false}, "kramdown"=>{"auto_ids"=>true, "toc_levels"=>[1, 2, 3, 4, 5, 6], "entity_output"=>"as_char", "smart_quotes"=>"lsquo,rsquo,ldquo,rdquo", "input"=>"GFM", "hard_wrap"=>false, "guess_lang"=>true, "footnote_nr"=>1, "show_warnings"=>false}, "text_skin"=>"default", "highlight_theme"=>"default", "url"=>"https://blog.pengzhan.dev", "fakebaseurl"=>"", "title"=>"STSD: A Pretended Tech Blog", "description"=>"My personal blog, some contents are useful, the others are not. Just like my mediocre life.\n", "lang"=>"en", "author"=>{"type"=>nil, "name"=>"Pengzhan Hao", "url"=>nil, "avatar"=>"/static/avatar.jpg", "bio"=>nil, "email"=>"haopengzhan@gmail.com", "facebook"=>nil, "twitter"=>nil, "weibo"=>nil, "googleplus"=>nil, "telegram"=>nil, "medium"=>nil, "zhihu"=>nil, "douban"=>nil, "linkedin"=>"pengzhanhao", "github"=>"codersherlock", "npm"=>nil}, "repository"=>"CoderSherlock/CoderSherlock.github.io", "repository_tree"=>"master", "paths"=>{"root"=>nil, "home"=>nil, "archive"=>nil, "rss"=>nil}, "license"=>nil, "toc"=>{"selectors"=>nil}, "mathjax"=>nil, "mathjax_autoNumber"=>nil, "mermaid"=>nil, "chart"=>nil, "paginate"=>8, "sources"=>nil, "sharing"=>{"provider"=>false, "addthis"=>{"id"=>nil}}, "comments"=>{"provider"=>"disqus", "disqus"=>{"shortname"=>"codersherlockblog"}, "gitalk"=>{"clientID"=>nil, "clientSecret"=>nil, "repository"=>nil, "owner"=>nil, "admin"=>nil}, "valine"=>{"app_id"=>nil, "app_key"=>nil, "placeholder"=>nil, "visitor"=>nil, "meta"=>nil}}, "pageview"=>{"provider"=>false, "leancloud"=>{"app_id"=>nil, "app_key"=>nil, "app_class"=>nil}}, "search"=>{"provider"=>"default", "google"=>{"custom_search_engine_id"=>nil}}, "analytics"=>{"provider"=>"google", "google"=>{"tracking_id"=>"UA-82637164-1", "anonymize_ip"=>false}}, "jekyll_compose"=>{"default_front_matter"=>{"posts"=>{"description"=>nil, "cover"=>nil, "category"=>nil, "tags"=>nil, "published"=>false, "sitemap"=>true, "permalink"=>nil}}}, "serving"=>false}:ET
\ No newline at end of file
+I"v{"source"=>"/home/coder/share/CoderSherlock.github.io", "destination"=>"/home/coder/share/CoderSherlock.github.io/_site", "collections_dir"=>"", "cache_dir"=>".jekyll-cache", "plugins_dir"=>"_plugins", "layouts_dir"=>"_layouts", "data_dir"=>"_data", "includes_dir"=>"_includes", "collections"=>{"posts"=>{"output"=>true, "permalink"=>"/posts/:title"}}, "safe"=>false, "include"=>[".htaccess"], "exclude"=>["CHANGELOG.md", "HOW_TO_RELEASE.md", "Gemfile", "Gemfile.lock", "LICENSE", "README-*.md", "README.md", "gulpfile.js", "jekyll-text-theme.gemspec", "package-lock.json", "package.json", "/docs", "/node_modules", "/screenshots", "/test", "/vendor", "configure.sh", ".sass-cache", ".jekyll-cache", "gemfiles", "node_modules", "vendor/bundle/", "vendor/cache/", "vendor/gems/", "vendor/ruby/"], "keep_files"=>[".git", ".svn"], "encoding"=>"utf-8", "markdown_ext"=>"markdown,mkdown,mkdn,mkd,md", "strict_front_matter"=>false, "show_drafts"=>nil, "limit_posts"=>0, "future"=>false, "unpublished"=>false, "whitelist"=>[], "plugins"=>["jekyll-feed", "jekyll-paginate", "jekyll-sitemap", "jemoji", "jekyll-last-modified-at", "jekyll-seo-tag"], "markdown"=>"kramdown", "highlighter"=>"rouge", "lsi"=>false, "excerpt_separator"=>"<!--more-->", "incremental"=>false, "detach"=>false, "port"=>"4000", "host"=>"127.0.0.1", "baseurl"=>"", "show_dir_listing"=>false, "permalink"=>"/posts/:title", "paginate_path"=>"/page:num", "timezone"=>"America/New_York", "quiet"=>false, "verbose"=>false, "defaults"=>[{"scope"=>{"path"=>"", "type"=>"posts"}, "values"=>{"layout"=>"article", "sharing"=>true, "license"=>true, "aside"=>{"toc"=>true}, "show_edit_on_github"=>false, "show_subscribe"=>true, "pageview"=>true}}], "liquid"=>{"error_mode"=>"warn", "strict_filters"=>false, "strict_variables"=>false}, "kramdown"=>{"auto_ids"=>true, "toc_levels"=>[1, 2, 3, 4, 5, 6], "entity_output"=>"as_char", "smart_quotes"=>"lsquo,rsquo,ldquo,rdquo", "input"=>"GFM", "hard_wrap"=>false, "guess_lang"=>true, "footnote_nr"=>1, "show_warnings"=>false}, "text_skin"=>"default", "highlight_theme"=>"default", "url"=>"https://blog.pengzhan.dev", "fakebaseurl"=>"", "title"=>"STSD", "description"=>"My personal blog, some contents are useful, the others are not. Just like my mediocre life.\n", "lang"=>"en", "author"=>{"type"=>nil, "name"=>"Pengzhan Hao", "url"=>nil, "avatar"=>"/static/avatar.jpg", "bio"=>nil, "email"=>"haopengzhan@gmail.com", "facebook"=>nil, "twitter"=>nil, "weibo"=>nil, "googleplus"=>nil, "telegram"=>nil, "medium"=>nil, "zhihu"=>nil, "douban"=>nil, "linkedin"=>"pengzhanhao", "github"=>"codersherlock", "npm"=>nil}, "repository"=>"CoderSherlock/CoderSherlock.github.io", "repository_tree"=>"master", "paths"=>{"root"=>nil, "home"=>nil, "archive"=>nil, "rss"=>nil}, "license"=>nil, "toc"=>{"selectors"=>nil}, "mathjax"=>nil, "mathjax_autoNumber"=>nil, "mermaid"=>nil, "chart"=>nil, "paginate"=>8, "sources"=>nil, "sharing"=>{"provider"=>false, "addthis"=>{"id"=>nil}}, "comments"=>{"provider"=>"disqus", "disqus"=>{"shortname"=>"codersherlockblog"}, "gitalk"=>{"clientID"=>nil, "clientSecret"=>nil, "repository"=>nil, "owner"=>nil, "admin"=>nil}, "valine"=>{"app_id"=>nil, "app_key"=>nil, "placeholder"=>nil, "visitor"=>nil, "meta"=>nil}}, "pageview"=>{"provider"=>false, "leancloud"=>{"app_id"=>nil, "app_key"=>nil, "app_class"=>nil}}, "search"=>{"provider"=>"default", "google"=>{"custom_search_engine_id"=>nil}}, "analytics"=>{"provider"=>"google", "google"=>{"tracking_id"=>"UA-82637164-1", "anonymize_ip"=>false}}, "jekyll_compose"=>{"default_front_matter"=>{"posts"=>{"description"=>nil, "cover"=>nil, "category"=>nil, "tags"=>nil, "published"=>false, "sitemap"=>true, "permalink"=>nil}}}, "serving"=>false}:ET
\ No newline at end of file
diff --git a/_site/404.html b/_site/404.html
index 7bb666d..6dc4a8f 100644
--- a/_site/404.html
+++ b/_site/404.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html><html lang="en">
   <head><meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Page Not Found - STSD: A Pretended Tech Blog</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Page Not Found - STSD</title>
 
 <meta name="description" content="My personal blog, some contents are useful, the others are not. Just like my mediocre life.
 ">
-<link rel="canonical" href="https://blog.pengzhan.dev/404.html"><link rel="alternate" type="application/rss+xml" title="STSD: A Pretended Tech Blog" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
+<link rel="canonical" href="https://blog.pengzhan.dev/404.html"><link rel="alternate" type="application/rss+xml" title="STSD" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
 <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png">
 <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png">
 <link rel="manifest" href="/assets/site.webmanifest">
@@ -20,7 +20,7 @@
     @import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Slab:wght@100..900&family=ZCOOL+XiaoWei&display=swap')
 </style><!-- start custom head snippets -->
 <!-- Begin Jekyll SEO tag v2.8.0 -->
-<title>Page Not Found | STSD: A Pretended Tech Blog</title>
+<title>Page Not Found | STSD</title>
 <meta name="generator" content="Jekyll v4.2.2" />
 <meta property="og:title" content="Page Not Found" />
 <meta name="author" content="Pengzhan Hao" />
@@ -29,7 +29,7 @@
 <meta property="og:description" content="My personal blog, some contents are useful, the others are not. Just like my mediocre life." />
 <link rel="canonical" href="https://blog.pengzhan.dev/404.html" />
 <meta property="og:url" content="https://blog.pengzhan.dev/404.html" />
-<meta property="og:site_name" content="STSD: A Pretended Tech Blog" />
+<meta property="og:site_name" content="STSD" />
 <meta property="og:type" content="website" />
 <meta name="twitter:card" content="summary" />
 <meta property="twitter:title" content="Page Not Found" />
@@ -425,7 +425,7 @@ c13 9 26 20 30 26 7 11 -9 26 -27 26 -5 0 -3 -5 5 -10 9 -6 10 -10 3 -10 -24
 </g>
 </svg>
 <a title="My personal blog, some contents are useful, the others are not. Just like my mediocre life.
-" href="/">STSD: A Pretended Tech Blog</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
+" href="/">STSD</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
         <ul><li class="navigation__item"><a href="/archive.html">Archive</a></li><li class="navigation__item"><a href="https://pengzhan.dev">About</a></li><li><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></li></ul>
       </nav></div>
   </header>
@@ -472,7 +472,7 @@ c13 9 26 20 30 26 7 11 -9 26 -27 26 -5 0 -3 -5 5 -10 9 -6 10 -10 3 -10 -24
 </div>
 </div>
     </div><div class="site-info mt-2">
-      <div>© STSD: A Pretended Tech Blog 2021,
+      <div>© STSD 2021,
         Powered by <a title="Jekyll is a simple, blog-aware, static site generator." href="http://jekyllrb.com/">Jekyll</a> & <a
         title="TeXt is a super customizable Jekyll theme." href="https://github.com/kitian616/jekyll-TeXt-theme">TeXt Theme</a>.
       </div>
diff --git a/_site/archive.html b/_site/archive.html
index 0b3e580..2636276 100644
--- a/_site/archive.html
+++ b/_site/archive.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html><html lang="en">
   <head><meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Archive - STSD: A Pretended Tech Blog</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Archive - STSD</title>
 
 <meta name="description" content="My personal blog, some contents are useful, the others are not. Just like my mediocre life.
 ">
-<link rel="canonical" href="https://blog.pengzhan.dev/archive"><link rel="alternate" type="application/rss+xml" title="STSD: A Pretended Tech Blog" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
+<link rel="canonical" href="https://blog.pengzhan.dev/archive"><link rel="alternate" type="application/rss+xml" title="STSD" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
 <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png">
 <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png">
 <link rel="manifest" href="/assets/site.webmanifest">
@@ -20,21 +20,21 @@
     @import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Slab:wght@100..900&family=ZCOOL+XiaoWei&display=swap')
 </style><!-- start custom head snippets -->
 <!-- Begin Jekyll SEO tag v2.8.0 -->
-<title>STSD: A Pretended Tech Blog | My personal blog, some contents are useful, the others are not. Just like my mediocre life.</title>
+<title>STSD | My personal blog, some contents are useful, the others are not. Just like my mediocre life.</title>
 <meta name="generator" content="Jekyll v4.2.2" />
-<meta property="og:title" content="STSD: A Pretended Tech Blog" />
+<meta property="og:title" content="STSD" />
 <meta name="author" content="Pengzhan Hao" />
 <meta property="og:locale" content="en" />
 <meta name="description" content="My personal blog, some contents are useful, the others are not. Just like my mediocre life." />
 <meta property="og:description" content="My personal blog, some contents are useful, the others are not. Just like my mediocre life." />
 <link rel="canonical" href="https://blog.pengzhan.dev/archive" />
 <meta property="og:url" content="https://blog.pengzhan.dev/archive" />
-<meta property="og:site_name" content="STSD: A Pretended Tech Blog" />
+<meta property="og:site_name" content="STSD" />
 <meta property="og:type" content="website" />
 <meta name="twitter:card" content="summary" />
-<meta property="twitter:title" content="STSD: A Pretended Tech Blog" />
+<meta property="twitter:title" content="STSD" />
 <script type="application/ld+json">
-{"@context":"https://schema.org","@type":"WebPage","author":{"@type":"Person","name":"Pengzhan Hao"},"dateModified":"2021-10-25T14:53:15-04:00","description":"My personal blog, some contents are useful, the others are not. Just like my mediocre life.","headline":"STSD: A Pretended Tech Blog","url":"https://blog.pengzhan.dev/archive"}</script>
+{"@context":"https://schema.org","@type":"WebPage","author":{"@type":"Person","name":"Pengzhan Hao"},"dateModified":"2021-10-25T14:53:15-04:00","description":"My personal blog, some contents are useful, the others are not. Just like my mediocre life.","headline":"STSD","url":"https://blog.pengzhan.dev/archive"}</script>
 <!-- End Jekyll SEO tag -->
 
 <!-- end custom head snippets -->
@@ -425,7 +425,7 @@ c13 9 26 20 30 26 7 11 -9 26 -27 26 -5 0 -3 -5 5 -10 9 -6 10 -10 3 -10 -24
 </g>
 </svg>
 <a title="My personal blog, some contents are useful, the others are not. Just like my mediocre life.
-" href="/">STSD: A Pretended Tech Blog</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
+" href="/">STSD</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
         <ul><li class="navigation__item"><a href="/archive.html">Archive</a></li><li class="navigation__item"><a href="https://pengzhan.dev">About</a></li><li><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></li></ul>
       </nav></div>
   </header>
@@ -684,7 +684,7 @@ c13 9 26 20 30 26 7 11 -9 26 -27 26 -5 0 -3 -5 5 -10 9 -6 10 -10 3 -10 -24
 </div>
 </div>
     </div><div class="site-info mt-2">
-      <div>© STSD: A Pretended Tech Blog 2021,
+      <div>© STSD 2021,
         Powered by <a title="Jekyll is a simple, blog-aware, static site generator." href="http://jekyllrb.com/">Jekyll</a> & <a
         title="TeXt is a super customizable Jekyll theme." href="https://github.com/kitian616/jekyll-TeXt-theme">TeXt Theme</a>.
       </div>
diff --git a/_site/assets/android-chrome-192x192.png b/_site/assets/android-chrome-192x192.png
index 845e94f..2668c9b 100644
Binary files a/_site/assets/android-chrome-192x192.png and b/_site/assets/android-chrome-192x192.png differ
diff --git a/_site/assets/apple-touch-icon.png b/_site/assets/apple-touch-icon.png
index 2f4cc33..2bdf120 100644
Binary files a/_site/assets/apple-touch-icon.png and b/_site/assets/apple-touch-icon.png differ
diff --git a/_site/assets/browserconfig.xml b/_site/assets/browserconfig.xml
index 56836be..b3930d0 100644
--- a/_site/assets/browserconfig.xml
+++ b/_site/assets/browserconfig.xml
@@ -2,7 +2,7 @@
 <browserconfig>
     <msapplication>
         <tile>
-            <square150x150logo src="/assets/mstile-150x150.png"/>
+            <square150x150logo src="/mstile-150x150.png"/>
             <TileColor>#da532c</TileColor>
         </tile>
     </msapplication>
diff --git a/_site/assets/favicon-16x16.png b/_site/assets/favicon-16x16.png
index 99eb654..b0c4ec3 100644
Binary files a/_site/assets/favicon-16x16.png and b/_site/assets/favicon-16x16.png differ
diff --git a/_site/assets/favicon-32x32.png b/_site/assets/favicon-32x32.png
index 1b6559a..ccc8fe5 100644
Binary files a/_site/assets/favicon-32x32.png and b/_site/assets/favicon-32x32.png differ
diff --git a/_site/assets/favicon.ico b/_site/assets/favicon.ico
index 488470d..b3cc86a 100644
Binary files a/_site/assets/favicon.ico and b/_site/assets/favicon.ico differ
diff --git a/_site/assets/mstile-150x150.png b/_site/assets/mstile-150x150.png
index e313209..3b433b3 100644
Binary files a/_site/assets/mstile-150x150.png and b/_site/assets/mstile-150x150.png differ
diff --git a/_site/assets/safari-pinned-tab.svg b/_site/assets/safari-pinned-tab.svg
deleted file mode 100644
index 6193ce2..0000000
--- a/_site/assets/safari-pinned-tab.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
- "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
- width="231.000000pt" height="231.000000pt" viewBox="0 0 231.000000 231.000000"
- preserveAspectRatio="xMidYMid meet">
-<metadata>
-Created by potrace 1.14, written by Peter Selinger 2001-2017
-</metadata>
-<g transform="translate(0.000000,231.000000) scale(0.100000,-0.100000)"
-fill="#000000" stroke="none">
-<path d="M0 1160 l0 -1090 1155 0 1155 0 0 1090 0 1090 -1155 0 -1155 0 0
--1090z"/>
-</g>
-</svg>
diff --git a/_site/assets/site.webmanifest b/_site/assets/site.webmanifest
index ef84bf8..b20abb7 100644
--- a/_site/assets/site.webmanifest
+++ b/_site/assets/site.webmanifest
@@ -3,9 +3,14 @@
     "short_name": "",
     "icons": [
         {
-            "src": "/assets/android-chrome-192x192.png",
+            "src": "/android-chrome-192x192.png",
             "sizes": "192x192",
             "type": "image/png"
+        },
+        {
+            "src": "/android-chrome-512x512.png",
+            "sizes": "512x512",
+            "type": "image/png"
         }
     ],
     "theme_color": "#ffffff",
diff --git a/_site/feed.xml b/_site/feed.xml
index c378e4b..ebde6ec 100644
--- a/_site/feed.xml
+++ b/_site/feed.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="4.2.2">Jekyll</generator><link href="https://blog.pengzhan.dev/feed.xml" rel="self" type="application/atom+xml" /><link href="https://blog.pengzhan.dev/" rel="alternate" type="text/html" hreflang="en" /><updated>2024-04-11T16:53:06-04:00</updated><id>https://blog.pengzhan.dev/feed.xml</id><title type="html">STSD: A Pretended Tech Blog</title><subtitle>My personal blog, some contents are useful, the others are not. Just like my mediocre life.
+<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="4.2.2">Jekyll</generator><link href="https://blog.pengzhan.dev/feed.xml" rel="self" type="application/atom+xml" /><link href="https://blog.pengzhan.dev/" rel="alternate" type="text/html" hreflang="en" /><updated>2024-04-13T03:51:56-04:00</updated><id>https://blog.pengzhan.dev/feed.xml</id><title type="html">STSD</title><subtitle>My personal blog, some contents are useful, the others are not. Just like my mediocre life.
 </subtitle><author><name>Pengzhan Hao</name><email>haopengzhan@gmail.com</email></author><entry><title type="html">Debug Kubelet</title><link href="https://blog.pengzhan.dev/posts/Debug-kubelet" rel="alternate" type="text/html" title="Debug Kubelet" /><published>2024-04-10T03:34:00-04:00</published><updated>2024-04-10T23:51:19-04:00</updated><id>https://blog.pengzhan.dev/posts/Debug-kubelet</id><content type="html" xml:base="https://blog.pengzhan.dev/posts/Debug-kubelet"><![CDATA[<h2 id="debug-logs">Debug logs</h2>
 
 <p>Like all others program’s debugging, the most straightforward way for newbies and the easiest way for advanced developer is relying on logs. Same to debug <code class="language-plaintext highlighter-rouge">kubelet</code>, bumping up verbosity to show more logs is the most intuitive approach when facing an issue. Like most component in Kubernetes, <code class="language-plaintext highlighter-rouge">kubelet</code> uses <code class="language-plaintext highlighter-rouge">klog</code> for logging and there are 10 verbosity levels(0-9).</p>
diff --git a/_site/index.html b/_site/index.html
index 7008040..3f30d37 100644
--- a/_site/index.html
+++ b/_site/index.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html><html lang="en">
   <head><meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Home - STSD: A Pretended Tech Blog</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Home - STSD</title>
 
 <meta name="description" content="My personal blog, some contents are useful, the others are not. Just like my mediocre life.
 ">
-<link rel="canonical" href="https://blog.pengzhan.dev/"><link rel="alternate" type="application/rss+xml" title="STSD: A Pretended Tech Blog" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
+<link rel="canonical" href="https://blog.pengzhan.dev/"><link rel="alternate" type="application/rss+xml" title="STSD" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
 <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png">
 <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png">
 <link rel="manifest" href="/assets/site.webmanifest">
@@ -20,22 +20,22 @@
     @import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Slab:wght@100..900&family=ZCOOL+XiaoWei&display=swap')
 </style><!-- start custom head snippets -->
 <!-- Begin Jekyll SEO tag v2.8.0 -->
-<title>STSD: A Pretended Tech Blog | My personal blog, some contents are useful, the others are not. Just like my mediocre life.</title>
+<title>STSD | My personal blog, some contents are useful, the others are not. Just like my mediocre life.</title>
 <meta name="generator" content="Jekyll v4.2.2" />
-<meta property="og:title" content="STSD: A Pretended Tech Blog" />
+<meta property="og:title" content="STSD" />
 <meta name="author" content="Pengzhan Hao" />
 <meta property="og:locale" content="en" />
 <meta name="description" content="My personal blog, some contents are useful, the others are not. Just like my mediocre life." />
 <meta property="og:description" content="My personal blog, some contents are useful, the others are not. Just like my mediocre life." />
 <link rel="canonical" href="https://blog.pengzhan.dev/" />
 <meta property="og:url" content="https://blog.pengzhan.dev/" />
-<meta property="og:site_name" content="STSD: A Pretended Tech Blog" />
+<meta property="og:site_name" content="STSD" />
 <meta property="og:type" content="website" />
 <link rel="next" href="https://blog.pengzhan.dev/page2" />
 <meta name="twitter:card" content="summary" />
-<meta property="twitter:title" content="STSD: A Pretended Tech Blog" />
+<meta property="twitter:title" content="STSD" />
 <script type="application/ld+json">
-{"@context":"https://schema.org","@type":"WebSite","author":{"@type":"Person","name":"Pengzhan Hao"},"dateModified":"2021-10-25T14:53:15-04:00","description":"My personal blog, some contents are useful, the others are not. Just like my mediocre life.","headline":"STSD: A Pretended Tech Blog","name":"STSD: A Pretended Tech Blog","url":"https://blog.pengzhan.dev/"}</script>
+{"@context":"https://schema.org","@type":"WebSite","author":{"@type":"Person","name":"Pengzhan Hao"},"dateModified":"2021-10-25T14:53:15-04:00","description":"My personal blog, some contents are useful, the others are not. Just like my mediocre life.","headline":"STSD","name":"STSD","url":"https://blog.pengzhan.dev/"}</script>
 <!-- End Jekyll SEO tag -->
 
 <!-- end custom head snippets -->
@@ -426,7 +426,7 @@ c13 9 26 20 30 26 7 11 -9 26 -27 26 -5 0 -3 -5 5 -10 9 -6 10 -10 3 -10 -24
 </g>
 </svg>
 <a title="My personal blog, some contents are useful, the others are not. Just like my mediocre life.
-" href="/">STSD: A Pretended Tech Blog</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
+" href="/">STSD</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
         <ul><li class="navigation__item"><a href="/archive.html">Archive</a></li><li class="navigation__item"><a href="https://pengzhan.dev">About</a></li><li><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></li></ul>
       </nav></div>
   </header>
@@ -611,7 +611,7 @@ In the second half of this post, I will discuss a little bit more on how to debu
 </div>
 </div>
     </div><div class="site-info mt-2">
-      <div>© STSD: A Pretended Tech Blog 2021,
+      <div>© STSD 2021,
         Powered by <a title="Jekyll is a simple, blog-aware, static site generator." href="http://jekyllrb.com/">Jekyll</a> & <a
         title="TeXt is a super customizable Jekyll theme." href="https://github.com/kitian616/jekyll-TeXt-theme">TeXt Theme</a>.
       </div>
diff --git a/_site/posts/charles-is-not-a-good-tool.html b/_site/posts/charles-is-not-a-good-tool.html
index 2240c75..f10af46 100644
--- a/_site/posts/charles-is-not-a-good-tool.html
+++ b/_site/posts/charles-is-not-a-good-tool.html
@@ -1,10 +1,10 @@
 <!DOCTYPE html><html lang="en">
   <head><meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Using charles proxy to monitor mobile SSL traffics - STSD: A Pretended Tech Blog</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Using charles proxy to monitor mobile SSL traffics - STSD</title>
 
 <meta name="description" content="In this blog, I will generally talk about how to use proper tools to monitor SSL traffics of a mobile devices. Currently, I only can dealing with those SSL t...">
-<link rel="canonical" href="https://blog.pengzhan.dev/posts/charles-is-not-a-good-tool"><link rel="alternate" type="application/rss+xml" title="STSD: A Pretended Tech Blog" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
+<link rel="canonical" href="https://blog.pengzhan.dev/posts/charles-is-not-a-good-tool"><link rel="alternate" type="application/rss+xml" title="STSD" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
 <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png">
 <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png">
 <link rel="manifest" href="/assets/site.webmanifest">
@@ -19,7 +19,7 @@
     @import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Slab:wght@100..900&family=ZCOOL+XiaoWei&display=swap')
 </style><!-- start custom head snippets -->
 <!-- Begin Jekyll SEO tag v2.8.0 -->
-<title>Using charles proxy to monitor mobile SSL traffics | STSD: A Pretended Tech Blog</title>
+<title>Using charles proxy to monitor mobile SSL traffics | STSD</title>
 <meta name="generator" content="Jekyll v4.2.2" />
 <meta property="og:title" content="Using charles proxy to monitor mobile SSL traffics" />
 <meta name="author" content="Pengzhan Hao" />
@@ -28,7 +28,7 @@
 <meta property="og:description" content="In this blog, I will generally talk about how to use proper tools to monitor SSL traffics of a mobile devices. Currently, I only can dealing with those SSL traffics which use an obviously certification. Some applications may not using system root cert or they doesn’t provide us a method to modify their own certs. For these situation, I still didn’t find a good solutions for it. But I’ll keep updating this if I get one. My current solution is using AP to forward all SSL traffic to a proxy, charles proxy is my first choice (Prof asked). It’s a non-free software which still update new versions now. So mainly, I’ll talk about how to charles SSL proxy." />
 <link rel="canonical" href="https://blog.pengzhan.dev/posts/charles-is-not-a-good-tool" />
 <meta property="og:url" content="https://blog.pengzhan.dev/posts/charles-is-not-a-good-tool" />
-<meta property="og:site_name" content="STSD: A Pretended Tech Blog" />
+<meta property="og:site_name" content="STSD" />
 <meta property="og:type" content="article" />
 <meta property="article:published_time" content="2016-10-27T22:50:33-04:00" />
 <meta name="twitter:card" content="summary" />
@@ -425,7 +425,7 @@ c13 9 26 20 30 26 7 11 -9 26 -27 26 -5 0 -3 -5 5 -10 9 -6 10 -10 3 -10 -24
 </g>
 </svg>
 <a title="My personal blog, some contents are useful, the others are not. Just like my mediocre life.
-" href="/">STSD: A Pretended Tech Blog</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
+" href="/">STSD</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
         <ul><li class="navigation__item"><a href="/archive.html">Archive</a></li><li class="navigation__item"><a href="https://pengzhan.dev">About</a></li><li><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></li></ul>
       </nav></div>
   </header>
@@ -547,7 +547,7 @@ You also need to save charles Root Certificate, it also contains in the same men
 </div>
 </div>
     </div><div class="site-info mt-2">
-      <div>© STSD: A Pretended Tech Blog 2021,
+      <div>© STSD 2021,
         Powered by <a title="Jekyll is a simple, blog-aware, static site generator." href="http://jekyllrb.com/">Jekyll</a> & <a
         title="TeXt is a super customizable Jekyll theme." href="https://github.com/kitian616/jekyll-TeXt-theme">TeXt Theme</a>.
       </div>
diff --git a/_site/posts/eddl-how-do-we-train-on-limited-edge-devices-part2.html b/_site/posts/eddl-how-do-we-train-on-limited-edge-devices-part2.html
index 29862fb..2630428 100644
--- a/_site/posts/eddl-how-do-we-train-on-limited-edge-devices-part2.html
+++ b/_site/posts/eddl-how-do-we-train-on-limited-edge-devices-part2.html
@@ -1,10 +1,10 @@
 <!DOCTYPE html><html lang="en">
   <head><meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>EDDL: How do we train neural networks on limited edge devices - PART 2 - STSD: A Pretended Tech Blog</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>EDDL: How do we train neural networks on limited edge devices - PART 2 - STSD</title>
 
 <meta name="description" content="In the last post, part1, our idea of distributed learning on edge environment was generally addressed.I introduced the reason why edge distributed learning i...">
-<link rel="canonical" href="https://blog.pengzhan.dev/posts/eddl-how-do-we-train-on-limited-edge-devices-part2"><link rel="alternate" type="application/rss+xml" title="STSD: A Pretended Tech Blog" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
+<link rel="canonical" href="https://blog.pengzhan.dev/posts/eddl-how-do-we-train-on-limited-edge-devices-part2"><link rel="alternate" type="application/rss+xml" title="STSD" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
 <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png">
 <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png">
 <link rel="manifest" href="/assets/site.webmanifest">
@@ -19,7 +19,7 @@
     @import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Slab:wght@100..900&family=ZCOOL+XiaoWei&display=swap')
 </style><!-- start custom head snippets -->
 <!-- Begin Jekyll SEO tag v2.8.0 -->
-<title>EDDL: How do we train neural networks on limited edge devices - PART 2 | STSD: A Pretended Tech Blog</title>
+<title>EDDL: How do we train neural networks on limited edge devices - PART 2 | STSD</title>
 <meta name="generator" content="Jekyll v4.2.2" />
 <meta property="og:title" content="EDDL: How do we train neural networks on limited edge devices - PART 2" />
 <meta name="author" content="Pengzhan Hao" />
@@ -28,7 +28,7 @@
 <meta property="og:description" content="In the last post, part1, our idea of distributed learning on edge environment was generally addressed. I introduced the reason why edge distributed learning is needed and what improvements it can achieve. In this post, I will talk about our motivation study and how our framework works. How does data support us training on edge? Before designing and implementing our framework, we first need confirmation that training on edge resource-limited devices is worthwhile. We were using a malware detection neural network to show why a small, customized neural network is better. We collected 32000+ mobile apps feature as global data. With these data records, we trained a multilayer perceptron called “PerNet” to determine whether a given feature belongs to a benign or malware app. We called this detection. As well, PerNet can also classify malware apps into different types of attacks. We called this classification. The global model can achieve 93% above recall rate and 96.93% above accuracy. With all these data, we selected two community app usage sub-dataset for local model generations. Large categories (Scenario 1) We chose the 5 largest categories of apps, including entertainment, tools, brain&amp;Puzzle, Lifestyle, and Education, as well as the 5 largest malware categories. All together, 12000+ apps were included in this sub-dataset, almost 50 to 50 between benign and malware. Campus-community categories (Scenario 2) We chose the 5 most downloaded categories from college students as benign groups, as well as a similar amount of 5 malware categories. To ensure that malware apps are included in 5 benign categories, we also considered synthesizing some other malware apps within categories of 5 most downloaded(benign) categories. With these two types of sub-dataset, we used the same PerNet to generate multiple local models. Under each scenarios experiment, we compared global and local models on the preserved test dataset. In all classification performances, local beat global in every scenario. In detection performances, local also share the same accuracy as global does. In summary, local models were trained on special occasions. Under the same circumstance, a global model can achieve no better accuracy than local models. The reason why local is better might be because of overfitting. I believe this issue also be considered in the machine learning communities that they brought transfer learning, a technique to optimize global models to special scenarios but performing more training to a global model once it’s shipped to local. Design and Implementation Overall design The basic EDDL distributed training setup consists of 3 parts. EDDL training cluster, a device cluster that consists of edge or mobile devices that are participating in training. EDDL manager, the initial driver program that works as collect training data, relay data to training devices and initial training clusters. Training data entry (TDE), a data storage for all training data. Dynamic training data distribution Existing distributed DNN training solutions usually statically partition training data among workers. It can be a problem when the training node joins and exits. We designed our framework that can dynamically distribute training data during learning. Before every training batch started, a batch of TDE will be sent to devices. In our experiments, we found that by applying this design, overall training time was shortened by doing. Especially in large amount devices cases, this optimization can be 50% less than statically divided. Scaling up cluster size Our framework was designed to have both sync and async parameter aggregation. Asynchronous aggregation can allow a high outcome of training batch but with a sacrifice or converge time. Synchronous aggregation allows a quick converge time in epochs, however can’t ensure performance when there’s a struggler worker. As showed in experiments, we chose sync as default because the converging time is dominant in overall training time. But, we also considered the possibilities of that async with more workers can achieve similar overall training time. We introduced a formula to determine whether adding more training nodes can help or not. Here we used bandwidth usage coefficient (BUC) as [BUC = \dfrac{n}{T_{sync}}] In this formula, \(n\) is the number of devices, and \(T_{sync}\) is the transmission time of parameters. With an increasing number of workers, n increase linearly but transmission time does not. When \(BUC\) increases, the cluster can speed up training time by adding workers. Otherwise, adding more workers won’t help with overall training time. Adaptive leader role splitting The idea of role splitting is simple that a device can work as a worker as well leader. The advantage of doing this is straightforward that we can transfer 1 less parameter and training time will be shortened. However, in our current settings, it can’t perform much better help since only 1 leader role is in a cluster. We can benefit from this in our future works. Overall architecture Details were given in the image. Prototype hardware and software EDDL was designed to be run on two single-board computer embedded platforms. One such platform is ODROID-XU4, which is equipped with a 2.1/1.4 GHz 32-bit ARM processor and 2GB memory. The other platform is the Raspberry Pi 3 Model B board, which comes with an ARM 1.2 GHz 64-bit quad-core processor and 1GB memory. The operating system running on the above platforms is Ubuntu 18.04 with Linux kernel 4.14. We used Dlib, a C++ library that provides implementations for a wide range of machine learning algorithms. We chose the Dlib library because it is written in C/C++, and can be easily and natively used in embedded devices." />
 <link rel="canonical" href="https://blog.pengzhan.dev/posts/eddl-how-do-we-train-on-limited-edge-devices-part2" />
 <meta property="og:url" content="https://blog.pengzhan.dev/posts/eddl-how-do-we-train-on-limited-edge-devices-part2" />
-<meta property="og:site_name" content="STSD: A Pretended Tech Blog" />
+<meta property="og:site_name" content="STSD" />
 <meta property="og:type" content="article" />
 <meta property="article:published_time" content="2021-10-31T13:01:14-04:00" />
 <meta name="twitter:card" content="summary" />
@@ -425,7 +425,7 @@ c13 9 26 20 30 26 7 11 -9 26 -27 26 -5 0 -3 -5 5 -10 9 -6 10 -10 3 -10 -24
 </g>
 </svg>
 <a title="My personal blog, some contents are useful, the others are not. Just like my mediocre life.
-" href="/">STSD: A Pretended Tech Blog</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
+" href="/">STSD</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
         <ul><li class="navigation__item"><a href="/archive.html">Archive</a></li><li class="navigation__item"><a href="https://pengzhan.dev">About</a></li><li><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></li></ul>
       </nav></div>
   </header>
@@ -622,7 +622,7 @@ We chose the Dlib library because it is written in C/C++, and can be easily and
 </div>
 </div>
     </div><div class="site-info mt-2">
-      <div>© STSD: A Pretended Tech Blog 2021,
+      <div>© STSD 2021,
         Powered by <a title="Jekyll is a simple, blog-aware, static site generator." href="http://jekyllrb.com/">Jekyll</a> & <a
         title="TeXt is a super customizable Jekyll theme." href="https://github.com/kitian616/jekyll-TeXt-theme">TeXt Theme</a>.
       </div>
diff --git a/_site/posts/eddl-how-do-we-train-on-limited-edge-devices.html b/_site/posts/eddl-how-do-we-train-on-limited-edge-devices.html
index c21620b..de3bd46 100644
--- a/_site/posts/eddl-how-do-we-train-on-limited-edge-devices.html
+++ b/_site/posts/eddl-how-do-we-train-on-limited-edge-devices.html
@@ -1,10 +1,10 @@
 <!DOCTYPE html><html lang="en">
   <head><meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>EDDL: How do we train neural networks on limited edge devices - PART 1 - STSD: A Pretended Tech Blog</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>EDDL: How do we train neural networks on limited edge devices - PART 1 - STSD</title>
 
 <meta name="description" content="This post introduces our previous milestone in project “Edge trainer”, as the paper “EDDL: A Distributed Deep Learning System for Resource-limited Edge Compu...">
-<link rel="canonical" href="https://blog.pengzhan.dev/posts/eddl-how-do-we-train-on-limited-edge-devices"><link rel="alternate" type="application/rss+xml" title="STSD: A Pretended Tech Blog" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
+<link rel="canonical" href="https://blog.pengzhan.dev/posts/eddl-how-do-we-train-on-limited-edge-devices"><link rel="alternate" type="application/rss+xml" title="STSD" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
 <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png">
 <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png">
 <link rel="manifest" href="/assets/site.webmanifest">
@@ -19,7 +19,7 @@
     @import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Slab:wght@100..900&family=ZCOOL+XiaoWei&display=swap')
 </style><!-- start custom head snippets -->
 <!-- Begin Jekyll SEO tag v2.8.0 -->
-<title>EDDL: How do we train neural networks on limited edge devices - PART 1 | STSD: A Pretended Tech Blog</title>
+<title>EDDL: How do we train neural networks on limited edge devices - PART 1 | STSD</title>
 <meta name="generator" content="Jekyll v4.2.2" />
 <meta property="og:title" content="EDDL: How do we train neural networks on limited edge devices - PART 1" />
 <meta name="author" content="Pengzhan Hao" />
@@ -28,7 +28,7 @@
 <meta property="og:description" content="This post introduces our previous milestone in project “Edge trainer”, as the paper “EDDL: A Distributed Deep Learning System for Resource-limited Edge Computing Environment.” was published. As the first part of the introductions, I focus only on the motivation and summary of our works. More details in design and implementation can be found in late posts." />
 <link rel="canonical" href="https://blog.pengzhan.dev/posts/eddl-how-do-we-train-on-limited-edge-devices" />
 <meta property="og:url" content="https://blog.pengzhan.dev/posts/eddl-how-do-we-train-on-limited-edge-devices" />
-<meta property="og:site_name" content="STSD: A Pretended Tech Blog" />
+<meta property="og:site_name" content="STSD" />
 <meta property="og:type" content="article" />
 <meta property="article:published_time" content="2021-10-13T16:53:20-04:00" />
 <meta name="twitter:card" content="summary" />
@@ -425,7 +425,7 @@ c13 9 26 20 30 26 7 11 -9 26 -27 26 -5 0 -3 -5 5 -10 9 -6 10 -10 3 -10 -24
 </g>
 </svg>
 <a title="My personal blog, some contents are useful, the others are not. Just like my mediocre life.
-" href="/">STSD: A Pretended Tech Blog</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
+" href="/">STSD</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
         <ul><li class="navigation__item"><a href="/archive.html">Archive</a></li><li class="navigation__item"><a href="https://pengzhan.dev">About</a></li><li><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></li></ul>
       </nav></div>
   </header>
@@ -595,7 +595,7 @@ Smartly schedule work balance and handle join/exit issues also need under consid
 </div>
 </div>
     </div><div class="site-info mt-2">
-      <div>© STSD: A Pretended Tech Blog 2021,
+      <div>© STSD 2021,
         Powered by <a title="Jekyll is a simple, blog-aware, static site generator." href="http://jekyllrb.com/">Jekyll</a> & <a
         title="TeXt is a super customizable Jekyll theme." href="https://github.com/kitian616/jekyll-TeXt-theme">TeXt Theme</a>.
       </div>
diff --git a/_site/posts/generate-word-cloud-with-chinese-fenci.html b/_site/posts/generate-word-cloud-with-chinese-fenci.html
index 15b21d7..64fda6d 100644
--- a/_site/posts/generate-word-cloud-with-chinese-fenci.html
+++ b/_site/posts/generate-word-cloud-with-chinese-fenci.html
@@ -1,10 +1,10 @@
 <!DOCTYPE html><html lang="en">
   <head><meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Generate Word Cloud Figures with Chinese-Tokenization and WordCloud python libraries - STSD: A Pretended Tech Blog</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Generate Word Cloud Figures with Chinese-Tokenization and WordCloud python libraries - STSD</title>
 
 <meta name="description" content="Let’s generate a word cloud like this. Don’t understand the language is not a big deal.If your written language is based on latin alphabet(or other language ...">
-<link rel="canonical" href="https://blog.pengzhan.dev/posts/generate-word-cloud-with-chinese-fenci"><link rel="alternate" type="application/rss+xml" title="STSD: A Pretended Tech Blog" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
+<link rel="canonical" href="https://blog.pengzhan.dev/posts/generate-word-cloud-with-chinese-fenci"><link rel="alternate" type="application/rss+xml" title="STSD" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
 <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png">
 <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png">
 <link rel="manifest" href="/assets/site.webmanifest">
@@ -19,7 +19,7 @@
     @import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Slab:wght@100..900&family=ZCOOL+XiaoWei&display=swap')
 </style><!-- start custom head snippets -->
 <!-- Begin Jekyll SEO tag v2.8.0 -->
-<title>Generate Word Cloud Figures with Chinese-Tokenization and WordCloud python libraries | STSD: A Pretended Tech Blog</title>
+<title>Generate Word Cloud Figures with Chinese-Tokenization and WordCloud python libraries | STSD</title>
 <meta name="generator" content="Jekyll v4.2.2" />
 <meta property="og:title" content="Generate Word Cloud Figures with Chinese-Tokenization and WordCloud python libraries" />
 <meta name="author" content="Pengzhan Hao" />
@@ -28,7 +28,7 @@
 <meta property="og:description" content="Let’s generate a word cloud like this. Don’t understand the language is not a big deal. If your written language is based on latin alphabet(or other language has space between words), skip tokenization." />
 <link rel="canonical" href="https://blog.pengzhan.dev/posts/generate-word-cloud-with-chinese-fenci" />
 <meta property="og:url" content="https://blog.pengzhan.dev/posts/generate-word-cloud-with-chinese-fenci" />
-<meta property="og:site_name" content="STSD: A Pretended Tech Blog" />
+<meta property="og:site_name" content="STSD" />
 <meta property="og:type" content="article" />
 <meta property="article:published_time" content="2020-09-15T22:00:14-04:00" />
 <meta name="twitter:card" content="summary" />
@@ -425,7 +425,7 @@ c13 9 26 20 30 26 7 11 -9 26 -27 26 -5 0 -3 -5 5 -10 9 -6 10 -10 3 -10 -24
 </g>
 </svg>
 <a title="My personal blog, some contents are useful, the others are not. Just like my mediocre life.
-" href="/">STSD: A Pretended Tech Blog</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
+" href="/">STSD</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
         <ul><li class="navigation__item"><a href="/archive.html">Archive</a></li><li class="navigation__item"><a href="https://pengzhan.dev">About</a></li><li><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></li></ul>
       </nav></div>
   </header>
@@ -675,7 +675,7 @@ If your written language is based on latin alphabet(or other language has space
 </div>
 </div>
     </div><div class="site-info mt-2">
-      <div>© STSD: A Pretended Tech Blog 2021,
+      <div>© STSD 2021,
         Powered by <a title="Jekyll is a simple, blog-aware, static site generator." href="http://jekyllrb.com/">Jekyll</a> & <a
         title="TeXt is a super customizable Jekyll theme." href="https://github.com/kitian616/jekyll-TeXt-theme">TeXt Theme</a>.
       </div>
diff --git a/_site/posts/intro-xv6.html b/_site/posts/intro-xv6.html
index fca406b..5680a3c 100644
--- a/_site/posts/intro-xv6.html
+++ b/_site/posts/intro-xv6.html
@@ -1,10 +1,10 @@
 <!DOCTYPE html><html lang="en">
   <head><meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Xv6 introduction - STSD: A Pretended Tech Blog</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Xv6 introduction - STSD</title>
 
 <meta name="description" content="In this post, you will learn a few basic concepts of xv6. Learning path will be closed coupled to first project assignment I gave when I assisted in teaching...">
-<link rel="canonical" href="https://blog.pengzhan.dev/posts/intro-xv6"><link rel="alternate" type="application/rss+xml" title="STSD: A Pretended Tech Blog" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
+<link rel="canonical" href="https://blog.pengzhan.dev/posts/intro-xv6"><link rel="alternate" type="application/rss+xml" title="STSD" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
 <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png">
 <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png">
 <link rel="manifest" href="/assets/site.webmanifest">
@@ -19,7 +19,7 @@
     @import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Slab:wght@100..900&family=ZCOOL+XiaoWei&display=swap')
 </style><!-- start custom head snippets -->
 <!-- Begin Jekyll SEO tag v2.8.0 -->
-<title>Xv6 introduction | STSD: A Pretended Tech Blog</title>
+<title>Xv6 introduction | STSD</title>
 <meta name="generator" content="Jekyll v4.2.2" />
 <meta property="og:title" content="Xv6 introduction" />
 <meta name="author" content="Pengzhan Hao" />
@@ -28,7 +28,7 @@
 <meta property="og:description" content="In this post, you will learn a few basic concepts of xv6. Learning path will be closed coupled to first project assignment I gave when I assisted in teaching OS classes. Understand system call and know how to implement a simple one will be coved as the first half. In the second half of this post, I will discuss a little bit more on how to debug xv6 using gdb." />
 <link rel="canonical" href="https://blog.pengzhan.dev/posts/intro-xv6" />
 <meta property="og:url" content="https://blog.pengzhan.dev/posts/intro-xv6" />
-<meta property="og:site_name" content="STSD: A Pretended Tech Blog" />
+<meta property="og:site_name" content="STSD" />
 <meta property="og:type" content="article" />
 <meta property="article:published_time" content="2017-07-28T14:56:55-04:00" />
 <meta name="twitter:card" content="summary" />
@@ -425,7 +425,7 @@ c13 9 26 20 30 26 7 11 -9 26 -27 26 -5 0 -3 -5 5 -10 9 -6 10 -10 3 -10 -24
 </g>
 </svg>
 <a title="My personal blog, some contents are useful, the others are not. Just like my mediocre life.
-" href="/">STSD: A Pretended Tech Blog</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
+" href="/">STSD</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
         <ul><li class="navigation__item"><a href="/archive.html">Archive</a></li><li class="navigation__item"><a href="https://pengzhan.dev">About</a></li><li><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></li></ul>
       </nav></div>
   </header>
@@ -596,7 +596,7 @@ Using ssh may connect to different physical devices under same domain name, this
 </div>
 </div>
     </div><div class="site-info mt-2">
-      <div>© STSD: A Pretended Tech Blog 2021,
+      <div>© STSD 2021,
         Powered by <a title="Jekyll is a simple, blog-aware, static site generator." href="http://jekyllrb.com/">Jekyll</a> & <a
         title="TeXt is a super customizable Jekyll theme." href="https://github.com/kitian616/jekyll-TeXt-theme">TeXt Theme</a>.
       </div>
diff --git a/_site/posts/some-of-my-previews-exper-work.html b/_site/posts/some-of-my-previews-exper-work.html
index 59c7bdd..5bc0afd 100644
--- a/_site/posts/some-of-my-previews-exper-work.html
+++ b/_site/posts/some-of-my-previews-exper-work.html
@@ -1,10 +1,10 @@
 <!DOCTYPE html><html lang="en">
   <head><meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Some of my previews experiment works: 2016 - STSD: A Pretended Tech Blog</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Some of my previews experiment works: 2016 - STSD</title>
 
 <meta name="description" content="This blog contains only some basic record of my works. For some details, I will write a unique blog just for some specific topics.">
-<link rel="canonical" href="https://blog.pengzhan.dev/posts/some-of-my-previews-exper-work"><link rel="alternate" type="application/rss+xml" title="STSD: A Pretended Tech Blog" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
+<link rel="canonical" href="https://blog.pengzhan.dev/posts/some-of-my-previews-exper-work"><link rel="alternate" type="application/rss+xml" title="STSD" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
 <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png">
 <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png">
 <link rel="manifest" href="/assets/site.webmanifest">
@@ -19,7 +19,7 @@
     @import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Slab:wght@100..900&family=ZCOOL+XiaoWei&display=swap')
 </style><!-- start custom head snippets -->
 <!-- Begin Jekyll SEO tag v2.8.0 -->
-<title>Some of my previews experiment works: 2016 | STSD: A Pretended Tech Blog</title>
+<title>Some of my previews experiment works: 2016 | STSD</title>
 <meta name="generator" content="Jekyll v4.2.2" />
 <meta property="og:title" content="Some of my previews experiment works: 2016" />
 <meta name="author" content="Pengzhan Hao" />
@@ -28,7 +28,7 @@
 <meta property="og:description" content="This blog contains only some basic record of my works. For some details, I will write a unique blog just for some specific topics." />
 <link rel="canonical" href="https://blog.pengzhan.dev/posts/some-of-my-previews-exper-work" />
 <meta property="og:url" content="https://blog.pengzhan.dev/posts/some-of-my-previews-exper-work" />
-<meta property="og:site_name" content="STSD: A Pretended Tech Blog" />
+<meta property="og:site_name" content="STSD" />
 <meta property="og:type" content="article" />
 <meta property="article:published_time" content="2016-10-28T12:27:33-04:00" />
 <meta name="twitter:card" content="summary" />
@@ -425,7 +425,7 @@ c13 9 26 20 30 26 7 11 -9 26 -27 26 -5 0 -3 -5 5 -10 9 -6 10 -10 3 -10 -24
 </g>
 </svg>
 <a title="My personal blog, some contents are useful, the others are not. Just like my mediocre life.
-" href="/">STSD: A Pretended Tech Blog</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
+" href="/">STSD</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
         <ul><li class="navigation__item"><a href="/archive.html">Archive</a></li><li class="navigation__item"><a href="https://pengzhan.dev">About</a></li><li><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></li></ul>
       </nav></div>
   </header>
@@ -631,7 +631,7 @@ su
 </div>
 </div>
     </div><div class="site-info mt-2">
-      <div>© STSD: A Pretended Tech Blog 2021,
+      <div>© STSD 2021,
         Powered by <a title="Jekyll is a simple, blog-aware, static site generator." href="http://jekyllrb.com/">Jekyll</a> & <a
         title="TeXt is a super customizable Jekyll theme." href="https://github.com/kitian616/jekyll-TeXt-theme">TeXt Theme</a>.
       </div>
diff --git a/_site/posts/welcome-to-my-blog.html b/_site/posts/welcome-to-my-blog.html
index 2703a58..d912888 100644
--- a/_site/posts/welcome-to-my-blog.html
+++ b/_site/posts/welcome-to-my-blog.html
@@ -1,10 +1,10 @@
 <!DOCTYPE html><html lang="en">
   <head><meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>STSD: Stop Talking Start Doing - STSD: A Pretended Tech Blog</title>
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>STSD: Stop Talking Start Doing - STSD</title>
 
 <meta name="description" content="">
-<link rel="canonical" href="https://blog.pengzhan.dev/posts/welcome-to-my-blog"><link rel="alternate" type="application/rss+xml" title="STSD: A Pretended Tech Blog" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
+<link rel="canonical" href="https://blog.pengzhan.dev/posts/welcome-to-my-blog"><link rel="alternate" type="application/rss+xml" title="STSD" href="/feed.xml"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
 <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png">
 <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png">
 <link rel="manifest" href="/assets/site.webmanifest">
@@ -19,7 +19,7 @@
     @import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Slab:wght@100..900&family=ZCOOL+XiaoWei&display=swap')
 </style><!-- start custom head snippets -->
 <!-- Begin Jekyll SEO tag v2.8.0 -->
-<title>STSD: Stop Talking Start Doing | STSD: A Pretended Tech Blog</title>
+<title>STSD: Stop Talking Start Doing | STSD</title>
 <meta name="generator" content="Jekyll v4.2.2" />
 <meta property="og:title" content="STSD: Stop Talking Start Doing" />
 <meta name="author" content="Pengzhan Hao" />
@@ -28,7 +28,7 @@
 <meta property="og:description" content="My personal blog, some contents are useful, the others are not. Just like my mediocre life." />
 <link rel="canonical" href="https://blog.pengzhan.dev/posts/welcome-to-my-blog" />
 <meta property="og:url" content="https://blog.pengzhan.dev/posts/welcome-to-my-blog" />
-<meta property="og:site_name" content="STSD: A Pretended Tech Blog" />
+<meta property="og:site_name" content="STSD" />
 <meta property="og:type" content="article" />
 <meta property="article:published_time" content="2016-10-26T22:50:33-04:00" />
 <meta name="twitter:card" content="summary" />
@@ -425,7 +425,7 @@ c13 9 26 20 30 26 7 11 -9 26 -27 26 -5 0 -3 -5 5 -10 9 -6 10 -10 3 -10 -24
 </g>
 </svg>
 <a title="My personal blog, some contents are useful, the others are not. Just like my mediocre life.
-" href="/">STSD: A Pretended Tech Blog</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
+" href="/">STSD</a></div><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></div><nav class="navigation">
         <ul><li class="navigation__item"><a href="/archive.html">Archive</a></li><li class="navigation__item"><a href="https://pengzhan.dev">About</a></li><li><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></li></ul>
       </nav></div>
   </header>
@@ -515,7 +515,7 @@ c13 9 26 20 30 26 7 11 -9 26 -27 26 -5 0 -3 -5 5 -10 9 -6 10 -10 3 -10 -24
 </div>
 </div>
     </div><div class="site-info mt-2">
-      <div>© STSD: A Pretended Tech Blog 2021,
+      <div>© STSD 2021,
         Powered by <a title="Jekyll is a simple, blog-aware, static site generator." href="http://jekyllrb.com/">Jekyll</a> & <a
         title="TeXt is a super customizable Jekyll theme." href="https://github.com/kitian616/jekyll-TeXt-theme">TeXt Theme</a>.
       </div>
