În industria dezvoltării software, tehnologiile sunt principalul instrument de lucru; prin urmare, orice companie care activează în domeniu trebuie să fie tot timpul la curent cu cele mai noi evoluții tehnologice, pentru a se asigura că oferă servicii optime partenerilor săi. Platformele tehnologice evoluează foarte rapid – unele suferă modificări (update-uri) semnificative, altele se perimează, iar altele sunt înlocuite de soluții noi.
În cei peste 15 ani de activitate, Gemini Solutions a cunoscut și a utilizat toate categoriile de tehnologii precizate, adaptând multe dintre ele în funcție de modelul de business al fiecărui partener. Din multitudinea de stack-uri de tehnologie folosite, enumerăm doar câteva: Cloud Platforms (Google Cloud, Amazon AWS, Microsoft Azure), Mobile apps (Swift, Objective-C, RxCocoa etc.), Data Science (Phyton, Scala, Tensor Flow etc.), Enterprise applications (.NET, WebApi, ASP etc.), Web-based applications (Ruby on Rails, Symfony, Django etc.) sau Blockchain (Stellar, Ethereum etc.).
Vom detalia, în continuare, câteva dintre caracteristicile unora dintre cele mai experimentale tehnologii din portofoliul companiei.
Tehnologii bleeding edge folosite de Gemini Solutions
Echipa de specialiști ai Gemini Solutions este împărțită în „practice-uri” (departamente) experimentale, în funcție de tehnologiile de interes. De exemplu, unul dintre aceste practice-uri este Gemini Labs, specializat în principal pe subiecte ca IoT, machine learning, artificial intelligence și blockchain.
În Gemini Labs sunt evaluate din punct de vedere funcțional și arhitectural o multitudine de proiecte noi, și luate decizii de design pentru fiecare dintre ele. Fie că Gemini Solutions colaborează cu startup-uri, care vin cu idei inovatoare, sau cu firme consacrate, care vin cu necesități de business specifice, echipa este pregătită să răspundă cerințelor și să ofere soluții personalizate în funcție de constrângerile clienților.
O astfel de activitate este foarte dinamică și fiecare proiect are specificitățile lui. Prin urmare, deciziile tehnice și tehnologiile folosite trebuie adaptate de fiecare dată, în funcție de ultimele descoperiri în domeniu. Andrei Bărar, Practice Lead la Gemini Solutions, ne dă un exemplu:
Blockchain
“Blockchain este, de ceva timp, un subiect de interes în industrie, iar noi avem expunere în acest domeniu de câțiva ani buni. La un moment dat, a trebuit să facem o analiză și să propunem o arhitectură pentru o aplicație care oferă bonificații financiare persoanelor care pierd în greutate (printr-o schemă de loializare). O asemenea aplicație își găsește utilitatea și pentru persoane fizice, dar și pentru companiile care oferă servicii de sănătate, companiile de asigurări, vânzători etc.
Gemini Labs a trebuit să răspundă întrebării: cum putem realiza o astfel de platforma? Propunerea noastră presupunea folosirea ledger-ului de Stellar, mai exact integrarea cu Horizon API și definirea unor contracte multi-sign. Înainte de a lua această decizie, am analizat mai multe tehnologii disponibile pentru a găsi cea mai fiabilă metodologie. S-a pus și problema folosirii unei baze de date centralizate, dar am ales blockchain pentru beneficiile în ceea ce privește anonimizarea, securitatea și controlul datelor. Ne-a ajutat experiența anterioară cu diverse framework-uri de blockchain pentru a alege în final pentru acest scenariu Stellar ca fiind cel mai potrivit (versus Etherum cu Smart Contracts).
Aici, am ținut cont de mai multe lucruri, printre care și costul (echilibrarea operațiilor on-chain vs. off-chain, soluții de stocare eficiente pentru a evita limitele legate de tranzacții), cât și unele mai puțin evidente (tariful de bază controlat de o entitate centrală). Experiența noastră cu blockchain nu înseamnă doar analiză, alegeri tehnice și prototipuri realizate rapid, ci și o serie de lessons learned și cunoștințe care ne permit să fim actuali și pertinenți în domeniu la orice oră.”
Machine Learning
Gemini Labs manifestă un interes special și în zona de machine learning și artificial intelligence. Practice-ul urmărește expunerea internațională și cercetarea experimentală, motiv pentru care a participat la EmotionX-2019 challenge. Vlad Alexandru, Software Engineer la Gemini Solutions, ne povestește despre soluția propusă de echipa lui în cadrul acestui eveniment.
“Participanții au fost invitați să prezică emoții induse prin dialog scris (transcript din serialul Friends, cât și conversații din medii de socializare precum Messenger), clasificând fiecare enunț într-una dintre cele patru categorii prestabilite: bucurie, tristețe, furie și neutru. Cum am decis noi să abordăm această sarcină? Am ales să profităm de capacitățile arhitecturale DCNN (Deep Convolutional Neural Networks) deja confirmate în determinarea și învățarea tiparelor în input data și să dezvoltăm un model bazat pe trei rețele neurale convoluționale. Unul dintre ele a fost antrenat folosind dataset-urile oferite de EmotionX-2019 Challenge, iar celelalte două au fost pre-antrenate folosind dataset-uri adiționale adnotate pentru emoție și sentiment.
Modelul propus de noi a obținut un scor f1-macro de 84,2% pe dataset-ul de testare EmotionPush și un scor f1-macro de 71,5% pe dataset-ul de testare Friends.
Am optat pentru o metodă de transfer learning pentru inițializarea filtrelor și ponderilor conexiunilor dintre neuronii rețelelor convoluționale, capturând, astfel, informația învățată de modelele pre-antrenate. De asemenea, folosind transfer learning, am încercat să compensăm pentru numărul limitat de exemple din dataset. Dintre cele trei rețele convoluționale, două au fost pre-antrenate pe câte unul dintre seturile de date adiționale (sentiment, emoții) pentru o obține o gamă mai largă de caracteristici care ar putea contribui la determinarea corectă a unui anumit tip de emoție.”
În proiectele viitoare, echipa Gemini Labs intenționează să extindă metodele de învățare asupra unor contexte verbale mai largi, pentru a genera un model mai robust, capabil să asimileze rapid modificările de vocabular specifice comunicării prin Social Media (Twitter, Facebook etc.). De asemenea, o atenție deosebită se acordă tehnicii de transfer learning, pe care practice-ul vrea să o ducă la un nou nivel, folosind caracteristicile extrase prin DeepMoji, care a obținut rezultate remarcabile în predicția emoticoanelor.
În prezent, practice-ul experimental lucreaza și la diverse proiecte de IoT, printre care o aplicație care oferă cybersecurity activităților industriale, o aplicație de dresaj canin etc. Printre tehnologiile folosite în aceste proiecte se numără și Google Cloud IoT, AWS IoT, BlueMix, IBM Watson IoT, MQTT.
Perspective
Într-o eră în care tehnologiile apar, se dezvoltă și înlocuiesc, treptat, activitățile umane, nu poți afirma niciodată că stăpânești la perfecție cele mai noi tendințe. În schimb, experimentând și participând activ la dezvoltarea și implementarea unor soluții inedite, te asiguri că nu vei fi luat niciodată prin surprindere de următorul val revoluționar din zona digitală. Din această perspectivă, Gemini Solutions s-a plasat întotdeauna printre pionierii din industria de software development.
Gemini Solutions este o companie de tehnologie înființată în anul 2005 de către Theodor Nissim și Florin Pîrlea. Compania are biroul de marketing și vânzări în Sillicon Valley, California, iar centrul de dezvoltare software este în România (cu sedii in București, Cluj-Napoca și Iași).