diff --git a/_data/news.yml b/_data/news.yml new file mode 100644 index 000000000000..1ad02fe108fd --- /dev/null +++ b/_data/news.yml @@ -0,0 +1,21 @@ +# Homepage news items. +# Keep dates in ISO format for sorting; use label for display text when needed. +items: + - date: 2026-06-24 + label: "2026.06" + text: "Reorganizing this site into an academic profile and learning archive." + links: [] + + - date: 2024-03-18 + label: "2024.03" + text: "Added notes on" + links: + - label: "problem analysis" + url: "/isd/problem-analysis/" + + - date: 2024-02-26 + label: "2024.02" + text: "Added notes on" + links: + - label: "fine-tuning LLMs" + url: "/llm/fine-tuning-llm/" diff --git a/_data/profile.yml b/_data/profile.yml index 52e239f5bb80..3b0a335219ab 100644 --- a/_data/profile.yml +++ b/_data/profile.yml @@ -21,15 +21,18 @@ links: - label: "Email" icon: "envelope" url: "mailto:gtkobo92@snu.ac.kr" + - label: "Google Scholar" + icon: "google-scholar" + url: "https://scholar.google.com/citations?user=2hDR1lgAAAAJ&hl=en" + - label: "CV" + icon: "cv" + url: "https://docs.google.com/document/d/1PGgfaXFf4T5BaNPduZi3TPmRhdUfYt5ULsStewoAdBs/edit?usp=sharing" - label: "GitHub" icon: "github" url: "https://github.com/Ridealist/" - - label: "Twitter/X" - icon: "x-twitter" - url: "https://twitter.com/Junbo_Koh" + - label: "LinkedIn" + icon: "linkedin" + url: "https://www.linkedin.com/in/junbokoh92/" # Optional links are intentionally omitted until real URLs are available. optional_links: - cv: - google_scholar: - linkedin: diff --git a/_data/publications.yml b/_data/publications.yml new file mode 100644 index 000000000000..b43283b3d468 --- /dev/null +++ b/_data/publications.yml @@ -0,0 +1,20 @@ +# Homepage publications. +# +# Add real publication entries as they become available. The homepage include +# renders an empty state when these lists are empty, so build output stays +# stable before publication metadata is finalized. +# +# Example entry: +# - title: "Paper title" +# authors: "Junbo Koh, Coauthor A, Coauthor B" +# venue: "CHI 2026" +# venue_short: "CHI" +# year: 2026 +# image: "/assets/img/publications/example.png" +# note: "Honorable Mention" +# links: +# - label: "PDF" +# url: "https://example.com/paper.pdf" + +selected: [] +all: [] diff --git a/_includes/homepage-news.html b/_includes/homepage-news.html new file mode 100644 index 000000000000..e953c5e5f2ab --- /dev/null +++ b/_includes/homepage-news.html @@ -0,0 +1,33 @@ +{% assign news_limit = include.limit | default: 5 %} +{% assign news_items = site.data.news.items | default: empty %} + +{% if news_items.size > 0 %} + {% assign sorted_news = news_items | sort: "date" | reverse %} + +
+
+

News

+
+ + +
+{% endif %} diff --git a/_includes/homepage-publication-row.html b/_includes/homepage-publication-row.html new file mode 100644 index 000000000000..cd3cdff8c1bf --- /dev/null +++ b/_includes/homepage-publication-row.html @@ -0,0 +1,45 @@ +{% assign publication = include.publication %} + +
+ {% if publication.image or publication.venue_short %} +
+ {% if publication.image %} + {{ publication.title | escape }} teaser + {% endif %} + + {% if publication.venue_short %} + {{ publication.venue_short }} + {% endif %} +
+ {% endif %} + +
+

{{ publication.title }}

+ + {% if publication.authors %} +

{{ publication.authors | markdownify | remove: "

" | remove: "

" | strip }}

+ {% endif %} + + {% if publication.venue %} +

{{ publication.venue }}

+ {% endif %} + + {% if publication.note %} +

{{ publication.note }}

+ {% endif %} + + {% if publication.links %} + + {% endif %} +
+
diff --git a/_includes/homepage-publications.html b/_includes/homepage-publications.html new file mode 100644 index 000000000000..84ba86a2fb26 --- /dev/null +++ b/_includes/homepage-publications.html @@ -0,0 +1,32 @@ +{% assign selected_publications = site.data.publications.selected | default: empty %} +{% assign all_publications = site.data.publications.all | default: empty %} +{% assign publication_count = selected_publications.size | plus: all_publications.size %} + +
+
+

Publications

+
+ + {% if publication_count > 0 %} + {% if selected_publications.size > 0 %} +
+ {% for publication in selected_publications %} + {% include homepage-publication-row.html publication=publication %} + {% endfor %} +
+ {% endif %} + + {% if all_publications.size > 0 %} + {% if selected_publications.size > 0 %} +

All Papers

+ {% endif %} +
+ {% for publication in all_publications %} + {% include homepage-publication-row.html publication=publication %} + {% endfor %} +
+ {% endif %} + {% else %} +

Publications will be added as they become available.

+ {% endif %} +
diff --git a/_layouts/homepage.html b/_layouts/homepage.html index a554801944d6..11dc766883de 100644 --- a/_layouts/homepage.html +++ b/_layouts/homepage.html @@ -18,6 +18,7 @@ {% include head.html locale=locale %} {% include head/custom.html %} + @@ -80,9 +81,9 @@

{{ profile_name }}

{% when 'linkedin' %} {% assign icon_class = 'fab fa-linkedin' %} {% when 'google-scholar' %} - {% assign icon_class = 'fas fa-graduation-cap' %} + {% assign icon_class = 'ai ai-google-scholar' %} {% when 'cv' %} - {% assign icon_class = 'fas fa-file-alt' %} + {% assign icon_class = 'ai ai-cv' %} {% else %} {% assign icon_class = 'fas fa-link' %} {% endcase %} diff --git a/assets/css/homepage.scss b/assets/css/homepage.scss index 5954cdb7294b..d43ffbd49af6 100644 --- a/assets/css/homepage.scss +++ b/assets/css/homepage.scss @@ -170,6 +170,10 @@ body.layout--homepage { margin-top: 34px; } +.homepage-content > .homepage-section:first-child { + margin-top: 0; +} + .homepage-section-heading { display: flex; align-items: baseline; @@ -286,6 +290,110 @@ body.layout--homepage { font-size: 15px; } +.homepage-publication-list { + display: grid; + gap: 18px; +} + +.homepage-publication-subheading { + margin-top: 22px; +} + +.homepage-publication-row { + display: grid; + grid-template-columns: 168px minmax(0, 1fr); + gap: 22px; + align-items: start; + padding-bottom: 18px; + border-bottom: 1px solid #dde5ea; +} + +.homepage-publication-row--plain { + grid-template-columns: minmax(0, 1fr); +} + +.homepage-publication-media { + position: relative; + min-height: 96px; +} + +.homepage-publication-media img { + display: block; + width: 100%; + max-height: 118px; + object-fit: contain; + border-radius: 6px; + background: #fff; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.14); +} + +.homepage-publication-badge { + display: inline-block; + margin-top: 6px; + padding: 3px 8px; + border-radius: 2px; + background: #043361; + color: #fff; + font-size: 12px; + font-weight: 700; + line-height: 1.2; +} + +.homepage-publication-title { + margin: 0 0 6px; + color: #043361; + font-size: 18px; + line-height: 1.35; +} + +.homepage-publication-authors, +.homepage-publication-venue, +.homepage-publication-note { + margin: 0 0 5px; + font-size: 15px; + line-height: 1.45; +} + +.homepage-publication-authors { + color: #30363b; +} + +.homepage-publication-venue { + color: #4f5d67; + font-style: italic; +} + +.homepage-publication-note { + color: #b65b00; + font-weight: 600; +} + +.homepage-publication-links { + display: flex; + flex-wrap: wrap; + gap: 6px; + margin-top: 8px; +} + +.homepage-publication-links a { + display: inline-flex; + align-items: center; + min-height: 24px; + padding: 2px 8px; + border: 1px solid #043361; + border-radius: 2px; + color: #043361; + font-size: 12px; + line-height: 1.2; + text-decoration: none; +} + +.homepage-publication-links a:hover { + border-color: #006699; + color: #006699; + text-decoration: none; +} + .homepage-footer { margin-top: 34px; padding-top: 12px; @@ -338,12 +446,14 @@ body.layout--homepage { .homepage-post-list, .homepage-post-row, + .homepage-publication-row, .homepage-category-grid, .homepage-category-link { border-color: #3b4650; } .homepage-post-title a, + .homepage-publication-title, .homepage-category-link { color: #dce9ef; } @@ -358,9 +468,33 @@ body.layout--homepage { .homepage-category-count, .homepage-empty, .homepage-news-date, + .homepage-publication-venue, .homepage-footer { color: #aebac3; } + + .homepage-publication-authors { + color: #dadbdf; + } + + .homepage-publication-badge { + background: #3eb7f0; + color: #20212b; + } + + .homepage-publication-note { + color: #ffbc70; + } + + .homepage-publication-links a { + border-color: #64c5f2; + color: #64c5f2; + } + + .homepage-publication-links a:hover { + border-color: #93d8f7; + color: #93d8f7; + } } @media print, screen and (max-width: 960px) { @@ -420,6 +554,16 @@ body.layout--homepage { display: block; } + .homepage-publication-row { + display: block; + } + + .homepage-publication-media { + max-width: 220px; + min-height: 0; + margin-bottom: 12px; + } + .homepage-post-meta { flex-direction: row; gap: 10px; diff --git a/index.html b/index.html index 5dc977184fb2..4fbb4abb51f9 100644 --- a/index.html +++ b/index.html @@ -3,13 +3,7 @@ title: "Home" --- -

News

- - +{% include homepage-news.html limit=5 %}

About Me

@@ -29,6 +23,8 @@

Ongoing Research

I am interested in the intersection of learning sciences, educational technology, and human-centered AI. More specifically, I want to study how learners interact with intelligent tools, how those tools shape learning processes, and how design decisions can make AI systems more explainable, useful, and accountable in educational contexts.

+{% include homepage-publications.html %} +

Writing / Notes

This site also collects study notes and implementation logs across the topics I return to most often.