enter derpy gibuu corner
☆ rikki's html corner ☆
N O T E P I N . C O
×
LATEST BLOG POSTS
×
26.01.2026 · 01:49 P.M.Mood: Heck

I don't even know how to think about it. We're still here.

Continue reading . . .
06.07.2025 · 08:38 P.M.Mood: Nostalgic

From learning HTML in 2006 with Lissa Explains, to reapplying those Piczo structures to my carrd...I'm glad "retro PC" is a trend again.

Continue reading . . .
STATUS.CAFE
×
ABOUT
×

an Indigenous person who likes to code. bridging 2026 carrd and my 2006 html curiosity, without subscription heck.

— rikki
CHANGELOG
×
  • create css control
  • layout panic
  • rediscover scanlines
CREDITS
×
CC0 PHOTOBLOG
×

say hi to future lurkers (may not always work lol)

but it might on rikki.rezceptionist.com

♡ rikki chat ♡
♡ rikki chat ♡_#
> [1/4] js loading...
> Initializing...
var myHandle = null; var db = null; var listeningStarted = false; function setStatus(msg, cls) { var el = document.getElementById('connStatus'); if (!el) return; el.className = 'conn-status' + (cls ? ' ' + cls : ''); el.textContent = '> ' + msg; } function showError(msg) { setStatus(msg, 'error'); console.error('[chat error]', msg); } document.getElementById('joinBtn').addEventListener('click', function(e) { e.preventDefault(); setHandle(); }); document.getElementById('joinBtn').addEventListener('keydown', function(e) { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); setHandle(); } }); document.getElementById('handleInput').addEventListener('keydown', function(e) { if (e.key === 'Enter') { e.preventDefault(); setHandle(); } }); document.getElementById('msgInput').addEventListener('keydown', function(e) { if (e.key === 'Enter') sendMessage(); }); window.addEventListener('load', function() { var modal = document.getElementById('handleModal'); var input = document.getElementById('handleInput'); if (modal && modal.style.display !== 'none') { input.focus(); } }); setStatus('[2/4] js ready, loading firebase...', ''); function setHandle() { var val = (document.getElementById('handleInput').value || '').trim(); var errEl = document.getElementById('handleError'); if (!val) { errEl.style.display = 'block'; return; } errEl.style.display = 'none'; myHandle = val; try { localStorage.setItem('chatHandle', myHandle); } catch(e) {} document.getElementById('handleModal').style.display = 'none'; document.getElementById('handleDisplay').textContent = '# ' + myHandle; document.getElementById('msgInput').focus(); if (db) { if (!listeningStarted) startListening(); } else { setStatus('firebase not ready yet — refresh and try again', 'error'); } } function sendMessage() { if (!db) { setStatus('not connected to firebase', 'error'); return; } if (!myHandle){ return; } var input = document.getElementById('msgInput'); var text = (input.value || '').trim(); if (!text) return; input.value = ''; db.collection('chat').add({ handle: myHandle, text: text, timestamp: firebase.firestore.FieldValue.serverTimestamp() }).catch(function(err) { showError('send failed: ' + err.message); }); } function startListening() { if (listeningStarted || !db) return; listeningStarted = true; setStatus('[4/4] connecting to firestore...', ''); db.collection('chat') .orderBy('timestamp', 'asc') .limitToLast(50) .onSnapshot(function(snapshot) { setStatus('connected ✓', 'connected'); var container = document.getElementById('messages'); container.innerHTML = ''; if (snapshot.empty) { container.innerHTML = '
> No messages yet. Say hi!
'; return; } snapshot.forEach(function(doc) { var data = doc.data(); var el = document.createElement('div'); if (data.system) { el.className = 'system-msg'; el.textContent = '> ' + esc(data.text); } else { el.className = 'msg'; var time = data.timestamp ? formatTime(data.timestamp.toDate()) : ''; el.innerHTML = '' + esc(data.handle) + ' ' + time + '' + '' + esc(data.text) + ''; } container.appendChild(el); }); container.scrollTop = container.scrollHeight; }, function(err) { showError('snapshot error: ' + err.message); }); } function formatTime(date) { return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); } function esc(str) { return (str || '').replace(/&/g, '&').replace(//g, '>'); }
(function() { try { if (typeof firebase === 'undefined') { showError('firebase undefined — CDN was blocked by this host'); return; } firebase.initializeApp({ apiKey: "AIzaSyDdfpqGwEoYtEd6FDNBM6N5a_NwORqJHSY", authDomain: "saiyan-shinobi.firebaseapp.com", projectId: "saiyan-shinobi", storageBucket: "saiyan-shinobi.firebasestorage.app", messagingSenderId: "427095803377", appId: "1:427095803377:web:a4745135f004268e007050" }); db = firebase.firestore(); setStatus('[3/4] firebase ready', ''); var saved = null; try { saved = localStorage.getItem('chatHandle'); } catch(e) {} if (saved) { myHandle = saved; document.getElementById('handleModal').style.display = 'none'; document.getElementById('handleDisplay').textContent = '# ' + myHandle; startListening(); } else { document.getElementById('handleInput').focus(); } } catch(e) { showError('firebase init failed: ' + e.message); } })();
☆ leave a tip ☆
Cursor
☆ leave a tip ☆