<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://blog.haeusler-wein.ch/feed.xml" rel="self" type="application/atom+xml" /><link href="https://blog.haeusler-wein.ch/" rel="alternate" type="text/html" hreflang="de" /><updated>2026-07-05T11:29:34+00:00</updated><id>https://blog.haeusler-wein.ch/feed.xml</id><title type="html">Wein Code</title><subtitle>Notizen aus dem Rebberg, Vibe Coding und mehr.</subtitle><entry><title type="html">KI 3, jetzt erst recht: Trauben zählen</title><link href="https://blog.haeusler-wein.ch/2026/07/05/schritt-3-trauben-zaehlen/" rel="alternate" type="text/html" title="KI 3, jetzt erst recht: Trauben zählen" /><published>2026-07-05T00:00:00+00:00</published><updated>2026-07-05T00:00:00+00:00</updated><id>https://blog.haeusler-wein.ch/2026/07/05/schritt-3-trauben-zaehlen</id><content type="html" xml:base="https://blog.haeusler-wein.ch/2026/07/05/schritt-3-trauben-zaehlen/"><![CDATA[<p>Schritt 1 war die <a href="/2026/05/15/schritt-1-website/">Webseite</a>, Schritt 2 die <a href="/2026/06/28/schritt-2-kellerverwaltung/">Kellerverwaltung</a> — beide handlich, beide fertig. Schritt 3 ist der Rebberg selbst.</p>

<p>Nach erfolglosen Versuchen, ein Inventar aus Videoaufnahmen der Rebzeilen zu erstellen (wir haben es dann manuell gemacht) und mässigen Versuchen, das Pflanzenstadium zu tracken, kommt jetzt eine neue spannende Aufgabestellung.</p>

<p>Wir filmen jede Rebzeile mit dem Telefon und lassen die KI die Trauben zählen, Stock für Stock. Dahinter steckt <a href="https://github.com/facebookresearch/sam3">SAM 3</a>, ein Modell von Meta, gemietet über <a href="https://replicate.com">Replicate</a>: es erkennt jede Traube einzeln und verfolgt sie durchs Video, jede bekommt ihre eigene Farbe.</p>

<p>Unter anderem können wir so konkret ein Experiment überprüfen: Reihe 6 haben wir stark entblättert, um zu schauen ob wir so den Traubenbehang reduzieren können (Zweigelt trägt viel, zu viele Trauben).</p>

<p><img src="/assets/rebberg-trauben-overlay.jpg" alt="Rebzeile mit Trauben, jede Traube von der KI in einer eigenen Farbe markiert" style="display:block;margin:1.5rem auto;max-width:100%;width:600px" /></p>

<p><em>Zeile 6, Häusler Offenburg: die KI legt über jede Traube eine eigene Maske. Diese Zeile haben wir vor der Blüte stark entblättert — die Trauben hängen frei.</em></p>

<p>Aus 19 Videos — zehn Zeilen Häusler Offenburg, neun Zeilen Schaffner Offenburg (unsere Nachbarparzelle) — wird eine Karte. Dunkler heisst mehr Trauben:</p>

<p><img src="/assets/rebberg-trauben-heatmap.svg" alt="Heatmap des Traubenbehangs, jede Zelle ein Rebstock, dunkler gleich mehr Trauben" style="display:block;margin:1.5rem auto;max-width:100%" /></p>

<p><em>Jede Zelle ein Stock, jede Spalte eine Rebzeile in ihrer wahren Länge Zeile 1 rechts bis 19 links, Nord oben. Graue und grüne Zellen sind leere, tote oder junge Stöcke.</em></p>

<p>Was wir sehen:</p>

<ul>
  <li>Beide Zweigelt-Parzellen tragen praktisch gleich viel — rund sieben sichtbare Trauben pro Stock, Häusler wie Schaffner.</li>
  <li>Zeile 6, die testweise stark entblätterte, hebt sich nicht ab. Die Entblätterung hinterlässt im Bild keine Spur.</li>
</ul>

<p>Ehrlich bleiben muss man bei den Zahlen: wir filmen eine Seite, in einem Durchgang. Was hinter dem Laub oder auf der Rückseite hängt, sieht die Kamera nie — die KI zählt also zu wenig. Zum Vergleichen von Stock zu Stock reicht es, für den Ertrag in Kilo noch nicht.</p>

<p>Als Nächstes ordnen wir die Trauben den einzelnen Stöcken zu und bringen einen Massstab ins Bild, damit aus Pixeln Zentimeter werden: dann zählt die KI nicht mehr nur, sie misst mit.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Schritt 1 war die Webseite, Schritt 2 die Kellerverwaltung — beide handlich, beide fertig. Schritt 3 ist der Rebberg selbst.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blog.haeusler-wein.ch/assets/social-card.png" /><media:content medium="image" url="https://blog.haeusler-wein.ch/assets/social-card.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">KI Liegestütze, Schritt 2: Kellerverwaltung</title><link href="https://blog.haeusler-wein.ch/2026/06/28/schritt-2-kellerverwaltung/" rel="alternate" type="text/html" title="KI Liegestütze, Schritt 2: Kellerverwaltung" /><published>2026-06-28T00:00:00+00:00</published><updated>2026-06-28T00:00:00+00:00</updated><id>https://blog.haeusler-wein.ch/2026/06/28/schritt-2-kellerverwaltung</id><content type="html" xml:base="https://blog.haeusler-wein.ch/2026/06/28/schritt-2-kellerverwaltung/"><![CDATA[<p>Im <a href="/2026/05/15/schritt-1-website/">letzten Beitrag</a> war Schritt 1 die Fingerübung: die Webseite von der KI bauen lassen, statisches HTML, kein Zustand. Schritt 2 verlangt mehr. Wir lassen uns eine App coden, die unseren Weinkeller inventarisiert — auf dem iPhone, offline, in unserer eigenen Hand. Hintergrund war, dass die App, mit der ich bisher den Weinkeller inventarisiert habe, meine wichtigste KPI nicht mehr angezeigt hat: den Gesamtbestand an Flaschen…</p>

<p>Was <a href="https://github.com/github-rha/kellerverwaltung">Kellerverwaltung</a> heute kann:</p>

<ul>
  <li>den Bestand sehen — Flaschen total und pro Wein</li>
  <li>gezielt suchen — nach Sorte, Produzent, Land</li>
  <li>Flaschen erfassen und beim Kaufen oder Trinken hoch- und runterzählen</li>
  <li>ein Foto vom Etikett ablegen</li>
  <li>den ganzen Keller in ein privates GitHub-Repo sichern</li>
</ul>

<p><img src="/assets/kellerverwaltung-1-dashboard.png" alt="Dashboard der Kellerverwaltungs-App mit Flaschenzahl und Weinliste" width="300" style="display:block;margin:1.5rem auto" /></p>

<p><em>Das Dashboard: 206 von 331 Flaschen, gefiltert auf Rotwein. Oben der Sync-Knopf, die Sortenfilter als Fläschchen, rechts der Sommelier.</em></p>

<p><img src="/assets/kellerverwaltung-2-filters.png" alt="Filterpanel: Suche nach Produzent, Land und Flaschenzahl" width="300" style="display:block;margin:1.5rem auto" /></p>

<p><em>Gezielt suchen: nach Produzent — hier «Jauslin» — nach Land oder nach den fast leeren Fächern («Single bottle», «Finito»).</em></p>

<p>Machen wir es interessant. Die technischen Vorgaben:</p>

<ul>
  <li>kein App Store — eine Portable Web Application (PWA), in Safari über «Zum Home-Bildschirm» installiert.</li>
  <li>offline-first: die Daten liegen auf dem Telefon, das Netz braucht es nur zum Sichern.</li>
  <li>alles privat: Synchronisation in ein eigenes GitHub-Repo, kein fremder Server.</li>
</ul>

<p>Gleiche Methode wie bei der Webseite, mehr System: wieder ein paar kurze Dokumente im Repo.</p>

<ul>
  <li><a href="https://github.com/github-rha/kellerverwaltung/blob/main/docs/vision.md"><code class="language-plaintext highlighter-rouge">vision.md</code></a></li>
  <li><a href="https://github.com/github-rha/kellerverwaltung/blob/main/docs/architecture.md"><code class="language-plaintext highlighter-rouge">architecture.md</code></a></li>
  <li><a href="https://github.com/github-rha/kellerverwaltung/blob/main/docs/operations.md"><code class="language-plaintext highlighter-rouge">operations.md</code></a></li>
  <li><a href="https://github.com/github-rha/kellerverwaltung/blob/main/docs/roadmap.md"><code class="language-plaintext highlighter-rouge">roadmap.md</code></a></li>
</ul>

<p>Am schärfsten ist die Liste dessen, was die App <em>nicht</em> sein soll. Beispiel:</p>

<blockquote>
  <h2 id="non-goals">Non-goals</h2>
  <ul>
    <li>Social features, community ratings, tasting notes, rankings.</li>
    <li>Full wine metadata cataloging (keep fields minimal).</li>
    <li>Cellar location tracking (racks/bins).</li>
    <li>Multi-user or collaborative workflows.</li>
  </ul>
</blockquote>

<p>Der Stack ist ein anderer als bei der statischen Seite, das Prinzip dasselbe:</p>

<ul>
  <li><strong>SvelteKit</strong> als App, statisch ausgeliefert über <strong>GitHub Pages</strong> — kein Server, automatischer Deploy bei jedem Commit.</li>
  <li><strong>IndexedDB</strong> im Browser als Datenspeicher — alles bleibt auf dem Gerät.</li>
  <li><strong>GitHub</strong> als Sicherung — der Keller landet als eine Datei plus Etikettenfotos im privaten Repo.</li>
</ul>

<p>Der eigentliche Unterschied zur Fingerübung: bei der Webseite hat die KI gebaut. Hier baut sie nicht nur, sie steckt drin.</p>

<p>Wir hatten relativ viel Zeit verlocht mit dem Versuch, mit konventionellem OCR weiterzukommen. Am Ende haben wir aufgegeben und stattdessen einen Claude Haiku Call implementieren lassen. Resultat: Die Treffsicherheit ist genial.</p>

<p>Zwei Funktionen bedienen sich bei Claude APIs:</p>

<ul>
  <li><strong>Etikett lesen</strong> — ein Foto vom Etikett, und Claude liest Produzent, Name, Jahrgang und Land heraus und füllt das Formular aus.</li>
  <li><strong>Sommelier</strong> — ein Gericht in Worten beschreiben, und die App schlägt aus dem eigenen Keller die passenden Weine vor, geordnet nach Eignung.</li>
</ul>

<video src="/assets/kellerverwaltung-4-etikett.mp4" width="300" style="display:block;margin:1.5rem auto;border:1px solid rgba(166, 42, 23, 0.2)" autoplay="" loop="" muted="" playsinline=""></video>

<p><em>Etikett lesen: Foto vom Rücketikett, «Crop &amp; Read», und das Formular füllt sich selbst — Bodegas Vi Rei, Prensal Blanc Cosecha Propia, 2024. Der Bestand wächst von 331 auf 332.</em></p>

<p><img src="/assets/kellerverwaltung-3-sommelier.jpeg" alt="Sommelier-Funktion: Weinvorschläge zu einem Gericht" width="300" style="display:block;margin:1.5rem auto" /></p>

<p><em>Der Sommelier: «kalbskotelett» eingetippt, als Vorschläge kommen ein Château Palmer 2019, ein Gevrey-Chambertin, eine Romanée-Saint-Vivant — und ein Margaux 2017 mit «Drink now»-Hinweis. Die KI hat einen kostspieligen Geschmack!</em></p>

<p>Damit ist die KI vom Werkzeug zum Bestandteil geworden. Bei der Webseite haben wir gelernt, wie man sie bauen lässt; hier, wie man sie in etwas Laufendes einbaut.</p>

<p>Im nächsten Beitrag: Schritt 3 — die Rebbergverwaltung, die Daten aus dem Rebberg auswerten und den Rebberg als Ganzes wieder sichtbar machen soll. Der eigentliche Grund für die ganze Übung.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Im letzten Beitrag war Schritt 1 die Fingerübung: die Webseite von der KI bauen lassen, statisches HTML, kein Zustand. Schritt 2 verlangt mehr. Wir lassen uns eine App coden, die unseren Weinkeller inventarisiert — auf dem iPhone, offline, in unserer eigenen Hand. Hintergrund war, dass die App, mit der ich bisher den Weinkeller inventarisiert habe, meine wichtigste KPI nicht mehr angezeigt hat: den Gesamtbestand an Flaschen…]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blog.haeusler-wein.ch/assets/social-card.png" /><media:content medium="image" url="https://blog.haeusler-wein.ch/assets/social-card.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">KI Fingerübung, Schritt 1: haeusler-wein.ch</title><link href="https://blog.haeusler-wein.ch/2026/05/15/schritt-1-website/" rel="alternate" type="text/html" title="KI Fingerübung, Schritt 1: haeusler-wein.ch" /><published>2026-05-15T00:00:00+00:00</published><updated>2026-05-15T00:00:00+00:00</updated><id>https://blog.haeusler-wein.ch/2026/05/15/schritt-1-website</id><content type="html" xml:base="https://blog.haeusler-wein.ch/2026/05/15/schritt-1-website/"><![CDATA[<p>Vom Rebberg in die Flasche und aus dem Keller in den Verkauf — ohne diesen letzten Schritt geht es nicht. Mit der Übernahme des Rebbergs stehen wir auch vor der Aufgabe, neue Kundenkreise zu erschliessen. Was bisher fehlte, war eine Webseite, auf die man verweisen kann. Genau das ist <a href="https://haeusler-wein.ch">haeusler-wein.ch</a>.</p>

<p>Im <a href="/2026/05/08/willkommen/">letzten Beitrag</a> haben wir den Dreisprung skizziert, mit dem wir uns das Rüstzeug für KI-gestützte Rebbergarbeit verschaffen. Schritt 1 war: die Webseite von der KI bauen lassen. Sozusagen eine kleine Fingerübung. Wir lernen, was solche Werkzeuge leisten, wo sie scheitern und wie unser Workflow mit ihnen aussieht, bevor wir sie auf wertvollere Daten loslassen.</p>

<p>Die selbstgegebene Vorgabe war eng:</p>

<ul>
  <li>kein <a href="https://wordpress.com">WordPress</a>, kein <a href="https://www.duda.co">Duda</a>, kein <a href="https://www.wix.com">Wix</a> — keine Plugin Updates, tiefe Kosten.</li>
  <li>statisches HTML. Ziel: Sicherheitsrisiken minimieren</li>
  <li>die KI baut, wir bestimmen Inhalt und Form.</li>
</ul>

<p>Erster Anlauf, letztes Jahr, mit <a href="https://windsurf.com">Windsurf</a>. Das Ergebnis war… joah — eine statische HTML-Seite, lauffähig, schlicht. Das Vorgehen war naiv, Anweisungen geben, Resultate prüfen. Der Editor hatte die Tendenz, falsch abzubiegen und sich zu verirren.</p>

<p>Anfang Jahr dann neuer Anlauf mit Claude Code, Opus 4.5 und mehr System.</p>

<p>«Mehr System» heisst: drei kurze Dokumente im Repo — <a href="https://github.com/github-rha/haeusler-wein/blob/main/docs/vision.md"><code class="language-plaintext highlighter-rouge">vision.md</code></a>, <a href="https://github.com/github-rha/haeusler-wein/blob/main/docs/architecture.md"><code class="language-plaintext highlighter-rouge">architecture.md</code></a>, <a href="https://github.com/github-rha/haeusler-wein/blob/main/docs/operations.md"><code class="language-plaintext highlighter-rouge">operations.md</code></a>. Mit der KI diskutiert, von der KI generiert, von uns justiert. Beispiel:</p>

<blockquote>
  <h1 id="vision--haeusler-weinch">Vision — haeusler-wein.ch</h1>

  <h2 id="overview">Overview</h2>
  <p>The website for the Häusler family vineyard (haeusler-wein.ch). A small one-page presence that introduces the winery, lists the current wines with prices, and points visitors at an email address to order or get in touch.</p>
</blockquote>

<p>Gleichzeitig haben wir den Stack gewechselt:</p>

<ul>
  <li><strong>GitHub Pages</strong> für das Hosting — kostenlos, statisch, automatischer Deploy bei jedem Commit.</li>
  <li><strong>Jekyll</strong> als Generator — HTML aus Markdown und Liquid-Templates, ohne Server, ohne Datenbank.</li>
  <li><strong>Inhalt in YAML</strong> (<code class="language-plaintext highlighter-rouge">_data/content.yml</code>) — Texte und Strukturen liegen sauber neben dem Code, lesbar auch ohne IDE.</li>
</ul>

<p>Die Trennung Inhalt/Template macht künftige Änderungen mühelos: ein Satz im YAML reicht, GitHub Pages baut den Rest.</p>

<p><img src="/assets/rebberg-offenburg-guyot-schnitt.jpeg" alt="Einfacher Guyot-Schnitt im Rebberg «Auf Offenburg», Mai 2026" /></p>

<p><em>Im Rebberg, Mai 2026: ein einfacher Guyot-Schnitt mit einem Strecker und einer Reserve. Der Strecker ist ein Trieb vom letzten Jahr, gebogen und am Draht festgemacht; aus ihm und aus der Reserve schiessen die neuen Triebe. Im nächsten Schritt — beim <strong>Erlesen</strong> — werden sie ausgedünnt, bis eine überschaubare Anzahl ähnlich kräftiger Triebe stehen bleibt.</em></p>

<p>Was heute auf haeusler-wein.ch steht: kurze Geschichte, Hinweis auf den Wein, Kontakt, Verlinkung zu diesem Blog. Mehr braucht es vorerst nicht.</p>

<p>Im nächsten Beitrag: KI Liegestütze, Schritt 2 — die Kellerverwaltungs-App, mit der wir unseren Weinkeller inventarisieren.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Vom Rebberg in die Flasche und aus dem Keller in den Verkauf — ohne diesen letzten Schritt geht es nicht. Mit der Übernahme des Rebbergs stehen wir auch vor der Aufgabe, neue Kundenkreise zu erschliessen. Was bisher fehlte, war eine Webseite, auf die man verweisen kann. Genau das ist haeusler-wein.ch.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blog.haeusler-wein.ch/assets/social-card.png" /><media:content medium="image" url="https://blog.haeusler-wein.ch/assets/social-card.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Willkommen bei Wein Code</title><link href="https://blog.haeusler-wein.ch/2026/05/08/willkommen/" rel="alternate" type="text/html" title="Willkommen bei Wein Code" /><published>2026-05-08T00:00:00+00:00</published><updated>2026-05-08T00:00:00+00:00</updated><id>https://blog.haeusler-wein.ch/2026/05/08/willkommen</id><content type="html" xml:base="https://blog.haeusler-wein.ch/2026/05/08/willkommen/"><![CDATA[<p>Seit 2024 führen wir den Rebberg «Auf Offenburg» in Muttenz weiter und schreiben damit eine kleine Geschichte fort, die 2005 von unseren Eltern begonnen wurde.</p>

<p><img src="/assets/rebberg-offenburg-april-2026.jpeg" alt="Der Rebberg «Auf Offenburg» im April 2026" /></p>

<p><em>Der Rebberg im April 2026: Gut zu erkennen ist, dass die Reihen abwechselnd gemäht werden — so können Insekten in die ungemähten Streifen ausweichen und von dort wieder zurückwandern, ein kleiner Beitrag zur Biodiversität.</em></p>

<p>Hier auf Wein Code möchten wir festhalten, was sich im Rebberg tut — Austrieb, Rebarbeit, WeinLese bis zur Reife im Keller und darüber hinaus. Eine Frage beschäftigt uns derzeit speziell:</p>

<p>Im Rebberg fallen viele Daten an: Bodenverhältnisse, Wuchsverhalten, Einfluss der Rebarbeit, Ertrag, Wetter. Informationen, die sich gut visualisieren liessen. Doch wer in der Reihe steht, sieht den Rebberg vor lauter Reben kaum noch — die Übersicht geht im Detail verloren.</p>

<p>Genau dort experimentieren wir mit KI:</p>

<ul>
  <li>um Multimedia Daten auswerten zu lassen, z.B. Videoaufnahmen und Bilder der Rebzeilen</li>
  <li>um Software zu schreiben, welche aus den Datenauswertungen den Rebberg als Ganzes wieder sichtbar macht</li>
</ul>

<p>Um uns das notwendige Rüstzeug zu verschaffen machen wir einen Dreisprung:</p>

<ol>
  <li>Wir lassen uns unsere Webseite haeusler-wein.ch von KI bauen</li>
  <li>Wir vibecoden uns eine Kellerverwaltungs-App mit der wir unseren Weinbestand im Keller inventarisieren</li>
  <li>wir bauen eine Rebbergverwaltungs-Software, die Daten aus dem Rebberg auswerten und darstellen kann.</li>
</ol>

<p>Mehr dazu im nächsten Blogbeitrag.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Seit 2024 führen wir den Rebberg «Auf Offenburg» in Muttenz weiter und schreiben damit eine kleine Geschichte fort, die 2005 von unseren Eltern begonnen wurde.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blog.haeusler-wein.ch/assets/social-card.png" /><media:content medium="image" url="https://blog.haeusler-wein.ch/assets/social-card.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>