GithubHelp home page GithubHelp logo

chaliuu.github.io's Introduction

<title>
   Charles Liu
     | Software Engineer
</title>
<style> @charset "UTF-8";pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-keyword,.hljs-formula{color:#c678dd}.hljs-section,.hljs-name,.hljs-selector-tag,.hljs-deletion,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string{color:#98c379}.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-number{color:#d19a66}.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-title{color:#61aeee}.hljs-built_in,.hljs-title.class_,.hljs-class .hljs-title{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}*,*:before,*:after{margin:0;padding:0;outline:0;box-sizing:border-box;border:0;font-size:100%;line-height:100%;-webkit-text-size-adjust:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}@media(min-width:769px){.mt-tiny{margin-top:15px}.mb-tiny{margin-bottom:15px}.pt-tiny{padding-top:15px}.pb-tiny{padding-bottom:15px}.mt-small{margin-top:30px}.mb-small{margin-bottom:30px}.pt-small{padding-top:30px}.pb-small{padding-bottom:30px}.mt-medium{margin-top:40px}.footer:before,.mb-medium{margin-bottom:40px}.pt-medium{padding-top:40px}.pb-medium{padding-bottom:40px}.footer:before,.mt-large,hr,.wysiwyg hr{margin-top:60px}.post-preview:before,.post-preview:not(:last-child),.project-preview:not(:last-child),.mb-large,hr,.wysiwyg hr{margin-bottom:60px}.pt-large{padding-top:60px}.pb-large{padding-bottom:60px}.mt-huge{margin-top:100px}.mb-huge{margin-bottom:100px}.pt-huge{padding-top:100px}.pb-huge{padding-bottom:100px}}@media(max-width:768px){.mt-tiny{margin-top:10px}.mb-tiny{margin-bottom:10px}.pt-tiny{padding-top:10px}.pb-tiny{padding-bottom:10px}.mt-small{margin-top:15px}.mb-small{margin-bottom:15px}.pt-small{padding-top:15px}.pb-small{padding-bottom:15px}.mt-medium{margin-top:25px}.footer:before,.mb-medium{margin-bottom:25px}.pt-medium{padding-top:25px}.pb-medium{padding-bottom:25px}.footer:before,.mt-large,hr,.wysiwyg hr{margin-top:40px}.post-preview:before,.post-preview:not(:last-child),.project-preview:not(:last-child),.mb-large,hr,.wysiwyg hr{margin-bottom:40px}.pt-large{padding-top:40px}.pb-large{padding-bottom:40px}.mt-huge{margin-top:75px}.mb-huge{margin-bottom:75px}.pt-huge{padding-top:75px}.pb-huge{padding-bottom:75px}}body{background-color:#fff}img,picture{max-width:100%;height:auto}hr{height:1px;background:#e2e2e2}.wrap{width:100%;max-width:1024px;margin-right:auto;margin-left:auto;padding:80px 30px 30px}.page{max-width:675px;margin-right:auto;margin-left:auto}.page-wide{width:calc(100% + 290px);position:relative;left:50%;transform:translate(-50%)}.hidden{display:none}div.code{white-space:pre}.highlight-laravel{color:#f9322c}a.highlight-laravel{text-decoration:underline;text-decoration-color:transparent}@media(max-width:1024px){.wrap{padding:30px}.page-wide{max-width:calc(100vw - 60px)}}@media(max-width:500px){.wrap{padding:20px}.page-wide{max-width:calc(100vw - 40px)}}.menu__item,.logo__text,.subheading,.form__label,.txt-upper{font-weight:600;text-transform:uppercase;letter-spacing:.0625rem}.logo__text:after{width:100%;max-width:30px;height:6px;display:block;content:"";border-radius:1000px;background:#4b6cc1}.list__item,.post-preview__meta,.wysiwyg figcaption,.txt-fade{color:#5e5e5e}.txt-left{text-align:left}.txt-center{text-align:center}.txt-right{text-align:right}.project-preview__media img,.header__section--media img,.wysiwyg figure img,.feature-media img{box-shadow:0 1px 5px #00000008,0 5px 30px #0000001a;border-radius:20px}@media(min-width:1025px){.project-preview__desc,.txt-large{font-size:22px;font-size:1.375rem}.list.list--regular .list__item,.notice__desc,p,li,.txt-regular{font-size:20px;font-size:1.25rem}.list__item,.link-list__item,.post-preview__meta,.wysiwyg figcaption,.txt-small{font-size:18px;font-size:1.125rem}.subheading,.form__label,.txt-tiny{font-size:16px;font-size:1rem}.txt-mini{font-size:14px;font-size:.875rem}}@media(max-width:1024px){.project-preview__desc,.txt-large{font-size:18px;font-size:1.125rem}.list.list--regular .list__item,.notice__desc,p,li,.txt-regular{font-size:16px;font-size:1rem}.list__item,.link-list__item,.post-preview__meta,.wysiwyg figcaption,.txt-small{font-size:14px;font-size:.875rem}.subheading,.form__label,.txt-tiny{font-size:12px;font-size:.75rem}.txt-mini{font-size:10px;font-size:.625rem}}@font-face{font-family:Rubik;font-style:normal;font-weight:300;font-display:swap;src:url(/build/assets/rubik-44cb7753.woff2) format("woff2")}@font-face{font-family:Rubik;font-style:normal;font-weight:400;font-display:swap;src:url(/build/assets/rubik-44cb7753.woff2) format("woff2")}@font-face{font-family:Rubik;font-style:normal;font-weight:600;font-display:swap;src:url(/build/assets/rubik-44cb7753.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/build/assets/ibm-plex-mono-bce21f3e.woff2) format("woff2")}body{font-family:Rubik,sans-serif;font-weight:300;font-size:16px}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:120%}h1,h1 a,h2,h2 a,h3,h3 a,h4,h4 a,h5,h5 a,h6,h6 a{color:#191a1d}p,li{line-height:175%}a{text-decoration:underline;text-decoration-color:transparent;color:#4b6cc1}strong{font-weight:600}code{font-size:13px;font-size:.8125rem;padding:4px 7px;border-radius:20px;background-color:#282c34;font-family:IBM Plex Mono,monospace;color:#fff}.txt-error{color:#c1594b}@media(min-width:1025px){h1{font-size:48px;font-size:3rem}h2{font-size:40px;font-size:2.5rem}h3{font-size:32px;font-size:2rem}h4{font-size:26px;font-size:1.625rem}h5{font-size:20px;font-size:1.25rem}h6{font-size:16px;font-size:1rem}}@media(max-width:1024px) and (min-width:501px){h1{font-size:42px;font-size:2.625rem}h2{font-size:34px;font-size:2.125rem}h3{font-size:28px;font-size:1.75rem}h4{font-size:22px;font-size:1.375rem}h5{font-size:18px;font-size:1.125rem}h6{font-size:14px;font-size:.875rem}}@media(max-width:500px){h1{font-size:36px;font-size:2.25rem}h2{font-size:28px;font-size:1.75rem}h3{font-size:24px;font-size:1.5rem}h4{font-size:18px;font-size:1.125rem}h5{font-size:16px;font-size:1rem}h6{font-size:14px;font-size:.875rem}}input,textarea,select{width:100%;box-shadow:0 1px 4px #00000008;border-radius:10px;border:1px solid #e2e2e2;font-family:Rubik,sans-serif;font-weight:300}input,textarea{width:100%;-webkit-appearance:text;-moz-appearance:text;appearance:text}textarea{min-height:150px;resize:vertical;line-height:150%}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:url(/build/assets/caret-down-025a47ae.svg) right 15px center/15px no-repeat}input[type=checkbox],input[type=radio]{width:25px;height:25px}input[type=checkbox]:checked,input[type=radio]:checked{accent-color:#4b6cc1}button{cursor:pointer}@media(min-width:501px){input,textarea,select{font-size:16px;font-size:1rem;padding:15px}input,select{height:50px}select{padding-right:45px}}@media(max-width:500px){input,textarea,select{font-size:14px;font-size:.875rem;padding:10px}input,select{height:40px}select{padding-right:35px}}table{width:100%;border-spacing:0;border-collapse:separate;text-align:left}th,td{padding:15px;line-height:180%}th:first-child,td:first-child{padding-left:0}th:last-child,td:last-child{padding-right:0}th{border-bottom:2px solid #ddd;font-weight:600}td{border-bottom:1px solid #ddd}.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:60px}.grid__column.grid__column--1{grid-column:auto/span 1}.grid__column.grid__column--2{grid-column:auto/span 2}.grid__column.grid__column--3{grid-column:auto/span 3}.grid__column.grid__column--4{grid-column:auto/span 4}.grid__column.grid__column--5{grid-column:auto/span 5}.grid__column.grid__column--6{grid-column:auto/span 6}.grid__column.grid__column--7{grid-column:auto/span 7}.grid__column.grid__column--8{grid-column:auto/span 8}.grid__column.grid__column--9{grid-column:auto/span 9}.grid__column.grid__column--10{grid-column:auto/span 10}.grid__column.grid__column--11{grid-column:auto/span 11}@media(max-width:768px){.grid--tb2-12{grid-template-columns:repeat(1,minmax(0,1fr));gap:40px}.grid--tb2-12 .grid__column{grid-column:auto/span 1}}.subheading,.form__label{color:#888}.form__row{display:flex}.form__field{flex-basis:0;flex-grow:1}.form__label{padding-bottom:10px;display:block}.form__label--inline{display:flex;align-items:center;font-weight:400;text-transform:none;letter-spacing:0}.form__label--inline input{margin-right:15px;align-self:flex-start}.form__required{color:#c1594b}.form__field--editor textarea{min-height:499px}.form__note{font-size:12px;font-size:.75rem;padding-top:10px;color:#5e5e5e}@media(min-width:501px){.form__row:not(:last-child){margin-bottom:30px}.form__field:not(:last-child){margin-right:30px}}@media(max-width:500px){.form__row{flex-direction:column}.form__row:not(:last-child){margin-bottom:20px}.form__field:not(:last-child){margin-bottom:20px}}.logo{display:inline-flex;align-items:center}.logo__text{font-size:28px;font-size:1.75rem;display:inline-block;line-height:70%;color:#191a1d}.logo__text:after{max-width:30%;margin-top:12.337555519%}@media(max-width:768px) and (min-width:451px){.logo__text{font-size:24px;font-size:1.5rem}}@media(min-width:671px){.logo{column-gap:40px}}@media(max-width:670px){.logo{column-gap:20px}}@media(max-width:450px){.logo__text{font-size:28px;font-size:1.75rem}}.btn{display:inline-flex;align-items:center;gap:10px;cursor:pointer;border-radius:1000px;border:none;background:#4b6cc1;font-family:Rubik,sans-serif;font-weight:600;text-align:center;color:#fff}.btn svg{width:20px;height:20px}.btn svg path{fill:#fff}@media(min-width:501px){.btn{font-size:16px;font-size:1rem;padding:17px 25px}.btn.btn--large{font-size:20px;font-size:1.25rem;padding:19px 29px}}@media(max-width:500px){.btn{font-size:14px;font-size:.875rem;padding:13px 20px}.btn.btn--large{font-size:16px;font-size:1rem;padding:17px 25px}}.feature-media{width:calc(100% + 290px);position:relative;left:50%;transform:translate(-50%)}.feature-media img{width:100%;max-width:752px;margin:0 auto;display:block}@media(max-width:1024px){.feature-media{max-width:calc(100vw - 60px)}}@media(max-width:500px){.feature-media{max-width:calc(100vw - 40px)}}.tag{padding:7px 10px 5px;display:inline-block;border-radius:20px;border:1px solid #4b6cc1;font-weight:400;text-decoration:none;line-height:100%;color:#4b6cc1}@media(min-width:501px){.tag{font-size:16px;font-size:1rem}}@media(max-width:500px){.tag{font-size:14px;font-size:.875rem}}.wysiwyg>*+*{margin-top:30px}.wysiwyg>h1+*,.wysiwyg>h2+*,.wysiwyg>h3+*,.wysiwyg>h4+*,.wysiwyg>h5+*,.wysiwyg>h6+*{margin-top:15px}.wysiwyg li{margin-left:50px}.wysiwyg li+li{margin-top:15px}.wysiwyg figure img{width:100%;display:block}.wysiwyg figcaption{margin-top:25px;display:block;text-align:center;font-style:italic}.wysiwyg img{border-radius:20px}.menu{display:flex;flex-wrap:wrap}.menu__item{margin-top:3.640776699%;color:#5e5e5e}.menu__item.active,.menu__item:focus{color:#4b6cc1}@media(min-width:671px){.menu{gap:4.854368932%}.menu__item{font-size:18px;font-size:1.125rem}}@media(max-width:670px){.menu{gap:5.3333333333%}.menu__item{font-size:14px;font-size:.875rem}}.header{display:flex;column-gap:4.1493775934%}.header__section--media{flex-shrink:0}.header__section--media img{display:block;border-radius:1000px}.header__section--menu{width:100%;align-self:center}@media(min-width:1025px){.header{margin-bottom:80px}}@media(max-width:1024px){.header{margin-bottom:50px}}@media(min-width:451px){.header__section--media img{width:150px}.header__section--media .logo__text{display:none}}@media(max-width:450px){.header{margin-bottom:30px;flex-direction:column}.header__section--media img{width:125px}.header__section--menu .logo{display:none}}.footer:before{width:100%;height:5px;display:block;content:"";border-radius:1000px;background:#ddd}.footer__inner{display:flex;flex-wrap:wrap;row-gap:5px;column-gap:30px;justify-content:space-between}@media(min-width:1025px){.footer{margin-top:80px}}@media(max-width:1024px){.footer{margin-top:50px}}@media(min-width:501px){.footer__text{font-size:17px;font-size:1.0625rem}}@media(max-width:500px){.footer{margin-top:40px}.footer__text{font-size:15px;font-size:.9375rem}}.project-preview{display:flex}.project-preview__media img{width:100%;display:block}@media(min-width:671px){.project-preview{align-items:center}.project-preview__media{width:60%}.project-preview__content{width:40%;padding-left:60px}.project-preview__title{margin-bottom:15px}.project-preview__desc{margin-bottom:20px}.project-preview__meta{margin-bottom:30px}}@media(max-width:670px){.project-preview{flex-direction:column}.project-preview__content{padding-top:30px}.project-preview__title{margin-bottom:8px}.project-preview__desc{margin-bottom:10px}.project-preview__meta{margin-bottom:15px}}.post-preview{position:relative}.post-preview:before{width:100%;height:5px;display:block;content:"";border-radius:1000px;background:#ddd}.post-preview__meta{display:flex;align-items:center;flex-wrap:wrap;gap:20px}.post-preview__excerpt,.post-preview__action{margin-top:15px}.icon-link{display:inline-flex;align-items:center;gap:5px}@media(min-width:671px){.post-preview__meta{margin-top:20px;gap:20px}.icon-link svg{width:20px;max-height:20px}}@media(max-width:670px){.post-preview__meta{margin-top:15px;gap:15px}.icon-link svg{width:18px;max-height:18px}}.link-list{display:flex;flex-wrap:wrap;gap:7px}.link-list__item{list-style:none}.box{border-radius:20px;background-color:#f1f8fa}@media(min-width:501px){.box{padding:40px}}@media(max-width:500px){.box{padding:20px}}.notice{width:100%;padding:20px;border-radius:20px;border-left:4px solid #888;background-color:#f1f8fa;text-align:center}.notice.success{border-left-color:#4b6cc1}.notice.error{border-left-color:#c1594b}.list__item{display:flex;align-items:center;list-style:none}.list__item:before{width:15px;height:15px;margin-right:5px;opacity:.6;content:"";background:url(/build/assets/caret-right-4487de92.svg) 0 0/15px no-repeat}.list__item:not(:last-child){margin-bottom:5px}.list.list--inline{display:flex;flex-wrap:wrap}.list.list--inline .list__item:not(:last-child){margin-right:30px;margin-bottom:0}.list.list--inline-center{justify-content:center}.search-form{position:relative}.search-form__action{width:50px;height:100%;position:absolute;top:0;right:0;overflow:hidden;background-color:transparent;text-indent:-9999px}.search-form__action:before{width:100%;height:100%;opacity:.6;position:absolute;top:0;right:0;content:"";background:url(/build/assets/search-0fbc4236.svg) center/20px no-repeat}@media(min-width:501px){.search-form__field{padding-right:50px}.search-form__action{width:50px}}@media(max-width:500px){.search-form__field{padding-right:40px}.search-form__action{width:40px}.search-form__action:before{background-size:16px}}pre{overflow-x:auto}pre,pre code{width:100%}pre code{padding:20px;display:block;line-height:200%}@media not all and (hover:none),(-ms-high-contrast:active),screen and (-ms-high-contrast:none){.btn:not(.btn--disabled):hover{transform:scale(1.075);box-shadow:inset 0 0 0 2px #4b6cc1;background:0 0;color:#4b6cc1}.btn:not(.btn--disabled):hover svg path{fill:#4b6cc1}.menu__item:hover,.project-preview__title a:hover,.post-preview__title a:hover{color:#4b6cc1}.project-preview__media a:hover img{transform:scale(1.05)}.wysiwyg a:hover,.link-list__item a:hover,.post-preview__meta a:hover,.post-preview__action a:hover{text-decoration-color:#4b6cc1}.wysiwyg .txt-error a:hover,.wysiwyg a.txt-error:hover{text-decoration-color:#c1594b}input:hover,input:focus,textarea:hover,textarea:focus{box-shadow:0 1px 4px #0000001a;border-color:#888}.tag:hover{border-color:#191a1d!important;color:#191a1d!important}.search-form__action:hover:before{opacity:1}a.highlight-laravel:hover{text-decoration-color:#f9322c}.btn:not(.btn--disabled){transition:all ease .35s}.btn:not(.btn--disabled) path{transition:fill ease .35s}.menu__item,.project-preview__title a,.post-preview__title a{transition:color ease .35s}.project-preview__media a img{transition:transform ease .35s}.wysiwyg a,.link-list__item a,.post-preview__meta a,.post-preview__action a{transition:text-decoration-color ease .35s}input,textarea{transition:box-shadow ease .35s,border-color ease .35s}.tag{transition:border-color ease .35s,color ease .35s!important}.search-form__action:before{transition:opacity ease .35s}a.highlight-laravel{transition:text-decoration-color ease .35s}}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:0 0}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:0 0}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:0;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none;outline:0}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:0 0}.EasyMDEContainer{display:block}.CodeMirror-rtl pre{direction:rtl}.EasyMDEContainer.sided--no-fullscreen{display:flex;flex-direction:row;flex-wrap:wrap}.EasyMDEContainer .CodeMirror{box-sizing:border-box;height:auto;border:1px solid #ced4da;border-bottom-left-radius:4px;border-bottom-right-radius:4px;padding:10px;font:inherit;z-index:0;word-wrap:break-word}.EasyMDEContainer .CodeMirror-scroll{cursor:text}.EasyMDEContainer .CodeMirror-fullscreen{background:#fff;position:fixed!important;top:50px;left:0;right:0;bottom:0;height:auto;z-index:8;border-right:none!important;border-bottom-right-radius:0!important}.EasyMDEContainer .CodeMirror-sided{width:50%!important}.EasyMDEContainer.sided--no-fullscreen .CodeMirror-sided{border-right:none!important;border-bottom-right-radius:0;position:relative;flex:1 1 auto}.EasyMDEContainer .CodeMirror-placeholder{opacity:.5}.EasyMDEContainer .CodeMirror-focused .CodeMirror-selected{background:#d9d9d9}.editor-toolbar{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;padding:9px 10px;border-top:1px solid #ced4da;border-left:1px solid #ced4da;border-right:1px solid #ced4da;border-top-left-radius:4px;border-top-right-radius:4px}.editor-toolbar.fullscreen{width:100%;height:50px;padding-top:10px;padding-bottom:10px;box-sizing:border-box;background:#fff;border:0;position:fixed;top:0;left:0;opacity:1;z-index:9}.editor-toolbar.fullscreen:before{width:20px;height:50px;background:-moz-linear-gradient(left,#fff 0,rgba(255,255,255,0) 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,#fff),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,#fff 0,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,#fff 0,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,#fff 0,rgba(255,255,255,0) 100%);background:linear-gradient(to right,#fff 0,rgba(255,255,255,0) 100%);position:fixed;top:0;left:0;margin:0;padding:0}.editor-toolbar.fullscreen:after{width:20px;height:50px;background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,#fff 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(100%,#fff));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,#fff 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,#fff 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,#fff 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);position:fixed;top:0;right:0;margin:0;padding:0}.EasyMDEContainer.sided--no-fullscreen .editor-toolbar{width:100%}.editor-toolbar .easymde-dropdown,.editor-toolbar button{background:0 0;display:inline-block;text-align:center;text-decoration:none!important;height:30px;margin:0;padding:0;border:1px solid transparent;border-radius:3px;cursor:pointer}.editor-toolbar button{font-weight:700;min-width:30px;padding:0 6px;white-space:nowrap}.editor-toolbar button.active,.editor-toolbar button:hover{background:#fcfcfc;border-color:#95a5a6}.editor-toolbar i.separator{display:inline-block;width:0;border-left:1px solid #d9d9d9;border-right:1px solid #fff;color:transparent;text-indent:-10px;margin:0 6px}.editor-toolbar button:after{font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:65%;vertical-align:text-bottom;position:relative;top:2px}.editor-toolbar button.heading-1:after{content:"1"}.editor-toolbar button.heading-2:after{content:"2"}.editor-toolbar button.heading-3:after{content:"3"}.editor-toolbar button.heading-bigger:after{content:"โ–ฒ"}.editor-toolbar button.heading-smaller:after{content:"โ–ผ"}.editor-toolbar.disabled-for-preview button:not(.no-disable){opacity:.6;pointer-events:none}@media only screen and (max-width:700px){.editor-toolbar i.no-mobile{display:none}}.editor-statusbar{padding:8px 10px;font-size:12px;color:#959694;text-align:right}.EasyMDEContainer.sided--no-fullscreen .editor-statusbar{width:100%}.editor-statusbar span{display:inline-block;min-width:4em;margin-left:1em}.editor-statusbar .lines:before{content:"lines: "}.editor-statusbar .words:before{content:"words: "}.editor-statusbar .characters:before{content:"characters: "}.editor-preview-full{position:absolute;width:100%;height:100%;top:0;left:0;z-index:7;overflow:auto;display:none;box-sizing:border-box}.editor-preview-side{position:fixed;bottom:0;width:50%;top:50px;right:0;z-index:9;overflow:auto;display:none;box-sizing:border-box;border:1px solid #ddd;word-wrap:break-word}.editor-preview-active-side{display:block}.EasyMDEContainer.sided--no-fullscreen .editor-preview-active-side{flex:1 1 auto;height:auto;position:static}.editor-preview-active{display:block}.editor-preview{padding:10px;background:#fafafa}.editor-preview>p{margin-top:0}.editor-preview pre{background:#eee;margin-bottom:10px}.editor-preview table td,.editor-preview table th{border:1px solid #ddd;padding:5px}.cm-s-easymde .cm-tag{color:#63a35c}.cm-s-easymde .cm-attribute{color:#795da3}.cm-s-easymde .cm-string{color:#183691}.cm-s-easymde .cm-header-1{font-size:calc(1.375rem + 1.5vw)}.cm-s-easymde .cm-header-2{font-size:calc(1.325rem + .9vw)}.cm-s-easymde .cm-header-3{font-size:calc(1.3rem + .6vw)}.cm-s-easymde .cm-header-4{font-size:calc(1.275rem + .3vw)}.cm-s-easymde .cm-header-5{font-size:1.25rem}.cm-s-easymde .cm-header-6{font-size:1rem}.cm-s-easymde .cm-header-1,.cm-s-easymde .cm-header-2,.cm-s-easymde .cm-header-3,.cm-s-easymde .cm-header-4,.cm-s-easymde .cm-header-5,.cm-s-easymde .cm-header-6{margin-bottom:.5rem;line-height:1.2}.cm-s-easymde .cm-comment{background:rgba(0,0,0,.05);border-radius:2px}.cm-s-easymde .cm-link{color:#7f8c8d}.cm-s-easymde .cm-url{color:#aab2b3}.cm-s-easymde .cm-quote{color:#7f8c8d;font-style:italic}.editor-toolbar .easymde-dropdown{position:relative;background:linear-gradient(to bottom right,#fff 0,#fff 84%,#333 50%,#333 100%);border-radius:0;border:1px solid #fff}.editor-toolbar .easymde-dropdown:hover{background:linear-gradient(to bottom right,#fff 0,#fff 84%,#333 50%,#333 100%)}.easymde-dropdown-content{display:block;visibility:hidden;position:absolute;background-color:#f9f9f9;box-shadow:0 8px 16px #0003;padding:8px;z-index:2;top:30px}.easymde-dropdown:active .easymde-dropdown-content,.easymde-dropdown:focus .easymde-dropdown-content,.easymde-dropdown:focus-within .easymde-dropdown-content{visibility:visible}.easymde-dropdown-content button{display:block}span[data-img-src]:after{content:"";background-image:var(--bg-image);display:block;max-height:100%;max-width:100%;background-size:contain;height:0;padding-top:var(--height);width:var(--width);background-repeat:no-repeat}.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word){background:rgba(255,0,0,.15)}.pill{font-size:14px;font-size:.875rem;padding:10px 12px;display:inline-block;border-radius:1000px}.pill--info{background:#f1f8fa}.pill--success{background:#e6f6d3}body .CodeMirror-wrap pre.CodeMirror-line{line-height:150%} </style>

๐Ÿ‘‹ Hi, I'm Charles.

I'm an aspiring software engineer currently studying at the University of Toronto for a Computer Engineering Major and a Minor in Artificial Intelligence Engineering. My main interests are the combination of machine learning, web development and embedded/IoT firmware. My preferred tools are Python, C/C++, and JavaScript (React/Node). I am a creative problem-solver that love to diverge and explore unconventional solitions. I am a collaborative team member that strives to bring the most out of my teammates when solving problems together. In my spare time I enjoy playing basketball, obsessively reading wikipedia and building my own projects.

I'm on GitHub and LinkedIn.

ยฉ 2023Charles Liu.

<script defer src="https://www.googletagmanager.com/gtag/js?id=UA-31577987-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'UA-31577987-1'); </script>

chaliuu.github.io's People

Contributors

chaliuu avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.