15 lines
No EOL
9.5 KiB
HTML
15 lines
No EOL
9.5 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="icon" href="/favicon.svg" type="image/svg+xml"><link rel="alternate icon" href="/favicon.ico"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><link rel="canonical" href="https://gabeefran.co/"><link rel="alternate" hreflang="en" href="https://gabeefran.co/"><link rel="alternate" hreflang="pt-BR" href="https://gabeefran.co/pt/"><meta name="generator" content="Astro v7.2.10"><title>gabeefranco — Gabriel Franco's notes</title><meta name="description" content="Notes on computer science, systems, and the open source projects that shaped how I think about software. I'm Gabriel Franco — welcome."><meta property="og:type" content="website"><meta property="og:title" content="gabeefranco — Gabriel Franco's notes"><meta property="og:description" content="Notes on computer science, systems, and the open source projects that shaped how I think about software. I'm Gabriel Franco — welcome."><meta property="og:url" content="https://gabeefran.co/"><meta property="og:image" content="https://gabeefran.co/logo.png"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="https://gabeefran.co/logo.png"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,400..700;1,400..700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet"><script>
|
||
// Runs before paint to avoid a flash of the wrong theme.
|
||
(function () {
|
||
const stored = localStorage.getItem('theme');
|
||
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||
const dark = stored ? stored === 'dark' : prefersDark;
|
||
document.documentElement.classList.toggle('dark', dark);
|
||
})();
|
||
</script><link rel="stylesheet" href="/_astro/BaseLayout.C3cx7DTv.css"><script>window.va = window.va || function () { (window.vaq = window.vaq || []).push(arguments); };
|
||
var script = document.createElement('script');
|
||
script.defer = true;
|
||
script.src = '/_vercel/insights/script.js';
|
||
var head = document.querySelector('head');
|
||
head.appendChild(script);
|
||
</script></head><body class="flex min-h-screen flex-col bg-bg font-sans text-text antialiased selection:bg-primary selection:text-white"><header class="sticky top-0 z-40 border-b border-border/80 bg-bg/85 backdrop-blur"><div class="flex flex-col justify-center gap-4 px-4 py-3 sm:px-6"><div class="flex flex-row justify-between items-end"><a href="/" class="flex hover:underline shrink-0 items-center gap-2.5" aria-label="gabeefranco"><img src="/logo.png" class="h-4"><span class="font-mono text-[15px] font-semibold tracking-tight text-text">gabeefranco</span></a><div class="ml-10 flex sm:hidden justify-end gap-3"><a href="/pt" hreflang="pt" title="Switch language" aria-label="Switch language: Português" class="text-accent max-w-fit font-mono text-xs sm:text-sm underline hover:cursor-pointer hover:text-accent-deep">Switch language: Português</a><button type="button" class="theme-toggle text-accent sm:ml-2 font-mono text-xs sm:text-sm underline hover:cursor-pointer hover:text-accent-deep" aria-label="Toggle color theme" title="Toggle color theme">Toggle color theme</button><script type="module">function e(){document.querySelectorAll(`.theme-toggle`).forEach(e=>{e.addEventListener(`click`,function(){let e=document.documentElement.classList.toggle(`dark`);localStorage.setItem(`theme`,e?`dark`:`light`)})})}e(),document.addEventListener(`astro:after-swap`,e);</script></div><div class="hidden sm:flex items-center gap-2"><nav class="flex items-center gap-1 justify-right" aria-label="Menu"><a href="/" aria-current="page" class="px-2 py-1 text-sm font-medium font-mono underline text-primary hover:text-primary-hover">Home</a><a href="/posts" class="px-2 py-1 text-sm font-medium font-mono underline text-text-muted hover:text-text">Posts</a><a href="/about" class="px-2 py-1 text-sm font-medium font-mono underline text-text-muted hover:text-text">About</a></nav><a href="/pt" hreflang="pt" title="Switch language" aria-label="Switch language: Português" class="text-accent max-w-fit py-1 font-mono text-xs sm:text-sm underline hover:cursor-pointer hover:text-accent-deep ">Switch language: Português</a><button type="button" class="theme-toggle text-accent sm:ml-2 font-mono text-xs sm:text-sm underline hover:cursor-pointer hover:text-accent-deep" aria-label="Toggle color theme" title="Toggle color theme">Toggle color theme</button></div></div><div class="flex justify-end sm:hidden items-center gap-2"><nav class="flex items-center gap-1 justify-right" aria-label="Menu"><a href="/" aria-current="page" class="px-2 py-1 text-sm font-medium font-mono underline text-primary hover:text-primary-hover">Home</a><a href="/posts" class="px-2 py-1 text-sm font-medium font-mono underline text-text-muted hover:text-text">Posts</a><a href="/about" class="px-2 py-1 text-sm font-medium font-mono underline text-text-muted hover:text-text">About</a></nav></div></div></header><main class="flex-1"><section class="mx-10 my-10 flex flex-col gap-5 font-mono"><div class="flex flex-col gap-2"><h1 class="text-text text-2xl">Building things, and figuring out how they work.</h1><h2 class="text-text text-lg">Notes on computer science, systems, and the open source projects that shaped how I think about software. I'm Gabriel Franco — welcome.</h2></div></section><!-- <section class="mx-auto max-w-3xl px-4 pb-4 pt-14 sm:px-6 sm:pt-20 font-mono"> --><!-- <div class="flex flex-col items-start gap-8 sm:flex-row sm:items-center"> --><!-- <img --><!-- src="/logo.png" --><!-- alt="" --><!-- width="867" --><!-- height="458" --><!-- class="w-40 shrink-0 drop-shadow-sm sm:w-52" --><!-- /> --><!-- <div> --><!-- <p class="text-sm font-semibold uppercase tracking-wide text-primary">{t('hero.kicker')}</p> --><!-- <h1 class="mt-2 text-3xl font-bold tracking-tight text-text sm:text-4xl">{t('hero.title')}</h1> --><!-- <p class="mt-4 max-w-xl text-lg leading-relaxed text-text-muted">{t('hero.subtitle')}</p> --><!-- <div class="mt-6 flex flex-wrap gap-5"> --><!-- <a --><!-- href={postsHref} --><!-- class="text-primary hover:underline font-bold px-2 py-1 bg-primary/10" --><!-- > --><!-- {t('hero.cta.posts')} --><!-- </a> --><!-- <a --><!-- href={aboutHref} --><!-- class="text-text hover:underline font-bold px-2 py-1 bg-text/5" --><!-- > --><!-- {t('hero.cta.about')} --><!-- </a> --><!-- </div> --><!-- </div> --><!-- </div> --><!-- </section> --><section class="mx-10 font-mono"><div class="flex items-baseline justify-between gap-4"><div><h2 class="text-xl font-semibold text-text">Recent posts</h2><p class="mt-1 text-sm text-text-muted mb-2">The latest things I’ve written down.</p><a href="/posts" class="shrink-0 text-sm font-medium text-primary hover:underline">View all posts →</a></div></div><div class="mt-6"><article class="group border-b border-border py-6 first:pt-0 last:border-b-0 font-mono"><a href="/posts/hello-world" class="block"><time datetime="2026-09-22T00:00:00.000Z" class="text-xs font-medium uppercase tracking-wide text-text-muted">September 21, 2026</time><h3 class="mt-1.5 text-xl font-semibold text-text group-hover:text-primary group-hover:underline">This blog's Hello World (or whatever you want to call this site)</h3><p class="mt-1.5 text-[15px] leading-relaxed text-text-muted">A short note on why this exists and what I plan to write about here.</p></a><div class="mt-3 flex flex-wrap gap-2"><a href="/tags/meta" class="text-text-muted px-1 py-0.5 text-sm hover:text-accent underline">#meta</a><a href="/tags/blogging" class="text-text-muted px-1 py-0.5 text-sm hover:text-accent underline">#blogging</a></div></article><article class="group border-b border-border py-6 first:pt-0 last:border-b-0 font-mono"><a href="/posts/spotify-complaining" class="block"><time datetime="2026-09-02T03:00:00.000Z" class="text-xs font-medium uppercase tracking-wide text-text-muted">September 2, 2026</time><h3 class="mt-1.5 text-xl font-semibold text-text group-hover:text-primary group-hover:underline">Spotify's Time Capsule Change and the Enshittification of Software</h3><p class="mt-1.5 text-[15px] leading-relaxed text-text-muted">Spotify just removed one of its best features. Beyond a bit of complaining, I want to open a debate about what software is turning into.</p></a><div class="mt-3 flex flex-wrap gap-2"><a href="/tags/software" class="text-text-muted px-1 py-0.5 text-sm hover:text-accent underline">#software</a><a href="/tags/life" class="text-text-muted px-1 py-0.5 text-sm hover:text-accent underline">#life</a></div></article></div></section></main><footer class="border-t border-border/80 font-mono"><div class="mx-auto flex max-w-3xl flex-col gap-2 px-4 py-8 text-sm text-text-muted sm:flex-row sm:items-center sm:justify-between sm:px-6"><p>© 2026 <span class="font-mono text-text">gabeefranco</span> · All rights reserved.</p><div class="flex items-center gap-4"><span class="hidden sm:inline">Written by hand in Porto Alegre.</span><a href="https://github.com/gabeefranco" target="_blank" rel="noopener noreferrer me" class="transition-colors hover:text-primary">GitHub</a><a href="https://github.com/gabeefranco/gabeefran.co-blog" target="_blank" rel="noopener noreferrer" class="transition-colors hover:text-primary">Source</a></div></div></footer></body></html> |