1<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title> blog | Hailin Wang (汪海æ) </title> <meta name="author" content="Hailin Wang"> <meta name="description" content="A simple, whitespace theme for academics. Based on [*folio](https://github.com/bogoli/-folio) design. "> <meta name="keywords" content="jekyll, jekyll-theme, academic-website, portfolio-website"> <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' https:; style-src 'self' 'unsafe-inline' https:; img-src 'self' data: https:; font-src 'self' data: https:; media-src 'self' https:; frame-src 'self' https:; connect-src 'self' https:;"> <style> 2 :root { 3 --max-content-width: 930px; 4 } 5</style> <link rel="stylesheet" href="/assets/css/tailwind.css?v=50c64c15cbb9fd1ce6056fdb8bcb4b62"> <link defer rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css" integrity="sha256-MVopmdyC2tYTiJ8wlktf0uh0v4NgT+vNdyVFepi7Q0c=" crossorigin="anonymous"> <link defer rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/academicons.min.css" integrity="sha256-SzrCOBJbGVFMahewkgjwnApaV2+av1DwMAA+/QGLyZw=" crossorigin="anonymous"> <link defer rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/scholar-icons.css" integrity="sha256-VY3hHVj/hNX3fYG6wtbA6TcKJQl7+FthzGSyIB64klY=" crossorigin="anonymous"> <link defer rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Slab:100,300,400,500,700|Material+Icons&display=swap"> <link defer rel="stylesheet" href="/assets/css/jekyll-pygments-themes-github.css?v=591dab5a4e56573bf4ef7fd332894c99" media="" id="highlight_theme_light"> <link rel="shortcut icon" href="data:image/svg+xml,<svg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22><text%20y=%22.9em%22%20font-size=%2290%22>%E2%9A%9B%EF%B8%8F</text></svg>"> <link rel="stylesheet" href="/assets/css/main.css?v=3116ba77db9ee1581d05bb3e86fbf7f1"> <link rel="canonical" href="https://haiiliin.github.io/blog/">
5<script src="/assets/js/theme.js?v=5286c3e4c334d0ecb8fc0c40ff4fa7ec"></script>
5 <link defer rel="stylesheet" href="/assets/css/jekyll-pygments-themes-native.css?v=5847e5ed4a4568527aa6cfab446049ca" media="none" id="highlight_theme_dark">
5<script> 6 initTheme(); 7 </script>
7 </head> <body class="fixed-top-nav "> <header> <nav id="navbar" class="navbar navbar-light navbar-expand-sm fixed-top" role="navigation"> <div class="container"> <a class="navbar-brand title font-weight-lighter" href="/"> Hailin Wang (汪海æ) </a> <button class="navbar-toggler collapsed navbar-toggler-main" type="button" data-nav-toggle="navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar top-bar"></span> <span class="icon-bar middle-bar"></span> <span class="icon-bar bottom-bar"></span> </button> <div class="collapse navbar-collapse navbar-collapse-main" id="navbarNav"> <ul class="navbar-nav navbar-menu-list flex-nowrap"> <li class="nav-item "> <a class="nav-link" href="/">about </a> </li> <li class="nav-item "> <a class="nav-link" href="/news/">news </a> </li> <li class="nav-item active"> <a class="nav-link" href="/blog/">blog <span class="sr-only">(current)</span> </a> </li> <li class="nav-item "> <a class="nav-link" href="/publications/">publications </a> </li> <li class="nav-item "> <a class="nav-link" href="/repositories/">repositories </a> </li> <li class="nav-item "> <a class="nav-link" href="/cv/">CV </a> </li> <li class="nav-item"> <button id="search-toggle" type="button" title="Search" aria-label="Open search"> <span class="nav-link">ctrl k <i class="fa-solid fa-magnifying-glass"></i></span> </button> </li> <li class="toggle-container"> <button id="light-toggle" type="button" title="Change theme" aria-label="Change color theme"> <i class="fa-half-sun-moon" id="light-toggle-system"></i> <i class="fa-solid fa-moon" id="light-toggle-dark"></i> <i class="fa-solid fa-sun" id="light-toggle-light"></i> </button> </li> </ul> </div> </div> </nav> <progress id="progress" value="0"> <div class="progress-container"> <span class="progress-bar"></span> </div> </progress> </header> <div class="container mt-5" role="main"> <div class="post"> <div class="header-bar"> <h1>blog</h1> <h2>research, writing, and thoughts on science, technology, and life</h2> </div> <div class="tag-category-list"> <ul class="p-0 m-0"> <li> <i class="fa-solid fa-hashtag fa-sm"></i> <a href="/blog/tag/formatting">formatting</a> </li> <p>â¢</p> <li> <i class="fa-solid fa-hashtag fa-sm"></i> <a href="/blog/tag/images">images</a> </li> <p>â¢</p> <li> <i class="fa-solid fa-hashtag fa-sm"></i> <a href="/blog/tag/links">links</a> </li> <p>â¢</p> <li> <i class="fa-solid fa-hashtag fa-sm"></i> <a href="/blog/tag/math">math</a> </li> <p>â¢</p> <li> <i class="fa-solid fa-hashtag fa-sm"></i> <a href="/blog/tag/code">code</a> </li> <p>â¢</p> <li> <i class="fa-solid fa-hashtag fa-sm"></i> <a href="/blog/tag/blockquotes">blockquotes</a> </li> <p>â¢</p> <li> <i class="fa-solid fa-tag fa-sm"></i> <a href="/blog/category/external-services">external-services</a> </li> </ul> </div> <br> <div class="container featured-posts"> <div class="row row-cols-2"> <div class="col mb-4"> <a href="/blog/2021/distill/"> <div class="card hoverable"> <div class="row g-0"> <div class="col-md-12"> <div class="card-body"> <div class="float-right"> <i class="fa-solid fa-thumbtack fa-xs"></i> </div> <h3 class="card-title text-lowercase">a distill-style blog post</h3> <p class="card-text">an example of a distill-style blog post and main elements</p> <p class="post-meta"> 25 min read  ·  <a href="/blog/2021"> <i class="fa-solid fa-calendar fa-sm"></i> 2021 </a> </p> </div> </div> </div> </div> </a> </div> <div class="col mb-4"> <a href="/blog/2015/code/"> <div class="card hoverable"> <div class="row g-0"> <div class="col-md-12"> <div class="card-body"> <div class="float-right"> <i class="fa-solid fa-thumbtack fa-xs"></i> </div> <h3 class="card-title text-lowercase">a post with code</h3> <p class="card-text">an example of a blog post with some code</p> <p class="post-meta"> 4 min read  ·  <a href="/blog/2015"> <i class="fa-solid fa-calendar fa-sm"></i> 2015 </a> </p> </div> </div> </div> </div> </a> </div> </div> </div> <hr> <ul class="post-list"> <li> <h3> <a class="post-title" href="/blog/2025/marimo/">a post with marimo snippets</a> </h3> <p>running Python in the browser with marimo</p> <p class="post-meta"> 2 min read  ·  April 28, 2025 </p> <p class="post-tags"> <a href="/blog/2025"> <i class="fa-solid fa-calendar fa-sm"></i> 2025 </a>  ·  <a href="/blog/tag/code"> <i class="fa-solid fa-hashtag fa-sm"></i> code</a>  <a href="/blog/tag/formatting"> <i class="fa-solid fa-hashtag fa-sm"></i> formatting</a>  ·  <a href="/blog/category/sample-posts"> <i class="fa-solid fa-tag fa-sm"></i> sample-posts</a> </p> </li> <li> <h3> <a class="post-title" href="/blog/2025/plotly/">a post with plotly.js</a> </h3> <p>this is what included plotly.js code could look like</p> <p class="post-meta"> 2 min read  ·  March 26, 2025 </p> <p class="post-tags"> <a href="/blog/2025"> <i class="fa-solid fa-calendar fa-sm"></i> 2025 </a>  ·  <a href="/blog/tag/formatting"> <i class="fa-solid fa-hashtag fa-sm"></i> formatting</a>  <a href="/blog/tag/charts"> <i class="fa-solid fa-hashtag fa-sm"></i> charts</a>  ·  <a href="/blog/category/sample-posts"> <i class="fa-solid fa-tag fa-sm"></i> sample-posts</a> </p> </li> <li> <div class="row"> <div class="col-sm-9"> <h3> <a class="post-title" href="/blog/2024/photo-gallery/">a post with image galleries</a> </h3> <p>this is what included image galleries could look like</p> <p class="post-meta"> 2 min read  ·  December 04, 2024 </p> <p class="post-tags"> <a href="/blog/2024"> <i class="fa-solid fa-calendar fa-sm"></i> 2024 </a>  ·  <a href="/blog/tag/formatting"> <i class="fa-solid fa-hashtag fa-sm"></i> formatting</a>  <a href="/blog/tag/images"> <i class="fa-solid fa-hashtag fa-sm"></i> images</a>  ·  <a href="/blog/category/sample-posts"> <i class="fa-solid fa-tag fa-sm"></i> sample-posts</a> </p> </div> <div class="col-sm-3"> <img class="card-img" src="/assets/img/9.jpg" style="object-fit: cover; height: 90%" alt="image"> </div> </div> </li> <li> <h3> <a class="post-title" href="https://blog.google/technology/ai/google-gemini-update-flash-ai-assistant-io-2024/" target="_blank" rel="external nofollow noopener">Google Gemini updates: Flash 1.5, Gemma 2 and Project Astra</a> <svg width="2rem" height="2rem" viewbox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"> <path d="M17 13.5v6H5v-12h6m3-3h6v6m0-6-9 9" class="icon_svg-stroke" stroke="#999" stroke-width="1.5" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </h3> <p>Weâre sharing updates across our Gemini family of models and a glimpse of Project Astra, our vision for the future of AI assistants.</p> <p class="post-meta"> 7 min read  ·  May 14, 2024  ·  Google Blog </p> <p class="post-tags"> <a href="/blog/2024"> <i class="fa-solid fa-calendar fa-sm"></i> 2024 </a>  ·  <a href="/blog/tag/google"> <i class="fa-solid fa-hashtag fa-sm"></i> google</a>
7  ·  <a href="/blog/category/external-posts"> <i class="fa-solid fa-tag fa-sm"></i> external-posts</a> </p> </li> <li> <h3> <a class="post-title" href="/blog/2024/tabs/">a post with tabs</a> </h3> <p>this is what included tabs in a post could look like</p> <p class="post-meta"> 2 min read  ·  May 01, 2024 </p> <p class="post-tags"> <a href="/blog/2024"> <i class="fa-solid fa-calendar fa-sm"></i> 2024 </a>  ·  <a href="/blog/tag/formatting"> <i class="fa-solid fa-hashtag fa-sm"></i> formatting</a>  <a href="/blog/tag/code"> <i class="fa-solid fa-hashtag fa-sm"></i> code</a>  ·  <a href="/blog/category/sample-posts"> <i class="fa-solid fa-tag fa-sm"></i> sample-posts</a> </p> </li> </ul> <nav aria-label="Blog page navigation"> <ul class="af-pagination"> <li class="af-page-item disabled"> <a class="af-page-link" href="" tabindex="-1" aria-disabled=""><</a> </li> <li class="af-page-item active"> <a class="af-page-link" href="/blog/" title="blog">1</a> </li> <li class="af-page-item "> <a class="af-page-link" href="/blog/page/2/" title="blog - page 2">2</a> </li> <li class="af-page-item "> <a class="af-page-link" href="/blog/page/3/" title="blog - page 3">3</a> </li> <li class="af-page-item "> <a class="af-page-link" href="/blog/page/4/" title="blog - page 4">4</a> </li> <li class="af-page-item "> <a class="af-page-link" href="/blog/page/5/" title="blog - page 5">5</a> </li> <li class="af-page-item "> <a class="af-page-link" href="/blog/page/2/">></a> </li> </ul> </nav> </div> </div> <footer class="fixed-bottom" role="contentinfo"> <div class="container mt-0"> © Copyright 2026 Hailin Wang. Powered by <a href="https://jekyllrb.com/" target="_blank" rel="external nofollow noopener">Jekyll</a> with <a href="https://github.com/alshedivat/al-folio" rel="external nofollow noopener" target="_blank">al-folio</a> theme. Hosted by <a href="https://pages.github.com/" target="_blank" rel="external nofollow noopener">GitHub Pages</a>. Photos from <a href="https://unsplash.com" target="_blank" rel="external nofollow noopener">Unsplash</a>. </div> </footer>
7<script> 8 window.alFolio = { 9 compatBootstrap: false 10 }; 11</script>
11
11<script src="/assets/js/nav-toggle.js?v=141bd79a73ebc0f0b6ea58e440ae79fc"></script>
11
11<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/masonry.pkgd.min.js" integrity="sha256-Nn1q/fx0H7SNLZMQ5Hw5JLaTRZp0yILA/FRexe19VdI=" crossorigin="anonymous"></script>
11
11<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/imagesloaded.pkgd.min.js" integrity="sha256-htrLFfZJ6v5udOG+3kNLINIKh2gvoKqwEhHYfTTMICc=" crossorigin="anonymous"></script>
11
11<script defer src="/assets/js/masonry.js?v=e49affc7bd2646f6acdad1dbe02c2359" type="text/javascript"></script>
11
11<script defer type="text/javascript" id="MathJax-script" src="https://cdn.jsdelivr.net/npm/[email protected]/es5/tex-mml-chtml.js" integrity="sha256-MASABpB4tYktI2Oitl4t+78w/lyA+D7b/s9GEP0JOGI=" crossorigin="anonymous"></script>
11
11<script src="/assets/al_math/js/mathjax-setup.js"></script>
11
11<script src="/assets/js/tooltips-setup.js?v=fe487e99db6c43751e6e7bdb2d6a0611"></script>
11
11<script src="/assets/js/no_defer.js?v=53b1b1a645525975c963ce8bf8bfefcf"></script>
11
11<script defer src="/assets/js/common.js?v=87baac90f765f2f3362dcf6aaf312a8a"></script>
11
11<script defer src="/assets/js/copy_code.js?v=c8a01c11a92744d44b093fc3bda915df" type="text/javascript"></script>
11
11<script defer src="/assets/js/jupyter_new_tab.js?v=896d254890d9b47f0281f63bfccf0dee"></script>
11
11<script async src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script>
11
11<script async src="https://badge.dimensions.ai/badge.js"></script>
11
11<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/medium-zoom.min.js" integrity="sha256-ZgMyDAIYDYGxbcpJcfUnYwNevG/xi9OHKaR/8GK+jWc=" crossorigin="anonymous"></script>
11
11<script defer src="/assets/al_img_tools/js/zoom.js"></script>
11
11<script defer src="/assets/js/progress-bar.js?v=499464c5c63ced6cf7ad62509f1e2610" type="text/javascript"></script>
11
11<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vanilla-back-to-top.min.js" integrity="sha256-uMJJ3EoTyfRBoTbR+lrfu1uRQ87RZG8AR3cVNuQVeFg=" crossorigin="anonymous"></script>
11
11<script> 12 addBackToTop(); 13 </script>
13
13<script type="module" src="/assets/al_search/js/search/ninja-keys.min.js"></script>
13 <ninja-keys hidebreadcrumbs noautoloadmdicons placeholder="Type to start searching"></ninja-keys>
13<script src="/assets/al_search/js/search-setup.js"></script>
13
13<script> 14// get the ninja-keys element 15const ninja = document.querySelector('ninja-keys'); 16 17// add the home and posts menu items 18ninja.data = [{ 19 id: "nav-about", 20 title: "about", 21 section: "Navigation", 22 handler: () => { 23 window.location.href = "/"; 24 }, 25 },{id: "nav-news", 26 title: "news", 27 description: "", 28 section: "Navigation", 29 handler: () => { 30 window.location.href = "/news/"; 31 }, 32 },{id: "nav-blog", 33 title: "blog", 34 description: "", 35 section: "Navigation", 36 handler: () => { 37 window.location.href = "/blog/"; 38 }, 39 },{id: "nav-publications", 40 title: "publications", 41 description: "publications by categories in reversed chronological order. generated by jekyll-scholar.", 42 section: "Navigation", 43 handler: () => { 44 window.location.href = "/publications/"; 45 }, 46 },{id: "nav-repositories", 47 title: "repositories", 48 description: "Edit the `_data/repositories.yml` and change the `github_users` and `github_repos` lists to include your own GitHub profile and repositories.", 49 section: "Navigation", 50 handler: () => { 51 window.location.href = "/repositories/"; 52 }, 53 },{id: "nav-cv", 54 title: "CV", 55 description: "This is a description of the page. You can modify it in '_pages/cv.md'. You can also change or remove the top pdf download button.", 56 section: "Navigation", 57 handler: () => { 58 window.location.href = "/cv/"; 59 }, 60 },{id: "post-a-post-with-marimo-snippets", 61 62 title: "a post with marimo snippets", 63 64 description: "running Python in the browser with marimo", 65 section: "Posts", 66 handler: () => { 67 68 window.location.href = "/blog/2025/marimo/"; 69 70 }, 71 },{id: "post-a-post-with-plotly-js", 72 73 title: "a post with plotly.js", 74 75 description: "this is what included plotly.js code could look like", 76 section: "Posts", 77 handler: () => { 78 79 window.location.href = "/blog/2025/plotly/"; 80 81 }, 82 },{id: "post-a-post-with-image-galleries", 83 84 title: "a post with image galleries", 85 86 description: "this is what included image galleries could look like", 87 section: "Posts", 88 handler: () => { 89 90 window.location.href = "/blog/2024/photo-gallery/"; 91 92 }, 93 },{id: "post-google-gemini-updates-flash-1-5-gemma-2-and-project-astra", 94 95 title: 'Google Gemini updates: Flash 1.5, Gemma 2 and Project Astra <svg width="1.2rem" height="1.2rem" top=".5rem" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><path d="M17 13.5v6H5v-12h6m3-3h6v6m0-6-9 9" class="icon_svg-stroke" stroke="#999" stroke-width="1.5" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg>', 96 97 description: "Weâre sharing updates across our Gemini family of models and a glimpse of Project Astra, our vision for the future of AI assistants.", 98 section: "Posts", 99 handler: () => { 100 101 window.open("https://blog.google/technology/ai/google-gemini-update-flash-ai-assistant-io-2024/", "_blank"); 102 103 }, 104 },{id: "post-a-post-with-tabs", 105 106 title: "a post with tabs", 107 108 description: "this is what included tabs in a post could look like", 109 section: "Posts", 110 handler: () => { 111 112 window.location.href = "/blog/2024/tabs/"; 113 114 }, 115 },{id: "post-a-post-with-typograms", 116 117 title: "a post with typograms", 118 119 description: "this is what included typograms code could look like", 120 section: "Posts", 121 handler: () => { 122 123 window.location.href = "/blog/2024/typograms/"; 124 125 }, 126 },{id: "post-a-post-that-can-be-cited", 127 128 title: "a post that can be cited", 129 130 description: "this is what a post that can be cited looks like", 131 section: "Posts", 132 handler: () => { 133 134 window.location.href = "/blog/2024/post-citation/"; 135 136 }, 137 },{id: "post-a-post-with-pseudo-code", 138 139 title: "a post with pseudo code", 140 141 description: "this is what included pseudo code could look like", 142 section: "Posts", 143 handler: () => { 144 145 window.location.href = "/blog/2024/pseudocode/"; 146 147 }, 148 },{id: "post-a-post-with-code-diff", 149 150 title: "a post with code diff", 151 152 description: "this is how you can display code diffs", 153 section: "Posts", 154 handler: () => { 155 156 window.location.href = "/blog/2024/code-diff/"; 157 158 }, 159 },{id: "post-a-post-with-advanced-image-components", 160 161 title: "a post with advanced image components", 162 163 description: "this is what advanced image components could look like", 164 section: "Posts", 165 handler: () => { 166 167 window.location.href = "/blog/2024/advanced-images/"; 168 169 }, 170 },{id: "post-a-post-with-vega-lite", 171 172 title: "a post with vega lite", 173 174 description: "this is what included vega lite code could look like", 175 section: "Posts", 176 handler: () => { 177 178 window.location.href = "/blog/2024/vega-lite/"; 179 180 }, 181 },{id: "post-a-post-with-geojson", 182 183 title: "a post with geojson", 184 185 description: "this is what included geojson code could look like", 186 section: "Posts", 187 handler: () => { 188
189 window.location.href = "/blog/2024/geojson-map/"; 190 191 }, 192 },{id: "post-a-post-with-echarts", 193 194 title: "a post with echarts", 195 196 description: "this is what included echarts code could look like", 197 section: "Posts", 198 handler: () => { 199 200 window.location.href = "/blog/2024/echarts/"; 201 202 }, 203 },{id: "post-a-post-with-chart-js", 204 205 title: "a post with chart.js", 206 207 description: "this is what included chart.js code could look like", 208 section: "Posts", 209 handler: () => { 210 211 window.location.href = "/blog/2024/chartjs/"; 212 213 }, 214 },{id: "post-a-post-with-tikzjax", 215 216 title: "a post with TikZJax", 217 218 description: "this is what included TikZ code could look like", 219 section: "Posts", 220 handler: () => { 221 222 window.location.href = "/blog/2023/tikzjax/"; 223 224 }, 225 },{id: "post-a-post-with-bibliography", 226 227 title: "a post with bibliography", 228 229 description: "an example of a blog post with bibliography", 230 section: "Posts", 231 handler: () => { 232 233 window.location.href = "/blog/2023/post-bibliography/"; 234 235 }, 236 },{id: "post-a-post-with-jupyter-notebook", 237 238 title: "a post with jupyter notebook", 239 240 description: "an example of a blog post with jupyter notebook", 241 section: "Posts", 242 handler: () => { 243 244 window.location.href = "/blog/2023/jupyter-notebook/"; 245 246 }, 247 },{id: "post-a-post-with-custom-blockquotes", 248 249 title: "a post with custom blockquotes", 250 251 description: "an example of a blog post with custom blockquotes", 252 section: "Posts", 253 handler: () => { 254 255 window.location.href = "/blog/2023/custom-blockquotes/"; 256 257 }, 258 },{id: "post-a-post-with-table-of-contents-on-a-sidebar", 259 260 title: "a post with table of contents on a sidebar", 261 262 description: "an example of a blog post with table of contents on a sidebar", 263 section: "Posts", 264 handler: () => { 265 266 window.location.href = "/blog/2023/sidebar-table-of-contents/"; 267 268 }, 269 },{id: "post-a-post-with-audios", 270 271 title: "a post with audios", 272 273 description: "this is what included audios could look like", 274 section: "Posts", 275 handler: () => { 276 277 window.location.href = "/blog/2023/audios/"; 278 279 }, 280 },{id: "post-a-post-with-videos", 281 282 title: "a post with videos", 283 284 description: "this is what included videos could look like", 285 section: "Posts", 286 handler: () => { 287 288 window.location.href = "/blog/2023/videos/"; 289 290 }, 291 },{id: "post-displaying-beautiful-interactive-tables", 292 293 title: "displaying beautiful interactive tables", 294 295 description: "an example of how to use interactive tables in al-folio", 296 section: "Posts", 297 handler: () => { 298 299 window.location.href = "/blog/2023/tables/"; 300 301 }, 302 },{id: "post-a-post-with-table-of-contents", 303 304 title: "a post with table of contents", 305 306 description: "an example of a blog post with table of contents", 307 section: "Posts", 308 handler: () => { 309 310 window.location.href = "/blog/2023/table-of-contents/"; 311 312 }, 313 },{id: "post-a-post-with-giscus-comments", 314 315 title: "a post with giscus comments", 316 317 description: "an example of a blog post with giscus comments", 318 section: "Posts", 319 handler: () => { 320 321 window.location.href = "/blog/2022/giscus-comments/"; 322 323 }, 324 },{id: "post-ÛÚ©-ÙÙØ´ØªÙÙ-راست-ÚÛÙ", 325 326 title: "ÛÚ© ÙÙØ´ØªÙ٠راستâÚÛÙ", 327 328 description: "ÙÙ ÙÙÙâØ§Û Ø§Ø² Ù¾Ø´ØªÛØ¨Ø§ÙÛ Ø²Ø¨Ø§ÙâÙØ§Û راستâÚÛÙ", 329 section: "Posts", 330 handler: () => { 331 332 window.location.href = "/blog/2022/rtl/"; 333 334 }, 335 },{id: "post-displaying-external-posts-on-your-al-folio-blog", 336 337 title: 'Displaying External Posts on Your al-folio Blog <svg width="1.2rem" height="1.2rem" top=".5rem" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><path d="M17 13.5v6H5v-12h6m3-3h6v6m0-6-9 9" class="icon_svg-stroke" stroke="#999" stroke-width="1.5" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg>', 338 339 description: "", 340 section: "Posts", 341 handler: () => { 342 343 window.open("https://medium.com/@al-folio/displaying-external-posts-on-your-al-folio-blog-b60a1d241a0a?source=rss-17feae71c3c4------2", "_blank"); 344 345 }, 346 },{id: "post-a-post-with-redirect", 347 348 title: "a post with redirect", 349 350 description: "you can also redirect to assets like pdf", 351 section: "Posts", 352 handler: () => { 353 354 window.location.href = "/assets/pdf/example_pdf.pdf"; 355 356 }, 357 },{id: "post-a-post-with-diagrams", 358 359 title: "a post with diagrams", 360 361 description: "an example of a blog post with diagrams", 362 section: "Posts", 363 handler: () => { 364 365 window.location.href = "/blog/2021/diagrams/"; 366 367 }, 368 },{id: "post-a-distill-style-blog-post", 369 370 title: "a distill-style blog post", 371 372 description: "an example of a distill-style blog post and main elements", 373 section: "Posts", 374 handler: () => { 375 376 window.location.href = "/blog/2021/distill/"; 377 378 }, 379 },{id: "post-a-post-with-twitter", 380 381 title: "a post with twitter", 382 383 description: "an example of a blog post with twitter", 384 section: "Posts", 385 handler: () => { 386 387 window.location.href = "/blog/2020/twitter/"; 388 389 }, 390 },{id: "post-a-post-with-disqus-comments", 391 392 title: "a post with disqus comments", 393 394 description: "an example of a blog post with disqus comments", 395 section: "Posts", 396 handler: () => { 397 398 window.location.href = "/blog/2015/disqus-comments/"; 399 400 }, 401 },{id: "post-a-post-with-math", 402 403 title: "a post with math", 404 405 description: "an example of a blog post with some math", 406 section: "Posts", 407 handler: () => { 408 409 window.location.href = "/blog/2015/math/"; 410 411 }, 412 },{id: "post-a-post-with-code", 413 414 title: "a post with code", 415 416 description: "an example of a blog post with some code", 417 section: "Posts", 418 handler: () => { 419 420 window.location.href = "/blog/2015/code/"; 421 422 }, 423 },{id: "post-a-post-with-images", 424 425 title: "a post with images", 426 427 description: "this is what included images could look like", 428 section: "Posts", 429 handler: () => { 430 431 window.location.href = "/blog/2015/images/"; 432 433 }, 434 },{id: "post-a-post-with-formatting-and-links", 435 436 title: "a post with formatting and links", 437 438 description: "march & april, looking forward to summer", 439 section: "Posts", 440 handler: () => { 441 442 window.location.href = "/blog/2015/formatting-and-links/"; 443 444 }, 445 },{id: "books-the-godfather", 446 title: 'The Godfather', 447 description: "", 448 section: "Books",handler: () => { 449 window.location.href = "/books/the_godfather/"; 450 },},{id: "news-my-academic-website-has-been-launched-you-can-find-it-at-https-hailin-wang-this-website-will-serve-as-a-hub-for-my-research-publications-and-academic-activities-i-look-forward-to-sharing-updates-and-engaging-with-the-academic-community-through-this-platform", 451 title: 'My academic website has been launched! You can find it at https://hailin.wang. This...', 452 description: "", 453 section: "News",},{id: "news-our-paper-micromechanics-inspired-modeling-of-granular-materials-submitted-to-the-international-journal-of-solids-and-structures-has-been-accepted-for-publication", 454 title: 'Our paper âMicromechanics-inspired modeling of granular materialsâ submitted to the International Journal of...', 455 description: "", 456 section: "News",},{id: "projects-project-1", 457 title: 'project 1', 458 description: "with background image", 459 section: "Projects",handler: () => { 460 window.location.href = "/projects/1_project/"; 461 },},{id: "projects-project-2", 462 title: 'project 2', 463 description: "a project with a background image and giscus comments", 464 section: "Projects",handler: () => { 465 window.location.href = "/projects/2_project/"; 466 },},{id: "projects-project-3-with-very-long-name", 467 title: 'project 3 with very long name', 468 description: "a project that redirects to another website", 469 section: "Projects",handler: () => { 470 window.location.href = "/projects/3_project/"; 471 },},{id: "projects-project-4", 472 title: 'project 4', 473 description: "another without an image", 474 section: "Projects",handler: () => { 475 window.location.href = "/projects/4_project/"; 476 },},{id: "projects-project-5", 477 title: 'project 5', 478 description: "a project with a background image", 479 section: "Projects",handler: () => { 480 window.location.href = "/projects/5_project/"; 481 },},{id: "projects-project-6", 482 title: 'project 6', 483 description: "a project with no image", 484 section: "Projects",handler: () => { 485 window.location.href = "/projects/6_project/"; 486 },},{id: "projects-project-7", 487 title: 'project 7', 488 description: "with background image", 489 section: "Projects",handler: () => { 490 window.location.href = "/projects/7_project/"; 491 },},{id: "projects-project-8", 492 title: 'project 8', 493 description: "an other project with a background image and giscus comments", 494 section: "Projects",handler: () => { 495 window.location.href = "/projects/8_project/"; 496 },},{id: "projects-project-9", 497 title: 'project 9', 498 description: "another project with an image ð", 499 section: "Projects",handler: () => { 500 window.location.href = "/projects/9_project/"; 501 },},{id: "teachings-data-science-fundamentals", 502 title: 'Data Science Fundamentals', 503 description: "This course covers the foundational aspects of data science, including data collection, cleaning, analysis, and visualization. Students will learn practical skills for working with real-world datasets.", 504 section: "Teachings",handler: () => { 505 window.location.href = "/teachings/data-science-fundamentals/"; 506 },},{id: "teachings-introduction-to-machine-learning", 507 title: 'Introduction to Machine Learning', 508 description: "This course provides an introduction to machine learning concepts, algorithms, and applications. Students will learn about supervised and unsupervised learning, model evaluation, and practical implementations.", 509 section: "Teachings",handler: () => { 510 window.location.href = "/teachings/introduction-to-machine-learning/"; 511 },},{ 512 id: 'social-cv', 513 title: 'CV', 514 section: 'Socials', 515 handler: () => { 516 window.open("/assets/rendercv/rendercv_output/Hailin_Wang_CV.pdf", "_blank"); 517 }, 518 },{ 519 id: 'social-email', 520 title: 'email', 521 section: 'Socials', 522 handler: () => { 523 window.open("mailto:%68%61%69%6C%69%6E.%77%61%6E%67@%63%6F%6E%6E%65%63%74.%70%6F%6C%79%75.%68%6B", "_blank"); 524 }, 525 },{ 526 id: 'social-scholar', 527 title: 'Google Scholar', 528 section: 'Socials', 529 handler: () => { 530 window.open("https://scholar.google.com/citations?user=-Bb_nmAAAAAJ", "_blank"); 531 }, 532 },{ 533 id: 'social-scopus', 534 title: 'Scopus', 535 section: 'Socials', 536 handler: () => { 537 window.open("https://www.scopus.com/authid/detail.uri?authorId=36452240500", "_blank"); 538 }, 539 },{ 540 id: 'social-orcid', 541 title: 'ORCID', 542 section: 'Socials', 543 handler: () => { 544 window.open("https://orcid.org/0000-0001-5759-2455", "_blank"); 545 }, 546 },{ 547 id: 'social-researchgate',
548 title: 'ResearchGate', 549 section: 'Socials', 550 handler: () => { 551 window.open("https://www.researchgate.net/profile/Hailin-Wang-4/", "_blank"); 552 }, 553 },{ 554 id: 'social-github', 555 title: 'GitHub', 556 section: 'Socials', 557 handler: () => { 558 window.open("https://github.com/haiiliin", "_blank"); 559 }, 560 },{ 561 id: 'social-x', 562 title: 'X', 563 section: 'Socials', 564 handler: () => { 565 window.open("https://twitter.com/haiiliin", "_blank"); 566 }, 567 },{ 568 id: 'social-instagram', 569 title: 'Instagram', 570 section: 'Socials', 571 handler: () => { 572 window.open("https://instagram.com/haiiliinw", "_blank"); 573 }, 574 },{ 575 id: 'social-youtube', 576 title: 'YouTube', 577 section: 'Socials', 578 handler: () => { 579 window.open("https://youtube.com/@haiiliin", "_blank"); 580 }, 581 },{ 582 id: 'light-theme', 583 title: 'Change theme to light', 584 description: 'Change the theme of the site to Light', 585 section: 'Theme', 586 handler: () => { 587 setThemeSetting("light"); 588 }, 589 }, 590 { 591 id: 'dark-theme', 592 title: 'Change theme to dark', 593 description: 'Change the theme of the site to Dark', 594 section: 'Theme', 595 handler: () => { 596 setThemeSetting("dark"); 597 }, 598 }, 599 { 600 id: 'system-theme', 601 title: 'Use system default theme', 602 description: 'Change the theme of the site to System Default', 603 section: 'Theme', 604 handler: () => { 605 setThemeSetting("system"); 606 }, 607 },]; 608 609</script>
609
609<script src="/assets/al_search/js/shortcut-key.js"></script>
609 </body> </html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.