Peter Širka
Peter Širka

Osobný blog programátora a IT nadšenca.

Tvorba neviditeľného open-source

Tvorba neviditeľného open-source

Paradoxne, väčšina mojej rodiny a známych z Banskej Bystrice ani netušia, čo vlastne reálne robím - stále si myslia, že inštalujem tlačiarne. Tento blog je preto aj taký malý odpočet mojej doteraz neviditeľnej práce. Aby bol pochopiteľný celý kontext, tak dnes je to zruba +/- 17 rokov, čo sa venujem profesionálnemu vývoju webových aplikácií - hlavne ich motoru. Bola to dlhá, krásna a miestami poriadne divoká cesta, ktorá ma priviedla až sem. Som človek, ktorý ledva dokončil strednú školu a aby som sa vyhol vojne, skúsil som to na vysokú školu s odborom informatika a športový tréner. Paradoxne ma neprijali kvôli telesnej, hoci som vtedy aktívne hrával futbal. A keďže povinná vojenská služba ma prenasledovala, rozhodol som sa pokračovať na nadstavbovom štúdiu (odbor cestovný ruch), kde som získal druhú maturitu. Krátko nato som si otvoril živnosť v oblasti informačných technológií a tým sa začala moja profesionálna cesta. Keď mi mamina kúpila prvý počítač na splátky cez Quatro, mal som asi do max. 15 rokov, tak otec vtedy povedal, že mi kúpila najdrahšiu hračku v živote a že mi to je na kokot (citoval som ho). Nikto však netušil, že práve táto "hračka" bude raz základom mojej budúcnosti. Vďaka nej dnes píšem tento blog. V začiatkoch programovania (Pascal, Delphi, ASP - Visual Basic) mi veľmi pomohol plk. Mgr. Ivan Petrán (aktuálne riaditeľ väznice v Banskej Bystrici), ktorý mi vždy s ochotou vysvetlil základy.

Peter Širka

Vedomosti

Mal som šťastie v živote robiť na skvelých projektoch, ale to bolo aj vďaka tomu, že som programovanie chcel pochopiť načo najnižšiu úroveň. Ako prvý veľký projekt som urobil web pre OTP Banku - to boli skoro vyše týždňa každodenné 18-hodinovky, ale aspoň mi potom zdvihli plat na kráľovských 24 000 korún mesačne 😂 ... ďalej som vyvíjal najväčší realitný softvér na Slovensku - EasyReal.NET, ktorý používalo vyše 130 realitných kancelárií po celom Slovensku. Popri tom sme prevádzkovali aj veľmi populárny portál Server.sk, kde fungoval Reality server, Music server, Auto server a ďalšie sekcie. Server.sk patril medzi top 10 najnavštevovanejších webov na Slovensku. Pre eTrend a celú sieť Server.sk som navyše vytvoril nový Banner System na nasadzovanie reklamy, ktorý fungoval parádne celé roky. Následne som prešiel do druhého zamestnania, do firmy Datalan, kde som nastúpil ako IT architekt. V Datalane som robil na krásnych projektoch ako ČSOB úverový systém, VW finančné služby, mapa nehnuteľností, DCOM (Dátové centrum obcí a miest), Slovalco, eVedomosti, digitálne mesto, ToDáRozum s Mesa10 a Ivanom Miklošom, atď. a skoro všetky boli postavené na mojich technológiách (viď nižšie). V Datalane som spoznal veľmi veľa skvelých ľudí, s ktorými spolupracujem do dnes.

Arisot Datalan + Nazaret

Open-source (otvorený zdrojový kód)

Open-source je kód zadarmo pre všetkých a framework je hotová stavebnica, ktorá programátorom pomáha rýchlejšie postaviť aplikáciu/riešenie.

Do sveta open-source ma priviedol príchod platformy Node.js. Ako C# vývojár som sa chcel oslobodiť od drahých licencií a náročnej prevádzky technológií Microsoftu. Node.js platforma mi otvorila dvere k slobode a k úplne novému spôsobu myslenia o vývoji. V roku 2012 som mal hotovú prvú verziu webového Partial.js frameworku, ktorý som v roku 2014 musel premenovať na Total.js - názov mi pomohol vymyslieť kamarát Miloš Savara. Môj pôvodný framework sa volal Partial.js, no neskôr som musel názov zmeniť. Dôvod bol jednoduchý - môj bývalý šéf mi odmietol vrátiť doménu - lebo som odchádzal z firmy. A tak vznikol názov Total.js. Pri názvoch sa ešte chvíľu zastavím, pretože Miloš Savara (áno, opäť on) stál pri zrode názvu CodeCon aj pri registrácii domény. Vtedy som ešte netušil, že sa z CodeConu stane jedna z najväčších IT konferencií na Slovensku (o CodeCone urobím samostatný blog post). Total.js + CodeCon = ❤️.

TIP: ak potrebujete vymyslieť nejaký úspešný názov pre projekt, tak kontaktujte Miloša Savaru 😂.

Total.js na CodeCone

Jano a Ja

Neviditeľný open-source (otvorený zdrojový kód)

Doteraz nemám presné čísla o tom, koľko ľudí používa to, čo som vytvoril. Nikdy to však nebolo o číslach - všetko, čo som robil, som tvoril v prvom rade pre seba. V tomto blogu by som to chcel konečne podrobne rozobrať, pretože som to doteraz nikde nemal spísané.

Prečo neviditeľný open-source (otvorený zdrojový kód)? Lebo to je presne ako s chlebom - kúpime si ho, zjeme ho, ale netušíme koľko roboty, potu a nápadov je za tým. Vidíme len výsledok. A to, čo je v pozadí, zostáva neviditeľné. Presne tak funguje aj open-source, avšak ten je úplne zadarmo.

Dávid Grudl na CodeCone rozpráva o open-source (2017):

Dávid Grudl na CodeCone

Vrátim sa späť k tomuto spojeniu. V poslednom čase si čoraz viac uvedomujem, že celý svet dnes stojí viac - menej na open-source (otvorenom zdrojovom kóde). Kto by to bol povedal? Koľko je nás tých "neviditeľných" ľudí, ktorí svojím kúskom kódu alebo aj celými blokmi meníme svet, hoci o tom väčšina nikdy nebude vedieť? Všetky zdroje umelej inteligencie z IT oblasti pochádzajú práve od nás, z tejto tichej komunity tvorcov. A aj keď raz padneme do zabudnutia, som rád, že sme boli pri zrode vecí o akých sa nám kedysi ani nesnívalo. Ak toto číta niekto netechnický, pre lepšiu predstavu aj vaša chladnička, práčka, umývačka riadu, auto, dron, tablet, mobil, internet banking, vchodové dvere či výťah využívajú open-source (otvorený zdrojový kód). Tento kód vytvorili ľudia, ktorí často ani netušia, že ich práca poháňa práve tieto zariadenia.

Vrátim sa ešte späť k Total.js Platforme. Možno to nie je ani len malý "prd vo vetre" v IT, no aj ona viditeľne zmenila životy - určite môj a ľudí, ktorí ju so mnou tvoria. A keď vidím ľudí doma (napr. u nás na firme) alebo ľudí v zahraničí, ktorí ju používajú, zarábajú vďaka nej peniaze a posúvajú ju ďalej, je to pre mňa dôkaz, že sa mi podarilo aspoň na chvíľu zlepšiť životy iných. A to ma úprimne teší. Total.js a CodeCon mi priniesli nových kamarátov z rôznych kútov sveta. Niektoré z týchto kontaktov sa časom zmenili na skutočné priateľstvá (napr. Gera G. Güiles) a to aj napriek tomu, že sme sa nikdy osobne nestretli - jedinou výnimkou je Louis Bertson Nabaloum, ktorý nás prišiel pozrieť z ďalekej Afriky. Všetko má v živote nejaký význam a filozoficky by som povedal, že život sa dá pochopiť len spätne, avšak treba ho žiť dopredu.

Tvoríme hodnoty. Nie preto, aby sme boli viditeľní, ale preto, že práve v tom je zmysel života.

Louis + Gerardo:

Total.js priateľstvá

Môj neviditeľný open-source (otvorený zdrojový kód)

Budem teraz trochu osobný a možno aj trochu chválenkársky, ale doteraz som vlastne nikde nepovedal a nenapísal, čo som všetko naprogramoval. Roky som počúval na fórach, v diskusiách a aj na konferenciách tú istú vetu: "Načo vymýšľaš koleso, ktoré je už dávno vymyslené?" Ale nikdy som na to nevedel korektne odpovedať. Jednoducho ma hnala túžba dokončiť to, čo som začal a spraviť to najlepšie, ako som vedel. A dnes, keď sa obzriem späť, vidím za sebou hodnoty na ktoré som naozaj hrdý. Svojím prístupom som nerozšíril len jednu knižnicu, ale vytvoril celý ekosystém so všetkým, čo k tomu patrí. Sám presne neviem ako sa mi to podarilo, ale viem, že v živote stačí naozaj len chcieť. Najviac si na sebe cením to, že väčšinu vecí do ktorých som sa pustil som aj dotiahol do konca. Život ma naučil, že dokončiť nejakú vec je často dôležitejšie než ju začať. O akých technológiách vlastne hovorím? Pre laikov sú to aplikácie na serveri napr. weby, eshopy a rôzne systémy, ktoré v reálnom čase merajú hodnoty, upozorňujú, zachraňujú a hlavne pomáhajú. Dá sa cez ne zaplatiť, objednať, kontaktovať, či vybaviť kopec ďalších vecí a často poskytujú aj kľúčové informácie, ktoré sú zásadné v danej oblasti.

Meetingy sú niekedy náročné:

Peter Širka a FIT lopta

Staršia štatistika mojich príspevkov do otvoreného kódu na GitHube:

Moje contributions

Message

Total.js framework

Total.js bol a možno dodnes je najkomplexnejší Node.js framework na trhu. Nie preto, že by to bol cieľ, ale preto, že vznikal s vášňou a s veľkou láskou.

30M requestov za deň ... priznali sa, že to boli porno stránky 😂 (čo som aj tušil):

Total.js performance

Moje vlastné a zároveň veľké implementácie from scratch v raw JavaScripte:

  • NoSQL embedded database engine (na toto som veľmi pyšný)
  • multipart/form-data parser
  • veľmi efektívne parsovanie URL query parametrov
  • HTTP proxy routing s podporou WebSocket
  • Binary/Text Streamer, ktorý dokáže spracovávať a streamovať dáta bez obmedzenia veľkosti
  • JSON Schema parser a validator
  • Vlastné dátové schémy na validáciu a transformáciu údajov
  • HTML parser na štýl jQuery
  • XML parser na štýl jQuery
  • CSV parser
  • Terminal parser
  • Cron parser a evaluator
  • View engine - veľmi funkčný server-side engine na render HTML obsahu
  • Tangular template engine - rýchlejšia a funkčnejšia obdova Mustache/Handlebars enginov
  • Database QueryBuilder - ORM pre PostgreSQL, MySQL, SQLite, MS SQL Server a Oracle
  • JavaScript minifikátor
  • HTML minifikátor
  • CSS minifikátor s podporou LESS CSS variables na serveri
  • WebSocket server s kompresiou (70% spracovania mi napísal kamarát Jožko Gula)
  • WebSocket client s kompresiou
  • Bundling zdrojového kódu do jedného súboru s GZIP kompresiou
  • FileStorage engine na efektívne ukladanie a čítanie súborov
  • SMTP sender s podporou TLS
  • Markdown parser a transformer do HTML
  • RESTBuilder na tvorbu HTTP requestov (s podporou proxy, uploadov, streamingu, atď.)
  • vlastný unikátny UID generátor s validáciou (90% unikátnych ID sa generuje cez tento algoritmus)
  • Remote code editing na vzdialenú editáciu zdrojového kódu
  • Operácie nad obrázkami cez ImageMagick alebo GraphicsMagick
  • Content management engine na vyhodnocovanie HTML obsahu z CMS
  • Macro engine - zjednodušený programovací jazyk na tvorbu dynamických "macro" výrazov
  • FlowStream engine/compiler pre vyhodnocovanie Visual Programming Interface schémy (Flow)
  • Pypeline na spúšťanie a priamu komunikáciu s Pythonom s real-time výmenou dát cez IPC
  • Lokalizačný engine pre multi jazykové lokalizácie
  • Efektívny Total.js Watcher na sledovanie zmien v server-side scriptoch
  • DIFF mechanizmus na porovnávanie dát medzi payloadom a databázou

Všetko, čo som spomenul vyššie, predstavuje tisícky hodín práce po večeroch, hlavne vo voľnom čase, popri práci aj doma. Total.js nevyužíva žiadne externé knižnice, približne 95 % implementácie som vytvoril sám a ostatné s pomocou kamarátov a nadšencov z komunity, a hlavne bez AI. Párkrát som narazil na okopírované kúsky môjho kódu v cudzích knižniciach a úprimne, bol som na to celkom pyšný.

GitHub active users

Na obrázku vyššie je moja aktivita - ale len z Total.js Platformy. A keď si uvedomím, že som väčšinu času vytváral nové veci a nerobil refaktor, tak moje 6. miesto medzi najaktívnejšími programátormi na Slovensku je čistý masaker.

jComponent UI library

Písal sa rok 2014, keď som sa pustil do vývoja knižnice, ktorá mi mala pomôcť vytvárať (UI) webové používateľské rozhrania rýchlo, efektívne a stabilne. Bol som veľký Angularista, až kým neprišiel Miško Hevery (autor Angular.js) s informáciou o verzii 2, ktorá všetko obrátila naruby. Vtedy som si povedal, že potrebujem vlastnú technológiu, ktorá bude aj po rokoch v jadre rovnaká ... a bol to dobrý krok. Popri tom som vytvoril web componentator.com, kde som pridal viac než 300 open-source UI komponentov - áno pridal som ich vyše 300. Niektoré z nich sú mimoriadne komplexné - napríklad j-DataGrid, j-Input alebo j-Flow. Dnes na jComponent knižnici stoja všetky Total.js aplikácie.

Mnou vytvorené open-source aplikácie

Vďaka vyššie uvedeným technológiam na strane servera (Total.js framework) a na strane klienta (jComponent) som mohol začať vytvárať aj komplexnejšie webové aplikácie. Všetky nižšie uvedené aplikácie som napísal sám a štandardne from scratch:

Total.js apps

Úspechy

Najväčším úspechom celého tohto príbehu je to, že sme dokázali dať prácu pár ľuďom a reálne im zlepšiť život. A medzi tie globálne highlighty určite patrí aj moment, keď nám do firmy napísal samotný Andy Rubin, že chce s nami spolupracovať a chce použiť Total.js Platformu. BTW: tento týpek je zakladateľom Androidu.

Andyho garáž (2021):

Andy Rubin garáž

Pohľad do Total.js kuchyne:

Naša firma Total.js

CodeCon + Návšteva u prezidenta s chalanmi z Wezea:

Prezident

Záver

Na záver len poviem, že som úprimne hrdý na to, čo sa mi podarilo vybudovať počas celej doterajšej kariéry. Zároveň viem, že som mal obrovské šťastie na ľudí a život. Chcem preto spomenúť tých, ktorí pri mne stáli a verili mi od začiatku - moja maminka Anna (tá to začala), moja bývala žena Lucka (ktorá do dokázala so mnou vydržať 15 rokov prevažne s úsmevom), Jožko Gula, Tomáš Novák, Jožko Slíž, Gera G. Güiles a v posledných rokoch najmä Michal Klačan (budem ho chodiť navštevovať a meniť mu plienky, keď bude starý - za jeho veľkú pomoc a totálne skvelé srdce). Michal to celé potichu ťahá v pozadí, verí tomu rovnako ako ja a hlavne drží celý projekt nad vodou.

Začiatky v Banskej Bystrici (Tomáš Novák, Lenka Nováková, Lucka Širková a moja malá chlpatá dcéra Sonička):

Začiatky

Neviem dokedy to celé potiahneme, ale doteraz to bola po piči jazda ❤️. A ďakujem ďalším desiatkam známim, kamarátom a úplne cudzím ľudí - po celom svete, ktorí nám pomáhali nezištne a bez váhania.

Nie celý, ale aspoň časť rodinného Total.js Teamu (Pavol Danko, Michal Klačan, Jozef Marton, Lucia Širková, Peter Širka, Louis Bertson a Marek Dorotovič):

Total.js Team v BB

A by som nezabudol moja práca je moje hobby.

Total Avengers