{"id":9960,"date":"2022-06-07T18:38:31","date_gmt":"2022-06-07T16:38:31","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/"},"modified":"2022-09-19T13:10:37","modified_gmt":"2022-09-19T11:10:37","slug":"jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/","title":{"rendered":"JVM Tuesday vol. 90 \u2013 Microstream, State of Clojure i Roadmapa Kotlina\ufffc"},"content":{"rendered":"\n<h2 id=\"1-czym-jest-microstream\" data-num=1>1. Czym jest MicroStream?<\/h2>\n\n\n\n<p>W zesz\u0142ym tygodniu ko\u0144czyli\u015bmy nasz\u0105 edycj\u0119 na Micronaucie, a w tym mamy do tego pewien followup. O ile przekazali\u015bmy Wam informacj\u0119, \u017ce w nowej wersji frameworka pojawi si\u0119 wsparcie dla MicroStream w formie micronautowego modu\u0142u, to nie zd\u0105\u017cyli\u015bmy ju\u017c z og\u0142oszeniem, \u017ce <a href=\"https:\/\/micronaut.io\/2022\/05\/31\/microstream-sponsorship\/\">MicroStream og\u0142osi\u0142o do\u0142\u0105czenie do Micronaut Foundation<\/a>. Narz\u0119dzie sta\u0142o si\u0119 srebrnym sponsorem frameworku i pojawi\u0142a si\u0119 zapowied\u017a dalszego zacie\u015bniania wsp\u00f3\u0142pracy. Dlatego te\u017c wr\u00f3\u0107my jeszcze jeszcze raz do tematu, i w nieco d\u0142u\u017cszej formie porozmawiajmy o tym, czym MicroStream jest i na jakie problemy odpowiada.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"686\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image.png\" alt=\"\" class=\"wp-image-4627\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image.png 735w, https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image-300x280.png 300w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><figcaption>I na to pytanie troch\u0119 te\u017c, aczkolwiek z ma\u0142ym twistem \ud83d\ude09<\/figcaption><\/figure><\/div>\n\n\n<p>Kojarzycie taki termin jak niedopasowanie impedancji obiektowo-relacyjnej? Inaczej Object-relational impedance mismatch &#8211; kocham bezpo\u015brednie polskie t\u0142umaczenia? Za tym cudownym terminem stoi problem stary jak frameworki ORM &#8211; co nale\u017cy rozwin\u0105\u0107 jako Object-Relational Mapping. To za\u015b mo\u017cna przet\u0142umaczy\u0107 na mapowanie obiektowo-relacyjne (troch\u0119 lepiej). Wynika on z tego, \u017ce model obiektowy i relacyjny s\u0105 ze sob\u0105 mocno niekompatybilne, i to jeszcze na poziomie samych koncepcji.&nbsp;<\/p>\n\n\n\n<p>Za Wikipedi\u0105, w wolnym t\u0142umaczeniu:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Obiekty odnosz\u0105 si\u0119 do siebie nawzajem, tworz\u0105c co\u015b co w sensie matematycznym okre\u015bla si\u0119 jako graf skierowany (sie\u0107 zawieraj\u0105c\u0105 p\u0119tle i cykle). Schematy relacyjne s\u0105 z kolei tabelaryczne i oparte na algebrze relacyjnej, kt\u00f3ra definiuje powi\u0105zane ze sob\u0105 heterogeniczne krotki (grupy p\u00f3l danych w &#8222;wierszu&#8221; o r\u00f3\u017cnych typach dla ka\u017cdego pola), gdzie powi\u0105zania s\u0105 zawsze odwracalne (klucze obce mo\u017cna \u015bledzi\u0107 wstecz, poniewa\u017c INNER JOIN jest symetryczny), co jest cech\u0105 bardziej zbli\u017con\u0105 do graf\u00f3w nieskierowanych.<\/p><\/blockquote>\n\n\n\n<p>ORMy zawsze musia\u0142y sobie z tym niedopasowaniem radzi\u0107, w lepszy lub gorszy spos\u00f3b, modeluj\u0105c dane w spos\u00f3b bardzo ko\u015blawy. Cz\u0119sto do tego stopnia \u017ce wymusza\u0142y specyficzny spos\u00f3b pisania kodu, taki by frameworkowi si\u0119 podoba\u0142o, lub te\u017c&nbsp;tworzenie warstw po\u015brednich, co sko\u0144czy\u0142o si\u0119 mod\u0105 na u\u017cywanie framework\u00f3w jak najbli\u017cszych SQL-owi jako takiemu.&nbsp;<\/p>\n\n\n\n<p>MicroStream podchodzi do problemu inaczej. Zamiast u\u017cywa\u0107 modelu relacyjnego, serializuje obiekty do tak zwanego ObjectGraphu. Dzi\u0119ki temu nie s\u0105 wymagane \u017cadne nadmiarowe konwersje, procesor si\u0119 nie zu\u017cywa i w og\u00f3le ratujemy planet\u0119.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858c9e1ca6.gif\" alt=\"\"\/><figcaption>Ale serio serio, jako argument za spr\u00f3bowaniem u\u017cywaj\u0105 \u201cSave lots of CPU power, CO2 emission, and costs in the data center.\u201d \ud83d\ude09<\/figcaption><\/figure><\/div>\n\n\n<p>Chwal\u0105 si\u0119 te\u017c, \u017ce ichniejszy DataGraph mo\u017ce by\u0107 persystowany zar\u00f3wno in-memory, w zewn\u0119trznym cache, jak i ka\u017cdej bazie danych przyjmuj\u0105cej binarne dane. U\u017cywanie indeks\u00f3w przy pobieranie danych zast\u0105piono za\u015b tworzeniem inteligentnych podgraf\u00f3w, pozwalaj\u0105cych na efektywne dotarcie do konkretnego podzbioru ca\u0142ego zrzutu pami\u0119ci. Ca\u0142o\u015b\u0107 ma by\u0107 ma\u0142a i bardzo \u201cnatywna\u201d dla Javy, dobrze integrowa\u0107 si\u0119 z natywnymi API Javy, jak cho\u0107by Stream API i pozwalaj\u0105c na \u0142atw\u0105 serializacje r\u00f3wnie\u017c obiekt\u00f3w, nad kt\u00f3rymi nie mamy kontroli.<\/p>\n\n\n\n<p>A sk\u0105d bud\u017cet na sponsoring Micronauta? W wersji Community tw\u00f3rcy MicroStreama umo\u017cliwiaj\u0105 tylko i wy\u0142\u0105cznie PostgreSQL, MongoDB, SQLite i systmeu plik\u00f3w. Bardziej zaawansowane rozwi\u0105zania, jak cho\u0107by np. S3 czy inne blob storage, dost\u0119pne s\u0105 w wydaniu komercyjnym. Niestety, nigdzie nie uda\u0142o mi si\u0119 znale\u017a\u0107 grona p\u0142ac\u0105cych klient\u00f3w rozwi\u0105zania. <\/p>\n\n\n\n<p>Je\u015bli jeszcze jest Wam ma\u0142o w temacie MicroStream, to <a href=\"https:\/\/foojay.io\/today\/microstream-part-1-what-is-it\/\">foojay.io w\u0142a\u015bnie rozpocz\u0119\u0142o seri\u0119 na temat tego narz\u0119dzia<\/a>. Jej pierwsz\u0105 cz\u0119\u015b\u0107 znajdziecie tutaj, wraz z du\u017co szerszym wprowadzeniem w temat, wraz z szerokimi potencjalnymi przypadkami u\u017cycia. Akurat w ostatnich tygodniach ci\u0105gle trafiam na MicroStream, i cho\u0107 ci\u0119\u017cko mi powiedzie\u0107 na ile to jest oddolne dzia\u0142anie spo\u0142eczno\u015bci, a na ile akcja marketingowa\u2026 no c\u00f3\u017c, zadzia\u0142a\u0142o. Mo\u017ce w\u0142a\u015bnie stwierdzili, \u017ce czas si\u0119 zacz\u0105\u0107 mocnie monetyzowa\u0107.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858caa3477.gif\" alt=\"\"\/><figcaption>A czy kto\u015b z Was u\u017cywa\u0142 MicroStreama? Dajcie zna\u0107 \ud83d\ude09<\/figcaption><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/foojay.io\/today\/microstream-part-1-what-is-it\/\">MicroStream \u2013 Part 1: What is it?<\/a><\/li><li><a href=\"https:\/\/micronaut.io\/2022\/05\/31\/microstream-sponsorship\/\">Announcing Our Newest Silver Sponsor: MicroStream &#8211; Micronaut Framework<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"2-the-state-of-clojure-2022\" data-num=2>2. The State of Clojure 2022<\/h2>\n\n\n\n<p>Dawno nie by\u0142o u nas Clojure, co? To dobrze si\u0119 sk\u0142ada, \u017ce akurat pojawia si\u0119 okazja, \u017ceby troch\u0119 nadrobi\u0107 to, co wydarzy\u0142o si\u0119 w ekosystemie tego kr\u00f3la wsp\u00f3\u0142czesnych j\u0119zyk\u00f3w lispopodobnych.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cb3d94c.png\" alt=\"\"\/><\/figure><\/div>\n\n\n<p>Zacznijmy od tego &#8211; czy Clojure jest u\u017cywany w realnych projektach? Jak najbardziej, mamy do czynienia z coraz wi\u0119kszym odestkiem os\u00f3b, kt\u00f3re u\u017cywaj\u0105 Clojure komercyjnie. Co ciekawe, wi\u0105\u017ce si\u0119 to ze stratami we wszystkich innych grupach. Ciekawe, czy oznacza to pewnego rodzaju ch\u00f3w wsobny i po prostu pewne przemieszanie w ramach do\u015b\u0107 sta\u0142ej grupy? Akurat brakuje mi w ankiecie danych na temat wzrostu ca\u0142ego ekosystemu.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cb91172.png\" alt=\"\"\/><\/figure><\/div>\n\n\n<p>Le\u0107my dalej. Sk\u0105d ludzie bior\u0105 si\u0119 w ekosystemie Clojurowym? Java to do\u015b\u0107 naturalny kierunek tranzycji, JavaScript r\u00f3wnie\u017c (ClojureScript to jeden z motor\u00f3w nap\u0119dowych ca\u0142ego projektu), ale\u2026 Python? musz\u0119 przyzna\u0107, \u017ce jest to dla mnie do\u015b\u0107 zaskakuj\u0105cy kierunek tranzycji. By\u0142oby \u015bmiesznie, jakby by\u0142 to efekt jakiej\u015b pojedynczej du\u017cej tranzycji z Pythona do Clojure \ud83d\ude09 Ale efekt jest do\u015b\u0107 sta\u0142y, wi\u0119c mo\u017ce jaki\u015b czytaj\u0105cy to clojurowiec mnie o\u015bwieci?<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cbe3a1a.png\" alt=\"\" width=\"673\" height=\"591\"\/><\/figure><\/div>\n\n\n<p>Nie wszystkie wykresy mo\u017cna znale\u017a\u0107 w oryginalnym po\u015bcie, o dost\u0119p do niekt\u00f3rych dane trzeba si\u0119 troch\u0119 natrudzi\u0107. By\u0142em bardzo ciekawy, jak rozk\u0142ada si\u0119 u\u017cycie w poszczeg\u00f3lnych cz\u0119\u015bciach bran\u017cy, ale nie znalaz\u0142em tego w po\u015bcie towarzysz\u0105cym wynikom, w zwi\u0105zku z czym zagl\u0105dn\u0105\u0142em do \u201cczystych\u201d danych. Okazuje si\u0119, \u017ce najcz\u0119stszym miejscem u\u017cycia Clojure jest\u2026 Web Development i projekty Open Source, a dopiero na trzecim s\u0105 projekty komercyjne (ciekawe, jak maj\u0105 si\u0119 one do Web Developmentu). Podejrzewam, \u017ce du\u017ca w tym zas\u0142uga ClojureScripta.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cca7197.png\" alt=\"\" width=\"650\" height=\"580\"\/><\/figure><\/div>\n\n\n<p>Podobnie, po dane o u\u017cyciu w konkretnych domenach te\u017c trzeba si\u0119 schyli\u0107. Tutaj jednak nie ma zaskoczenia &#8211; Clojure zawsze kojarzy\u0142 si\u0119 z FinTechami, i do\u015b\u0107 dobrze oddaje to powy\u017csza tabelka.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858ceab7cf.png\" alt=\"\"\/><\/figure><\/div>\n\n\n<p>Na koniec zostawi\u0142em sobie m\u00f3j ulubiony wykres, ten kt\u00f3ry dotyczy zaanga\u017cowania w spo\u0142eczno\u015b\u0107 j\u0119zyka. Ciekawe, na ile grupa wype\u0142niaj\u0105ca ankiet\u0119 to ludzie z pewn\u0105 inklinacj\u0105 do \u201cudzielania si\u0119\u201d (albo aktywna deklaratywnie), ale zaskakuje, \u017ce prawie \u0107wier\u0107 z nich zajmuje si\u0119 rozwojem narz\u0119dzi open-source, a prawie po\u0142owa zajmuje si\u0119 ewangelizacj\u0105 w\u0142asnej organizacji. Z mojego do\u015bwiadczenia &#8211; Ci od Clojure tak maj\u0105. Uwierzcie mi, <a href=\"https:\/\/www.youtube.com\/watch?v=I6mbnQeDO9Y\">co\u015b o tym wiem na w\u0142asnym przyk\u0142adzie<\/a>.&nbsp;<\/p>\n\n\n\n<p>Troch\u0119 jak prawnicy. Po czym poznasz programist\u0119 Clojure? Bo Ci o tym powie.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cf2eeca.png\" alt=\"\"\/><figcaption> I to w czym\u015b co przypomina \u201cstarsz\u0105 mow\u0119\u201d.<\/figcaption><\/figure>\n\n\n\n<p>Dane z ankiety pewnie nie nale\u017cy traktowa\u0107 jako ostatecznego \u017ar\u00f3d\u0142a prawdy na temat ekosystemu, ale w dalszym ci\u0105gu stanowi\u0105 okno w spo\u0142eczno\u015b\u0107 Clojure. Pe\u0142ne rezultaty mo\u017cecie <a href=\"https:\/\/www.surveymonkey.com\/results\/SM-QRiy0fSu3bmDK_2FSNMplVJw_3D_3D\/\">znale\u017a\u0107 tutaj<\/a>, w tym odpowied\u017a na pytania otwarte i wi\u0119cej szczeg\u00f3\u0142\u00f3w. Jakby kto\u015b si\u0119 zastanawia\u0142 &#8211; w ankiecie udzia\u0142 wzi\u0119\u0142o 2352 osoby.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a:<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/clojure.org\/news\/2022\/06\/02\/state-of-clojure-2022\">State of Clojure 2022 Results<\/a><\/li><li><a href=\"https:\/\/www.surveymonkey.com\/results\/SM-QRiy0fSu3bmDK_2FSNMplVJw_3D_3D\/\">State of Clojure Community 2022 &#8211; SurveyMonkey<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"3-aktualizacja-roadmapy-kotlina\" data-num=3>3. Aktualizacja Roadmapy Kotlina!<\/h2>\n\n\n\n<p>Po okresie posuchy, je\u015bli chodzi o nowe informacje na temat Kotlina, sytuacja powoli zaczyna si\u0119 rozkr\u0119ca\u0107 &#8211; nareszcie doczekali\u015bmy si\u0119 bowiem <a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html\">nowej wersji Roadmap\u0119 j\u0119zyka<\/a>. W ramach niej, ludzie z JetBrains postanowili zawrze\u0107 wszelkie swoje plany na drug\u0105 po\u0142ow\u0119 2022, ale r\u00f3wnie\u017c uchyli\u0107 r\u0105bka tajemnicy na to co przyniesie pocz\u0105tek 2023.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858d0168fa.png\" alt=\"\" width=\"675\" height=\"211\"\/><figcaption>Roadmapy s\u0105 najlepsze!<\/figcaption><\/figure><\/div>\n\n\n<p>Nie da si\u0119 ukry\u0107, \u017ce tw\u00f3rcy Kotlina mocno wzi\u0119li sobie do serca uwagi u\u017cytkownik\u00f3w, narzekaj\u0105cych na suboptymalny developer experience j\u0119zyka, przejawiaj\u0105cy si\u0119 min. d\u0142ugim czasem kompilacji. Dlatego te\u017c kluczow\u0105 zmian\u0105, na kt\u00f3r\u0105 szczeg\u00f3lny nacisk k\u0142ad\u0105 tw\u00f3rcy j\u0119zyka jest nowy kompilator.&nbsp;<\/p>\n\n\n\n<p>K2, bo tak si\u0119 nazywa, ma postawione dwa cele. Po pierwsze, ma on sam w sobie by\u0107 znacznie szybszy od istniej\u0105cych rozwi\u0105za\u0144. Jednocze\u015bnie, jego wdro\u017cenie pozwoli tw\u00f3rcom na \u0142atwiejsz\u0105 innowacj\u0119, poprzez pozbycie si\u0119 d\u0142ugu technicznego. K2 r\u00f3\u017cni si\u0119 bowiem od dotychczasowych rozwi\u0105za\u0144 tym, \u017ce ma stanowi\u0107 wsp\u00f3ln\u0105 abstrakcj\u0119 dla ca\u0142ego Kotlina Multiplatform, a to wszystko dzi\u0119ki nowemu formatowi po\u015bredniemu. W tej chwili wariant JVMowy przeciera szlaki, ale ju\u017c w tej chwili m\u00f3wi si\u0119 o wersja dla Kotlin JS, Kotlin Native i dla wyda\u0144 mobilnych. W Roadmapie znale\u017a\u0107 mo\u017cna tematy te\u017c stabilizacje API pozwalaj\u0105cego na pisanie plugin\u00f3w, a tak\u017ce oficjalny release wersji beta&#8230; niestety na razie nie podano \u017cadnych dat. Pe\u0142ne wdro\u017cenie K2 zajmie jeszcze troch\u0119 czasu, dlatego te\u017c w planach tw\u00f3rc\u00f3w Kotlina pojawi\u0142y si\u0119 nowo\u015bci zwi\u0105zane z istniej\u0105cym kompilatorem, jak na przyk\u0142ad usprawnienie kotlinowych skrypt\u00f3w.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858d0df2b8.png\" alt=\"\"\/><figcaption>Im wi\u0119cej o nim czytam, tym bardziej tak sobie wyobra\u017cam rozw\u00f3j K2.<\/figcaption><\/figure><\/div>\n\n\n<p>Jak ju\u017c wspomnieli\u015bmy o wersji Multiplatform, to ta ju\u017c nied\u0142ugo r\u00f3wnie\u017c doczeka si\u0119 paru usprawnie\u0144, szczeg\u00f3lnie w kontek\u015bcie kodu Androidowego. Multiplatform ma si\u0119 w ko\u0144cu pojawi\u0107 w wersji Beta, a takowej po\u015bwi\u0119cono ostatnio <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2022\/05\/kotlin-multiplatform-mobile-beta-roadmap-update\/\">ca\u0142\u0105 osobn\u0105, szczeg\u00f3\u0142ow\u0105 notatk\u0119<\/a>, opisuj\u0105c\u0105 jak proces \u201cpromocji\u201d b\u0119dzie wygl\u0105da\u0142.&nbsp;<\/p>\n\n\n\n<p>Mo\u017cemy zauwa\u017cy\u0107 tak\u017ce dalsz\u0105 inwestycje w narz\u0119dzi\u00f3wk\u0119. Stabilizacja analizy kodu oraz unikania nadmiarowych kompilacji (co jest rozwi\u0105zaniem na dobr\u0105 spraw\u0119 potencjalnie jeszcze skuteczniejszym ni\u017c nawet najszybszy nowy kompilator) maj\u0105 stanowi\u0107 uzupe\u0142nienie dzia\u0142a\u0144 zwi\u0105zanych z K2.&nbsp;<\/p>\n\n\n\n<p>Je\u017celi chodzi o Kotlina w wersji JVM i JS, na roadmapie nie pojawi\u0142y si\u0119 \u017cadne nowe pozycje z nim zwi\u0105zane. Og\u00f3lnie wida\u0107, \u017ce stabilizacja (w przypadku JS) i standaryzacja (w wypadku JVM) nowego formatu po\u015bredniego (internal representation &#8211; IR) dla obu j\u0119zyk\u00f3w poch\u0142ania mas\u0119 si\u0142 i troch\u0119 si\u0119 przeci\u0105ga. W dalszym ci\u0105gu czekamy wi\u0119c np. na wsparcie kapt (Kotlin Annotation Processor) w nowym JVMowym IR, a tak\u017ce na lepsze czasy kompilacji przy jego u\u017cyciu.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858d16bf65.png\" alt=\"\"\/><figcaption>No bo bez niego tak to wygl\u0105da.<\/figcaption><\/figure><\/div>\n\n\n<p>Podsumowuj\u0105c aktualizacj\u0119 Roadmapy &#8211; wida\u0107, \u017ce czasy du\u017cych zmian w j\u0119zyku mamy ju\u017c za sob\u0105. Tylko i wy\u0142\u0105cznie jedna nowa (bardzo kosmetyczna zmiana) w jego syntaxie &#8211; specjalna sk\u0142adnia dla operatora until &#8211;&nbsp; pokazuje, \u017ce Kotlin jako j\u0119zyk jest ju\u017c w zasadzie feature complete. Teraz nacisk k\u0142adziony jest g\u0142\u00f3wnie po pierwsze na wsparcie nowych platform, ale r\u00f3wnie\u017c dbanie o jak najwi\u0119kszy komfort pracy z ca\u0142ym ekosystemem &#8211; zar\u00f3wno przez programist\u00f3w zewn\u0119trznych, jak i samych tw\u00f3rc\u00f3w j\u0119zyka. Jest to nie najgorsza decyzja &#8211; to w ko\u0144cu w\u0142a\u015bnie \u015bwietn\u0105 integracj\u0105 z narz\u0119dziami i wygod\u0105 u\u017cycia Kotlin zdoby\u0142 przecie\u017c serca u\u017cytkownik\u00f3w.&nbsp;<\/p>\n\n\n\n<p>A jak ju\u017c jeste\u015bmy przy Kotlinie, to r\u00f3wnie\u017c pocz\u0105tkiem tygodnia pojawi\u0142a si\u0119 nowa wersja biblioteki KotlinDL o numerze 0.4, kt\u00f3ra wprowadza szereg nowo\u015bci, z czego t\u0105 najbardziej zwracaj\u0105c\u0105 uwag\u0119 (i przez to u\u017cywan\u0105 te\u017c w reklamie tej edycji) jest Pose Detector.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858d2d7346.gif\" alt=\"\" width=\"750\" height=\"375\"\/><figcaption>A\u017c mi si\u0119 \u0142ezka w oku zakr\u0119ci\u0142a, bo moj\u0105 prac\u0105 in\u017cyniersk\u0105 by\u0142a w\u0142a\u015bnie <a href=\"https:\/\/github.com\/ArturSkowronski\/KinectSDK-Kinventor\">forma detekcji pozy przy u\u017cyciu Kinecta<\/a>.<\/figcaption><\/figure><\/div>\n\n\n<p>Opr\u00f3cz niego nowy KotlinDL przynosi wsparcie dw\u00f3ch nowych modeli: EfficientDet oraz EfficientNet, oraz nowe warstwy wychodz\u0105ce poza to, co przynosi standardowa biblioteka TensorFlow. Je\u015bli chcecie wi\u0119cej informacji, tak\u017ce o pozosta\u0142ych nowo\u015bciach w tej wersji, <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2022\/06\/kotlindl-0-4-is-out-with-pose-detection-api-efficientdet-for-object-detection-and-efficientnet-for-image-recognition\/\">oficjalne Release Notes<\/a> s\u0105 naprawd\u0119 dobrze napisane, wi\u0119c zach\u0119cam do lektury.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html\">Kotlin roadmap<\/a><\/li><li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2022\/05\/kotlin-multiplatform-mobile-beta-roadmap-update\/\">Kotlin Multiplatform Mobile Beta Roadmap Update<\/a><\/li><li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2022\/06\/kotlindl-0-4-is-out-with-pose-detection-api-efficientdet-for-object-detection-and-efficientnet-for-image-recognition\/\">KotlinDL 0.4 Is Out With Pose Detection API, EfficientDet for Object Detection, and EfficientNet for Image Recognition<\/a><\/li><\/ul>\n\n\n\n<p>PS: Edycja powsta\u0142a przy <a href=\"https:\/\/www.youtube.com\/watch?v=rPbrR6b6ZYs\">NINA &#8211; Sleepwalking (Full Album)<\/a>.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dzisiaj wychodzimy troch\u0119 poza javow\u0105 banieczk\u0119, poniewa\u017c mamy dla was przegl\u0105d stanu ekosystemu Clojure, a tak\u017ce kotlinow\u0105 Roadmap\u0119. Zanim jednak przejdziemy do tego, wr\u00f3cimy jeszcze raz do tematu MicroStream, bo temat zaciekawi\u0142 mnie na tyle, \u017ce postanowi\u0142em troch\u0119 pogrzeba\u0107 \ud83d\ude09<\/p>\n","protected":false},"author":10,"featured_media":8131,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[259],"tags":[],"class_list":["post-9960","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm-pl"],"acf":{"estimated_reading_time":"9","feature_image_blog":{"ID":8132,"id":8132,"title":"shutterstock_1603545925-1-scaled","filename":"shutterstock_1603545925-1-scaled-1.webp","filesize":152378,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/shutterstock_1603545925-1-scaled-1.webp","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/shutterstock_1603545925-1-scaled-2\/","alt":"","author":"10","description":"","caption":"","name":"shutterstock_1603545925-1-scaled-2","status":"inherit","uploaded_to":9960,"date":"2022-06-07 16:36:25","modified":"2022-06-07 16:36:25","menu_order":0,"mime_type":"image\/webp","type":"image","subtype":"webp","icon":"https:\/\/vived.io\/wp-includes\/images\/media\/default.png","width":2560,"height":1707,"sizes":{"thumbnail":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/shutterstock_1603545925-1-scaled-1-150x150.webp","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/shutterstock_1603545925-1-scaled-1-300x200.webp","medium-width":300,"medium-height":200,"medium_large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/shutterstock_1603545925-1-scaled-1-768x512.webp","medium_large-width":768,"medium_large-height":512,"large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/shutterstock_1603545925-1-scaled-1-1024x683.webp","large-width":1024,"large-height":683,"1536x1536":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/shutterstock_1603545925-1-scaled-1-1536x1024.webp","1536x1536-width":1536,"1536x1536-height":1024,"2048x2048":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/shutterstock_1603545925-1-scaled-1-2048x1366.webp","2048x2048-width":2048,"2048x2048-height":1366,"gform-image-choice-sm":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/shutterstock_1603545925-1-scaled-1.webp","gform-image-choice-sm-width":300,"gform-image-choice-sm-height":200,"gform-image-choice-md":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/shutterstock_1603545925-1-scaled-1.webp","gform-image-choice-md-width":400,"gform-image-choice-md-height":267,"gform-image-choice-lg":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/shutterstock_1603545925-1-scaled-1.webp","gform-image-choice-lg-width":600,"gform-image-choice-lg-height":400}},"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM-1.png","feature_image_visible":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JVM Tuesday vol. 90 \u2013 Microstream, State of Clojure i Roadmapa Kotlina\ufffc - Vived<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol. 90 \u2013 Microstream, State of Clojure i Roadmapa Kotlina\ufffc - Vived\" \/>\n<meta property=\"og:description\" content=\"Dzisiaj wychodzimy troch\u0119 poza javow\u0105 banieczk\u0119, poniewa\u017c mamy dla was przegl\u0105d stanu ekosystemu Clojure, a tak\u017ce kotlinow\u0105 Roadmap\u0119. Zanim jednak przejdziemy do tego, wr\u00f3cimy jeszcze raz do tematu MicroStream, bo temat zaciekawi\u0142 mnie na tyle, \u017ce postanowi\u0142em troch\u0119 pogrzeba\u0107 \ud83d\ude09\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-07T16:38:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Artur Skowro\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol. 90 \u2013 Microstream, State of Clojure i Roadmapa Kotlina\ufffc\",\"datePublished\":\"2022-06-07T16:38:31+00:00\",\"dateModified\":\"2022-09-19T11:10:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/\"},\"wordCount\":1976,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/\",\"name\":\"JVM Tuesday vol. 90 \u2013 Microstream, State of Clojure i Roadmapa Kotlina\ufffc - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM.png\",\"datePublished\":\"2022-06-07T16:38:31+00:00\",\"dateModified\":\"2022-09-19T11:10:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol. 90 \u2013 Microstream, State of Clojure i Roadmapa Kotlina\ufffc\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vived.io\/pl\/#website\",\"url\":\"https:\/\/vived.io\/pl\/\",\"name\":\"Vived\",\"description\":\"platform empowering IT people and technology companies to synergic growth\",\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vived.io\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vived.io\/pl\/#organization\",\"name\":\"Vived\",\"url\":\"https:\/\/vived.io\/pl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"width\":136,\"height\":45,\"caption\":\"Vived\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\",\"name\":\"Artur Skowro\u0144ski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"caption\":\"Artur Skowro\u0144ski\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JVM Tuesday vol. 90 \u2013 Microstream, State of Clojure i Roadmapa Kotlina\ufffc - Vived","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol. 90 \u2013 Microstream, State of Clojure i Roadmapa Kotlina\ufffc - Vived","og_description":"Dzisiaj wychodzimy troch\u0119 poza javow\u0105 banieczk\u0119, poniewa\u017c mamy dla was przegl\u0105d stanu ekosystemu Clojure, a tak\u017ce kotlinow\u0105 Roadmap\u0119. Zanim jednak przejdziemy do tego, wr\u00f3cimy jeszcze raz do tematu MicroStream, bo temat zaciekawi\u0142 mnie na tyle, \u017ce postanowi\u0142em troch\u0119 pogrzeba\u0107 \ud83d\ude09","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/","og_site_name":"Vived","article_published_time":"2022-06-07T16:38:31+00:00","article_modified_time":"2022-09-19T11:10:37+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM.png","type":"image\/png"}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol. 90 \u2013 Microstream, State of Clojure i Roadmapa Kotlina\ufffc","datePublished":"2022-06-07T16:38:31+00:00","dateModified":"2022-09-19T11:10:37+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/"},"wordCount":1976,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM.png","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/","name":"JVM Tuesday vol. 90 \u2013 Microstream, State of Clojure i Roadmapa Kotlina\ufffc - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM.png","datePublished":"2022-06-07T16:38:31+00:00","dateModified":"2022-09-19T11:10:37+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/JVM.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-90-microstream-state-of-clojure-i-roadmapa-kotlina%ef%bf%bc\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol. 90 \u2013 Microstream, State of Clojure i Roadmapa Kotlina\ufffc"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3","name":"Artur Skowro\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","caption":"Artur Skowro\u0144ski"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>1. Czym jest MicroStream?<\/h2>\n","innerContent":["\n<h2>1. Czym jest MicroStream?<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W zesz\u0142ym tygodniu ko\u0144czyli\u015bmy nasz\u0105 edycj\u0119 na Micronaucie, a w tym mamy do tego pewien followup. O ile przekazali\u015bmy Wam informacj\u0119, \u017ce w nowej wersji frameworka pojawi si\u0119 wsparcie dla MicroStream w formie micronautowego modu\u0142u, to nie zd\u0105\u017cyli\u015bmy ju\u017c z og\u0142oszeniem, \u017ce <a href=\"https:\/\/micronaut.io\/2022\/05\/31\/microstream-sponsorship\/\">MicroStream og\u0142osi\u0142o do\u0142\u0105czenie do Micronaut Foundation<\/a>. Narz\u0119dzie sta\u0142o si\u0119 srebrnym sponsorem frameworku i pojawi\u0142a si\u0119 zapowied\u017a dalszego zacie\u015bniania wsp\u00f3\u0142pracy. Dlatego te\u017c wr\u00f3\u0107my jeszcze jeszcze raz do tematu, i w nieco d\u0142u\u017cszej formie porozmawiajmy o tym, czym MicroStream jest i na jakie problemy odpowiada.<\/p>\n","innerContent":["\n<p>W zesz\u0142ym tygodniu ko\u0144czyli\u015bmy nasz\u0105 edycj\u0119 na Micronaucie, a w tym mamy do tego pewien followup. O ile przekazali\u015bmy Wam informacj\u0119, \u017ce w nowej wersji frameworka pojawi si\u0119 wsparcie dla MicroStream w formie micronautowego modu\u0142u, to nie zd\u0105\u017cyli\u015bmy ju\u017c z og\u0142oszeniem, \u017ce <a href=\"https:\/\/micronaut.io\/2022\/05\/31\/microstream-sponsorship\/\">MicroStream og\u0142osi\u0142o do\u0142\u0105czenie do Micronaut Foundation<\/a>. Narz\u0119dzie sta\u0142o si\u0119 srebrnym sponsorem frameworku i pojawi\u0142a si\u0119 zapowied\u017a dalszego zacie\u015bniania wsp\u00f3\u0142pracy. Dlatego te\u017c wr\u00f3\u0107my jeszcze jeszcze raz do tematu, i w nieco d\u0142u\u017cszej formie porozmawiajmy o tym, czym MicroStream jest i na jakie problemy odpowiada.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":4627,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image.png\" alt=\"\" class=\"wp-image-4627\"\/><figcaption>I na to pytanie troch\u0119 te\u017c, aczkolwiek z ma\u0142ym twistem \ud83d\ude09<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/image.png\" alt=\"\" class=\"wp-image-4627\"\/><figcaption>I na to pytanie troch\u0119 te\u017c, aczkolwiek z ma\u0142ym twistem \ud83d\ude09<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Kojarzycie taki termin jak niedopasowanie impedancji obiektowo-relacyjnej? Inaczej Object-relational impedance mismatch - kocham bezpo\u015brednie polskie t\u0142umaczenia? Za tym cudownym terminem stoi problem stary jak frameworki ORM - co nale\u017cy rozwin\u0105\u0107 jako Object-Relational Mapping. To za\u015b mo\u017cna przet\u0142umaczy\u0107 na mapowanie obiektowo-relacyjne (troch\u0119 lepiej). Wynika on z tego, \u017ce model obiektowy i relacyjny s\u0105 ze sob\u0105 mocno niekompatybilne, i to jeszcze na poziomie samych koncepcji.&nbsp;<\/p>\n","innerContent":["\n<p>Kojarzycie taki termin jak niedopasowanie impedancji obiektowo-relacyjnej? Inaczej Object-relational impedance mismatch - kocham bezpo\u015brednie polskie t\u0142umaczenia? Za tym cudownym terminem stoi problem stary jak frameworki ORM - co nale\u017cy rozwin\u0105\u0107 jako Object-Relational Mapping. To za\u015b mo\u017cna przet\u0142umaczy\u0107 na mapowanie obiektowo-relacyjne (troch\u0119 lepiej). Wynika on z tego, \u017ce model obiektowy i relacyjny s\u0105 ze sob\u0105 mocno niekompatybilne, i to jeszcze na poziomie samych koncepcji.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Za Wikipedi\u0105, w wolnym t\u0142umaczeniu:<\/p>\n","innerContent":["\n<p>Za Wikipedi\u0105, w wolnym t\u0142umaczeniu:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/quote","attrs":[],"innerBlocks":[],"innerHTML":"\n<blockquote class=\"wp-block-quote\"><p>Obiekty odnosz\u0105 si\u0119 do siebie nawzajem, tworz\u0105c co\u015b co w sensie matematycznym okre\u015bla si\u0119 jako graf skierowany (sie\u0107 zawieraj\u0105c\u0105 p\u0119tle i cykle). Schematy relacyjne s\u0105 z kolei tabelaryczne i oparte na algebrze relacyjnej, kt\u00f3ra definiuje powi\u0105zane ze sob\u0105 heterogeniczne krotki (grupy p\u00f3l danych w \"wierszu\" o r\u00f3\u017cnych typach dla ka\u017cdego pola), gdzie powi\u0105zania s\u0105 zawsze odwracalne (klucze obce mo\u017cna \u015bledzi\u0107 wstecz, poniewa\u017c INNER JOIN jest symetryczny), co jest cech\u0105 bardziej zbli\u017con\u0105 do graf\u00f3w nieskierowanych.<\/p><\/blockquote>\n","innerContent":["\n<blockquote class=\"wp-block-quote\"><p>Obiekty odnosz\u0105 si\u0119 do siebie nawzajem, tworz\u0105c co\u015b co w sensie matematycznym okre\u015bla si\u0119 jako graf skierowany (sie\u0107 zawieraj\u0105c\u0105 p\u0119tle i cykle). Schematy relacyjne s\u0105 z kolei tabelaryczne i oparte na algebrze relacyjnej, kt\u00f3ra definiuje powi\u0105zane ze sob\u0105 heterogeniczne krotki (grupy p\u00f3l danych w \"wierszu\" o r\u00f3\u017cnych typach dla ka\u017cdego pola), gdzie powi\u0105zania s\u0105 zawsze odwracalne (klucze obce mo\u017cna \u015bledzi\u0107 wstecz, poniewa\u017c INNER JOIN jest symetryczny), co jest cech\u0105 bardziej zbli\u017con\u0105 do graf\u00f3w nieskierowanych.<\/p><\/blockquote>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>ORMy zawsze musia\u0142y sobie z tym niedopasowaniem radzi\u0107, w lepszy lub gorszy spos\u00f3b, modeluj\u0105c dane w spos\u00f3b bardzo ko\u015blawy. Cz\u0119sto do tego stopnia \u017ce wymusza\u0142y specyficzny spos\u00f3b pisania kodu, taki by frameworkowi si\u0119 podoba\u0142o, lub te\u017c&nbsp;tworzenie warstw po\u015brednich, co sko\u0144czy\u0142o si\u0119 mod\u0105 na u\u017cywanie framework\u00f3w jak najbli\u017cszych SQL-owi jako takiemu.&nbsp;<\/p>\n","innerContent":["\n<p>ORMy zawsze musia\u0142y sobie z tym niedopasowaniem radzi\u0107, w lepszy lub gorszy spos\u00f3b, modeluj\u0105c dane w spos\u00f3b bardzo ko\u015blawy. Cz\u0119sto do tego stopnia \u017ce wymusza\u0142y specyficzny spos\u00f3b pisania kodu, taki by frameworkowi si\u0119 podoba\u0142o, lub te\u017c&nbsp;tworzenie warstw po\u015brednich, co sko\u0144czy\u0142o si\u0119 mod\u0105 na u\u017cywanie framework\u00f3w jak najbli\u017cszych SQL-owi jako takiemu.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>MicroStream podchodzi do problemu inaczej. Zamiast u\u017cywa\u0107 modelu relacyjnego, serializuje obiekty do tak zwanego ObjectGraphu. Dzi\u0119ki temu nie s\u0105 wymagane \u017cadne nadmiarowe konwersje, procesor si\u0119 nie zu\u017cywa i w og\u00f3le ratujemy planet\u0119.<\/p>\n","innerContent":["\n<p>MicroStream podchodzi do problemu inaczej. Zamiast u\u017cywa\u0107 modelu relacyjnego, serializuje obiekty do tak zwanego ObjectGraphu. Dzi\u0119ki temu nie s\u0105 wymagane \u017cadne nadmiarowe konwersje, procesor si\u0119 nie zu\u017cywa i w og\u00f3le ratujemy planet\u0119.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858c9e1ca6.gif\" alt=\"\"\/><figcaption>Ale serio serio, jako argument za spr\u00f3bowaniem u\u017cywaj\u0105 \u201cSave lots of CPU power, CO2 emission, and costs in the data center.\u201d \ud83d\ude09<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858c9e1ca6.gif\" alt=\"\"\/><figcaption>Ale serio serio, jako argument za spr\u00f3bowaniem u\u017cywaj\u0105 \u201cSave lots of CPU power, CO2 emission, and costs in the data center.\u201d \ud83d\ude09<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Chwal\u0105 si\u0119 te\u017c, \u017ce ichniejszy DataGraph mo\u017ce by\u0107 persystowany zar\u00f3wno in-memory, w zewn\u0119trznym cache, jak i ka\u017cdej bazie danych przyjmuj\u0105cej binarne dane. U\u017cywanie indeks\u00f3w przy pobieranie danych zast\u0105piono za\u015b tworzeniem inteligentnych podgraf\u00f3w, pozwalaj\u0105cych na efektywne dotarcie do konkretnego podzbioru ca\u0142ego zrzutu pami\u0119ci. Ca\u0142o\u015b\u0107 ma by\u0107 ma\u0142a i bardzo \u201cnatywna\u201d dla Javy, dobrze integrowa\u0107 si\u0119 z natywnymi API Javy, jak cho\u0107by Stream API i pozwalaj\u0105c na \u0142atw\u0105 serializacje r\u00f3wnie\u017c obiekt\u00f3w, nad kt\u00f3rymi nie mamy kontroli.<\/p>\n","innerContent":["\n<p>Chwal\u0105 si\u0119 te\u017c, \u017ce ichniejszy DataGraph mo\u017ce by\u0107 persystowany zar\u00f3wno in-memory, w zewn\u0119trznym cache, jak i ka\u017cdej bazie danych przyjmuj\u0105cej binarne dane. U\u017cywanie indeks\u00f3w przy pobieranie danych zast\u0105piono za\u015b tworzeniem inteligentnych podgraf\u00f3w, pozwalaj\u0105cych na efektywne dotarcie do konkretnego podzbioru ca\u0142ego zrzutu pami\u0119ci. Ca\u0142o\u015b\u0107 ma by\u0107 ma\u0142a i bardzo \u201cnatywna\u201d dla Javy, dobrze integrowa\u0107 si\u0119 z natywnymi API Javy, jak cho\u0107by Stream API i pozwalaj\u0105c na \u0142atw\u0105 serializacje r\u00f3wnie\u017c obiekt\u00f3w, nad kt\u00f3rymi nie mamy kontroli.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A sk\u0105d bud\u017cet na sponsoring Micronauta? W wersji Community tw\u00f3rcy MicroStreama umo\u017cliwiaj\u0105 tylko i wy\u0142\u0105cznie PostgreSQL, MongoDB, SQLite i systmeu plik\u00f3w. Bardziej zaawansowane rozwi\u0105zania, jak cho\u0107by np. S3 czy inne blob storage, dost\u0119pne s\u0105 w wydaniu komercyjnym. Niestety, nigdzie nie uda\u0142o mi si\u0119 znale\u017a\u0107 grona p\u0142ac\u0105cych klient\u00f3w rozwi\u0105zania. <\/p>\n","innerContent":["\n<p>A sk\u0105d bud\u017cet na sponsoring Micronauta? W wersji Community tw\u00f3rcy MicroStreama umo\u017cliwiaj\u0105 tylko i wy\u0142\u0105cznie PostgreSQL, MongoDB, SQLite i systmeu plik\u00f3w. Bardziej zaawansowane rozwi\u0105zania, jak cho\u0107by np. S3 czy inne blob storage, dost\u0119pne s\u0105 w wydaniu komercyjnym. Niestety, nigdzie nie uda\u0142o mi si\u0119 znale\u017a\u0107 grona p\u0142ac\u0105cych klient\u00f3w rozwi\u0105zania. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Je\u015bli jeszcze jest Wam ma\u0142o w temacie MicroStream, to <a href=\"https:\/\/foojay.io\/today\/microstream-part-1-what-is-it\/\">foojay.io w\u0142a\u015bnie rozpocz\u0119\u0142o seri\u0119 na temat tego narz\u0119dzia<\/a>. Jej pierwsz\u0105 cz\u0119\u015b\u0107 znajdziecie tutaj, wraz z du\u017co szerszym wprowadzeniem w temat, wraz z szerokimi potencjalnymi przypadkami u\u017cycia. Akurat w ostatnich tygodniach ci\u0105gle trafiam na MicroStream, i cho\u0107 ci\u0119\u017cko mi powiedzie\u0107 na ile to jest oddolne dzia\u0142anie spo\u0142eczno\u015bci, a na ile akcja marketingowa\u2026 no c\u00f3\u017c, zadzia\u0142a\u0142o. Mo\u017ce w\u0142a\u015bnie stwierdzili, \u017ce czas si\u0119 zacz\u0105\u0107 mocnie monetyzowa\u0107.<\/p>\n","innerContent":["\n<p>Je\u015bli jeszcze jest Wam ma\u0142o w temacie MicroStream, to <a href=\"https:\/\/foojay.io\/today\/microstream-part-1-what-is-it\/\">foojay.io w\u0142a\u015bnie rozpocz\u0119\u0142o seri\u0119 na temat tego narz\u0119dzia<\/a>. Jej pierwsz\u0105 cz\u0119\u015b\u0107 znajdziecie tutaj, wraz z du\u017co szerszym wprowadzeniem w temat, wraz z szerokimi potencjalnymi przypadkami u\u017cycia. Akurat w ostatnich tygodniach ci\u0105gle trafiam na MicroStream, i cho\u0107 ci\u0119\u017cko mi powiedzie\u0107 na ile to jest oddolne dzia\u0142anie spo\u0142eczno\u015bci, a na ile akcja marketingowa\u2026 no c\u00f3\u017c, zadzia\u0142a\u0142o. Mo\u017ce w\u0142a\u015bnie stwierdzili, \u017ce czas si\u0119 zacz\u0105\u0107 mocnie monetyzowa\u0107.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858caa3477.gif\" alt=\"\"\/><figcaption>A czy kto\u015b z Was u\u017cywa\u0142 MicroStreama? Dajcie zna\u0107 \ud83d\ude09<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858caa3477.gif\" alt=\"\"\/><figcaption>A czy kto\u015b z Was u\u017cywa\u0142 MicroStreama? Dajcie zna\u0107 \ud83d\ude09<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/foojay.io\/today\/microstream-part-1-what-is-it\/\">MicroStream \u2013 Part 1: What is it?<\/a><\/li><li><a href=\"https:\/\/micronaut.io\/2022\/05\/31\/microstream-sponsorship\/\">Announcing Our Newest Silver Sponsor: MicroStream - Micronaut Framework<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/foojay.io\/today\/microstream-part-1-what-is-it\/\">MicroStream \u2013 Part 1: What is it?<\/a><\/li><li><a href=\"https:\/\/micronaut.io\/2022\/05\/31\/microstream-sponsorship\/\">Announcing Our Newest Silver Sponsor: MicroStream - Micronaut Framework<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. The State of Clojure 2022<\/h2>\n","innerContent":["\n<h2>2. The State of Clojure 2022<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dawno nie by\u0142o u nas Clojure, co? To dobrze si\u0119 sk\u0142ada, \u017ce akurat pojawia si\u0119 okazja, \u017ceby troch\u0119 nadrobi\u0107 to, co wydarzy\u0142o si\u0119 w ekosystemie tego kr\u00f3la wsp\u00f3\u0142czesnych j\u0119zyk\u00f3w lispopodobnych.&nbsp;<\/p>\n","innerContent":["\n<p>Dawno nie by\u0142o u nas Clojure, co? To dobrze si\u0119 sk\u0142ada, \u017ce akurat pojawia si\u0119 okazja, \u017ceby troch\u0119 nadrobi\u0107 to, co wydarzy\u0142o si\u0119 w ekosystemie tego kr\u00f3la wsp\u00f3\u0142czesnych j\u0119zyk\u00f3w lispopodobnych.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cb3d94c.png\" alt=\"\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cb3d94c.png\" alt=\"\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zacznijmy od tego - czy Clojure jest u\u017cywany w realnych projektach? Jak najbardziej, mamy do czynienia z coraz wi\u0119kszym odestkiem os\u00f3b, kt\u00f3re u\u017cywaj\u0105 Clojure komercyjnie. Co ciekawe, wi\u0105\u017ce si\u0119 to ze stratami we wszystkich innych grupach. Ciekawe, czy oznacza to pewnego rodzaju ch\u00f3w wsobny i po prostu pewne przemieszanie w ramach do\u015b\u0107 sta\u0142ej grupy? Akurat brakuje mi w ankiecie danych na temat wzrostu ca\u0142ego ekosystemu.<\/p>\n","innerContent":["\n<p>Zacznijmy od tego - czy Clojure jest u\u017cywany w realnych projektach? Jak najbardziej, mamy do czynienia z coraz wi\u0119kszym odestkiem os\u00f3b, kt\u00f3re u\u017cywaj\u0105 Clojure komercyjnie. Co ciekawe, wi\u0105\u017ce si\u0119 to ze stratami we wszystkich innych grupach. Ciekawe, czy oznacza to pewnego rodzaju ch\u00f3w wsobny i po prostu pewne przemieszanie w ramach do\u015b\u0107 sta\u0142ej grupy? Akurat brakuje mi w ankiecie danych na temat wzrostu ca\u0142ego ekosystemu.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cb91172.png\" alt=\"\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cb91172.png\" alt=\"\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Le\u0107my dalej. Sk\u0105d ludzie bior\u0105 si\u0119 w ekosystemie Clojurowym? Java to do\u015b\u0107 naturalny kierunek tranzycji, JavaScript r\u00f3wnie\u017c (ClojureScript to jeden z motor\u00f3w nap\u0119dowych ca\u0142ego projektu), ale\u2026 Python? musz\u0119 przyzna\u0107, \u017ce jest to dla mnie do\u015b\u0107 zaskakuj\u0105cy kierunek tranzycji. By\u0142oby \u015bmiesznie, jakby by\u0142 to efekt jakiej\u015b pojedynczej du\u017cej tranzycji z Pythona do Clojure \ud83d\ude09 Ale efekt jest do\u015b\u0107 sta\u0142y, wi\u0119c mo\u017ce jaki\u015b czytaj\u0105cy to clojurowiec mnie o\u015bwieci?<\/p>\n","innerContent":["\n<p>Le\u0107my dalej. Sk\u0105d ludzie bior\u0105 si\u0119 w ekosystemie Clojurowym? Java to do\u015b\u0107 naturalny kierunek tranzycji, JavaScript r\u00f3wnie\u017c (ClojureScript to jeden z motor\u00f3w nap\u0119dowych ca\u0142ego projektu), ale\u2026 Python? musz\u0119 przyzna\u0107, \u017ce jest to dla mnie do\u015b\u0107 zaskakuj\u0105cy kierunek tranzycji. By\u0142oby \u015bmiesznie, jakby by\u0142 to efekt jakiej\u015b pojedynczej du\u017cej tranzycji z Pythona do Clojure \ud83d\ude09 Ale efekt jest do\u015b\u0107 sta\u0142y, wi\u0119c mo\u017ce jaki\u015b czytaj\u0105cy to clojurowiec mnie o\u015bwieci?<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","width":673,"height":591},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cbe3a1a.png\" alt=\"\" width=\"673\" height=\"591\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cbe3a1a.png\" alt=\"\" width=\"673\" height=\"591\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Nie wszystkie wykresy mo\u017cna znale\u017a\u0107 w oryginalnym po\u015bcie, o dost\u0119p do niekt\u00f3rych dane trzeba si\u0119 troch\u0119 natrudzi\u0107. By\u0142em bardzo ciekawy, jak rozk\u0142ada si\u0119 u\u017cycie w poszczeg\u00f3lnych cz\u0119\u015bciach bran\u017cy, ale nie znalaz\u0142em tego w po\u015bcie towarzysz\u0105cym wynikom, w zwi\u0105zku z czym zagl\u0105dn\u0105\u0142em do \u201cczystych\u201d danych. Okazuje si\u0119, \u017ce najcz\u0119stszym miejscem u\u017cycia Clojure jest\u2026 Web Development i projekty Open Source, a dopiero na trzecim s\u0105 projekty komercyjne (ciekawe, jak maj\u0105 si\u0119 one do Web Developmentu). Podejrzewam, \u017ce du\u017ca w tym zas\u0142uga ClojureScripta.<\/p>\n","innerContent":["\n<p>Nie wszystkie wykresy mo\u017cna znale\u017a\u0107 w oryginalnym po\u015bcie, o dost\u0119p do niekt\u00f3rych dane trzeba si\u0119 troch\u0119 natrudzi\u0107. By\u0142em bardzo ciekawy, jak rozk\u0142ada si\u0119 u\u017cycie w poszczeg\u00f3lnych cz\u0119\u015bciach bran\u017cy, ale nie znalaz\u0142em tego w po\u015bcie towarzysz\u0105cym wynikom, w zwi\u0105zku z czym zagl\u0105dn\u0105\u0142em do \u201cczystych\u201d danych. Okazuje si\u0119, \u017ce najcz\u0119stszym miejscem u\u017cycia Clojure jest\u2026 Web Development i projekty Open Source, a dopiero na trzecim s\u0105 projekty komercyjne (ciekawe, jak maj\u0105 si\u0119 one do Web Developmentu). Podejrzewam, \u017ce du\u017ca w tym zas\u0142uga ClojureScripta.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","width":650,"height":580},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cca7197.png\" alt=\"\" width=\"650\" height=\"580\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cca7197.png\" alt=\"\" width=\"650\" height=\"580\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Podobnie, po dane o u\u017cyciu w konkretnych domenach te\u017c trzeba si\u0119 schyli\u0107. Tutaj jednak nie ma zaskoczenia - Clojure zawsze kojarzy\u0142 si\u0119 z FinTechami, i do\u015b\u0107 dobrze oddaje to powy\u017csza tabelka.<\/p>\n","innerContent":["\n<p>Podobnie, po dane o u\u017cyciu w konkretnych domenach te\u017c trzeba si\u0119 schyli\u0107. Tutaj jednak nie ma zaskoczenia - Clojure zawsze kojarzy\u0142 si\u0119 z FinTechami, i do\u015b\u0107 dobrze oddaje to powy\u017csza tabelka.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858ceab7cf.png\" alt=\"\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858ceab7cf.png\" alt=\"\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Na koniec zostawi\u0142em sobie m\u00f3j ulubiony wykres, ten kt\u00f3ry dotyczy zaanga\u017cowania w spo\u0142eczno\u015b\u0107 j\u0119zyka. Ciekawe, na ile grupa wype\u0142niaj\u0105ca ankiet\u0119 to ludzie z pewn\u0105 inklinacj\u0105 do \u201cudzielania si\u0119\u201d (albo aktywna deklaratywnie), ale zaskakuje, \u017ce prawie \u0107wier\u0107 z nich zajmuje si\u0119 rozwojem narz\u0119dzi open-source, a prawie po\u0142owa zajmuje si\u0119 ewangelizacj\u0105 w\u0142asnej organizacji. Z mojego do\u015bwiadczenia - Ci od Clojure tak maj\u0105. Uwierzcie mi, <a href=\"https:\/\/www.youtube.com\/watch?v=I6mbnQeDO9Y\">co\u015b o tym wiem na w\u0142asnym przyk\u0142adzie<\/a>.&nbsp;<\/p>\n","innerContent":["\n<p>Na koniec zostawi\u0142em sobie m\u00f3j ulubiony wykres, ten kt\u00f3ry dotyczy zaanga\u017cowania w spo\u0142eczno\u015b\u0107 j\u0119zyka. Ciekawe, na ile grupa wype\u0142niaj\u0105ca ankiet\u0119 to ludzie z pewn\u0105 inklinacj\u0105 do \u201cudzielania si\u0119\u201d (albo aktywna deklaratywnie), ale zaskakuje, \u017ce prawie \u0107wier\u0107 z nich zajmuje si\u0119 rozwojem narz\u0119dzi open-source, a prawie po\u0142owa zajmuje si\u0119 ewangelizacj\u0105 w\u0142asnej organizacji. Z mojego do\u015bwiadczenia - Ci od Clojure tak maj\u0105. Uwierzcie mi, <a href=\"https:\/\/www.youtube.com\/watch?v=I6mbnQeDO9Y\">co\u015b o tym wiem na w\u0142asnym przyk\u0142adzie<\/a>.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Troch\u0119 jak prawnicy. Po czym poznasz programist\u0119 Clojure? Bo Ci o tym powie.<\/p>\n","innerContent":["\n<p>Troch\u0119 jak prawnicy. Po czym poznasz programist\u0119 Clojure? Bo Ci o tym powie.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":[],"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cf2eeca.png\" alt=\"\"\/><figcaption> I to w czym\u015b co przypomina \u201cstarsz\u0105 mow\u0119\u201d.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858cf2eeca.png\" alt=\"\"\/><figcaption> I to w czym\u015b co przypomina \u201cstarsz\u0105 mow\u0119\u201d.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dane z ankiety pewnie nie nale\u017cy traktowa\u0107 jako ostatecznego \u017ar\u00f3d\u0142a prawdy na temat ekosystemu, ale w dalszym ci\u0105gu stanowi\u0105 okno w spo\u0142eczno\u015b\u0107 Clojure. Pe\u0142ne rezultaty mo\u017cecie <a href=\"https:\/\/www.surveymonkey.com\/results\/SM-QRiy0fSu3bmDK_2FSNMplVJw_3D_3D\/\">znale\u017a\u0107 tutaj<\/a>, w tym odpowied\u017a na pytania otwarte i wi\u0119cej szczeg\u00f3\u0142\u00f3w. Jakby kto\u015b si\u0119 zastanawia\u0142 - w ankiecie udzia\u0142 wzi\u0119\u0142o 2352 osoby.<\/p>\n","innerContent":["\n<p>Dane z ankiety pewnie nie nale\u017cy traktowa\u0107 jako ostatecznego \u017ar\u00f3d\u0142a prawdy na temat ekosystemu, ale w dalszym ci\u0105gu stanowi\u0105 okno w spo\u0142eczno\u015b\u0107 Clojure. Pe\u0142ne rezultaty mo\u017cecie <a href=\"https:\/\/www.surveymonkey.com\/results\/SM-QRiy0fSu3bmDK_2FSNMplVJw_3D_3D\/\">znale\u017a\u0107 tutaj<\/a>, w tym odpowied\u017a na pytania otwarte i wi\u0119cej szczeg\u00f3\u0142\u00f3w. Jakby kto\u015b si\u0119 zastanawia\u0142 - w ankiecie udzia\u0142 wzi\u0119\u0142o 2352 osoby.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a:<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a:<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/clojure.org\/news\/2022\/06\/02\/state-of-clojure-2022\">State of Clojure 2022 Results<\/a><\/li><li><a href=\"https:\/\/www.surveymonkey.com\/results\/SM-QRiy0fSu3bmDK_2FSNMplVJw_3D_3D\/\">State of Clojure Community 2022 - SurveyMonkey<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/clojure.org\/news\/2022\/06\/02\/state-of-clojure-2022\">State of Clojure 2022 Results<\/a><\/li><li><a href=\"https:\/\/www.surveymonkey.com\/results\/SM-QRiy0fSu3bmDK_2FSNMplVJw_3D_3D\/\">State of Clojure Community 2022 - SurveyMonkey<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>3. Aktualizacja Roadmapy Kotlina!<\/h2>\n","innerContent":["\n<h2>3. Aktualizacja Roadmapy Kotlina!<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Po okresie posuchy, je\u015bli chodzi o nowe informacje na temat Kotlina, sytuacja powoli zaczyna si\u0119 rozkr\u0119ca\u0107 - nareszcie doczekali\u015bmy si\u0119 bowiem <a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html\">nowej wersji Roadmap\u0119 j\u0119zyka<\/a>. W ramach niej, ludzie z JetBrains postanowili zawrze\u0107 wszelkie swoje plany na drug\u0105 po\u0142ow\u0119 2022, ale r\u00f3wnie\u017c uchyli\u0107 r\u0105bka tajemnicy na to co przyniesie pocz\u0105tek 2023.&nbsp;<\/p>\n","innerContent":["\n<p>Po okresie posuchy, je\u015bli chodzi o nowe informacje na temat Kotlina, sytuacja powoli zaczyna si\u0119 rozkr\u0119ca\u0107 - nareszcie doczekali\u015bmy si\u0119 bowiem <a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html\">nowej wersji Roadmap\u0119 j\u0119zyka<\/a>. W ramach niej, ludzie z JetBrains postanowili zawrze\u0107 wszelkie swoje plany na drug\u0105 po\u0142ow\u0119 2022, ale r\u00f3wnie\u017c uchyli\u0107 r\u0105bka tajemnicy na to co przyniesie pocz\u0105tek 2023.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","width":675,"height":211},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858d0168fa.png\" alt=\"\" width=\"675\" height=\"211\"\/><figcaption>Roadmapy s\u0105 najlepsze!<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858d0168fa.png\" alt=\"\" width=\"675\" height=\"211\"\/><figcaption>Roadmapy s\u0105 najlepsze!<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Nie da si\u0119 ukry\u0107, \u017ce tw\u00f3rcy Kotlina mocno wzi\u0119li sobie do serca uwagi u\u017cytkownik\u00f3w, narzekaj\u0105cych na suboptymalny developer experience j\u0119zyka, przejawiaj\u0105cy si\u0119 min. d\u0142ugim czasem kompilacji. Dlatego te\u017c kluczow\u0105 zmian\u0105, na kt\u00f3r\u0105 szczeg\u00f3lny nacisk k\u0142ad\u0105 tw\u00f3rcy j\u0119zyka jest nowy kompilator.&nbsp;<\/p>\n","innerContent":["\n<p>Nie da si\u0119 ukry\u0107, \u017ce tw\u00f3rcy Kotlina mocno wzi\u0119li sobie do serca uwagi u\u017cytkownik\u00f3w, narzekaj\u0105cych na suboptymalny developer experience j\u0119zyka, przejawiaj\u0105cy si\u0119 min. d\u0142ugim czasem kompilacji. Dlatego te\u017c kluczow\u0105 zmian\u0105, na kt\u00f3r\u0105 szczeg\u00f3lny nacisk k\u0142ad\u0105 tw\u00f3rcy j\u0119zyka jest nowy kompilator.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>K2, bo tak si\u0119 nazywa, ma postawione dwa cele. Po pierwsze, ma on sam w sobie by\u0107 znacznie szybszy od istniej\u0105cych rozwi\u0105za\u0144. Jednocze\u015bnie, jego wdro\u017cenie pozwoli tw\u00f3rcom na \u0142atwiejsz\u0105 innowacj\u0119, poprzez pozbycie si\u0119 d\u0142ugu technicznego. K2 r\u00f3\u017cni si\u0119 bowiem od dotychczasowych rozwi\u0105za\u0144 tym, \u017ce ma stanowi\u0107 wsp\u00f3ln\u0105 abstrakcj\u0119 dla ca\u0142ego Kotlina Multiplatform, a to wszystko dzi\u0119ki nowemu formatowi po\u015bredniemu. W tej chwili wariant JVMowy przeciera szlaki, ale ju\u017c w tej chwili m\u00f3wi si\u0119 o wersja dla Kotlin JS, Kotlin Native i dla wyda\u0144 mobilnych. W Roadmapie znale\u017a\u0107 mo\u017cna tematy te\u017c stabilizacje API pozwalaj\u0105cego na pisanie plugin\u00f3w, a tak\u017ce oficjalny release wersji beta... niestety na razie nie podano \u017cadnych dat. Pe\u0142ne wdro\u017cenie K2 zajmie jeszcze troch\u0119 czasu, dlatego te\u017c w planach tw\u00f3rc\u00f3w Kotlina pojawi\u0142y si\u0119 nowo\u015bci zwi\u0105zane z istniej\u0105cym kompilatorem, jak na przyk\u0142ad usprawnienie kotlinowych skrypt\u00f3w.<\/p>\n","innerContent":["\n<p>K2, bo tak si\u0119 nazywa, ma postawione dwa cele. Po pierwsze, ma on sam w sobie by\u0107 znacznie szybszy od istniej\u0105cych rozwi\u0105za\u0144. Jednocze\u015bnie, jego wdro\u017cenie pozwoli tw\u00f3rcom na \u0142atwiejsz\u0105 innowacj\u0119, poprzez pozbycie si\u0119 d\u0142ugu technicznego. K2 r\u00f3\u017cni si\u0119 bowiem od dotychczasowych rozwi\u0105za\u0144 tym, \u017ce ma stanowi\u0107 wsp\u00f3ln\u0105 abstrakcj\u0119 dla ca\u0142ego Kotlina Multiplatform, a to wszystko dzi\u0119ki nowemu formatowi po\u015bredniemu. W tej chwili wariant JVMowy przeciera szlaki, ale ju\u017c w tej chwili m\u00f3wi si\u0119 o wersja dla Kotlin JS, Kotlin Native i dla wyda\u0144 mobilnych. W Roadmapie znale\u017a\u0107 mo\u017cna tematy te\u017c stabilizacje API pozwalaj\u0105cego na pisanie plugin\u00f3w, a tak\u017ce oficjalny release wersji beta... niestety na razie nie podano \u017cadnych dat. Pe\u0142ne wdro\u017cenie K2 zajmie jeszcze troch\u0119 czasu, dlatego te\u017c w planach tw\u00f3rc\u00f3w Kotlina pojawi\u0142y si\u0119 nowo\u015bci zwi\u0105zane z istniej\u0105cym kompilatorem, jak na przyk\u0142ad usprawnienie kotlinowych skrypt\u00f3w.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858d0df2b8.png\" alt=\"\"\/><figcaption>Im wi\u0119cej o nim czytam, tym bardziej tak sobie wyobra\u017cam rozw\u00f3j K2.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858d0df2b8.png\" alt=\"\"\/><figcaption>Im wi\u0119cej o nim czytam, tym bardziej tak sobie wyobra\u017cam rozw\u00f3j K2.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jak ju\u017c wspomnieli\u015bmy o wersji Multiplatform, to ta ju\u017c nied\u0142ugo r\u00f3wnie\u017c doczeka si\u0119 paru usprawnie\u0144, szczeg\u00f3lnie w kontek\u015bcie kodu Androidowego. Multiplatform ma si\u0119 w ko\u0144cu pojawi\u0107 w wersji Beta, a takowej po\u015bwi\u0119cono ostatnio <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2022\/05\/kotlin-multiplatform-mobile-beta-roadmap-update\/\">ca\u0142\u0105 osobn\u0105, szczeg\u00f3\u0142ow\u0105 notatk\u0119<\/a>, opisuj\u0105c\u0105 jak proces \u201cpromocji\u201d b\u0119dzie wygl\u0105da\u0142.&nbsp;<\/p>\n","innerContent":["\n<p>Jak ju\u017c wspomnieli\u015bmy o wersji Multiplatform, to ta ju\u017c nied\u0142ugo r\u00f3wnie\u017c doczeka si\u0119 paru usprawnie\u0144, szczeg\u00f3lnie w kontek\u015bcie kodu Androidowego. Multiplatform ma si\u0119 w ko\u0144cu pojawi\u0107 w wersji Beta, a takowej po\u015bwi\u0119cono ostatnio <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2022\/05\/kotlin-multiplatform-mobile-beta-roadmap-update\/\">ca\u0142\u0105 osobn\u0105, szczeg\u00f3\u0142ow\u0105 notatk\u0119<\/a>, opisuj\u0105c\u0105 jak proces \u201cpromocji\u201d b\u0119dzie wygl\u0105da\u0142.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Mo\u017cemy zauwa\u017cy\u0107 tak\u017ce dalsz\u0105 inwestycje w narz\u0119dzi\u00f3wk\u0119. Stabilizacja analizy kodu oraz unikania nadmiarowych kompilacji (co jest rozwi\u0105zaniem na dobr\u0105 spraw\u0119 potencjalnie jeszcze skuteczniejszym ni\u017c nawet najszybszy nowy kompilator) maj\u0105 stanowi\u0107 uzupe\u0142nienie dzia\u0142a\u0144 zwi\u0105zanych z K2.&nbsp;<\/p>\n","innerContent":["\n<p>Mo\u017cemy zauwa\u017cy\u0107 tak\u017ce dalsz\u0105 inwestycje w narz\u0119dzi\u00f3wk\u0119. Stabilizacja analizy kodu oraz unikania nadmiarowych kompilacji (co jest rozwi\u0105zaniem na dobr\u0105 spraw\u0119 potencjalnie jeszcze skuteczniejszym ni\u017c nawet najszybszy nowy kompilator) maj\u0105 stanowi\u0107 uzupe\u0142nienie dzia\u0142a\u0144 zwi\u0105zanych z K2.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Je\u017celi chodzi o Kotlina w wersji JVM i JS, na roadmapie nie pojawi\u0142y si\u0119 \u017cadne nowe pozycje z nim zwi\u0105zane. Og\u00f3lnie wida\u0107, \u017ce stabilizacja (w przypadku JS) i standaryzacja (w wypadku JVM) nowego formatu po\u015bredniego (internal representation - IR) dla obu j\u0119zyk\u00f3w poch\u0142ania mas\u0119 si\u0142 i troch\u0119 si\u0119 przeci\u0105ga. W dalszym ci\u0105gu czekamy wi\u0119c np. na wsparcie kapt (Kotlin Annotation Processor) w nowym JVMowym IR, a tak\u017ce na lepsze czasy kompilacji przy jego u\u017cyciu.<\/p>\n","innerContent":["\n<p>Je\u017celi chodzi o Kotlina w wersji JVM i JS, na roadmapie nie pojawi\u0142y si\u0119 \u017cadne nowe pozycje z nim zwi\u0105zane. Og\u00f3lnie wida\u0107, \u017ce stabilizacja (w przypadku JS) i standaryzacja (w wypadku JVM) nowego formatu po\u015bredniego (internal representation - IR) dla obu j\u0119zyk\u00f3w poch\u0142ania mas\u0119 si\u0142 i troch\u0119 si\u0119 przeci\u0105ga. W dalszym ci\u0105gu czekamy wi\u0119c np. na wsparcie kapt (Kotlin Annotation Processor) w nowym JVMowym IR, a tak\u017ce na lepsze czasy kompilacji przy jego u\u017cyciu.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858d16bf65.png\" alt=\"\"\/><figcaption>No bo bez niego tak to wygl\u0105da.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858d16bf65.png\" alt=\"\"\/><figcaption>No bo bez niego tak to wygl\u0105da.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Podsumowuj\u0105c aktualizacj\u0119 Roadmapy - wida\u0107, \u017ce czasy du\u017cych zmian w j\u0119zyku mamy ju\u017c za sob\u0105. Tylko i wy\u0142\u0105cznie jedna nowa (bardzo kosmetyczna zmiana) w jego syntaxie - specjalna sk\u0142adnia dla operatora until -&nbsp; pokazuje, \u017ce Kotlin jako j\u0119zyk jest ju\u017c w zasadzie feature complete. Teraz nacisk k\u0142adziony jest g\u0142\u00f3wnie po pierwsze na wsparcie nowych platform, ale r\u00f3wnie\u017c dbanie o jak najwi\u0119kszy komfort pracy z ca\u0142ym ekosystemem - zar\u00f3wno przez programist\u00f3w zewn\u0119trznych, jak i samych tw\u00f3rc\u00f3w j\u0119zyka. Jest to nie najgorsza decyzja - to w ko\u0144cu w\u0142a\u015bnie \u015bwietn\u0105 integracj\u0105 z narz\u0119dziami i wygod\u0105 u\u017cycia Kotlin zdoby\u0142 przecie\u017c serca u\u017cytkownik\u00f3w.&nbsp;<\/p>\n","innerContent":["\n<p>Podsumowuj\u0105c aktualizacj\u0119 Roadmapy - wida\u0107, \u017ce czasy du\u017cych zmian w j\u0119zyku mamy ju\u017c za sob\u0105. Tylko i wy\u0142\u0105cznie jedna nowa (bardzo kosmetyczna zmiana) w jego syntaxie - specjalna sk\u0142adnia dla operatora until -&nbsp; pokazuje, \u017ce Kotlin jako j\u0119zyk jest ju\u017c w zasadzie feature complete. Teraz nacisk k\u0142adziony jest g\u0142\u00f3wnie po pierwsze na wsparcie nowych platform, ale r\u00f3wnie\u017c dbanie o jak najwi\u0119kszy komfort pracy z ca\u0142ym ekosystemem - zar\u00f3wno przez programist\u00f3w zewn\u0119trznych, jak i samych tw\u00f3rc\u00f3w j\u0119zyka. Jest to nie najgorsza decyzja - to w ko\u0144cu w\u0142a\u015bnie \u015bwietn\u0105 integracj\u0105 z narz\u0119dziami i wygod\u0105 u\u017cycia Kotlin zdoby\u0142 przecie\u017c serca u\u017cytkownik\u00f3w.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A jak ju\u017c jeste\u015bmy przy Kotlinie, to r\u00f3wnie\u017c pocz\u0105tkiem tygodnia pojawi\u0142a si\u0119 nowa wersja biblioteki KotlinDL o numerze 0.4, kt\u00f3ra wprowadza szereg nowo\u015bci, z czego t\u0105 najbardziej zwracaj\u0105c\u0105 uwag\u0119 (i przez to u\u017cywan\u0105 te\u017c w reklamie tej edycji) jest Pose Detector.<\/p>\n","innerContent":["\n<p>A jak ju\u017c jeste\u015bmy przy Kotlinie, to r\u00f3wnie\u017c pocz\u0105tkiem tygodnia pojawi\u0142a si\u0119 nowa wersja biblioteki KotlinDL o numerze 0.4, kt\u00f3ra wprowadza szereg nowo\u015bci, z czego t\u0105 najbardziej zwracaj\u0105c\u0105 uwag\u0119 (i przez to u\u017cywan\u0105 te\u017c w reklamie tej edycji) jest Pose Detector.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","width":750,"height":375},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858d2d7346.gif\" alt=\"\" width=\"750\" height=\"375\"\/><figcaption>A\u017c mi si\u0119 \u0142ezka w oku zakr\u0119ci\u0142a, bo moj\u0105 prac\u0105 in\u017cyniersk\u0105 by\u0142a w\u0142a\u015bnie <a href=\"https:\/\/github.com\/ArturSkowronski\/KinectSDK-Kinventor\">forma detekcji pozy przy u\u017cyciu Kinecta<\/a>.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a858d2d7346.gif\" alt=\"\" width=\"750\" height=\"375\"\/><figcaption>A\u017c mi si\u0119 \u0142ezka w oku zakr\u0119ci\u0142a, bo moj\u0105 prac\u0105 in\u017cyniersk\u0105 by\u0142a w\u0142a\u015bnie <a href=\"https:\/\/github.com\/ArturSkowronski\/KinectSDK-Kinventor\">forma detekcji pozy przy u\u017cyciu Kinecta<\/a>.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Opr\u00f3cz niego nowy KotlinDL przynosi wsparcie dw\u00f3ch nowych modeli: EfficientDet oraz EfficientNet, oraz nowe warstwy wychodz\u0105ce poza to, co przynosi standardowa biblioteka TensorFlow. Je\u015bli chcecie wi\u0119cej informacji, tak\u017ce o pozosta\u0142ych nowo\u015bciach w tej wersji, <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2022\/06\/kotlindl-0-4-is-out-with-pose-detection-api-efficientdet-for-object-detection-and-efficientnet-for-image-recognition\/\">oficjalne Release Notes<\/a> s\u0105 naprawd\u0119 dobrze napisane, wi\u0119c zach\u0119cam do lektury.&nbsp;<\/p>\n","innerContent":["\n<p>Opr\u00f3cz niego nowy KotlinDL przynosi wsparcie dw\u00f3ch nowych modeli: EfficientDet oraz EfficientNet, oraz nowe warstwy wychodz\u0105ce poza to, co przynosi standardowa biblioteka TensorFlow. Je\u015bli chcecie wi\u0119cej informacji, tak\u017ce o pozosta\u0142ych nowo\u015bciach w tej wersji, <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2022\/06\/kotlindl-0-4-is-out-with-pose-detection-api-efficientdet-for-object-detection-and-efficientnet-for-image-recognition\/\">oficjalne Release Notes<\/a> s\u0105 naprawd\u0119 dobrze napisane, wi\u0119c zach\u0119cam do lektury.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html\">Kotlin roadmap<\/a><\/li><li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2022\/05\/kotlin-multiplatform-mobile-beta-roadmap-update\/\">Kotlin Multiplatform Mobile Beta Roadmap Update<\/a><\/li><li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2022\/06\/kotlindl-0-4-is-out-with-pose-detection-api-efficientdet-for-object-detection-and-efficientnet-for-image-recognition\/\">KotlinDL 0.4 Is Out With Pose Detection API, EfficientDet for Object Detection, and EfficientNet for Image Recognition<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/kotlinlang.org\/docs\/roadmap.html\">Kotlin roadmap<\/a><\/li><li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2022\/05\/kotlin-multiplatform-mobile-beta-roadmap-update\/\">Kotlin Multiplatform Mobile Beta Roadmap Update<\/a><\/li><li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2022\/06\/kotlindl-0-4-is-out-with-pose-detection-api-efficientdet-for-object-detection-and-efficientnet-for-image-recognition\/\">KotlinDL 0.4 Is Out With Pose Detection API, EfficientDet for Object Detection, and EfficientNet for Image Recognition<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>PS: Edycja powsta\u0142a przy <a href=\"https:\/\/www.youtube.com\/watch?v=rPbrR6b6ZYs\">NINA - Sleepwalking (Full Album)<\/a>.&nbsp;<\/p>\n","innerContent":["\n<p>PS: Edycja powsta\u0142a przy <a href=\"https:\/\/www.youtube.com\/watch?v=rPbrR6b6ZYs\">NINA - Sleepwalking (Full Album)<\/a>.&nbsp;<\/p>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9960","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/comments?post=9960"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9960\/revisions"}],"predecessor-version":[{"id":10486,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9960\/revisions\/10486"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/8131"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=9960"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=9960"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=9960"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}