diff --git a/.gitignore b/.gitignore
index b6a10615e56543164a2d6c83b0b25a03d6c233a1..d51195ab1978c78971e4e5b74c09adc7677c67ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
public/
+resources/
openring.html
diff --git a/resources/_gen/assets/scss/scss/main.scss_48b060fe05b0a273d182ef83c0605941.content b/resources/_gen/assets/scss/scss/main.scss_48b060fe05b0a273d182ef83c0605941.content
deleted file mode 100644
index 0cc450df2cb6e080b2db5b7f1983356f824fb4fb..0000000000000000000000000000000000000000
--- a/resources/_gen/assets/scss/scss/main.scss_48b060fe05b0a273d182ef83c0605941.content
+++ /dev/null
@@ -1 +0,0 @@
-@charset "UTF-8";*{box-sizing:border-box;font-family:dejavu sans}body{margin:0}h1,h2,h3,h4{font-weight:400}code[class*=language-],nav,.blog-list{font-style:normal;font-weight:400;font-size:1.025rem}code{font-family:dejavu sans mono}tags{font-family:dejavu sans mono}.list-item{font-family:dejavu sans mono}html{font-size:16px}body{line-height:1.8em;color:#333;background:#fefefe}.post-title,.date-label{letter-spacing:.025rem}p,sub,nav{letter-spacing:.05rem}.title-wrapper,.title{letter-spacing:.075rem}a{text-decoration:none}.brand-icon{color:#f93a3a;display:inline-flex;border-bottom:1px solid}.brand-icon:hover{border-bottom:none}.layout{max-width:48rem;margin-left:auto;margin-right:auto;padding:2.625rem 1.3125rem}.layout .title-wrapper{display:flex;flex-direction:column;align-items:center;margin-bottom:.5rem}.layout .title{color:#333;text-align:left;display:block;font-size:1.875rem;margin:0}nav{font-size:1.025rem;text-align:center}nav ul{display:block;padding:0}nav ul li{display:inline;list-style-type:none}nav ul li a{color:#333;display:inline-block;padding-top:.5rem;padding-bottom:.5rem;border-bottom:1px solid #fefefe}nav ul li a:hover{color:#f93a3a}nav ul li:not(:last-child){padding:0 1rem 0 0}.slim-description{margin-bottom:calc(16px * 2);color:#666}.blog-post-content a{color:#f93a3a;text-decoration:none;border-bottom:1px solid}.blog-post-content a:hover{border-bottom:none}.blog-list .list-item{display:flex;flex-direction:column-reverse;align-items:baseline;padding:.5rem .5rem .5rem 0}.blog-list .post-title a{text-decoration:none;color:#333;border-bottom:none}.blog-list .post-title a:hover{border-bottom:1px solid}.blog-list .date-label{font-size:80%;margin-right:1rem}.content .title{font-size:1.275rem}.blog-post-content a{color:#f93a3a;text-decoration:none;border-bottom:1px solid}.blog-post-content a:hover{border-bottom:none}.blog-post-content img{width:100%}.post-image{margin-left:calc(-1.3125rem);margin-right:calc(-1.3125rem)}.post-image img{width:100%}.tags{font-size:.9em;text-align:left}.tags ul{display:block;padding:0}.tags ul li{display:inline;list-style-type:none;text-align:center}.tags ul li a{border:1px solid #f93a3a;border-radius:3px;background:#f93a3a;padding:.2em;color:#fff;margin:10px 2px 10px 0;line-height:1em}.tags ul li a:hover{background:#fefefe;color:#f93a3a}.tags ul li:not(:last-child){padding:0 .1rem 0 0}.highlight{margin-left:calc(-1.3125rem);margin-right:calc(-1.3125rem)}.highlight pre{line-height:1.2rem;border:1px solid #ddd;border-radius:5px;overflow:auto;padding:1.3125rem;margin:0}.highlight pre code[class*=language-]{font-size:.9em}.highlight pre .token.comment{font-style:italic}blockquote{background:#f9f9f9;border-left:5px solid #333;margin:1.5em 10px;padding:.5em 10px;quotes:"“" "”" "‘" "’"}blockquote:before{color:#333;content:open-quote;font-size:4em;line-height:.1em;margin-right:.25em;vertical-align:-.4em}blockquote p{display:inline}time{font-size:80%;margin-right:1rem}@media only screen and (min-width:600px){.layout .title-wrapper{display:flex;justify-content:space-between;align-items:center;flex-direction:row}.layout .title{margin-block-start:.83em;margin-block-end:.83em;margin-inline-start:0;margin-inline-end:0}.blog-list .list-item{display:flex;justify-content:space-between;align-items:center;flex-direction:unset;padding:0;margin-bottom:.5rem}.blog-list .date-label{font-size:100%;margin-right:0}.project-board{grid-template-columns:1fr 1fr}.highlight{margin-left:0;margin-right:0}.post-image{margin-left:0;margin-right:0}}
\ No newline at end of file
diff --git a/resources/_gen/assets/scss/scss/main.scss_48b060fe05b0a273d182ef83c0605941.json b/resources/_gen/assets/scss/scss/main.scss_48b060fe05b0a273d182ef83c0605941.json
deleted file mode 100644
index 55cd58bb5d2afb9094487790a9ef6b2d9a36775d..0000000000000000000000000000000000000000
--- a/resources/_gen/assets/scss/scss/main.scss_48b060fe05b0a273d182ef83c0605941.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Target":"scss/main.min.3d0adda7b58cdeda274062b9b4b375ef4116fa3a717b81948867bba1382531c7.css","MediaType":"text/css","Data":{"Integrity":"sha256-PQrdp7WM3tonQGK5tLN170EW+jpxe4GUiGe7oTglMcc="}}
\ No newline at end of file
diff --git a/resources/_gen/assets/scss/scss/main.scss_b95b077eb505d5c0aff8055eaced30ad.content b/resources/_gen/assets/scss/scss/main.scss_b95b077eb505d5c0aff8055eaced30ad.content
deleted file mode 100644
index 0cc450df2cb6e080b2db5b7f1983356f824fb4fb..0000000000000000000000000000000000000000
--- a/resources/_gen/assets/scss/scss/main.scss_b95b077eb505d5c0aff8055eaced30ad.content
+++ /dev/null
@@ -1 +0,0 @@
-@charset "UTF-8";*{box-sizing:border-box;font-family:dejavu sans}body{margin:0}h1,h2,h3,h4{font-weight:400}code[class*=language-],nav,.blog-list{font-style:normal;font-weight:400;font-size:1.025rem}code{font-family:dejavu sans mono}tags{font-family:dejavu sans mono}.list-item{font-family:dejavu sans mono}html{font-size:16px}body{line-height:1.8em;color:#333;background:#fefefe}.post-title,.date-label{letter-spacing:.025rem}p,sub,nav{letter-spacing:.05rem}.title-wrapper,.title{letter-spacing:.075rem}a{text-decoration:none}.brand-icon{color:#f93a3a;display:inline-flex;border-bottom:1px solid}.brand-icon:hover{border-bottom:none}.layout{max-width:48rem;margin-left:auto;margin-right:auto;padding:2.625rem 1.3125rem}.layout .title-wrapper{display:flex;flex-direction:column;align-items:center;margin-bottom:.5rem}.layout .title{color:#333;text-align:left;display:block;font-size:1.875rem;margin:0}nav{font-size:1.025rem;text-align:center}nav ul{display:block;padding:0}nav ul li{display:inline;list-style-type:none}nav ul li a{color:#333;display:inline-block;padding-top:.5rem;padding-bottom:.5rem;border-bottom:1px solid #fefefe}nav ul li a:hover{color:#f93a3a}nav ul li:not(:last-child){padding:0 1rem 0 0}.slim-description{margin-bottom:calc(16px * 2);color:#666}.blog-post-content a{color:#f93a3a;text-decoration:none;border-bottom:1px solid}.blog-post-content a:hover{border-bottom:none}.blog-list .list-item{display:flex;flex-direction:column-reverse;align-items:baseline;padding:.5rem .5rem .5rem 0}.blog-list .post-title a{text-decoration:none;color:#333;border-bottom:none}.blog-list .post-title a:hover{border-bottom:1px solid}.blog-list .date-label{font-size:80%;margin-right:1rem}.content .title{font-size:1.275rem}.blog-post-content a{color:#f93a3a;text-decoration:none;border-bottom:1px solid}.blog-post-content a:hover{border-bottom:none}.blog-post-content img{width:100%}.post-image{margin-left:calc(-1.3125rem);margin-right:calc(-1.3125rem)}.post-image img{width:100%}.tags{font-size:.9em;text-align:left}.tags ul{display:block;padding:0}.tags ul li{display:inline;list-style-type:none;text-align:center}.tags ul li a{border:1px solid #f93a3a;border-radius:3px;background:#f93a3a;padding:.2em;color:#fff;margin:10px 2px 10px 0;line-height:1em}.tags ul li a:hover{background:#fefefe;color:#f93a3a}.tags ul li:not(:last-child){padding:0 .1rem 0 0}.highlight{margin-left:calc(-1.3125rem);margin-right:calc(-1.3125rem)}.highlight pre{line-height:1.2rem;border:1px solid #ddd;border-radius:5px;overflow:auto;padding:1.3125rem;margin:0}.highlight pre code[class*=language-]{font-size:.9em}.highlight pre .token.comment{font-style:italic}blockquote{background:#f9f9f9;border-left:5px solid #333;margin:1.5em 10px;padding:.5em 10px;quotes:"“" "”" "‘" "’"}blockquote:before{color:#333;content:open-quote;font-size:4em;line-height:.1em;margin-right:.25em;vertical-align:-.4em}blockquote p{display:inline}time{font-size:80%;margin-right:1rem}@media only screen and (min-width:600px){.layout .title-wrapper{display:flex;justify-content:space-between;align-items:center;flex-direction:row}.layout .title{margin-block-start:.83em;margin-block-end:.83em;margin-inline-start:0;margin-inline-end:0}.blog-list .list-item{display:flex;justify-content:space-between;align-items:center;flex-direction:unset;padding:0;margin-bottom:.5rem}.blog-list .date-label{font-size:100%;margin-right:0}.project-board{grid-template-columns:1fr 1fr}.highlight{margin-left:0;margin-right:0}.post-image{margin-left:0;margin-right:0}}
\ No newline at end of file
diff --git a/resources/_gen/assets/scss/scss/main.scss_b95b077eb505d5c0aff8055eaced30ad.json b/resources/_gen/assets/scss/scss/main.scss_b95b077eb505d5c0aff8055eaced30ad.json
deleted file mode 100644
index f2982e9797a2a4414c436b5d9e8bee9924fa6ced..0000000000000000000000000000000000000000
--- a/resources/_gen/assets/scss/scss/main.scss_b95b077eb505d5c0aff8055eaced30ad.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Target":"scss/main.min.css","MediaType":"text/css","Data":{}}
\ No newline at end of file