diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..ab77317
Binary files /dev/null and b/.DS_Store differ
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..cba43cc
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+.Rproj.user
+.Rhistory
+.RData
+.Ruserdata
+
+/.quarto/
diff --git a/README.md b/README.md
index 9d523b6..c6e09c3 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,5 @@
-# Quarto Template for the Tutorial
+# Unpil Baek
-This repository contains the template for the website tutorial at .
+Personal website built with Quarto.
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+Looking for a nice tutorial? Try this: .
\ No newline at end of file
diff --git a/_freeze/cv/index/execute-results/html.json b/_freeze/cv/index/execute-results/html.json
index 44ff7f7..da624b2 100644
--- a/_freeze/cv/index/execute-results/html.json
+++ b/_freeze/cv/index/execute-results/html.json
@@ -1,7 +1,8 @@
{
- "hash": "c1396f1f9307a539f1597a232ceb2381",
+ "hash": "b3aee84c0030d141a32dbd03d6681475",
"result": {
- "markdown": "---\nlayout: page\ntitle: Curriculum vitae\nexcerpt: My current CV\nexecute:\n freeze: true # never re-render during project render\nengine: knitr \nresources:\n - \"cv.pdf\"\ncv:\n pdf: \"cv.pdf\"\n---\n\n::: {.cell}\n\n:::\n\n```{=html}\n\n \n Download current CV\n \n
\n\n \n
\n```\n\n```{=html}\n\n```",
+ "engine": "knitr",
+ "markdown": "---\nlayout: page\ntitle: Curriculum vitae\nexcerpt: My current CV\nexecute:\n freeze: true # never re-render during project render\nengine: knitr \nresources:\n - \"cv.pdf\"\ncv:\n pdf: \"cv.pdf\"\n---\n\n::: {.cell}\n\n:::\n\n```{=html}\n\n \n Download current CV\n \n
\n\n \n
\n```\n",
"supporting": [],
"filters": [
"rmarkdown/pagebreak.lua"
diff --git a/_freeze/site_libs/quarto-listing/list.min.js b/_freeze/site_libs/quarto-listing/list.min.js
new file mode 100644
index 0000000..511346f
--- /dev/null
+++ b/_freeze/site_libs/quarto-listing/list.min.js
@@ -0,0 +1,2 @@
+var List;List=function(){var t={"./src/add-async.js":function(t){t.exports=function(t){return function e(r,n,s){var i=r.splice(0,50);s=(s=s||[]).concat(t.add(i)),r.length>0?setTimeout((function(){e(r,n,s)}),1):(t.update(),n(s))}}},"./src/filter.js":function(t){t.exports=function(t){return t.handlers.filterStart=t.handlers.filterStart||[],t.handlers.filterComplete=t.handlers.filterComplete||[],function(e){if(t.trigger("filterStart"),t.i=1,t.reset.filter(),void 0===e)t.filtered=!1;else{t.filtered=!0;for(var r=t.items,n=0,s=r.length;nv.page,a=new g(t[s],void 0,n),v.items.push(a),r.push(a)}return v.update(),r}m(t.slice(0),e)}},this.show=function(t,e){return this.i=t,this.page=e,v.update(),v},this.remove=function(t,e,r){for(var n=0,s=0,i=v.items.length;s-1&&r.splice(n,1),v},this.trigger=function(t){for(var e=v.handlers[t].length;e--;)v.handlers[t][e](v);return v},this.reset={filter:function(){for(var t=v.items,e=t.length;e--;)t[e].filtered=!1;return v},search:function(){for(var t=v.items,e=t.length;e--;)t[e].found=!1;return v}},this.update=function(){var t=v.items,e=t.length;v.visibleItems=[],v.matchingItems=[],v.templater.clear();for(var r=0;r=v.i&&v.visibleItems.lengthe},innerWindow:function(t,e,r){return t>=e-r&&t<=e+r},dotted:function(t,e,r,n,s,i,a){return this.dottedLeft(t,e,r,n,s,i)||this.dottedRight(t,e,r,n,s,i,a)},dottedLeft:function(t,e,r,n,s,i){return e==r+1&&!this.innerWindow(e,s,i)&&!this.right(e,n)},dottedRight:function(t,e,r,n,s,i,a){return!t.items[a-1].values().dotted&&(e==n&&!this.innerWindow(e,s,i)&&!this.right(e,n))}};return function(e){var n=new i(t.listContainer.id,{listClass:e.paginationClass||"pagination",item:e.item||"",valueNames:["page","dotted"],searchClass:"pagination-search-that-is-not-supposed-to-exist",sortClass:"pagination-sort-that-is-not-supposed-to-exist"});s.bind(n.listContainer,"click",(function(e){var r=e.target||e.srcElement,n=t.utils.getAttribute(r,"data-page"),s=t.utils.getAttribute(r,"data-i");s&&t.show((s-1)*n+1,n)})),t.on("updated",(function(){r(n,e)})),r(n,e)}}},"./src/parse.js":function(t,e,r){t.exports=function(t){var e=r("./src/item.js")(t),n=function(r,n){for(var s=0,i=r.length;s0?setTimeout((function(){e(r,s)}),1):(t.update(),t.trigger("parseComplete"))};return t.handlers.parseComplete=t.handlers.parseComplete||[],function(){var e=function(t){for(var e=t.childNodes,r=[],n=0,s=e.length;n]/g.exec(t)){var e=document.createElement("tbody");return e.innerHTML=t,e.firstElementChild}if(-1!==t.indexOf("<")){var r=document.createElement("div");return r.innerHTML=t,r.firstElementChild}}},a=function(e,r,n){var s=void 0,i=function(e){for(var r=0,n=t.valueNames.length;r=1;)t.list.removeChild(t.list.firstChild)},function(){var r;if("function"!=typeof t.item){if(!(r="string"==typeof t.item?-1===t.item.indexOf("<")?document.getElementById(t.item):i(t.item):s()))throw new Error("The list needs to have at least one item on init otherwise you'll have to add a template.");r=n(r,t.valueNames),e=function(){return r.cloneNode(!0)}}else e=function(e){var r=t.item(e);return i(r)}}()};t.exports=function(t){return new e(t)}},"./src/utils/classes.js":function(t,e,r){var n=r("./src/utils/index-of.js"),s=/\s+/;Object.prototype.toString;function i(t){if(!t||!t.nodeType)throw new Error("A DOM element reference is required");this.el=t,this.list=t.classList}t.exports=function(t){return new i(t)},i.prototype.add=function(t){if(this.list)return this.list.add(t),this;var e=this.array();return~n(e,t)||e.push(t),this.el.className=e.join(" "),this},i.prototype.remove=function(t){if(this.list)return this.list.remove(t),this;var e=this.array(),r=n(e,t);return~r&&e.splice(r,1),this.el.className=e.join(" "),this},i.prototype.toggle=function(t,e){return this.list?(void 0!==e?e!==this.list.toggle(t,e)&&this.list.toggle(t):this.list.toggle(t),this):(void 0!==e?e?this.add(t):this.remove(t):this.has(t)?this.remove(t):this.add(t),this)},i.prototype.array=function(){var t=(this.el.getAttribute("class")||"").replace(/^\s+|\s+$/g,"").split(s);return""===t[0]&&t.shift(),t},i.prototype.has=i.prototype.contains=function(t){return this.list?this.list.contains(t):!!~n(this.array(),t)}},"./src/utils/events.js":function(t,e,r){var n=window.addEventListener?"addEventListener":"attachEvent",s=window.removeEventListener?"removeEventListener":"detachEvent",i="addEventListener"!==n?"on":"",a=r("./src/utils/to-array.js");e.bind=function(t,e,r,s){for(var o=0,l=(t=a(t)).length;o32)return!1;var a=n,o=function(){var t,r={};for(t=0;t=p;b--){var j=o[t.charAt(b-1)];if(C[b]=0===m?(C[b+1]<<1|1)&j:(C[b+1]<<1|1)&j|(v[b+1]|v[b])<<1|1|v[b+1],C[b]&d){var x=l(m,b-1);if(x<=u){if(u=x,!((c=b-1)>a))break;p=Math.max(1,2*a-c)}}}if(l(m+1,a)>u)break;v=C}return!(c<0)}},"./src/utils/get-attribute.js":function(t){t.exports=function(t,e){var r=t.getAttribute&&t.getAttribute(e)||null;if(!r)for(var n=t.attributes,s=n.length,i=0;i=48&&t<=57}function i(t,e){for(var i=(t+="").length,a=(e+="").length,o=0,l=0;o=i&&l=a?-1:l>=a&&o=i?1:i-a}i.caseInsensitive=i.i=function(t,e){return i((""+t).toLowerCase(),(""+e).toLowerCase())},Object.defineProperties(i,{alphabet:{get:function(){return e},set:function(t){r=[];var s=0;if(e=t)for(;s {
+ if (categoriesLoaded) {
+ activateCategory(category);
+ setCategoryHash(category);
+ }
+};
+
+window["quarto-listing-loaded"] = () => {
+ // Process any existing hash
+ const hash = getHash();
+
+ if (hash) {
+ // If there is a category, switch to that
+ if (hash.category) {
+ activateCategory(hash.category);
+ }
+ // Paginate a specific listing
+ const listingIds = Object.keys(window["quarto-listings"]);
+ for (const listingId of listingIds) {
+ const page = hash[getListingPageKey(listingId)];
+ if (page) {
+ showPage(listingId, page);
+ }
+ }
+ }
+
+ const listingIds = Object.keys(window["quarto-listings"]);
+ for (const listingId of listingIds) {
+ // The actual list
+ const list = window["quarto-listings"][listingId];
+
+ // Update the handlers for pagination events
+ refreshPaginationHandlers(listingId);
+
+ // Render any visible items that need it
+ renderVisibleProgressiveImages(list);
+
+ // Whenever the list is updated, we also need to
+ // attach handlers to the new pagination elements
+ // and refresh any newly visible items.
+ list.on("updated", function () {
+ renderVisibleProgressiveImages(list);
+ setTimeout(() => refreshPaginationHandlers(listingId));
+
+ // Show or hide the no matching message
+ toggleNoMatchingMessage(list);
+ });
+ }
+};
+
+window.document.addEventListener("DOMContentLoaded", function (_event) {
+ // Attach click handlers to categories
+ const categoryEls = window.document.querySelectorAll(
+ ".quarto-listing-category .category"
+ );
+
+ for (const categoryEl of categoryEls) {
+ const category = categoryEl.getAttribute("data-category");
+ categoryEl.onclick = () => {
+ activateCategory(category);
+ setCategoryHash(category);
+ };
+ }
+
+ // Attach a click handler to the category title
+ // (there should be only one, but since it is a class name, handle N)
+ const categoryTitleEls = window.document.querySelectorAll(
+ ".quarto-listing-category-title"
+ );
+ for (const categoryTitleEl of categoryTitleEls) {
+ categoryTitleEl.onclick = () => {
+ activateCategory("");
+ setCategoryHash("");
+ };
+ }
+
+ categoriesLoaded = true;
+});
+
+function toggleNoMatchingMessage(list) {
+ const selector = `#${list.listContainer.id} .listing-no-matching`;
+ const noMatchingEl = window.document.querySelector(selector);
+ if (noMatchingEl) {
+ if (list.visibleItems.length === 0) {
+ noMatchingEl.classList.remove("d-none");
+ } else {
+ if (!noMatchingEl.classList.contains("d-none")) {
+ noMatchingEl.classList.add("d-none");
+ }
+ }
+ }
+}
+
+function setCategoryHash(category) {
+ setHash({ category });
+}
+
+function setPageHash(listingId, page) {
+ const currentHash = getHash() || {};
+ currentHash[getListingPageKey(listingId)] = page;
+ setHash(currentHash);
+}
+
+function getListingPageKey(listingId) {
+ return `${listingId}-page`;
+}
+
+function refreshPaginationHandlers(listingId) {
+ const listingEl = window.document.getElementById(listingId);
+ const paginationEls = listingEl.querySelectorAll(
+ ".pagination li.page-item:not(.disabled) .page.page-link"
+ );
+ for (const paginationEl of paginationEls) {
+ paginationEl.onclick = (sender) => {
+ setPageHash(listingId, sender.target.getAttribute("data-i"));
+ showPage(listingId, sender.target.getAttribute("data-i"));
+ return false;
+ };
+ }
+}
+
+function renderVisibleProgressiveImages(list) {
+ // Run through the visible items and render any progressive images
+ for (const item of list.visibleItems) {
+ const itemEl = item.elm;
+ if (itemEl) {
+ const progressiveImgs = itemEl.querySelectorAll(
+ `img[${kProgressiveAttr}]`
+ );
+ for (const progressiveImg of progressiveImgs) {
+ const srcValue = progressiveImg.getAttribute(kProgressiveAttr);
+ if (srcValue) {
+ progressiveImg.setAttribute("src", srcValue);
+ }
+ progressiveImg.removeAttribute(kProgressiveAttr);
+ }
+ }
+ }
+}
+
+function getHash() {
+ // Hashes are of the form
+ // #name:value|name1:value1|name2:value2
+ const currentUrl = new URL(window.location);
+ const hashRaw = currentUrl.hash ? currentUrl.hash.slice(1) : undefined;
+ return parseHash(hashRaw);
+}
+
+const kAnd = "&";
+const kEquals = "=";
+
+function parseHash(hash) {
+ if (!hash) {
+ return undefined;
+ }
+ const hasValuesStrs = hash.split(kAnd);
+ const hashValues = hasValuesStrs
+ .map((hashValueStr) => {
+ const vals = hashValueStr.split(kEquals);
+ if (vals.length === 2) {
+ return { name: vals[0], value: vals[1] };
+ } else {
+ return undefined;
+ }
+ })
+ .filter((value) => {
+ return value !== undefined;
+ });
+
+ const hashObj = {};
+ hashValues.forEach((hashValue) => {
+ hashObj[hashValue.name] = decodeURIComponent(hashValue.value);
+ });
+ return hashObj;
+}
+
+function makeHash(obj) {
+ return Object.keys(obj)
+ .map((key) => {
+ return `${key}${kEquals}${obj[key]}`;
+ })
+ .join(kAnd);
+}
+
+function setHash(obj) {
+ const hash = makeHash(obj);
+ window.history.pushState(null, null, `#${hash}`);
+}
+
+function showPage(listingId, page) {
+ const list = window["quarto-listings"][listingId];
+ if (list) {
+ list.show((page - 1) * list.page + 1, list.page);
+ }
+}
+
+function activateCategory(category) {
+ // Deactivate existing categories
+ const activeEls = window.document.querySelectorAll(
+ ".quarto-listing-category .category.active"
+ );
+ for (const activeEl of activeEls) {
+ activeEl.classList.remove("active");
+ }
+
+ // Activate this category
+ const categoryEl = window.document.querySelector(
+ `.quarto-listing-category .category[data-category='${category}'`
+ );
+ if (categoryEl) {
+ categoryEl.classList.add("active");
+ }
+
+ // Filter the listings to this category
+ filterListingCategory(category);
+}
+
+function filterListingCategory(category) {
+ const listingIds = Object.keys(window["quarto-listings"]);
+ for (const listingId of listingIds) {
+ const list = window["quarto-listings"][listingId];
+ if (list) {
+ if (category === "") {
+ // resets the filter
+ list.filter();
+ } else {
+ // filter to this category
+ list.filter(function (item) {
+ const itemValues = item.values();
+ if (itemValues.categories !== null) {
+ const categories = itemValues.categories.split(",");
+ return categories.includes(category);
+ } else {
+ return false;
+ }
+ });
+ }
+ }
+ }
+}
diff --git a/_quarto.yml b/_quarto.yml
index fae4bda..16f7978 100644
--- a/_quarto.yml
+++ b/_quarto.yml
@@ -16,10 +16,12 @@ website:
left:
- text: "Projects"
href: projects/index.qmd
- - text: "Photography"
- href: photography/index.qmd
+ - text: "Music"
+ href: music/index.qmd
- text: "CV"
href: cv/index.qmd
+ - text: "Blog"
+ href: posts.qmd
# your social media handles
right:
@@ -29,6 +31,8 @@ website:
# href: https://twitter.com/MarvinSchmittML
- icon: linkedin
href: https://www.linkedin.com/in/unpilbaek/
+ - icon: github
+ href: https://github.com/unpilbaek/
#- icon: envelope
# aria-label: email
# href: "mailto:mail.marvinschmitt@gmail.com"
@@ -64,11 +68,12 @@ format:
html:
fontsize: 1.1em
theme:
- - pulse
+ - trestles
- html/styles.scss
toc: false
code-link: true
anchor-sections: true
fig-cap-location: margin
reference-location: margin
- footnotes-hover: true
\ No newline at end of file
+ footnotes-hover: true
+ page-layout: full
\ No newline at end of file
diff --git a/cv/.DS_Store b/cv/.DS_Store
new file mode 100644
index 0000000..e1f8f63
Binary files /dev/null and b/cv/.DS_Store differ
diff --git a/cv/cv.pdf b/cv/cv.pdf
index 74af6a6..c2beb18 100644
Binary files a/cv/cv.pdf and b/cv/cv.pdf differ
diff --git a/cv/index.qmd b/cv/index.qmd
index 200287d..9e832fa 100644
--- a/cv/index.qmd
+++ b/cv/index.qmd
@@ -40,11 +40,3 @@ cv:
```
-
-
-
-```{=html}
-
-```
diff --git a/docs/404.html b/docs/404.html
index 154c1e5..acaf2af 100644
--- a/docs/404.html
+++ b/docs/404.html
@@ -69,7 +69,7 @@
-
+
-
-
+
+
+
+
+
+
@@ -116,12 +125,12 @@
-