aboutsummaryrefslogtreecommitdiff
path: root/site
diff options
context:
space:
mode:
authorAlexander Kassouni <alex@kassouni.net>2026-09-28 21:35:50 -0700
committerAlexander Kassouni <alex@kassouni.net>2026-09-28 21:35:50 -0700
commita570da443586fa3b3490b5add88ea5932456a5b3 (patch)
tree41d45d56ef31b7e632578a7e384e7cb4bf25911f /site
parent151d2de0894d726de80d8702aea3335b9389de6f (diff)
site
Diffstat (limited to 'site')
-rw-r--r--site/content/about.md14
-rw-r--r--site/content/blog/_index.md5
-rw-r--r--site/content/buckminster.md14
-rw-r--r--site/sass/_fonts.scss28
-rw-r--r--site/sass/_palette.scss51
-rw-r--r--site/sass/style.scss122
-rw-r--r--site/static/buckminster/cat.jpgbin0 -> 272460 bytes
-rw-r--r--site/static/buckminster/cat2.jpgbin0 -> 212048 bytes
-rw-r--r--site/static/buckminster/cat3.jpgbin0 -> 905221 bytes
-rw-r--r--site/static/buckminster/cat4.jpgbin0 -> 269768 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-Bold.woff2bin0 -> 50380 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-BoldItalic.woff2bin0 -> 54028 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-ExtraLight.woff2bin0 -> 49516 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-ExtraLightItalic.woff2bin0 -> 53616 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-Italic.woff2bin0 -> 53408 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-Light.woff2bin0 -> 49384 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-LightItalic.woff2bin0 -> 53920 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-Medium.woff2bin0 -> 50400 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-MediumItalic.woff2bin0 -> 54868 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-Regular.woff2bin0 -> 49248 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-SemiBold.woff2bin0 -> 50600 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-SemiBoldItalic.woff2bin0 -> 54784 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-Text.woff2bin0 -> 49832 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-TextItalic.woff2bin0 -> 55116 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-Thin.woff2bin0 -> 49264 bytes
-rw-r--r--site/static/fonts/mono/IBMPlexMono-ThinItalic.woff2bin0 -> 52560 bytes
-rw-r--r--site/static/me.jpgbin0 -> 619311 bytes
-rw-r--r--site/templates/base.html29
-rw-r--r--site/templates/index.html21
-rw-r--r--site/templates/page.html12
-rw-r--r--site/templates/section.html16
-rw-r--r--site/zola.toml24
32 files changed, 336 insertions, 0 deletions
diff --git a/site/content/about.md b/site/content/about.md
new file mode 100644
index 0000000..686106d
--- /dev/null
+++ b/site/content/about.md
@@ -0,0 +1,14 @@
++++
+title = "about"
++++
+
+My name is Alexander Kassouni.
+
+I'm currently a Senior Software Engineer at [Ascend](https://useascend.com) automating insurance accounting with AI.
+
+Previously, I was a Machine Learning Engineer at [Geminus AI](https://geminus.ai), working on [MLOps](https://en.wikipedia.org/wiki/MLOps) and [bayesian optimization](https://en.wikipedia.org/wiki/Bayesian_optimization) for [industrial processes](https://en.wikipedia.org/wiki/Industrial_processes).
+
+I graduated magna cum laude from the University of Pennsylvania where I studied Computer Science and Mathematics.
+
+I live in San Francisco with my wonderful cat [Buckminster](/buckminster).
+
diff --git a/site/content/blog/_index.md b/site/content/blog/_index.md
new file mode 100644
index 0000000..86de138
--- /dev/null
+++ b/site/content/blog/_index.md
@@ -0,0 +1,5 @@
++++
+
++++
+
+# Blog
diff --git a/site/content/buckminster.md b/site/content/buckminster.md
new file mode 100644
index 0000000..9507e75
--- /dev/null
+++ b/site/content/buckminster.md
@@ -0,0 +1,14 @@
+---
+title: Buckminster 🐈
+---
+
+I adopted Buckminster in March of 2023.
+He has short ears and [7 toes on each of his front paws](https://en.wikipedia.org/wiki/Polydactyl_cat).
+
+<img src="/buckminster/cat3.jpg" width="75%" class="centered-img"/>
+
+<img src="/buckminster/cat.jpg" width="75%" class="centered-img"/>
+
+<img src="/buckminster/cat4.jpg" width="75%" class="centered-img"/>
+
+<img src="/buckminster/cat2.jpg" width="75%" class="centered-img"/>
diff --git a/site/sass/_fonts.scss b/site/sass/_fonts.scss
new file mode 100644
index 0000000..2299bca
--- /dev/null
+++ b/site/sass/_fonts.scss
@@ -0,0 +1,28 @@
+@use "sass:list";
+
+$-faces: (
+ 100: ("Thin", "ThinItalic"),
+ 200: ("ExtraLight", "ExtraLightItalic"),
+ 300: ("Light", "LightItalic"),
+ 400: ("Regular", "Italic"),
+ 450: ("Text", "TextItalic"),
+ 500: ("Medium", "MediumItalic"),
+ 600: ("SemiBold", "SemiBoldItalic"),
+ 700: ("Bold", "BoldItalic"),
+);
+
+$-styles: normal italic;
+
+@each $weight, $names in $-faces {
+ @for $i from 1 through 2 {
+ @font-face {
+ font-family: "IBM Plex Mono";
+ src: url("/fonts/mono/IBMPlexMono-#{list.nth($names, $i)}.woff2") format("woff2");
+ font-weight: $weight;
+ font-style: list.nth($-styles, $i);
+ font-display: swap;
+ }
+ }
+}
+
+$mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
diff --git a/site/sass/_palette.scss b/site/sass/_palette.scss
new file mode 100644
index 0000000..b61eb94
--- /dev/null
+++ b/site/sass/_palette.scss
@@ -0,0 +1,51 @@
+@mixin ayu-dark {
+ color-scheme: dark;
+
+ --bg: #0F1419; // base00 default background
+ --bg-alt: #131721; // base01 raised background
+ --bg-sel: #272D38; // base02 selection background
+ --grey: #3E4B59; // base03 comments, invisibles
+ --fg-dim: #BFBDB6; // base04 muted foreground
+ --fg: #E6E1CF; // base05 default foreground
+ --fg-alt: #E6E1CF; // base06
+ --fg-bright: #F3F4F5; // base07 brightest foreground
+
+ --red: #F07178; // base08
+ --orange: #FF8F40; // base09
+ --yellow: #FFB454; // base0A
+ --green: #B8CC52; // base0B
+ --cyan: #95E6CB; // base0C
+ --blue: #59C2FF; // base0D
+ --purple: #D2A6FF; // base0E
+ --brown: #E6B673; // base0F
+}
+
+@mixin ayu-light {
+ color-scheme: light;
+
+ --bg: #FAFAFA; // base00
+ --bg-alt: #F3F4F5; // base01
+ --bg-sel: #F8F9FA; // base02
+ --grey: #ABB0B6; // base03
+ --fg-dim: #828C99; // base04
+ --fg: #5C6773; // base05
+ --fg-alt: #242936; // base06
+ --fg-bright: #1A1F29; // base07
+
+ --red: #F07178; // base08
+ --orange: #FA8D3E; // base09
+ --yellow: #F2AE49; // base0A
+ --green: #86B300; // base0B
+ --cyan: #4CBF99; // base0C
+ --blue: #36A3D9; // base0D
+ --purple: #A37ACC; // base0E
+ --brown: #E6BA7E; // base0F
+}
+
+:root { @include ayu-light; }
+@media (prefers-color-scheme: dark) {
+ :root { @include ayu-dark; }
+}
+
+:root[data-theme="dark"] { @include ayu-dark; }
+:root[data-theme="light"] { @include ayu-light; }
diff --git a/site/sass/style.scss b/site/sass/style.scss
new file mode 100644
index 0000000..5ce9f88
--- /dev/null
+++ b/site/sass/style.scss
@@ -0,0 +1,122 @@
+@use "palette";
+@use "fonts";
+
+body {
+ background: var(--bg);
+ color: var(--fg);
+ font-family: fonts.$mono;
+ line-height: 1.6;
+
+ max-width: 46rem;
+ margin: 0 auto;
+ padding: 3rem 1.5rem;
+}
+
+header {
+ margin-bottom: 2.5rem;
+ padding-bottom: 0.75rem;
+ border-bottom: 1px solid var(--grey);
+}
+
+nav {
+ display: flex;
+ align-items: baseline;
+ justify-content: space-between;
+ gap: 1.5rem;
+
+ ul {
+ display: flex;
+ gap: 1.5rem;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ }
+}
+
+.brand,
+.brand:visited {
+ color: var(--fg-bright);
+ font-weight: 500;
+}
+
+.brand:hover {
+ font-weight: 700;
+}
+
+footer {
+ display: flex;
+ gap: 1.5rem;
+ margin-top: 3rem;
+ padding-top: 0.75rem;
+ border-top: 1px solid var(--grey);
+}
+
+img {
+ max-width: 100%;
+ height: auto;
+}
+
+.centered-img {
+ display: block;
+ margin: 2rem auto;
+}
+
+.intro {
+ display: flex;
+ align-items: flex-start;
+ gap: 2.5rem;
+}
+
+.intro-text > p:first-child {
+ margin-top: 0;
+}
+
+.avatar {
+ flex: none;
+ width: 14rem;
+ height: 14rem;
+ border-radius: 50%;
+ object-fit: cover;
+}
+
+@media (max-width: 34rem) {
+ .intro {
+ flex-direction: column-reverse;
+ align-items: center;
+ }
+}
+
+.post-list {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+
+ li {
+ display: flex;
+ justify-content: space-between;
+ gap: 1rem;
+ }
+}
+
+time {
+ color: var(--fg-dim);
+}
+
+strong {
+ color: var(--orange);
+ font-weight: 600;
+}
+
+a {
+ color: var(--blue);
+ text-decoration: none;
+}
+
+a:visited {
+ color: var(--purple);
+}
+
+a:hover {
+ font-weight: 700;
+ text-decoration: underline;
+}
diff --git a/site/static/buckminster/cat.jpg b/site/static/buckminster/cat.jpg
new file mode 100644
index 0000000..c16791e
--- /dev/null
+++ b/site/static/buckminster/cat.jpg
Binary files differ
diff --git a/site/static/buckminster/cat2.jpg b/site/static/buckminster/cat2.jpg
new file mode 100644
index 0000000..60cdc71
--- /dev/null
+++ b/site/static/buckminster/cat2.jpg
Binary files differ
diff --git a/site/static/buckminster/cat3.jpg b/site/static/buckminster/cat3.jpg
new file mode 100644
index 0000000..24ebf52
--- /dev/null
+++ b/site/static/buckminster/cat3.jpg
Binary files differ
diff --git a/site/static/buckminster/cat4.jpg b/site/static/buckminster/cat4.jpg
new file mode 100644
index 0000000..b52c777
--- /dev/null
+++ b/site/static/buckminster/cat4.jpg
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-Bold.woff2 b/site/static/fonts/mono/IBMPlexMono-Bold.woff2
new file mode 100644
index 0000000..6200c49
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-Bold.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-BoldItalic.woff2 b/site/static/fonts/mono/IBMPlexMono-BoldItalic.woff2
new file mode 100644
index 0000000..ec229e3
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-BoldItalic.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-ExtraLight.woff2 b/site/static/fonts/mono/IBMPlexMono-ExtraLight.woff2
new file mode 100644
index 0000000..99bba11
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-ExtraLight.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-ExtraLightItalic.woff2 b/site/static/fonts/mono/IBMPlexMono-ExtraLightItalic.woff2
new file mode 100644
index 0000000..c205402
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-ExtraLightItalic.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-Italic.woff2 b/site/static/fonts/mono/IBMPlexMono-Italic.woff2
new file mode 100644
index 0000000..30591d6
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-Italic.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-Light.woff2 b/site/static/fonts/mono/IBMPlexMono-Light.woff2
new file mode 100644
index 0000000..1bf330c
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-Light.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-LightItalic.woff2 b/site/static/fonts/mono/IBMPlexMono-LightItalic.woff2
new file mode 100644
index 0000000..6dad6ef
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-LightItalic.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-Medium.woff2 b/site/static/fonts/mono/IBMPlexMono-Medium.woff2
new file mode 100644
index 0000000..dd24398
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-Medium.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-MediumItalic.woff2 b/site/static/fonts/mono/IBMPlexMono-MediumItalic.woff2
new file mode 100644
index 0000000..a870c1c
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-MediumItalic.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-Regular.woff2 b/site/static/fonts/mono/IBMPlexMono-Regular.woff2
new file mode 100644
index 0000000..8bdb4c4
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-Regular.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-SemiBold.woff2 b/site/static/fonts/mono/IBMPlexMono-SemiBold.woff2
new file mode 100644
index 0000000..a0acc15
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-SemiBold.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-SemiBoldItalic.woff2 b/site/static/fonts/mono/IBMPlexMono-SemiBoldItalic.woff2
new file mode 100644
index 0000000..3b10ea3
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-SemiBoldItalic.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-Text.woff2 b/site/static/fonts/mono/IBMPlexMono-Text.woff2
new file mode 100644
index 0000000..a58679b
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-Text.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-TextItalic.woff2 b/site/static/fonts/mono/IBMPlexMono-TextItalic.woff2
new file mode 100644
index 0000000..15d1ca1
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-TextItalic.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-Thin.woff2 b/site/static/fonts/mono/IBMPlexMono-Thin.woff2
new file mode 100644
index 0000000..ae59e0a
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-Thin.woff2
Binary files differ
diff --git a/site/static/fonts/mono/IBMPlexMono-ThinItalic.woff2 b/site/static/fonts/mono/IBMPlexMono-ThinItalic.woff2
new file mode 100644
index 0000000..b6f92fd
--- /dev/null
+++ b/site/static/fonts/mono/IBMPlexMono-ThinItalic.woff2
Binary files differ
diff --git a/site/static/me.jpg b/site/static/me.jpg
new file mode 100644
index 0000000..5b9a4b4
--- /dev/null
+++ b/site/static/me.jpg
Binary files differ
diff --git a/site/templates/base.html b/site/templates/base.html
new file mode 100644
index 0000000..7a12bf2
--- /dev/null
+++ b/site/templates/base.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>{% block title %}kassouni.net{% endblock title %}</title>
+ <link rel="stylesheet" href="/style.css">
+ <link rel="alternate" type="application/rss+xml" title="{{ config.title }}" href="/rss.xml">
+</head>
+<body>
+ <header>
+ <nav>
+ <a class="brand" href="/">kassouni.net</a>
+ <ul>
+ <li><a href="/about/">about</a></li>
+ <li><a href="/blog/">blog</a></li>
+ </ul>
+ </nav>
+ </header>
+ <main>
+ {% block content %}{% endblock content %}
+ </main>
+ <footer>
+ <a href="https://git.kassouni.net">git</a>
+ <a href="/rss.xml">rss</a>
+ <a href="mailto:contact@kassouni.net">email</a>
+ </footer>
+</body>
+</html>
diff --git a/site/templates/index.html b/site/templates/index.html
new file mode 100644
index 0000000..ea40d1d
--- /dev/null
+++ b/site/templates/index.html
@@ -0,0 +1,21 @@
+{% extends "base.html" %}
+{% block content %}
+
+<h1>Hello there!</h1>
+
+<div class="intro">
+ <div class="intro-text">
+ <p>Welcome to the personal website of <strong>Alex Kassouni</strong>.</p>
+
+ <p>
+ I'm a <strong>software engineer</strong> with interests in <strong>machine learning</strong>,
+ <strong>programming languages</strong>, and <strong>mathematics</strong>.
+ </p>
+
+ <p>If you'd like to get in touch, just shoot me an email at <a href="mailto:contact@kassouni.net">contact@kassouni.net</a>.</p>
+ </div>
+
+ <img class="avatar" src="/me.jpg" alt="Alex Kassouni"/>
+</div>
+
+{% endblock content %}
diff --git a/site/templates/page.html b/site/templates/page.html
new file mode 100644
index 0000000..dca2406
--- /dev/null
+++ b/site/templates/page.html
@@ -0,0 +1,12 @@
+{% extends "base.html" %}
+
+{% block title %}{{ page.title }} · kassouni.net{% endblock title %}
+
+{% block content %}
+<article>
+ <h1>{{ page.title }}</h1>
+ {% if page.date %}<time datetime="{{ page.date }}">{{ page.date | date(format="%Y-%m-%d") }}</time>{% endif %}
+
+ {{ page.content | safe }}
+</article>
+{% endblock content %}
diff --git a/site/templates/section.html b/site/templates/section.html
new file mode 100644
index 0000000..22594c4
--- /dev/null
+++ b/site/templates/section.html
@@ -0,0 +1,16 @@
+{% extends "base.html" %}
+
+{% block title %}{{ section.title | default(value="blog") }} · kassouni.net{% endblock title %}
+
+{% block content %}
+{{ section.content | safe }}
+
+<ul class="post-list">
+ {% for post in section.pages %}
+ <li>
+ <a href="{{ post.permalink | safe }}">{{ post.title }}</a>
+ {% if post.date %}<time datetime="{{ post.date }}">{{ post.date | date(format="%Y-%m-%d") }}</time>{% endif %}
+ </li>
+ {% endfor %}
+</ul>
+{% endblock content %}
diff --git a/site/zola.toml b/site/zola.toml
new file mode 100644
index 0000000..0456e32
--- /dev/null
+++ b/site/zola.toml
@@ -0,0 +1,24 @@
+# The URL the site will be built for
+base_url = "https://kassouni.net"
+
+title = "kassouni.net"
+description = "The personal website of Alex Kassouni."
+author = "Alexander Kassouni"
+
+# Whether to generate a feed, and under what name (defaults to atom.xml)
+generate_feeds = true
+feed_filenames = ["rss.xml"]
+
+# Whether to automatically compile all Sass files in the sass directory
+compile_sass = true
+
+# Whether to build a search index to be used later on by a JavaScript library
+build_search_index = false
+
+[markdown]
+
+[markdown.highlighting]
+theme = "catppuccin-mocha"
+
+[extra]
+# Put all your custom variables here