diff options
33 files changed, 340 insertions, 1 deletions
@@ -14,7 +14,10 @@ devShells = builtins.mapAttrs (system: pkgs: { default = pkgs.mkShell { - packages = [ pkgs.just ]; + packages = with pkgs; [ + just + zola + ]; }; }) inputs.nixpkgs.legacyPackages; }; 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 Binary files differnew file mode 100644 index 0000000..c16791e --- /dev/null +++ b/site/static/buckminster/cat.jpg diff --git a/site/static/buckminster/cat2.jpg b/site/static/buckminster/cat2.jpg Binary files differnew file mode 100644 index 0000000..60cdc71 --- /dev/null +++ b/site/static/buckminster/cat2.jpg diff --git a/site/static/buckminster/cat3.jpg b/site/static/buckminster/cat3.jpg Binary files differnew file mode 100644 index 0000000..24ebf52 --- /dev/null +++ b/site/static/buckminster/cat3.jpg diff --git a/site/static/buckminster/cat4.jpg b/site/static/buckminster/cat4.jpg Binary files differnew file mode 100644 index 0000000..b52c777 --- /dev/null +++ b/site/static/buckminster/cat4.jpg diff --git a/site/static/fonts/mono/IBMPlexMono-Bold.woff2 b/site/static/fonts/mono/IBMPlexMono-Bold.woff2 Binary files differnew file mode 100644 index 0000000..6200c49 --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-Bold.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-BoldItalic.woff2 b/site/static/fonts/mono/IBMPlexMono-BoldItalic.woff2 Binary files differnew file mode 100644 index 0000000..ec229e3 --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-BoldItalic.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-ExtraLight.woff2 b/site/static/fonts/mono/IBMPlexMono-ExtraLight.woff2 Binary files differnew file mode 100644 index 0000000..99bba11 --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-ExtraLight.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-ExtraLightItalic.woff2 b/site/static/fonts/mono/IBMPlexMono-ExtraLightItalic.woff2 Binary files differnew file mode 100644 index 0000000..c205402 --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-ExtraLightItalic.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-Italic.woff2 b/site/static/fonts/mono/IBMPlexMono-Italic.woff2 Binary files differnew file mode 100644 index 0000000..30591d6 --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-Italic.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-Light.woff2 b/site/static/fonts/mono/IBMPlexMono-Light.woff2 Binary files differnew file mode 100644 index 0000000..1bf330c --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-Light.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-LightItalic.woff2 b/site/static/fonts/mono/IBMPlexMono-LightItalic.woff2 Binary files differnew file mode 100644 index 0000000..6dad6ef --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-LightItalic.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-Medium.woff2 b/site/static/fonts/mono/IBMPlexMono-Medium.woff2 Binary files differnew file mode 100644 index 0000000..dd24398 --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-Medium.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-MediumItalic.woff2 b/site/static/fonts/mono/IBMPlexMono-MediumItalic.woff2 Binary files differnew file mode 100644 index 0000000..a870c1c --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-MediumItalic.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-Regular.woff2 b/site/static/fonts/mono/IBMPlexMono-Regular.woff2 Binary files differnew file mode 100644 index 0000000..8bdb4c4 --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-Regular.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-SemiBold.woff2 b/site/static/fonts/mono/IBMPlexMono-SemiBold.woff2 Binary files differnew file mode 100644 index 0000000..a0acc15 --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-SemiBold.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-SemiBoldItalic.woff2 b/site/static/fonts/mono/IBMPlexMono-SemiBoldItalic.woff2 Binary files differnew file mode 100644 index 0000000..3b10ea3 --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-SemiBoldItalic.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-Text.woff2 b/site/static/fonts/mono/IBMPlexMono-Text.woff2 Binary files differnew file mode 100644 index 0000000..a58679b --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-Text.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-TextItalic.woff2 b/site/static/fonts/mono/IBMPlexMono-TextItalic.woff2 Binary files differnew file mode 100644 index 0000000..15d1ca1 --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-TextItalic.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-Thin.woff2 b/site/static/fonts/mono/IBMPlexMono-Thin.woff2 Binary files differnew file mode 100644 index 0000000..ae59e0a --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-Thin.woff2 diff --git a/site/static/fonts/mono/IBMPlexMono-ThinItalic.woff2 b/site/static/fonts/mono/IBMPlexMono-ThinItalic.woff2 Binary files differnew file mode 100644 index 0000000..b6f92fd --- /dev/null +++ b/site/static/fonts/mono/IBMPlexMono-ThinItalic.woff2 diff --git a/site/static/me.jpg b/site/static/me.jpg Binary files differnew file mode 100644 index 0000000..5b9a4b4 --- /dev/null +++ b/site/static/me.jpg 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 |