digital garden: 3 aktif varyant (v4 defter, v5 gazete, v6 katalog) + yillik

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 12:07:17 +03:00
commit b9949ed187
10 changed files with 2182 additions and 0 deletions

344
v6/index.html Normal file
View File

@@ -0,0 +1,344 @@
<!doctype html>
<html lang="tr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>tunapro.xyz · katalog</title>
<meta name="description" content="tuna gül'ün dijital bahçesi, arşiv katalogu baskısı: 2020'den bugüne fişlenmiş projeler, damgalı ve tarihli.">
<style>
:root{
--bg:#f4f1ea; --card:#faf8f2; --ink:#141412; --red:#c22f23; --dim:#8a857a; --faint:#c9c3b4;
--serif:"Iowan Old Style",Palatino,Georgia,serif;
--mono:ui-monospace,Menlo,Consolas,monospace;
--sans:-apple-system,"Inter","Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
::selection{background:var(--red);color:#fff}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);line-height:1.5;
background-image:repeating-linear-gradient(0deg,transparent,transparent 31px,rgba(20,20,18,.035) 31px,rgba(20,20,18,.035) 32px)}
a{color:inherit}
img{max-width:100%}
.wrap{max-width:1180px;margin:0 auto;padding:0 22px 90px}
/* kapak */
header{padding:44px 0 26px;border-bottom:3px solid var(--ink);display:grid;grid-template-columns:1fr auto;gap:24px;align-items:end}
@media(max-width:760px){header{grid-template-columns:1fr}}
.h-label{font-family:var(--mono);font-size:11.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--red)}
header .intro{margin-top:12px;max-width:60ch;font-size:16px;color:#33312a}
.file-tag{font-family:var(--mono);font-size:11.5px;border:2px solid var(--ink);padding:14px 16px;line-height:2;background:var(--card);
box-shadow:4px 4px 0 rgba(20,20,18,.15)}
.file-tag b{color:var(--red);font-weight:600}
/* dönem başlığı */
.era{display:flex;align-items:baseline;gap:16px;margin:52px 0 6px;border-bottom:2px solid var(--ink);padding-bottom:8px}
.era .yr{font-family:var(--serif);font-size:clamp(28px,4.4vw,46px);font-weight:600;font-style:italic;color:var(--red)}
.era .nm{font-family:var(--mono);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}
.era .fill{flex:1;border-bottom:1px dashed var(--faint)}
/* kart ızgarası */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:26px;padding-top:22px}
.kart{background:var(--card);border:2px solid var(--ink);position:relative;
box-shadow:5px 5px 0 rgba(20,20,18,.12);transition:transform .15s ease, box-shadow .15s ease}
.kart:hover{transform:translate(-2px,-2px);box-shadow:8px 8px 0 rgba(20,20,18,.16)}
.kart.wide{grid-column:span 2}
@media(max-width:760px){.kart.wide{grid-column:span 1}}
.kart .head{border-bottom:2px solid var(--ink);padding:12px 16px;display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.kart .head .no{font-family:var(--mono);font-size:11px;color:var(--dim)}
.kart .head .ad{font-family:var(--serif);font-size:22px;font-weight:600;letter-spacing:-.008em}
.kart .head .ad a{text-decoration:none}
.kart .head .ad a:hover{color:var(--red);font-style:italic}
.kart .fields{font-family:var(--mono);font-size:11px;color:var(--dim);display:flex;gap:14px;flex-wrap:wrap;
padding:9px 16px;border-bottom:1px dashed var(--faint)}
.kart .fields b{color:var(--ink);font-weight:600}
.kart .body{padding:14px 16px 16px;font-size:14.5px;color:#2e2c25}
.kart .body p{margin-bottom:9px;max-width:64ch}
.kart .body p a{color:var(--red);text-decoration-thickness:1px;text-underline-offset:3px}
.kart .body code{font-family:var(--mono);font-size:.88em;background:#ece7da;padding:1px 5px;border-radius:3px}
.kart .quote{border-left:3px solid var(--red);padding-left:12px;font-family:var(--serif);font-style:italic;font-size:14.5px;margin:10px 0;color:#33312a}
.kart .quote .who{display:block;font-style:normal;font-family:var(--mono);font-size:10px;color:var(--dim);margin-top:3px}
.kart .go{display:flex;gap:8px;flex-wrap:wrap;padding:0 16px 16px}
.kart .go a{font-family:var(--mono);font-size:11.5px;text-decoration:none;border:1.5px solid var(--ink);
padding:4px 10px;border-radius:999px}
.kart .go a:hover{background:var(--ink);color:var(--bg)}
.kart .fig{margin:4px 16px 14px;border:1.5px solid var(--ink);background:#fff;max-width:400px}
.kart .fig img{display:block;filter:grayscale(1) contrast(1.06);transition:filter .25s;width:100%}
.kart .fig:hover img{filter:grayscale(0)}
.kart .figcap{font-family:var(--mono);font-size:10px;color:var(--dim);padding:5px 8px;border-top:1.5px solid var(--ink);background:var(--card)}
/* damgalar */
.stamp{position:absolute;top:10px;right:12px;font-family:var(--mono);font-size:11px;font-weight:700;
letter-spacing:.14em;text-transform:uppercase;color:var(--red);border:2.5px solid var(--red);
border-radius:4px;padding:3px 9px;transform:rotate(6deg);opacity:.85;pointer-events:none;background:rgba(250,248,242,.7)}
.stamp.ink{color:var(--ink);border-color:var(--ink);transform:rotate(-5deg)}
.stamp.dim{color:var(--dim);border-color:var(--dim);transform:rotate(-7deg)}
/* alt not */
.endnote{margin-top:64px;border:2px solid var(--ink);background:var(--card);padding:26px;
box-shadow:5px 5px 0 rgba(20,20,18,.12);display:grid;grid-template-columns:1.5fr 1fr;gap:28px}
@media(max-width:760px){.endnote{grid-template-columns:1fr}}
.endnote h3{font-family:var(--mono);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--red);margin-bottom:10px}
.endnote p{font-size:15px;color:#2e2c25;margin-bottom:8px;max-width:56ch}
.endnote p a{color:var(--red)}
.endnote ul{list-style:none;font-family:var(--mono);font-size:13px}
.endnote li{padding:7px 0;border-bottom:1px dashed var(--faint);display:flex;justify-content:space-between}
.endnote li:last-child{border:none}
.endnote li a{text-decoration:none}
.endnote li a:hover{color:var(--red)}
.endnote li .at{color:var(--dim);font-size:11.5px}
footer{margin-top:26px;font-family:var(--mono);font-size:11.5px;color:var(--dim);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}
footer a{color:var(--red);text-decoration:none}
</style>
</head>
<body>
<div class="wrap">
<header>
<div>
<div class="h-label">tunapro.xyz · proje katalogu · dosya no: 1234</div>
<p class="intro">2020'den bugüne yaptığım şeylerin katalogu. sildiğim proje yok. 11. sınıfta
yazdığım readme ile bugün sunucumu yöneten tool aynı dolapta duruyor, ikisini de seviyorum.
kartlar yıla göre dizili, damgalara güvenebilirsin.</p>
</div>
<div class="file-tag">
ARŞİVLEYEN: <b>tuna gül</b><br>
KONUM: <b>kendi sunucusu</b><br>
HER YERDE: <b>@tunapro1234</b><br>
SON GÜNCELLEME: <b>bugün</b>
</div>
</header>
<!-- ============ 2026 ============ -->
<div class="era"><span class="yr">2026 →</span><span class="nm">şu an masada olanlar</span><span class="fill"></span></div>
<div class="grid">
<div class="kart wide">
<span class="stamp">canlı</span>
<div class="head"><span class="ad"><a href="https://bp.tunapro.xyz">blueprint (bp)</a></span><span class="no">FİŞ 26-01</span></div>
<div class="fields"><span>DİL <b>go</b></span><span>TÜR <b>agent orkestrasyonu</b></span><span>BAKIM <b>her gün</b></span></div>
<div class="body">
<p>sunucudaki agent'ları yönetmek için kullandığım tool. tmux oturumları, message queue,
usage policy, whatsapp client. hepsi tek binary'de. <code>bp daemon</code> eski
python/node job'larını süperviz ediyor. onları yeniden yazmadım çünkü çalışıyorlar
ve çalışan şeye dokunulmaz.</p>
<p><code>bp monitor</code> dashboard'u terminale getiriyor, worktree'leri de bp açıyor.
hayatımın işletim sistemi gibi bi şey. bu katalog bile onun baktığı makinede duruyor.</p>
</div>
<div class="fig">
<a href="https://github.com/tunapro1234/blueprint"><img src="https://opengraph.githubassets.com/garden/tunapro1234/blueprint" alt="blueprint reposu" loading="lazy"></a>
<div class="figcap">ek 26-01/a · renk için imleci tut</div>
</div>
<div class="go">
<a href="https://bp.tunapro.xyz">bp.tunapro.xyz ↗</a>
<a href="https://github.com/tunapro1234/blueprint">github ↗</a>
</div>
</div>
<div class="kart">
<span class="stamp ink">şifreli</span>
<div class="head"><span class="ad"><a href="https://github.com/tunapro1234/outpost">outpost</a></span><span class="no">FİŞ 26-02</span></div>
<div class="fields"><span>DİL <b>javascript</b></span><span>SON PUSH <b>bugün</b></span></div>
<div class="body">
<p>insanlarla iletişimi unutuyorum diye yaptım. herkes obsidian uyumlu vault'ta birer
<code>.md</code> dosyası. outpost üstüne ilişki grafını çiziyor. gather agent'ları insan
buluyor ama ben onaylamadan vault'a giremiyorlar, mail de sadece okunuyor. agent'lara
o kadar da güvenmiyorum. canlı hali şifreli çünkü içinde gerçek insanlar var.</p>
</div>
<div class="go">
<a href="https://github.com/tunapro1234/outpost">github ↗</a>
<a href="https://outpost.tunapro.xyz">canlı 🔒</a>
</div>
</div>
<div class="kart">
<span class="stamp">kuluçkada</span>
<div class="head"><span class="ad">abm / makro-llm rafı</span><span class="no">FİŞ 26-03</span></div>
<div class="fields"><span>DİL <b>python</b></span><span>TÜR <b>uzun vadeli merak</b></span></div>
<div class="body">
<p>deneklerin yerine kişilikli llm agent koyunca ne oluyor? <a href="https://github.com/tunapro1234/replicant">replicant</a>
otree deneylerine big five kişilikli agent'lar sokuyor (pypi'da <code>pyreplicant</code>,
ilk replikasyon Ertan-Page-Putterman 2009). <a href="https://github.com/tunapro1234/metron">metron</a>
"sociology for AI agents": deploy edilmiş agent popülasyonlarını sosyolog gibi inceleme.
iktisat tarafı omega, <a href="https://github.com/trasumanar-ai">trasumanar</a> çatısında.
isim dante'den, iddialı olduğunun farkındayım.</p>
<p>yan raflar: <a href="https://github.com/tunapro1234/hallucinating-splines">hallucinating-splines</a>
(agent'lar simcity kuruyor) ve <a href="https://github.com/tunapro1234/awesome-llm-social-simulation">okuma listem</a>.</p>
</div>
<div class="go">
<a href="https://github.com/tunapro1234/replicant">replicant ↗</a>
<a href="https://github.com/tunapro1234/metron">metron ↗</a>
</div>
</div>
</div>
<!-- ============ 2024-25 ============ -->
<div class="era"><span class="yr">2024-25</span><span class="nm">saha yılları</span><span class="fill"></span></div>
<div class="grid">
<div class="kart">
<span class="stamp">satışta</span>
<div class="head"><span class="ad"><a href="https://probotstudio.com">probot studio</a></span><span class="no">FİŞ 24-01</span></div>
<div class="fields"><span>DİL <b>c++ / arduino</b></span><span>LİSANS <b>mit</b></span><span>YILDIZ <b>9</b></span></div>
<div class="body">
<p>"bir kit, sonsuz robot." lise robot yarışmaları için kit ve kütüphane. hâlâ buradan
parça satıyorum. çekirdek açık: <code>probot-core</code>, sahada denenmiş embedded
control middleware. fikir first yıllarından (bkz. fiş 20-01).</p>
</div>
<div class="fig">
<a href="https://github.com/probot-studio/probot-core"><img src="https://opengraph.githubassets.com/garden/probot-studio/probot-core" alt="probot-core reposu" loading="lazy"></a>
<div class="figcap">ek 24-01/a · probot-core</div>
</div>
<div class="go">
<a href="https://probotstudio.com">probotstudio.com ↗</a>
<a href="https://github.com/probot-studio/probot-core">github ↗</a>
</div>
</div>
<div class="kart">
<span class="stamp">canlı</span>
<div class="head"><span class="ad"><a href="https://impact.tr">impact</a></span><span class="no">FİŞ 25-01</span></div>
<div class="fields"><span>TÜR <b>yarışma organizasyonu</b></span><span>ADRES <b>impact.tr</b></span></div>
<div class="body">
<p>impact.tr ile robot yarışmaları düzenliyoruz: hands-on challenge (iki gün durmadan
esp32'yle robot), ideathon, robo soccer. nisan 2026 çemberlitaş bölgeselinde 16 takım,
150+ katılımcı. yarışan çocuktan yarışma düzenleyen adama geçiş garip bi his, tavsiye
ederim. site kodu <a href="https://git.tunapro.xyz/tunapro/impact-site">kendi gitea'mda</a>.</p>
</div>
<div class="go">
<a href="https://impact.tr">impact.tr ↗</a>
<a href="https://git.tunapro.xyz/tunapro/impact-site">gitea ↗</a>
</div>
</div>
<div class="kart">
<span class="stamp">kazandık</span>
<div class="head"><span class="ad"><a href="https://github.com/tunapro1234/elevator_optimization">elevator_optimization</a></span><span class="no">FİŞ 24-02</span></div>
<div class="fields"><span>DİL <b>rust</b></span><span>YIL <b>2024</b></span></div>
<div class="body">
<p>boğaziçi'nin ai yarışması için yazdık ve kazandık. asansör çizelgeleme problemi.
repo o günkü haliyle duruyor, dokunmuyorum. kazanan koda dokunulmaz.</p>
</div>
<div class="go"><a href="https://github.com/tunapro1234/elevator_optimization">github ↗</a></div>
</div>
<div class="kart">
<span class="stamp">7/24</span>
<div class="head"><span class="ad">homelab</span><span class="no">FİŞ 24-03</span></div>
<div class="fields"><span>KAPSAM <b>*.tunapro.xyz</b></span><span>BULUT <b>yok</b></span></div>
<div class="body">
<p>kod <a href="https://git.tunapro.xyz">gitea</a>'da, medya kendi video sunucumda,
minecraft paneli <code>mcdash</code>'te, mail bile burada. bu katalog da aynı
makinelerde. gece 2'de mail sunucusu debug'lamak hobi sayılmaz ama kendi verine sahip
olmanın bedeli bu, ödüyorum.</p>
</div>
<div class="go">
<a href="https://git.tunapro.xyz">git ↗</a>
<a href="https://video.tunapro.xyz">video ↗</a>
<a href="https://mcdash.tunapro.xyz">mcdash ↗</a>
</div>
</div>
</div>
<!-- ============ 2020-23 ============ -->
<div class="era"><span class="yr">2020-23</span><span class="nm">arkeoloji katı, dokunma bak</span><span class="fill"></span></div>
<div class="grid">
<div class="kart">
<span class="stamp dim">arşiv</span>
<div class="head"><span class="ad"><a href="https://github.com/tunapro1234/DBEX">dbex</a></span><span class="no">FİŞ 20-02</span></div>
<div class="fields"><span>DİL <b>python</b></span><span>SINIF <b>11</b></span></div>
<div class="body">
<p>python'un json kütüphanesini generator olarak yeniden yazmışım. arşivin en değerli belgesi readme'sidir:</p>
<div class="quote">"json kütüphanesine yetişebilmem için eklemem gereken çok fazla özellik
var ama maalesef ben 11. sınıfım."<span class="who"> dbex readme, 2020</span></div>
</div>
<div class="go"><a href="https://github.com/tunapro1234/DBEX">github ↗</a></div>
</div>
<div class="kart">
<span class="stamp dim">arşiv</span>
<div class="head"><span class="ad"><a href="https://github.com/tunapro1234/MEGABOI">megaboi</a></span><span class="no">FİŞ 20-03</span></div>
<div class="fields"><span>DİL <b>c++</b></span><span>DONANIM <b>arduino mega + lcd</b></span></div>
<div class="body">
<p>mega + lcd shield + 6 butondan el yapımı konsol. lityumlu taşınabilir versiyonu bile var.</p>
<div class="quote">"neden ekranın yediği serial0'ı kullandın diyebilirsiniz, cevap çok
basit: bilmiyorum."<span class="who"> megaboi readme, 2020</span></div>
</div>
<div class="go"><a href="https://github.com/tunapro1234/MEGABOI">github ↗</a></div>
</div>
<div class="kart">
<span class="stamp dim">arşiv</span>
<div class="head"><span class="ad">c dönemi</span><span class="no">FİŞ 21-01</span></div>
<div class="fields"><span>DİL <b>c89 / c</b></span><span>YIL <b>2021</b></span></div>
<div class="body">
<p><a href="https://github.com/tunapro1234/vector-h">vector-h</a>: c89'da basit vektör
implementasyonu. <a href="https://github.com/tunapro1234/cygnus">cygnus</a> daha ilginç,
embed cihazlar için ai kütüphanesi gibi bi şeydi. o ara nnfs okuyordum, matrix makroları
oradan. kitap bitince düzenli baştan başlayacaktım. kitap bitti, başlamadım. olsun.</p>
</div>
<div class="go">
<a href="https://github.com/tunapro1234/vector-h">vector-h ↗</a>
<a href="https://github.com/tunapro1234/cygnus">cygnus ↗</a>
</div>
</div>
<div class="kart">
<span class="stamp ink">kökler</span>
<div class="head"><span class="ad">first yılları</span><span class="no">FİŞ 20-01</span></div>
<div class="fields"><span>LİSE <b>frc 7839</b></span><span>SONRA <b>nf / frc 9029</b></span><span>NFR <b>2023</b></span><span>CHAMPIONSHIP <b>2025 &amp; 2026</b></span></div>
<div class="body">
<p>lisede frc'deydim, 7839'da. lise bitince mali'yle nf'yi kurduk, 9029. 2023'te de
nfr products'ı kurduk, şirket hâlâ dönüyor. geçen sene zağanos'taydım. 2025 ve 2026'da
first championship'teydik, houston'a iki kere gitmiş olmak hâlâ hoşuma gidiyor.</p>
<p>first'ün bana öğrettiği şey kod değil. teslim tarihi gerçek olunca nasıl çalışıldığını
öğrendim. altı haftada robot bitiyor çünkü bitmek zorunda. o refleks hâlâ bende.</p>
</div>
<div class="go">
<a href="https://github.com/team-nf">team-nf ↗</a>
<a href="https://github.com/tunapro1234/FRC7839">frc7839 arşivi ↗</a>
</div>
</div>
<div class="kart">
<span class="stamp">🍄 tuhaf</span>
<div class="head"><span class="ad"><a href="https://canbitirici.tunapro.xyz">can raporu</a></span><span class="no">FİŞ ??-??</span></div>
<div class="fields"><span>TÜR <b>araştırma(!)</b></span><span>HAKEM <b>yok, gerek de yok</b></span></div>
<div class="body">
<p>arkadaş grubu içi bir şaka aşırı ciddiye alınırsa ne olur: başlığı, metodolojisi ve
grafikleri olan bir rapor olur. "can neden iş bitirici değil?" · can'a sevgilerimle.</p>
</div>
<div class="go"><a href="https://canbitirici.tunapro.xyz">raporu oku ↗</a></div>
</div>
</div>
<div class="endnote">
<div>
<h3>arşivcinin notu</h3>
<p>bu katalog bitmiş işlerin listesi değil, çoğu kart hâlâ değişiyor. yarım gördüğün
bir fiş sonra geldiğinde büyümüş olabilir, ya da tamamen başka bir şeye dönüşmüş olabilir,
ikisi de oluyor.</p>
<p>eski kartları güzel göstermeye çalışmadım. 2020'nin readme'leri neyse o. arşivci
belgeyi düzeltmez, saklar.</p>
</div>
<div>
<h3>ulaşım fişi</h3>
<ul>
<li><a href="https://github.com/tunapro1234">github</a><span class="at">@tunapro1234</span></li>
<li><a href="https://git.tunapro.xyz">kendi gitea'm</a><span class="at">git.tunapro.xyz</span></li>
<li><a href="https://probotstudio.com">probot studio</a><span class="at">probotstudio.com</span></li>
<li><a href="https://stackoverflow.com/users/tunapro1234">stack overflow</a><span class="at">@tunapro1234</span></li>
</ul>
</div>
</div>
<footer>
<span>© 2026 tuna gül · katalog kendi sunucusunda saklanır</span>
<span>yıllıktaki qr'dan geldiysen: <a href="/yillik/">senin fişin ayrı</a></span>
</footer>
</div>
</body>
</html>