<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://k3rn3l.me/feed.xml" rel="self" type="application/atom+xml" /><link href="https://k3rn3l.me/" rel="alternate" type="text/html" /><updated>2026-11-06T15:44:47+00:00</updated><id>https://k3rn3l.me/feed.xml</id><title type="html">k3rn3l’s site</title><subtitle>Personal site of d33pk3rn3l with projects, blog posts and more.</subtitle><entry><title type="html">Project Vesida: MSc thesis handed in</title><link href="https://k3rn3l.me/posts/2026/09/14/Project-Vesida-thesis-handin.html" rel="alternate" type="text/html" title="Project Vesida: MSc thesis handed in" /><published>2026-09-14T12:00:00+00:00</published><updated>2026-09-14T12:00:00+00:00</updated><id>https://k3rn3l.me/posts/2026/09/14/Project-Vesida-thesis-handin</id><content type="html" xml:base="https://k3rn3l.me/posts/2026/09/14/Project-Vesida-thesis-handin.html"><![CDATA[<p>Today, on 14.09.2026, I handed in my MSc thesis.</p>

<p>The thesis focused on the <strong>OpticalTransitArray</strong> as the baseline engineering document and software pipeline for <strong>Project Vesida</strong>.</p>

<p>Project Vesida is building open hardware and software for independent optical satellite-tracking arrays, with OpTA as the first reference instrument and a pipeline that turns camera frames into astrometric tracklets.</p>

<p>Direct backlink: <a href="https://github.com/project-vesida">Project Vesida GitHub</a></p>

<hr />

<p>#project-vesida #opticaltransitarray #opta #thesis #satellite-tracking</p>]]></content><author><name></name></author><category term="posts" /><summary type="html"><![CDATA[Today, on 14.09.2026, I handed in my MSc thesis.]]></summary></entry><entry><title type="html">Herzentwicklung des menschlichen Embryos</title><link href="https://k3rn3l.me/posts/2026/06/03/Herzentwicklung.html" rel="alternate" type="text/html" title="Herzentwicklung des menschlichen Embryos" /><published>2026-06-03T01:10:00+00:00</published><updated>2026-06-03T01:10:00+00:00</updated><id>https://k3rn3l.me/posts/2026/06/03/Herzentwicklung</id><content type="html" xml:base="https://k3rn3l.me/posts/2026/06/03/Herzentwicklung.html"><![CDATA[<p><em>Dieser Text entstand ursprünglich während meiner Zeit am Gymnasium für den Embryologie-Unterricht. Die Recherche und das Schreiben haben mir damals unglaublich viel Spass gemacht, und ich habe die ganzen Informationen zu diesem Thema in mich hineingeschlungen. Wenn ich mir heute die Quellenliste so ansehe, muss ich unweigerlich schmunzeln: Vorlesungen über iTunes U, das waren noch Zeiten!</em></p>

<hr />

<h1 id="herzentwicklung-des-menschlichen-embryos">Herzentwicklung des menschlichen Embryos</h1>

<blockquote>
  <p>Ohne Herz lebt der Mensch normalerweise noch 10 Minuten. Schlägt es aber ein Leben lang, zieht es sich ca. 3.5 Milliarden mal zusammen und entspannt sich wieder. Im heranwachsenden Embryo ist das Herz das erste funktionierende Organ [1].</p>
</blockquote>

<h2 id="bildung-des-herzschlauchs">Bildung des Herzschlauchs</h2>

<p>Das Mesoderm, aus dem das Herz entstehen wird, bildet sich während der Gastrulation des Embryoplasten beim Menschen in der dritten Woche nach der Befruchtung. Die Keimscheibe ist nun dreiblättrig. Nun entwickelt sich ein Gefässystem, um die Versorgung durch Diffusion abzulösen. Um die Neuralplatte entstehen hufeisenförmig angeordnete Gefässfragmente (Gefässinseln). Oben am Embryo bildet sich die Herzanlage (kardiogene Platte) mit der Perikardhöhle. Diese werden um 180 Grad gedreht und liegen nun am entstehenden Rücken des Embryos (dorsal). Aus Mesodermzellen bildet sich um die Herzanlage das Myokardium, den Herzmuskel, der sehr früh (25-27 Tag) zu pumpen beginnt. Schaut man sich jetzt die Herzanlage genauer an, sieht man den so genannten Endokardschlauch, der aussenherum von Herzgallerte umgeben ist, wobei diese wiederum durch Myokardmantel und Epikard (Myoepikard) von der Perikardhöhle getrennt werden. Kurz gesagt besteht der Herzschlauch aus dem äussersten Epikard, dann dem Myokard (dem Herzmuskel) und zum Schluss dem Endokard bzw. dem Endokardschlauch. Noch zu betonen ist, dass die Herzanlage am Anfang der Entwicklung in einem nahen Darmabschnitt die Leberbildung induziert (Induktion einer „leberspezifischen Gentranskription“), wobei von der Chorda Dorsalis aber Hemmfaktoren für andere Darmabschnitte gebildet werden müssen [2]. So schafft sich das Herz sozusagen seinen engsten Freund, welcher Blut produzieren kann und wird. Der Herzschlauch hat nun eine Y-artige Form. Es hat zwei Blutgefässe oben und zwei unten, die in eben diesen Endokardschlauch münden. Es sind aber noch keine Lungenvenen oder Aorten zu unterscheiden. Wäre man ein Fisch, würde man im Grunde genommen nicht mehr bekommen, das Herz wäre so ausgebildet.</p>

<h2 id="bildung-der-herzschlaufe">Bildung der Herzschlaufe</h2>

<p>Beim Menschen aber kommt der komplizierte Part erst jetzt, dieser Schlauch muss sich zu dem vierkammerigen Herz wie wir es aus der Anatomie kennen weiterbilden.
In Seitenansicht auf den Herzschlauch erkennt man an einem Ende den Einflusstrakt, der sich während der „Schlaufung“ hinter und nach oben des embryonalen Ventrikels, der immer das Blut pumpt, schiebt und sich nach oben dreht (es entsteht die D-Schlaufe). Der Ausflusstrakt (Conus, später in die Lungenarterie endend) wird nach unten gezogen und der Ausflusstrakt wandert weiter hoch, dabei wird immer mehr „Material“ vom Gewebe für die Vorhöfe, dem Sinus venosus (Mündung von Venen in den rechten Vorhof), in die Perikardhöhle bzw. den Herzbeutel gezogen. Umfasst der Einflusstrakt oder besser die entstehenden Vorhöfe links und rechts ein Teil des Ausflusstrakts, wächst das embryologische Ventrikel nach unten und kerbt sich in der Mitte ein (benennt als Sulcus interventricularis), um später zum linken und rechten Ventrikel (Herzkammer) zu werden. Das Perikard (Perikardhöhle, Herzbeutel) wird sehr früh bei der Herzanlage gebildet (23 Tag). Es liegt zuerst kranial (am Kopf) des Embryos und ist nach der 180 grädigen Drehung ventral (gegen den Bauch) der Herzanlage zu finden (vor der Drehung dorsal, also gegen den Rücken, was die 180 Graddrehung verbildlicht).</p>

<h2 id="bildung-der-vorhöfe-und-der-ventrikel">Bildung der Vorhöfe und der Ventrikel</h2>

<p>Nach der Faltung fliesst das Blut aber immer noch gerichtet von der Plazenta durch das Herz. Da nun die inneren Umbauten wichtiger als die äusseren sind, vernachlässige ich die äussere Entwicklung. 
Bei den Übergängen von Vorhöfen und Ventrikel bilden sich starke Einkerbungen, dadurch verengt sich innen den Verbindungskanal zwischen Vorhof und Ventrikel (AV-Kanal, Canalis atrio-ventricularis). Der AV-Kanal verschiebt sich noch nach rechts, so dass er nun in der Mitte des Herzens ist, wodurch beide Ventrikel mit dem jeweiligen Atrium verbunden sind und zwei Wege für das Blut entstanden. In der Mitte dieses Kanals ist das AV-Kissen, dass später mit den nun wachsenden Zwischenhäuten (Septum primum der Atrien, Septum interventiculare der Ventrikeln) in Ventrikel und Vorhof zusammenwachsen wird und so linke und rechte Herzkammer unterteilt. Wichtig zu erwähnen ist, dass das Septum interventiculare, also die Trennhaut zwischen linkem und rechtem Ventrikel, zum Großteil passiv entsteht. Es findet durch die Grössenzunahme der Ventrikel eine Einschnürung statt. Diese Bildung der vier Kammern geschieht etwa während dem 32-50 Tag.</p>

<h2 id="bildung-der-klappen">Bildung der Klappen</h2>

<p>Schneidet man etwa am 30. Tag die Ventrikelkammer quer zum AV-Kanal, sieht man einen Spalt, der aber schon einen linken und rechten Kanal erkennen lässt. In der Mitte findet man das AV-Kissen, welches später zusammenwächst und so die beiden Kanäle komplett trennt. Im Ventrikelmuskel lässt sich auch schon das Septum als feine Ausbeulung erkennen. Nach dem Zusammenwachsen des Mittelteils des AV-Kanals sind die beiden Verbindungsgefässe für Atrien und Ventrikel gebildet. „Aufgehängt“ an übergebliebenen Septen bilden sich aus Endothelzellen, die von Muskeln unterlagert sind, die Segelklappen, welche bei Systole verhindern, das Blut zurück in das Atrium gedrückt wird. Die Taschenklappen, welche verhindern das Blut von der Ausstrombahn zurück fliessen, werden aus dem Endokard (der Herzinnenhaut) gebildet. Zur Verbesserung der Dichtung werden manchmal am Rand der Taschenklappe Verdichtungen gebildet.</p>

<h2 id="fehlbildungen">Fehlbildungen</h2>

<p>Durch diese komplexe Entwicklung ist es erstaunlich, das nur ca. 0.8% der Menschheit angeborene Herzfehler hat [3]. Öffnungen in der Scheidewand des Herzens entweder von Ventrikel oder Atrien können während der ersten Lebensjahre komplett verheilen, manche sind aber so gross, dass eine Operation sofort durchgeführt werden muss. Verengungen oder im allgemeinen Fehler bei der Klappenbildung können heutzutage sogar mit künstlichen Klappen ersetzt werden. Es können minimal invasive Operationen durchgeführt werden. Durch Blutgefässe können Geräte in das Herz eingeführt werden, ohne den ganzen Brustkorb öffnen zu müssen.</p>

<hr />

<h3 id="quellenangaben">Quellenangaben</h3>

<p>[1] A. Moorman, S. Webb, N. A. Brown, W. Lamers, and R. H. Anderson, “DEVELOPMENT OF THE HEART: (1) FORMATION OF THE CARDIAC CHAMBERS AND ARTERIAL TRUNKS,” <em>Heart</em>, vol. 89, no. 7, pp. 806-814, 2003.</p>

<p>[2] J. W. Rohen and E. Lütjen-Drecoll, <em>Funktionelle Embryologie: die Entwicklung der Funktionssysteme des menschlichen Organismus; mit 9 Tabellen</em>. Schattauer Verlag, 2012, p. 74.</p>

<p>[3] D. Bernstein, “Mending a broken heart,” presented at the lecture, Stanford School of Medicine, Sept. 27, 2011.</p>]]></content><author><name></name></author><category term="posts" /><summary type="html"><![CDATA[Dieser Text entstand ursprünglich während meiner Zeit am Gymnasium für den Embryologie-Unterricht. Die Recherche und das Schreiben haben mir damals unglaublich viel Spass gemacht, und ich habe die ganzen Informationen zu diesem Thema in mich hineingeschlungen. Wenn ich mir heute die Quellenliste so ansehe, muss ich unweigerlich schmunzeln: Vorlesungen über iTunes U, das waren noch Zeiten!]]></summary></entry><entry><title type="html">OpTA: what I’m building</title><link href="https://k3rn3l.me/posts/2026/03/06/OpTA-what-im-building.html" rel="alternate" type="text/html" title="OpTA: what I’m building" /><published>2026-03-06T10:50:00+00:00</published><updated>2026-03-06T10:50:00+00:00</updated><id>https://k3rn3l.me/posts/2026/03/06/OpTA-what-im-building</id><content type="html" xml:base="https://k3rn3l.me/posts/2026/03/06/OpTA-what-im-building.html"><![CDATA[<p>I’m in my last semester of grad school, and I wanted to build something for my thesis. So I’m building this:</p>

<blockquote>
  <p><strong>OpTA</strong> (Optical Transit Array) is a low-cost, open-source system for tracking Earth orbital objects from the ground. The goal: design, build, and verify an autonomous optical array that produces satellite tracklets with accuracy suitable for initial orbit determination at a total hardware cost accessible to individual operators.</p>
</blockquote>

<p><a href="https://en.wikipedia.org/wiki/European_Fireball_Network">Meteor networks</a> proved that distributed, community-run optical arrays work. <a href="https://en.wikipedia.org/wiki/Space_domain_awareness">Space Situational Awareness</a> tracking hasn’t caught up. OpTA is meant to close that gap and democratize access to space tracking data for everyone.</p>

<p><strong>Follow the build in my <a href="https://k3rn3l.me/opta-logbook">logbook</a></strong></p>

<h2 id="what-it-does">What it does</h2>

<p>Each node is a fixed camera that stares at a patch of sky. As satellites transit, the pipeline detects them across frames, plate-solves against a star catalog, and outputs timestamped RA/Dec tracklets for orbit determination. Operation is fully autonomous: starts recording at dusk, runs until dawn, no human in the loop.</p>

<h2 id="what-i-want-to-achieve">What I want to achieve</h2>

<ul>
  <li>Tracklets with measured positional residuals against reference orbits</li>
  <li>Dusk-to-dawn acquisition with zero manual steps</li>
  <li>Total array hardware cost &lt;$3,000 USD</li>
</ul>

<h2 id="structure">Structure</h2>

<p>A <strong>node</strong> is a single camera unit. An <strong>array</strong> is one or more nodes at a site sharing compute, GNSS timing, and power. A <strong>network</strong> is arrays at multiple sites contributing to a shared pool.</p>

<p>My thesis is scoped to be one validated node. A full array comes next if that holds up.</p>

<h2 id="where-it-stands">Where it stands</h2>

<p>Currently working on the pre-study: proving the physics, sizing the hardware, defining interfaces. The key question right now is whether we can detect the targets we care about with hardware we can afford.</p>

<p>Thanks to <a href="https://baug.ethz.ch/departement/personen/professoren/personen-detail.soja.html">Prof. Benedikt Soja</a> for supervising, and to the cohort, lecturers, study-coordinators and administration people at <a href="https://www.ethz.ch/">ETH Zürich</a> for making this possible.</p>

<h3 id="prior-art">Prior art</h3>

<p>A few projects shaped how I think about this:</p>

<ul>
  <li><strong><a href="https://en.wikipedia.org/wiki/European_Fireball_Network">Meteor networks</a></strong>: built for meteors, but proved that distributed, community-run optical arrays are viable at scale. The core concept carries over directly.</li>
  <li><strong><a href="https://amostech.com/TechnicalPapers/2024/Poster/Vida.pdf">Project Luciole</a></strong>: the closest analogue to OpTA. Not open-source, but the architecture is similar. They operate at high latitudes, targeting sun-synchronous orbits where phase angles are favorable.</li>
  <li><strong><a href="https://www.slingshotaerospace.com/">Slingshot Aerospace</a></strong>: assessed the feasibility of <a href="https://amostech.com/TechnicalPapers/2022/Optical-Systems_Instrumentation/Key.pdf">all-sky electro-optical tracking of mega-constellations in LEO</a>, then built on it commercially with their <a href="https://www.slingshot.space/product-hardware">Horus</a> wide-field staring fence and Argus long-range telescope. A US commercial system, but strong evidence that the concept works and has a market.</li>
</ul>

<hr />

<p>#space-domain-awareness #satellite-tracking #orbit-determination #astrometry #optical-sensor #open-source #geodesy #computer-vision #hardware #thesis #ETHZurich</p>]]></content><author><name></name></author><category term="posts" /><summary type="html"><![CDATA[I’m in my last semester of grad school, and I wanted to build something for my thesis. So I’m building this:]]></summary></entry><entry><title type="html">The Haven</title><link href="https://k3rn3l.me/posts/2025/05/21/The-Haven.html" rel="alternate" type="text/html" title="The Haven" /><published>2025-05-21T17:30:04+00:00</published><updated>2025-05-21T17:30:04+00:00</updated><id>https://k3rn3l.me/posts/2025/05/21/The-Haven</id><content type="html" xml:base="https://k3rn3l.me/posts/2025/05/21/The-Haven.html"><![CDATA[<p>Our civilization is digital. Our laws, our culture, our science: it’s all data. But it’s all stored on a single, fragile planet. Terrestrial <a href="https://en.wikipedia.org/wiki/Data_embassy">data embassies</a> are a start, but they won’t survive a global catastrophe.</p>

<blockquote>
  <p><strong>The ultimate off-site backup cannot be on-site.</strong></p>
</blockquote>

<h2 id="the-solution-a-planetary-data-network">The Solution: A Planetary Data Network</h2>

<p><strong>The Haven</strong> is a global, multi-layered data network in space, designed to ensure our knowledge and systems survive any terrestrial disaster.</p>

<ul>
  <li><strong>LEO Satellites:</strong> A “hot” network for live government operations.</li>
  <li><strong>GEO Satellites:</strong> A “warm” hub for stable, long-term continuity.</li>
  <li><strong>Lunar Archive:</strong> A “cold” vault on the Moon for a nation’s most vital data.</li>
  <li><strong>‘Eternity’ Probes:</strong> An “ultra-cold” archive sent to the stars to preserve our legacy for millennia.</li>
</ul>

<h2 id="the-swiss-key-neutrality-as-a-service">The Swiss Key: Neutrality as a Service</h2>

<p>This global commons needs a neutral guardian. Switzerland provides the <strong>diplomatic and legal key</strong>.</p>

<ul>
  <li>It spearheads the <strong>international treaty</strong> to create <strong>The Haven</strong>.</li>
  <li>It hosts the <strong>Swiss Neutrality Vault</strong>, the back-up, trusted ground station that provides secure access to the entire space network, protected by Swiss and international law.</li>
</ul>

<p><strong>The Haven</strong> is a vision for planetary resilience, initiated by Swiss neutrality, for the benefit of all humanity.</p>

<blockquote>
  <p><a href="https://github.com/leon-thomm">Leon</a> &amp; myself built a small prototype for showing the concept off. It consists of a <strong><a href="https://leon-thomm.github.io/helvetica-haven/simulation/">Simulation</a></strong> and a <strong><a href="https://leon-thomm.github.io/helvetica-haven/console/">Console</a></strong> that explains the idea. This was framed for the <a href="https://swissnex.org/our-impact/planet/imagining-planetary-diplomacy/">Swissnex Call “Imagining Planetary Diplomacy”</a>.</p>
</blockquote>

<hr />
<p>This post is part of an <a href="https://github.com/d33pk3rn3l/the-haven">architecture concept</a> my brain tingles me with. <strong>The Haven</strong> is a fictional concept, and could be extended to surpass nationality and provide the spark for a global civilization that is not bound by statehood, but by shared knowledge and culture. I don’t know if the world is ready for it yet.</p>]]></content><author><name></name></author><category term="posts" /><summary type="html"><![CDATA[Our civilization is digital. Our laws, our culture, our science: it’s all data. But it’s all stored on a single, fragile planet. Terrestrial data embassies are a start, but they won’t survive a global catastrophe.]]></summary></entry><entry><title type="html">Swiss Public Transport Cost Calculator</title><link href="https://k3rn3l.me/posts/2025/05/06/Swiss-Public-Transport-Calculator.html" rel="alternate" type="text/html" title="Swiss Public Transport Cost Calculator" /><published>2025-05-06T15:45:19+00:00</published><updated>2025-05-06T15:45:19+00:00</updated><id>https://k3rn3l.me/posts/2025/05/06/Swiss-Public-Transport-Calculator</id><content type="html" xml:base="https://k3rn3l.me/posts/2025/05/06/Swiss-Public-Transport-Calculator.html"><![CDATA[<h1 id="finding-your-best-travel-card">Finding Your Best Travel Card</h1>

<p>Ever stood at a Swiss train station kiosk, staring at all those subscription options and wondering which one would actually save you money? I’ve been there too.</p>

<h2 id="the-challenge">The Challenge</h2>

<p>Switzerland’s public transport is amazing, but choosing between a GA (General Abonnement), Half-Fare card, or regional passes like ZVV can be overwhelming. The right choice depends entirely on your personal travel patterns, and calculating this manually is a headache.</p>

<p>After wasting too much money on the wrong subscriptions, I decided to solve this with code.</p>

<h2 id="my-simple-solution">My Simple Solution</h2>

<p>I created a <a href="https://github.com/d33pk3rn3l/SwissPublicTransportCalculator">Swiss Public Transport Calculator</a> using Python that:</p>

<ol>
  <li>Takes your regular travel routes as input</li>
  <li>Calculates the annual cost for each subscription option</li>
  <li>Shows you exactly which card saves you the most money</li>
</ol>

<p>The tool uses two basic CSV files:</p>
<ul>
  <li>One listing available travel cards and their costs</li>
  <li>Another detailing your regular routes, their prices, and how often you travel them</li>
</ul>

<p>The calculator then does the math and creates a visual breakdown of your annual costs with each option.</p>

<p><img src="https://github.com/d33pk3rn3l/SwissPublicTransportCalculator/blob/main/annual_costs_breakdown.png?raw=true" alt="Cost comparison chart showing different travel card options" /></p>

<h2 id="try-it-yourself">Try It Yourself</h2>

<p>The project is open-source on <a href="https://github.com/d33pk3rn3l/SwissPublicTransportCalculator">GitHub</a>. The setup takes about 30 minutes (mostly looking up ticket prices), but could save you hundreds or even thousands of francs.</p>

<p>I’m working on making this into a simple web app so everyone can use it without needing to code. In the meantime, if you’re comfortable with Jupyter notebooks, give it a try and let me know how much you saved!</p>]]></content><author><name></name></author><category term="posts" /><summary type="html"><![CDATA[Finding Your Best Travel Card]]></summary></entry><entry><title type="html">First TrainLag: TrainLag x GESO</title><link href="https://k3rn3l.me/posts/2025/04/16/TrainLag-x-GESO.html" rel="alternate" type="text/html" title="First TrainLag: TrainLag x GESO" /><published>2025-04-16T15:45:19+00:00</published><updated>2025-04-16T15:45:19+00:00</updated><id>https://k3rn3l.me/posts/2025/04/16/TrainLag-x-GESO</id><content type="html" xml:base="https://k3rn3l.me/posts/2025/04/16/TrainLag-x-GESO.html"><![CDATA[<p>My old student association, <a href="https://geso.ethz.ch/">GESO</a> at ETH Zürich, advertised an event: TrainLag. The description was minimal – basically, an escape game using the entire <a href="https://www.zvv.ch/zvv/en/home.html">Zürcher Verkehrsverbund (ZVV)</a> public transport network. As a huge ÖV (public transport) fan, that’s all I needed to hear. I roped in three friends from my geospatial engineering undergrad days (F, P, and L), we dubbed ourselves “brain-lag”.</p>

<p>For those unfamiliar, <a href="https://github.com/oOCraftRabbitOo/trainlag">TrainLag</a> pits teams against each other across the ZVV network. You’re either a <em>Wegrenner</em> (runner) completing challenges for points, or a <em>Jäger</em> (catcher) hunting down runners to steal their accumulated bounty and switch roles. All while using only ZVV-approved transport and being tracked via a location-sharing app (<a href="https://www.life360.com/">Life360</a>, in our case).</p>

<h3 id="go-time-wegrenner-duties-call">Go Time: Wegrenner Duties Call</h3>

<p>We started at <a href="https://ethz.ch/en/campus/access/hoenggerberg.html">ETH Hönggerberg</a> as <em>Wegrenner</em>. Our first three challenge options popped up on Discord:</p>

<ol>
  <li><strong>Feusisberg:</strong> 866 points.</li>
  <li><strong>Lufingen:</strong> Sit on a specific bench near the ‘Lufingen Dorf’ bus stop for 7 minutes. 1022 points.</li>
  <li><strong>Dürnten:</strong> 914 points.</li>
</ol>

<p>Lufingen seemed closest, and the points were tempting. Our 40-minute estimate quickly went sideways. A delayed bus meant a mad dash for an S-Bahn we missed by seconds. Plan B: the tram. Slow, but forward progress. The 15-minute grace period ended, and the <em>Jäger</em> teams were released. Our dot had been live on their map.</p>

<p>On the tram, we strategized. After Lufingen, options were: run towards Winkel/Oberrüti (tougher for chasers), head back towards <a href="https://en.wikipedia.org/wiki/Zurich_Airport">ZRH</a>, or push on to Embrach. Going back felt risky, but we planned to use a bus stop slightly outside Lufingen, timing our move carefully to avoid tipping off potential chasers.</p>

<p>Off the bus in Lufingen, we ran. A bus arrived just two minutes later – potentially carrying <em>Jäger</em> who took a faster IC train via HB? We ducked behind trees. Empty. Phew. Up the hill, viewpoint challenge completed.</p>

<h3 id="fountain-fail-and-getting-caught">Fountain Fail and Getting Caught</h3>

<p>New challenges:</p>

<ol>
  <li><strong>Fountain:</strong> Drink from a fountain. 97 points.</li>
  <li><strong>Uitikon Waldegg:</strong> 1204 points.</li>
  <li><strong>Binz bei Maur:</strong> 519 points.</li>
</ol>

<p>Uitikon and Binz were far. A fountain seemed easy points in a town. <a href="https://www.openstreetmap.org/node/1865893626">OpenStreetMap</a> showed one right by the bus stop… but it was dry. Annoying!</p>

<p>Waiting for the bus back towards the airport, paranoia kicked in. The <em>Jäger</em> must be close. We hid again as the next bus approached – also empty. Relief washed over us as <em>our</em> bus arrived and we hopped on. Then, disaster. At the next stop, a group boarded, their eyes scanning the bus. Definitely <em>Jäger</em>. Our luck ran out. They’d correctly guessed our move back towards ZRH but had taken a slower route, arriving later than we anticipated. A gentle tap on the shoulder, a <code class="language-plaintext highlighter-rouge">#catch</code> command in Discord, and just like that, we were the <em>Jäger</em>.</p>

<h3 id="switching-sides-the-hunt-is-on">Switching Sides: The Hunt is On</h3>

<p>Readjusting quickly, we scanned the map. A team was waiting at <a href="https://online.fahrplaninfo.zvv.ch/frame_hst3.php?lang=en&amp;hstNr=10804&amp;hstName=Esslingen">Esslingen</a>. Their potential challenges pointed towards either Hinwil or somewhere in Zürich city. From ZRH, we hopped on an IC via <a href="https://en.wikipedia.org/wiki/Z%C3%BCrich_Oerlikon_railway_station">Zürich Oerlikon</a>. Checking connections, we saw they had a bus towards <a href="https://en.wikipedia.org/wiki/Uster_railway_station">Uster</a> departing in 5 minutes. If they moved at 15:42, <a href="https://en.wikipedia.org/wiki/Hinwil_railway_station">Hinwil</a> was the goal. We realized <em>their</em> connecting train to Hinwil also went via Oerlikon – we might intercept them!</p>

<p>A frantic call to a teammate on the toilet, a quick exit from our train, and confirmation: they were moving towards Uster. We scrambled onto the same train heading to Hinwil via Uster. Perfect setup.</p>

<p>Time to plan the <em>Zugriff</em>. We coordinated via call, spreading out through the train carriage, assigning doors to watch. People gave us weird looks – we probably looked like undercover cops. One door remained uncovered.</p>

<p>Arriving in Uster, teammates at the front spotted them hiding behind a large platform sign. The train stopped perfectly, positioning the sign between my door and the uncovered one. I tried to blend in, hoping they’d board without noticing. They didn’t board. Panic in the voice call – had we lost them? Convinced they <em>had</em> to be on the train, I urged everyone back inside.</p>

<p>And there they were. Sitting right between my door and the unguarded one. Gotcha! <code class="language-plaintext highlighter-rouge">#catch</code>. We were <em>Wegrenner</em> again, with a fresh 15-minute grace period.</p>

<h3 id="back-in-the-game-waterfalls-and-döner">Back in the Game: Waterfalls and Döner</h3>

<p>New challenges:</p>

<ol>
  <li><strong>Humlikon:</strong> Walk through a specific alley. 1825 points.</li>
  <li><strong>Do you know da way?:</strong> Go back to the start point without using your phone. 1214 points.</li>
  <li><strong>Rheinfall II:</strong> Visit a waterfall (min. 1m high, not a fountain). 659 points.</li>
</ol>

<p>Knowing the Wetzikon area, I pitched the <a href="https://www.wetzipedia.ch/index.php/Kemptnertobel">Kemptnertobel</a> – a nearby ravine with a decent waterfall. Sold. We had 5 minutes until the bus from Wetzikon. But I was starving (no breakfast, no lunch, now 16:15). A quick dash to the <em>Dönermann</em> at Wetzikon station. “Can you make one in under 4 minutes?” He delivered. Legend.</p>

<p>Our 15-minute grace period ended mid-hike through the Tobel. Location tracking back on. The plan: hike through to Bäretswil (near the ‘<a href="https://online.fahrplaninfo.zvv.ch/frame_hst3.php?lang=en&amp;hstNr=3661&amp;$hstName=B%E4retswil,%20Gemeindehaus">Bäretswil, Gemeindehaus</a>’ stop), then bus to Bauma, train to Winterthur – shaking any potential <em>Jäger</em>.</p>

<p><img src="https://raw.githubusercontent.com/d33pk3rn3l/d33pk3rn3l.github.io/refs/heads/main/assets/images/trainlag/kemptnertobel.jpeg" alt="Kemptnertobel" /></p>

<h3 id="the-challenge-grind-and-tactical-maneuvers">The Challenge Grind and Tactical Maneuvers</h3>

<p>Next up:</p>

<ol>
  <li><strong>Unique Shop (🛤️):</strong> Photo of a non-chain store (🛤️ means you can stay on the vehicle). 189 points.</li>
  <li><strong>Business Card (Zone 111) (🛤️):</strong> Find one in Zone 111. 1736 points.</li>
  <li><strong>Zürich Airport:</strong> Visit the Circle viewing platform. 1051 points.</li>
</ol>

<p>Finding a unique shop in the countryside near Bäretswil or Bauma seemed doable. But we realized our timing was off; we wouldn’t make it to Bäretswil before <em>Jäger</em> could potentially intercept us. Nerves frayed again.</p>

<p>In Bäretswil, we snapped a photo of a shop, grabbed sugary drinks at the Landi (morale boost!) after missing our connection. New challenges:</p>

<ol>
  <li><strong>Albisrieden:</strong> Go to the “Albisrieden” stop. 336 points.</li>
  <li><strong>Thalwil:</strong> Visit the Labyrinth Thalwil. 1348 points.</li>
  <li><strong>Sleep Well:</strong> Ride a public transport line end-to-end. 223 points.</li>
</ol>

<p>Plan B: Take the bus (line 850) from Bäretswil to Bauma and back to Wetzikon, completing the “Sleep Well” challenge. Tactical move: board the bus going the <em>wrong</em> direction first, hoping to lure any <em>Jäger</em> off early before doubling back on the now chaser-free bus towards Bauma.</p>

<p>We boarded in Bäretswil… and promptly got on the wrong bus (851 instead of 850). Happy accident! The 851 went to Andetswil, terminated, and turned around. Perfect. We stayed put.</p>

<p>Things got sketchy again. Another team was near Wetzikon. <em>Jäger</em> would have good reason to head in our region. We braced for capture upon arrival in Wetzikon, completing the challenge just before the station. Agreed plan: take the S5 towards Zug, split up in the rush hour crowds.</p>

<p>New challenges upon deboarding:</p>

<ol>
  <li><strong>WC Symbol (🛤️):</strong> Photo of one. 52 points.</li>
  <li><strong>Kluspark:</strong> Visit it. 299 points.</li>
  <li><strong>Loorenstrasse:</strong> Go to the stop. 407 points.</li>
</ol>

<p>Everyone looked like a <em>Jäger</em>. Paranoia level: high. Especially groups. No one moved on us. We jumped on the train seconds before departure. Phew. Snapped the WC symbol photo on the train.</p>

<ol>
  <li><strong>Elevator Ride:</strong> Ride an elevator end-to-end. 146 points.</li>
  <li><strong>Letzipark West:</strong> Go to the stop. 300 points.</li>
  <li><strong>Schaufelbergerstrasse:</strong> Go to the stop. 314 points.</li>
</ol>

<p>Off at <a href="https://en.wikipedia.org/wiki/Zurich_Stadelhofen_railway_station">Stadelhofen</a>. Crowds = cover. We split up, reconvened individually at an elevator, rode it. Easy points.</p>

<ol>
  <li><strong>Museum:</strong> Go to one. 135 points.</li>
  <li><strong>Zone Border:</strong> Walk across a ZVV zone border (check <a href="https://www.google.com/search?q=https://www.zvv.ch/zvv/en/travelcards-and-tickets/zones/zone-maps.html">ZVV Zone Maps</a>). 149 points.</li>
  <li><strong>Rosengartenstrasse:</strong> Go to the stop. 263 points.</li>
</ol>

<p>The <a href="https://www.kunsthaus.ch/en/">Kunsthaus Zürich</a> was minutes away. We cut through the parking garage – risky, but the poor GNSS might confuse chasers. Snapped a pic at a side entrance.</p>

<ol>
  <li><strong>Last ZVV Stop (🛤️):</strong> Ride the next train to its last stop within the ZVV. 335 points.</li>
  <li><strong>High-Light (🛤️):</strong> Go to 420m altitude. 171 points.</li>
  <li><strong>Altenhofstrasse:</strong> Go to the stop. 249 points.</li>
</ol>

<p>Easy one! According to the map data from <a href="https://www.swisstopo.admin.ch/en/home.html">Swisstopo</a>, we were already at 422m. Completed while hiding near the Kunsthaus.</p>

<p><img src="https://raw.githubusercontent.com/d33pk3rn3l/d33pk3rn3l.github.io/refs/heads/main/assets/images/trainlag/swisstopo-420.jpeg" alt="420 yay" /></p>

<ol>
  <li><strong>Mobility Spot:</strong> Go to one. 118 points. (<a href="https://www.mobility.ch/en/">Mobility Car Sharing</a>)</li>
  <li><strong>Tobel Time:</strong> Visit a ravine. 459 points.</li>
  <li><strong>Römerhof:</strong> Go to the Haltestelle “Römerhof” (Check <a href="https://www.google.com/search?q=https://www.zvv.ch/zvv/en/travelcards-and-tickets/zones/zone-maps.html">ZVV Map</a>). 244 points.</li>
</ol>

<p>Römerhof was close but away from the centre. Game end (19:00) was approaching (it was 18:43). Found a Mobility car-sharing spot nearby, moved quickly past the new <a href="https://en.wikipedia.org/wiki/Kunsthaus_Z%C3%BCrich#Architecture">Chipperfield Kunsthaus extension</a>. Done at 18:49.</p>

<ol>
  <li><strong>Holz/Hölzli:</strong> Go to a stop with “holz” or “hölzli” in the name. 209 points.</li>
  <li><strong>Albisrank:</strong> Go to the stop. 320 points.</li>
  <li><strong>GMBH - Get Beer (🛤️):</strong> Find an ad for alcohol. 203 points.</li>
</ol>

<p>Perfect! BQM bar near ETH surely had booze ads. We ran. Found a <a href="https://www.moehl.ch/de/produkte/apfelweine-cider/moehl-cider-clan">Möhl cider</a> ad. Nice. Our team bounty was getting high, but we weren’t paying attention, just thrilled to be near the end (18:55).</p>

<ol>
  <li><strong>Market Stall (🛤️):</strong> Find one. 312 points.</li>
  <li><strong>Hadlaubstrasse:</strong> Go to the stop. 347 points.</li>
  <li><strong>Fire Truck (🛤️):</strong> Find one. 183 points.</li>
</ol>

<p>Pure luck: a food truck drove past near the <a href="https://www.polybahn.ch/en/">Polybahn funicular</a>. Snapped it at 18:57. Nail-biting time.</p>

<ol>
  <li><strong>Hiking Sign (&gt;2h) (🛤️):</strong> Find one. 122 points.</li>
  <li><strong>Technopark:</strong> Go to the stop. 246 points.</li>
  <li><strong>Shoe Store:</strong> Go to one. 162 points.</li>
</ol>

<p>Too risky. Only option was down in Niederdorf, but the Polybahn had just left. No chance. We called it. Time for a much-needed toilet break at the <a href="https://ethz.ch/en/news-and-events/eth-news/news/2014/10/LEE_Eroeffnung.html">ETH LEE building</a>. Walking down, we felt great. Second place, just 50 points behind the leaders. A fantastic first TrainLag. Our bounty: 733 points.</p>

<h3 id="the-final-twist">The Final Twist</h3>

<p>Suddenly, shouting and running footsteps. A <em>Jäger</em> team burst out of the Polybahn station, pushing hard. It was 18:59. I reacted slowly, completely surprised. I jumped and bolted.</p>

<p>We don’t know the exact second they tagged us, but the <code class="language-plaintext highlighter-rouge">#catch</code> message appeared in Discord <em>after</em> the official 19:00 end time.</p>

<p>GG! What a game.</p>

<hr />

<p><em>Find out more about TrainLag:</em></p>

<ul>
  <li><em>GH project:</em> <a href="https://github.com/oOCraftRabbitOo/trainlag">https://github.com/oOCraftRabbitOo/trainlag</a></li>
  <li><em>Founders/Legendäri Urgstei:</em> Aurèle, Julian, <a href="https://github.com/KaiTheJu">KaiTheJu</a>, <a href="https://github.com/oOCraftRabbitOo">oOCraftRabbitOo</a> (alphabetically)</li>
</ul>]]></content><author><name></name></author><category term="posts" /><summary type="html"><![CDATA[My old student association, GESO at ETH Zürich, advertised an event: TrainLag. The description was minimal – basically, an escape game using the entire Zürcher Verkehrsverbund (ZVV) public transport network. As a huge ÖV (public transport) fan, that’s all I needed to hear. I roped in three friends from my geospatial engineering undergrad days (F, P, and L), we dubbed ourselves “brain-lag”.]]></summary></entry><entry><title type="html">Test Post</title><link href="https://k3rn3l.me/posts/2025/03/14/Test-Post.html" rel="alternate" type="text/html" title="Test Post" /><published>2025-03-14T12:45:19+00:00</published><updated>2025-03-14T12:45:19+00:00</updated><id>https://k3rn3l.me/posts/2025/03/14/Test-Post</id><content type="html" xml:base="https://k3rn3l.me/posts/2025/03/14/Test-Post.html"><![CDATA[<p>Test posts are something fun. You don’t know what will happen. You try, and everything breaks. But you keep on pushing. And, in the end, everything works.</p>

<p>You add an image, like this:</p>

<p><img src="https://raw.githubusercontent.com/d33pk3rn3l/d33pk3rn3l.github.io/refs/heads/main/assets/images/calvin_hobbes_wagon.jpeg" alt="Image" /></p>

<p>And when you’ve deployed, everything breaks. Like Calvin and Hobbes, you’re left with a broken wagon. But you keep on pushing. And, in the end, everything works.</p>]]></content><author><name></name></author><category term="posts" /><summary type="html"><![CDATA[Test posts are something fun. You don’t know what will happen. You try, and everything breaks. But you keep on pushing. And, in the end, everything works.]]></summary></entry></feed>