<![CDATA[Florin Tomozei]]>https://florin.me/https://florin.me/favicon.pngFlorin Tomozeihttps://florin.me/Ghost 5.98Fri, 06 Dec 2024 11:19:20 GMT60<![CDATA[Decembrie 2.24]]>Miroase a iarnă și a ceai

Iarna se așterne încet peste noi, temperaturile scad și ne țin mai mult timp în casă, unde e cald și bine. Ochii cad atenți pe ecrane de laptop sau telefon, televizorul e

]]>
https://florin.me/decembrie-2-24/67522124d463e722e4ea3137Thu, 05 Dec 2024 23:57:35 GMTMiroase a iarnă și a ceaiDecembrie 2.24

Iarna se așterne încet peste noi, temperaturile scad și ne țin mai mult timp în casă, unde e cald și bine. Ochii cad atenți pe ecrane de laptop sau telefon, televizorul e pornit pe știri ca și sunet de fundal, iar în browser avem Facebook sau Instagram pentru scroll, un Hotnews sau G4Media pe refresh constant, și din când în când o Europa Liberă. Pe YouTube căutăm ce o mai apărut, ba de la Recorder, CreativeMonkeyz, Digi sau alte televiziuni, diverse podcast-uri și creatori de conținut. E plin internetul de informație, și la fel este și capul nostru.

Nici să adormi nu mai poți, nu te lasă nici cum anxietatea zilei de poimâine. În speranța că îți mai reveni un pic, te hidratezi obsesiv și pui pe foc de-un ceai. Mușețel, clar, că ăsta calmează. Pentru un moment, închizi ochii și îți imaginezi cum o să ieși tu din casă, echipat corespunzător pentru temperaturile scăzute, cu pancarta desenată frumos de acasă, bine conturată și colorată. Te întâlnești cu prietenii, ba la Universitate, în Piața Unirii, la Palatul Culturii sau la Obelisc. Porniți împreună cu mulțimea, strigați cu ei, cântați, săriți când e nevoie (că doar "vrei schimbare"), primești vreo două trei complimente pentru cât de faină ți-e pancarta și spre final, pui și tu un story, ca să fie acolo. Ce seară frumoasă, chiar simt că am făcut ceva pentru libertatea mea!

Decembrie 2.24
Sursa: Photo by Maria Orlova, pexels.com

Încet deschidem ochii și revenim. Suntem tot în sufragerie și ceaiul de mușețel încă nu s-a răcit destul.


Un pic de neajuns

Tensiune întinsă la extrem în jurul nostru. Everybody is on the edge. Anxietatea ne cuprinde din prima secundă a dimineții, și nu ne lasă nici măcar târziu în noapte, când deja ne-am adunat cearșaful sub noi de la cât am încercat să adormim. Gust amar de angoasă și miros sovietic ne îmbie la încă o porție de frică. Frică. Cred că acesta este cuvântul lunii, dacă stau să mă gândesc bine. Stă la bază, și își naște pe rând progeniturile. Fiul cel mare, Anxietate. Sora lui, Disperare. Verișorii primari, Frustrare, Dezamăgire și Revoltă. O familie numeroasă care niciodată nu vine în vizită singură. Și degeaba le servești tu ceai de mușețel, că atunci când pleacă, ți-au lăsat dezastru în bucătărie.

Decembrie 2.24

Și da! Este vina noastră! Este neajunsul nostru. Pentru că în fiecare zi, ne-am ales prioritățile și reacțiile. Atunci când în fiecare zi i-am spus Educației că e frumoasă și că o iubim mult, lăsându-i un sărut pe frunte, ca mai apoi să ne-o tragem cu Corupția în spatele blocului. Să îi promitem Justiției că o să avem grijă de ea prin semafoare cu semnal sonor și pavaj tactil, ca mai apoi să o împingem în fața mașinilor prin instrumentări și prescrieri. Iar sistemului Sanitar, cel tânăr și plin de elan, să îi promitem un viitor strălucit și sănătos, în care o să crească mare, ca mai apoi să îl hrănim doar cu zahăr și Cola, plus o nosocomială la pachet.

Iar la final de lună, când vine factura și trebuie plătită, întindem degetul către Parlament și clasa politică și zicem răspicat și tare: "De ce?!"


Educație, informație și gândire critică

Schimbul de tură e aici, și după 5 ani de liniște, a venit momentul în care trebuie schimbat posteriorul care va trona dealul Cotroceniului. Și dacă e să ne pricepem la ceva, știm bine să o facem lată. Gălăgie, zgomot și larmă din belșug, cât să râdă lumea de noi și la Vest, și la Est. În marea finală au rămas Lenuța fată-simplă și Călin file-din-poveste. A mai vrut să dubleze în limba română și Marcel băiat-fin, dar l-a luat duoamna la mustață și a zis, "gata, nu mă mai joc!", ca să apară după două zile înapoi la locul de joacă. Dar asta e altă poveste. Nu personajele astea sunt cele relevante. Actorul principal și cel care contează cel mai mult în toată povestea, este pe atât de necunoscut, pe cât este el de divizat. Îl cheamă poporul român, și suntem noi, 18.006.606 plus diaspora. Iar acest actor este foarte versatil, și joacă mai multe roluri.

Un rol bine cunoscut de către cei care probabil vor citi acest text, este acela al păturii celor cu "grija de poimâine". Cu spirit civic la curea, gândire critică și discernământ în frunte, respectăm scenariul și jucăm destul de echilibrat. Cu problemele de bază rezolvate, avem destul timp la dispoziție să ne excităm anxietățile unii altora. Următorul.

Supărat din cale afară, fără nici un compromis la orizont, trece ca prin pânzele albe ca să pună ștampila pe tovarăș. Aici există mai multe variante, desigur, de la supărare, la ignoranță, limitare, frustrare sau disperare, fanatism religios sau grija zilei de acum. Toate alcătuiesc un rol bine definit pentru una dintre măștile actorului nostru.

Decembrie 2.24
Sursa: Facebook

Un rol puternic și vânjos se arată la orizont, conturat foarte bine de extremele lui. Legionar. Fascist. Sovietic. Interlop. Misogin. Xenofob. Și Suveran în nume propriu. Cel mai rău rol posibil, născut și crescut sub același steag și sprit patriotic ca și ceilalți. "Prin liniște și credință, prin ordine și unire, prin muncă și iubire, cu dumnezeul vostru înainte" hai marș din țara noastră!

Iar apoi, când ți-ai pierdut orice fel de speranță, nu mai vezi nici o opțiune în jurul tău, culorile și-au pierdut complet saturația, lăsând în urmă un gradient de note gri, apare nepăsarea. Un rol trist si cinic, care joacă și el împotriva sistemului prin neprezentare. Din păcate, nu cred că există salvare pentru el, nici măcar atunci când mici raze de soare se vor ivi de după norii gri.

Intr-un final, avem rolul care ne este foarte drag, dar din păcate este plecat din țară, și nici nu ne dăm seama cât de mare și de important este. El apare la finalul scenariului, și uneori are un rol benefic, alteori malefic. Nu știm exact câți români avem plecați în afara granițelor. 5.7, 6.5, 9 milioane? Sincer, îmi e frică să știu.

Toate aceste roluri ne construiesc actorul principal, care are nevoie ca de o gură de aer proaspăt de Sfânta Treime. Educație, Informație și Gândire Critică.


”Să muncim, tovarăși!”

Un lucru este clar, nu putem să continuăm în modul în care am funcționat până acum. Sistemul este o producție unitară, care a avut nevoie de contribuția fiecăruia dintre noi ca să ajungă în starea în care este. Ca și un pacient bolnav, nu o să se facă bine într-o zi, de azi pe mâine, ci o să dureze mult și bine până când se pune pe picioare și va putea să se plimbe măcar prin spital. Momentan, vorbim de recuperare, și fizioterapie, nicidecum de antrenament.

Ce putem noi să facem? Să continuăm. Să continuăm să sperăm, să ne ridicăm gunoiul de pe jos, să răspundem cu calm la incitare și cu vehemență la abuz. Să nu plecăm capul în fața nedreptății, ba din contră, să o identificăm și să-i răspundem răspicat atunci când ea se întâmplă. Și împreună cu toți cei care au urlat că vor schimbare, să punem cu toții mâna la contribuție, și să ne reclădim țara de la fundație, reamintindu-ne pe parcurs de unde a venit nevoia asta. Pentru ca peste 5 ani, să nu mai ajungem in aceeași situație, sau cine știe, poate chiar mai rea.

Decembrie 2.24
Așa să ne ajutăm noi pe noi, și mai apoi Dumnezeu.
]]>
<![CDATA[De ce îmi este frică?]]>https://florin.me/de-ce-imi-este-frica/6748b158d463e722e4ea310dThu, 28 Nov 2024 18:18:11 GMT

Mi-am dat seama că îmi este frică.

De ceva pe care nu pot să îl ating sau să îl văd încă, dar îi simt prezența și greutatea apăsătoare, ca o respirație rece în ceafă.

Mi-am dat seama că îmi este frică de necunoscut. De un posibil viitor, ascuns la față, care rânjește larg cu dinți falși și măști pe ochi, așteptând tăcut în negura ce îl înconjoară. Ne așteaptă într-o poziție bine calculată, știind prea multă informație din culise, și fiind legat de prea multe sfori pe care le trage în paralel.

Mi-am dat seama că îmi este frică de ignoranță. De o stare de letargie intelectuală, în care oamenii au uitat, sau poate că nu au aflat până acum, de ororile care s-au întâmplat în trecutul nostru recent, de toate crimele și masacrele care ne-au pătat, cu sânge și fragmente de os, paginile cărților de istorie, atât din țară cât și din toată Europa.

Mi-am dat seama că îmi este frică de izolare. De segregare. De tabere și triburi formate în poporul nostru, care și-au ridicat ziduri de block și turnuri de unfollow, fără a putea comunica sincer și liber, unii cu alții. Iar în interiorul zidurilor noastre, urlăm haotic unii la alții, fără ca ceilalți să ne audă. Suntem așa de mulți care ne dorim exact același lucru, că am ajuns să ne pierdem în detalii și nuanțe fine, de moment.

Mi-am dat seama că îmi este frică de renunțare. De compromis și de momentul acela în care ți-ai plecat capul și ai oftat adânc în piept. Acel moment in care simți că sabia ți-a părăsit încleștarea mâinii, iar steagul care flutura mândru adineaori, este acum călcat și terfelit de bocanci plini de noroi și zăpadă. Un vid răcoros îți învelește stomacul și simți cum ura tuturor celor care au suferit timp de sute de ani, încearcă să îl umple. Dar deja e prea târziu.


Mi-am dat seama că îmi este frică.

Și mi-am dat seama că pot să spun asta cu verticalitate. Cu spatele drept și cu capul sus. Cu voce tare și corect articulat. Cu pumnul în piept și mâna pe steag. Cu încredere. Și cu mândrie. În speranța că frica din ochii mei, poate fi văzută și de frica din ochii celuilalt.

Așa să ne ajutăm noi pe noi, și mai apoi Dumnezeu.
]]>
<![CDATA[Mixed Signals]]>How Reactivity evolved in the JavaScript Ecosystem

Why?

I was always curious about how things worked. Then I became a programmer, and things didn’t change, quite the opposite, it all became very confusing and overwhelming, especially because I did not know how things worked behind the scene. Using

]]>
https://florin.me/mixed-signals/673f8cf285436817138ebf70Thu, 21 Nov 2024 20:11:30 GMTHow Reactivity evolved in the JavaScript Ecosystem

Why?

Mixed Signals

I was always curious about how things worked. Then I became a programmer, and things didn’t change, quite the opposite, it all became very confusing and overwhelming, especially because I did not know how things worked behind the scene. Using libraries and frameworks like Django and Angular gave me the impression that there was a lot of magic happening, without my knowledge. So, in the last couple of years, while I became a little bit better at this trade, I started to ask myself complex questions, like how do frameworks actually work, how are JSX and interpolated templates converted to HTML, how do reactive values work, and what the hell is a Virtual DOM?

In a way, through these questions I got to write this article and have a presentation about it, trying to understand how reactivity became a necessity and how it evolved in the JS Ecosystem, through all of its good and bad phases, and the direction that it’s heading towards.


A bit of history

Looking back in time, at how JavaScript evolved as a language, and the emergence of all the libraries and frameworks that rose to power, the ones that slowly died, and those who knew how to reinvent themselves, we can outline some patterns that result into today’s emergence of Signals.

Mixed Signals

In the early 2000’s everything was server-side. Compiled or dynamic languages ruled with their web frameworks, such as CakePHP and Symphony for PHP, ASP.NET for C#, Servlet and Spring for Java, Rails for Ruby or Django for Python. And in these early days, JavaScript was not viewed as it is today. It was considered more of a toy language, used for small, self contained widgets. And there were no modules, no NPM, so everything was global.

Then we got XHR, Ajax, and Google proved it’s worth with Google Web Toolkit, allowing for libraries such as Dojo, Mootools and jQuery to come to life, simplifying DOM interactions and extending the language capabilities. In 2007 / 2008 we get the smartphones, and the need for server - client separation appears. And then, the big bang happens.

Knockout, Backbone and Angular emerge almost at the same time, with React and Vue following a few years later. They were libraries, selling themselves as “view-layers” instead of fully fledged frameworks. Instead of solving all the problems needed for a frontend app, they would focus on just solving rendering problems. And it was good, because you could incrementally migrate your server-side monolith, one page or component at a time.

We witness a lot of revolutions in the community, with new frameworks emerging almost every year, and existing ones bringing improvements and major updates. Everybody gets a full-stack framework support, and you really got a pletora of choices: Angular, Next, Nuxt, SvelteKit, Remix, Astro, Qwik, and the list can go on.

But in 2020, SolidJS brings something “new” to the table, Signals. And slowly but surely, everybody starts to fall in love with them. Vue calls them refs, Angular, Preact and Qwik implemented them, and Svelte practices this magic by casting $runes. Basically, everybody realized that Knockout was right, 14 years ago.


Sooo… what are Signals?

A signal is a reactive primitive that is used for managing application state. Based, at it’s core, on the Observer Pattern, it provides a simplified API, that is based on a set of reactive principles (features) that allow for excellent developer ergonomics and a optimized implementation when rendering.

API

The API would consist of three parts:

  • Root State
  • Derived State (also known as computed)
  • Effects
Mixed Signals

The root state is what holds the value (think of it as a bucket).

Derived state (also known as computed) is based on root state, and changes accordingly, when the state that it depends on also changes.

And effects represent code that should run as a response to a state change.


Features

Mixed Signals
  1. Dependency Tracking. The ability to track which signals depend on each other. It has to be optimal, meaning that there is a dependency graph that represents all of the dependencies, and it should happen automatically, so that the developer doesn’t have to worry about it.
  2. Lazy by default. If something is not used, it should not be tracked. If a tree falls in the forest … you know the rest. Also, derived state is not evaluated on declaration, only when requested.
  3. Memoization. Or one of the ugliest words I know. Simply put, cache the last value. If a dependency is not changed, you know its worth.
  4. Push-then-pull. This is the core of signals, in my opinion.

If we think of the Observer Pattern, then Subjects would be Push based. They notify every time their observers of changes. Pull based would mean that the ones that depend on a signal, should pull their value when it changes.

Push-then-pull (at least how I understand it) is that the Signal sends a notification when it changes, marking itself as “dirty”. All dependents are notified and they are responsible to update themselves, pulling the new value. In the case of multiple dependencies that change at the same time, the dependent will retrieve them first, with a graph pass, and only afterwards the rendering will happen.

Mixed Signals
what happens when both A and B update?

With all of these, Signals have the following Core Features:

  • Fine Grained Reactivity
  • Glitch-free Rendering

TC39 Proposal

Mixed Signals

There is a proposal in the works, to bring Signals as a standard to the JavaScript language. Still in Stage 1, so it still has a long way until it reaches us or the runtime, but this proposal is very interesting, since it wants to provide an API for handling reactive state at the language core. This proposal is made for frameworks to build on top of, providing interoperability through common signal graph and auto-tracking mechanism, rather than providing a common developer-facing surface API.

Mixed Signals

🚧 [section under construction] 🚧


Resources

Repository

GitHub - Mallfurion/mixed-signals
Contribute to Mallfurion/mixed-signals development by creating an account on GitHub.
Mixed Signals

Articles

  1. 🚦 JavaScript Signals standard proposal🚦 (TC39)
  2. The Evolution of Signals in JavaScript (by Ryan Carniato)
  3. A Hands-On Introduction to Fine-Grained Reactivity (by Ryan Carniato)
  4. A Brief History of Reactivity (by Miško Hevery)
  5. What is Reactivity? (by pzuraq) - I recommend the whole series (3 articles)
  6. Third Age of JavaScript (by Swyx)
  7. Four Eras of JavaScript Frameworks (by pzuraq)
  8. Introducing Signals (Preact announcement)

]]>
<![CDATA[Italy Roadtrippin']]>🚧 A 6000 km journey. Coming soon.

]]>
https://florin.me/italy-roadtrippin-2/673e49ff85436817138ebf38Wed, 25 Sep 2024 20:44:00 GMT

🚧 A 6000 km journey. Coming soon.

]]>
<![CDATA[Campul de centru local 2024]]>
Cronotopia | CCL Scouts Cluj 2024
189 new items · Album by Florin Tomozei
]]>
https://florin.me/campul-de-centru-local-2024/673e49c985436817138ebf2fSun, 18 Aug 2024 20:42:00 GMT
Cronotopia | CCL Scouts Cluj 2024
189 new items · Album by Florin Tomozei
Campul de centru local 2024
]]>
<![CDATA[Not the cry you want, but the Crai you need]]>
Not the cry you want, but the Crai you need | 06.07.24
126 new items added to shared album
]]>
https://florin.me/not-the-cry-you-want-but-the-crai-you-need/673e495a85436817138ebf27Sat, 06 Jul 2024 20:40:00 GMT
Not the cry you want, but the Crai you need | 06.07.24
126 new items added to shared album
Not the cry you want, but the Crai you need
]]>
<![CDATA[Bachelor Hike Experience (B'HE)]]>⛔️ This content is restricted.

]]>
https://florin.me/bachelor-hike-experience-bhe/673e490d85436817138ebf1eMon, 24 Jun 2024 20:39:00 GMT

⛔️ This content is restricted.

]]>
<![CDATA[New Wolfden]]>
New wolffice
84 new items added to shared album
]]>
https://florin.me/new-wolfden/673e48df85436817138ebf16Tue, 18 Jun 2024 20:38:00 GMT
New wolffice
84 new items added to shared album
New Wolfden
]]>
<![CDATA[First livestream experience featuring Roaming Romaniacs]]>
]]>
https://florin.me/first-livestream-experience-featuring-roaming-romaniacs/673e488485436817138ebf0eTue, 28 May 2024 20:37:00 GMT
First livestream experience featuring Roaming Romaniacs
]]>
<![CDATA[JSHeroes 2024]]>https://florin.me/jsheroes-2024/673e482e85436817138ebf06Sat, 25 May 2024 20:35:00 GMT<![CDATA[Tabăra de inițiere în escaladă 2024]]>https://florin.me/tabara-de-initiere-in-escalada-2024/673e47fb85436817138ebefeSun, 19 May 2024 20:35:00 GMT<![CDATA[Aventurile biciclistului bănățean (episodul 1)]]>https://florin.me/aventurile-biciclistului-banatean-episodul-1/673e47a185436817138ebef5Wed, 01 May 2024 20:33:00 GMT<![CDATA[Lanzarote]]>
Lanzarote ’24
53 new items added to shared album
]]>
https://florin.me/lanzarote/67272f1f2ff1c45b816e937cTue, 30 Jan 2024 08:06:00 GMT
Lanzarote ’24
53 new items added to shared album
Lanzarote
]]>
<![CDATA[Austria Roadtrip]]>First attempt at going in a roadtrip, alone, with my car as a mobile sleeping home.

🚧 content is under active development.

]]>
https://florin.me/austria-roadtrip/67272e502ff1c45b816e9375Fri, 17 Nov 2023 08:03:00 GMT

First attempt at going in a roadtrip, alone, with my car as a mobile sleeping home.

🚧 content is under active development.

]]>
<![CDATA[Talking at ITDays]]>🚧 content is under active development.

]]>
https://florin.me/talking-at-itdays/673e4eaa85436817138ebf4bWed, 08 Nov 2023 21:05:00 GMT

🚧 content is under active development.

]]>