# No Solution - Justin: Browser & InPub

**Dátum:** 2026-04-01
**Helyszín:** BTC++ konferencia, reptér
**Résztvevők:** Martin, Justin

---

## Áttekintés

Rövid, "airport special" epizód Justin-nel, aki először gyűlölte a Nostr-t, de most aktívan épít rá. A beszélgetés kitér az audio calling app fejlesztéseire, WebRTC kritikára, és egy 3 nap alatt vibecodingoló böngészőre.

---

## Fő Témák

### 1. Justin Nostr Története

Justin "hater" módon közeledett a technológiákhoz:

- **Bitcoin:** 5-6 év gyűlölet, aztán megértette
- **Lightning:** Sosem fog működni (még mindig ezt gondolja)
- **Nostr:** 4 év gyűlölet, de most már épít rá

> *"I'm not an early adopter. I'm the early majority on the adoption curve."*

Az előző cohort-ban csak a Zig framework-öt építette, Nostr-ra semmit. Most három dolgot is épített.

---

### 2. Audio Calling App - Három Verzió

#### Verzió 1: CLI + Iroh P2P
- **Iroh:** Peer-to-peer framework
- **Nostr signaling:** Npub-eket használ hívásokhoz
- **Működés:** CLI-ből hívható npub
- **Demo:** Kiment a szobából, CLI-ből felhívta Paul Miller-t, a telefonja csengett

#### Verzió 2: InPub
**URL:** `inpub.brcell.app`

- **2D pixel art szoba:** "Video game level" stílus
- **Két szoba:** Ha ugyanabban vagy, hallod egymást
- **Mock MLQ:** Media over QUIC web standard (WebRTC alternatíva)
- **Nostr auth:** Npub-alapú azonosítás
- **Következő lépés:** Positional audio (a hang forrása a térben mozog)

#### Verzió 3: Ava
**URL:** `justinmoon.com/s/ava`

- **Group audio calling:** Többszemélyes hanghívás
- **White Noise encryption:** NN encryption WASM-re kompilálva
- **Forward/backward secrecy:** Biztonságos beszélgetések
- **Mock MLQ:** Gyors adatátvitel

---

### 3. WebRTC Kritika

WebRTC problémák:

- **Google monopol:** Google Meet-et web szabványként adták ki
- **Túl bonyolult:** Safari és Firefox csak a Google kódját tudják használni
- **Nincs konfigurálhatóság:** Vagy Google Meet, vagy semmi

**Megoldás:** Mock MLQ (Media over QUIC)

- Egyszerűbb web standard
- Élő stream, audio hívások, stb.
- Jelenleg centralizált mesh (egy cég futtatja)
- **Lehetőség:** Nostr-stílusú mesh, zap-pal való fizetés

---

### 4. Böngésző Építés - 3 Nap

Justin 3 nap alatt vibecodingolt egy böngészőt:

**Komponensek:**
- **Blitz:** CSS/HTML renderer (Rust, Firefox servo alapú)
- **QuickJS:** Egyszerű JavaScript motor
- **React counter demo:** Működik!

**Motiváció:**
- A web haldoklik (Google blokkolja ad-blockereket)
- DNS/CA centralizáció megszüntetése
- SQLite, TypeScript futtatás böngészőben

> *"I vibe coded a browser in 3 days that can run a React counter."*

---

### 5. DNS Nélküli Böngészés

Két megközelítés a cohort-ban:

**Justin megközelítése:**
1. Nostr event-tel claim-elni a neveket (pl. "dirgg")
2. Nincs domain, csak név
3. Nincs egyediség - ütközések web of trust-tel oldhatók fel
4. Opcionális TLS kulcsok az announcement-ben → HTTPS self-signed certificate-tel

**Probléma:** Nem egyértelmű, hogy biztonságos-e. De:

> *"URLs are already dead. People use social handles everywhere. Graffiti artists don't put URLs, they put @handles."*

---

### 6. Andreas Kling és a Ladybird Browser

Andreas Kling inspiráció:

- Volt Safari/WebKit mérnök
- 12 lépéses program a drogfüggőséghez → OS építésre váltott
- **Ladybird browser:** Nulláról épített böngésző
- **Kanonikus tudás:** "Nem lehet új böngészőt építeni" → De ő megtette

---

### 7. Positional Audio Vízió

A VR Chat pozícionált audio-ja inspirálta:

- **Egy nagy terem:** Előadás, utána csoportos beszélgetések
- **Sarkok:** Külön beszélgetések, a háttérhalkabb
- **Killer feature:** Nem egy 50 fős zsúfolt szoba, hanem természetes csoportosulás

**Twitter Spaces / Clubhouse probléma:**
- Mindenkinek ugyanaz a hangerő
- A leghangosabb ember beszél
- Nincsenek privát sarokbeszélgetések

---

### 8. Mosaic Protocol

Justin kísérletezett az Amethyst replacement-tel:

- **Mosaic:** Új protokoll ötlet
- **Két nap implementáció Zig-ben**
- **Végül elvetette:** Nem valószínű, hogy ez a cél

---

### 9. Web vs Nostr Sebesség

**Probléma:** A Nostr lassú (JSON, relays)

**Megoldási irányok:**
- Mock MLQ bináris átvitelhez
- Blossom blob-okhoz (ne JSON-ba encode-olják)
- Local relay minden eszközön (Citrine stb.)

> *"It's kind of nice that Nostr isn't blazingly fast - it created Blossom instead of bloating relays with encoded JSON."*

---

## Idézetek

> *"I'm not an early adopter. I'm the early majority."*

> *"The web is dead. I don't go to websites anymore."*

> *"WebRTC is so complicated that Safari and Firefox just shipped Google's code."*

> *"We shouldn't build for the mass market. We should build for the nerds and the power users."*

> *"URLs are already dead. People just use social handles."*

---

## Technikai Részletek

### Mock MLQ Architektúra

```
[Client] ←→ [Mock Server/Mesh] ←→ [Client]
              (Binary relay)
```

- Jelenleg: egy cég futtatja a mesh-t
- Jövő: Nostr mesh, zap-alapú fizetéssel

### Nostr DNS Lookup

```
User claims: "dirgg" (Nostr event)
↓
Browser queries: Who claimed "dirgg"?
↓
Results: npub1..., npub2... (conflicts)
↓
Resolution: Web of trust or authority
```

### InPub Room System

```
[Room A]        [Room B]
  ├─ User 1      ├─ User 3
  ├─ User 2      └─ User 4
  └─ Audio: same room = hear each other
```

---

## Linkek és Említések

- **InPub:** `inpub.brcell.app`
- **Ava:** `justinmoon.com/s/ava`
- **Iroh:** P2P framework
- **Mock MLQ:** Media over QUIC web standard
- **Blitz:** CSS/HTML renderer (Dioxus UI framework)
- **QuickJS:** Lightweight JavaScript engine
- **Ladybird:** Andreas Kling browser project
- **White Noise:** NN encryption protocol
- **Mosaic:** Amethyst replacement idea (abandoned)

---

## Hangulat

Ez egy gyors, reptéri beszélgetés volt - kb. 22 perc. Martin majdnem lekéste a járatát, de sikerült befejezni a felvételt. A "poor man's podcast" stílus jegyében zaj, reptéri háttérzaj.

---

## Következő Lépések

1. **InPub positional audio** implementálása
2. **Böngésző fejlesztése** - React appok futtatása
3. **Mock MLQ Nostr mesh** - Decentralizált binary relay
4. **DNS replacement** finomítása
5. **Local relay** minden client-ben