Cum am creat rețeaua socială audio Ascult.Eu în 10 zile

Audio Social Network

Am o dragoste aparte pentru a crea produse pentru consumatori, pe de altă parte urăsc să fac soft pentru enterprise. 

SpamBully, Camera Genius, Privesc.Eu, diacritice.ai, Invat.Online, sunt doar cateva din produsele care au avut succes. Evident că multe din proiectele mele au avut eșec, dar asta nu mă oprește să revin la ele, peste ani, din nou. 

Unul din proiectele care am investit foarte mult timp și bani a fost Joketastic, o rețea socială audio pentru bancuri. L-am creat prin 2012. Chiar am fost și în Sillicon Valley și am pitch-uit investitori. Până la urmă l-am închis. Concluzia că rețelele audio încă nu sunt înțelese, poate în viitor. Radu Chivriga îmi aducea aminte cu orice ocazie să revin la el și să-l refac.

Un alt caz l-am avut în martie 2020, când a început pandemia și oamenii erau forțați să stea acasă, însă mulți doreau să comunice. Astfel pe platforma privesc.eu am construit niște beciuri virtuale unde lumea vorbea între ei. Mare mi-a fost mirarea că acele beciuri virtuale durau până la 5 ore de discuții aprinse, iar o mulțime de oameni ascultau online, dar nu participau la discuții.

Aceste 2 cazuri din trecutul meu nu-mi dădeau pace, până în momentul când am aflat de Clubhouse la sfârșitul anului 2020, iar prin ianuarie am reușit să-mi fac și un cont pentru a mă convinge că anume așa lumea se comportă cum intuiam eu. M-a convins că timpul a venit și pentru rețelele sociale audio.

Într-o sâmbătă, într-o oră, am făcut un app iOS care lucra pe agora.io. Le-am dat aplicația lui Alex Mânza și Radu Chivriga și am avut o discuție de vreo oră la care m-am convis că plaforma audio lucrează superb.

Deci, m-am hotărât să fac iar o rețea socială audio, din simplu motiv că acest segment abia acum se descoperă și se poate face foarte multe inovații. M-am pus în regim de sprint/maraton și am hotărât să construiesc Ascult.Eu.

Notă: Mai departe urmează înjurături tehnologice 😀

Am început cu backendul. Este făcut pe asp.net core 5, și hostat pe windows azure, în instance pe linux. Baza de date nerelațională este hostată pe Cosmos DB, probabil cea mai rapidă baza de date din lume și autoscalabilă. 

Când ai mai multe webservere de obice se folosește un serviciu/server de cache comun, aici am folosit Redis, un microservice din Azure.

Pentru comunicarea realtime între utilizatori și server, adică ridicarea mânii, microfon activ, intrarea și ieșrile din room am folosit SignalR, tot de la Azure.

Visual Studio 2019, și template-urile mi-au permis să fac Api pentru backend în 2 zile, inclusiv testarea rapidă prin swagger și postman.

Setările administrative au durat vreo oră. Domen-ul, configurarea CDN-ului în Azure, Cloudflare pentru cache, cumpărarea de email hosting la Google și setarea MX-urilor. Nimic complicat.

De luni, am început să fac aplicația pe iOS. Am ales special iOS, pentru că tocmai terminasem versiunea la iOS pentru privesc.eu pe o tehnologie mai nouă de a scrie UI/UX care se numește SwiftUI.  Off, cât de mult am așteptat eu așa tehnologie să apară, până la ea programatorii aveau un coșmar să scrie UI pentru aplicații. 

Timp de 7 zile am transpus Api din backend în UI. Unele funcționalități cum ar fi evenimente și comunități sunt implementate în aplicație însă ascunse, pentru moment. După 7 zile am pus aplicația pe TestFlight, un serviciu de testare de la Apple care îți permite să distribui aplicația ta fără a fi publicată în App Store. Peste 80 de oameni au descărcat aplicația și am făcut primele teste, au fost unele crash-uri, dar din fericire Firebase Crashlytics le-a colectat pe toate și am găsit imediat codul unde se petrecea crash-ul. Era unul banal.

Push notificările le trimit prin Firebase de la Google.

10 zile, a durat de la scrierea primului cod până la testarea unui room cu toți prietenii mei care au venit să se joace cu aplicația. Mulțumesc lor, am inspirat încă o doză de entuziasm și am pornit la drum să fac Android-ul.

Android-ul a durat ceva mai mult, îl cunosc mai puțin, dar și tehologiile lor sunt cumva în urma iOS-ului. Am folost Jetpack Compose pentru a crea UI, e cumva similar cu SwiftUI de la iOS. Jetpack Compose e încă în Alpha versiune, practic zilnic fac update, nimic documentație. Cinstit să vă spun, dacă Google nu avea această tehnologie nici nu mă apucam de Android. 

Jetpack Compose și SwiftUI, practic m-au făcut să fiu de 10x mai rapid decât alte frameworkuri UI. 

Peste 14 zile de programare în Kotlin, deja începusem să mă consum, Agora.IO și WebRTC nu prea vroiau să lucreze, în plus era și mai greu de testat pentru de fiecare dată trebuie să pornești cel puțin 2 telefoane pentru a testa audio. Aproape dupa 3 săptămâni am reușit să fac și android-ul să meargă, și însă nu sunt sigur că merge totul ok.

Audio, căluțul din spatele la Ascult.Eu, e făcut pe serviciu de voice chat de la Agora.io, adică acelaș serviciu care stă în spatele și la Clubhouse. Spre deosebire de clubhouse, eu am făcut o ajustare. Doar cei care vorbesc, se aud pe serviciul agora.io, pentru care se plătește per minute per user, iar conversația se face restream pe un server hostat pe digital ocean Ant Media. De acolo streamul audio merge spre ascultători. Aceast mi-a permis, după calculele mele să am cheltuieli de 25x - 30x mai mici decât ce de la clubhouse, tradeof e că ascultătorii aud cu întârziere de 2 secunde ce vorbesc speakerii.

Pe lângă Clubhouse, au mai apărut și alți jucători ca Twitter Spaces, Telegram audio, Stereo, probabil vor apărea și mai multe. Ascult.Eu se orientează mai mult pe persoane identificabile, cu nume real și fotografii reale, probabil voi face enforcement ca să pui selfie. Asta nu e un moft, dar consider că în comunicare audio, toți participanții trebuie să fie identificați, fără anonimi, fără trolli. Oamenii, room-urile, evenimentele comunitățile sunt restricționate după limbile de comunicare.

Topul celor celebrităților se face simplu. Cei vobesc în fața la câtor mai mulți oameni acela are mai multe ore/atenție și respectiv se ridică în top. Followerii sunt doar un proxy pentru a genera ore/atenție.

După aceste zile, în care lucram câte 14 ore pe zi, am devenit foarte extenuat. Mi-a trebuit încă o săptămână să nu fac nimic pentru ami reveni. Deci, nu vă prea recomand un așa sprin/marathon.

Discuțiile din camerele pe ascult.eu au fost foarte utile. Am cules o mulțime de idei. Le mulțumesc tuturor pentru aport, le voi implementa cât de curând posibil.

Dacă aveți idei, sunteți bineveniți  să facem împreună viitorul radioului.

Leave a Reply