poniedzia艂ek, 6 pa藕dziernika 2025

Doom Engine

Wyobra藕 sobie, 偶e dostajesz w pracy zadanie skonstruowania czego艣 zupe艂nie nowego. Czego艣, co jeszcze nie do ko艅ca wiadomo jak ma dzia艂a膰, ale musi by膰 zrobione. In偶ynier z mojej miejscowo艣ci Mieczys艂aw Bekker pracowa艂 na przyk艂ad w latach 60tych nad 艂azikiem ksi臋偶ycowym dla Nasa. Co za zadanie.

30 lat p贸藕niej niewielkie studio produkuj膮ce gry o nazwie ID Software wymy艣li艂o sobie, 偶e zrobi gr臋, jakiej nie widzia艂 艣wiat. Mia艂a by膰 to strzelanka 3D, ale oferuj膮ca znacznie lepsz膮 grafik臋 i dynamiczniejsz膮 grafik臋, ni偶 ich poprzednia gra, Wolfenstein 3D. Ma艂y problem - silniki gier oferuj膮ce takie mo偶liwo艣ci, wtedy jeszcze nie istnia艂y. John Carmack podj膮艂 si臋 wyzwania stworzenia w艂asnego silnika, nazwanego id Tech 1. T膮 gr膮 by艂 Doom.

G艂贸wnym za艂o偶eniem tego silnika, by艂o to, 偶e renderowa艂 on widok 3D z widoku 2D, uwzgl臋dniaj膮c informacj臋 o wysoko艣ci. Gra jest podzielona na oddzielne mapy, w kt贸rych pomieszczenie nie mo偶e znajdowa膰 si臋 nad innym pomieszczeniem. Jest to ograniczenie, ale jego wynikiem jest to 偶e widok podgl膮du mapy jest bardzo czytelny. 

Gracz nie ma mo偶liwo艣ci skakania, poruszania g艂ow膮 i celowania w g贸r臋 czy w d贸艂, co mo偶e nieco przeszkadza膰 na pocz膮tku wsp贸艂czesnym graczom. Wynika to z ogranicze艅 silnika. Jednocze艣nie, Doom nie jest gr膮 2-wymiarow膮, poniewa偶 uwzgl臋dnia wysoko艣膰 w wielu sytuacjach. Przyk艂adowo, wi臋ksi wrogowie nie mog膮 przej艣膰 przez za ma艂e drzwi, a wrogowie lataj膮cy aby zaatakowa膰 gracza, musz膮 zmieni膰 wysoko艣膰 lotu. Albo wystrzeli膰 fireballa :) 呕eby by艂o ciekawiej, to wysoko艣膰 eksplozji jest niesko艅czona, a same eksplozje i zasi臋g ich ra偶enia, s膮 kwadratem a nie ko艂em.

Za艂o偶enia i ograniczenia sobie, ale jak to wszystko zosta艂o "zakodowane"? John Carmack znalaz艂 badanie naukowe na temat Binary space partitioning, techniki renderowania obrazu w wydajny spos贸b i zaimplementowa艂 je w grze. 


 

sobota, 27 wrze艣nia 2025

Json Driven UI / Server driven UI

Co by si臋 sta艂o, gdyby kod frontendowy aplikacji mo偶na by艂o by generowa膰 lub pisa膰 w formie JSON?Przyk艂adowo, ka偶da podstrona aplikacji mog艂a by by膰 pobierana jako osobny plik konfiguracyjny, kt贸ry zostanie za艂adowany do kompilatora i z niego, odtworzone zostan膮 sekcje oraz logika. 

Obecnie widoki robimy tak, 偶e pobieramy dane z serwera i czasem mapujemy je na widoki niemal 1:1, a czasem, po prostu wstawiamy je w ju偶 istniej膮ce komponenty.  

Przyk艂adem mo偶e by膰 komponent tabelki. 

niedziela, 21 wrze艣nia 2025

Gromadzenie wiedzy w Google Keep

Najwa偶niejszym ograniczeniem podczas nauki jest wed艂ug mnie brak jasnej wizji. Ucz膮c si臋 po troch臋 r贸偶nych temat贸w jako junior, prawdopodobnie nie nauczymy si臋 偶adnego z nich na tyle dobrze, by m贸c zrobi膰 w nim co艣 konkretnego. 

Przyk艂adowo, uczymy si臋 na raz Pythona, PHP i JS, wszystko nam si臋 miesza i nie wiemy, jakie akcje podj膮膰 jako nast臋pne. Do tego dochodz膮 coraz to nowe tematy - mo偶e uczy膰 si臋 sieci, a mo偶e ai.

Z czasem zmienia si臋 to i gromadzimy kapita艂 wiedzy, kt贸ry pozwala na w miar臋 艂atwe zrobienie w technologiach X, Y i Z wszystkiego co wymy艣limy sami, albo klient. Pozostaje jednak problem nauki nowych rzeczy. 

Ostatnio testuj臋 nowy spos贸b na nauk臋. Zadeklarowa艂em sobie, 偶e w Google Keep b臋d臋 trzyma艂 jedynie zadania, kt贸re nie s膮 baz膮 wiedzy. Baz臋 wiedzy buduj臋 w Obsidianie, chocia偶 zastanawiam si臋, czy nie lepiej robi膰 to w Anki albo pyta膰 na bie偶膮co LLM :)

 

 Nast臋pnie robi臋 sobie karteczki dotycz膮ce technologii, kt贸re chc臋 powtarza膰 lub si臋 ich uczy膰 od zera. To jest m贸j punkt odniesienia. Zapisuj臋 sobie w nich pytania, kt贸re nachodz膮 mnie podczas nauki lub w czasie wolnym ;) Je艣li wpada mi do g艂owy nowy temat, wrzucam kolejn膮 zgrubn膮 kartk臋 do Google keep. 艢ledz臋 w nim te偶 progres nauki z materia艂ami. Dzi臋ki temu, mog臋 艂atwiej 艣ledzi膰 post臋p i wiem, czego jeszcze chcia艂bym si臋 nauczy膰 i jakie problemy rozwi膮za膰.

Daj zna膰 w komentarzu, co o tym s膮dzisz. 

sobota, 23 sierpnia 2025

Jak szybko znacz膮co poprawi膰 swoj膮 wiedz臋 w danym temacie?

Kilka lat temu dosta艂em nowy projekt w firmie. Sytuacja wygl膮da艂a tak, 偶e frontend w Angularze robi艂o3 innych deweloper贸w, kt贸rzy mieli mniejsze do艣wiadczenie. Projekt zawiera艂 kilka technologii kt贸rych jeszcze nie zna艂em, na przyk艂ad Spectatora, Ngrx i bardzo wymagaj膮ce pokrycie testami.

Przed projektem po艣wi臋ci艂em kilka wieczor贸w na ogarni臋cie tych strasznych technologii - no i co si臋 okaza艂o? Ano to, 偶e...

  • Spectator to po prostu u艂atwienie testowania w Jest
  • Ngrx to przeniesienie idei Reduxa kt贸r膮 zna艂em z Reacta, do Angulara
  • Pokrycie testami mo偶na 艂atwo sprawdza膰 w Intellij Idea (kt贸ry to intensywnie wtedy u偶ywa艂em)

Aby m贸c sobie radzi膰 produkcyjnie (i produktywnie) z tymi technologiami, nie trzeba by艂o lat do艣wiadczenia. Wystarczy艂o przeczyta膰 dokumentacj臋 i ogarn膮膰 jaki艣 projekt, kt贸ry ich u偶ywa艂. Co wi臋cej, wymagana by艂a ch臋膰 nauki, a o to teraz najtrudniej.  

poniedzia艂ek, 28 lipca 2025

Kompas, czyli rzeczy kt贸rych nie potrzebujemy

Na pocz膮tku filmu Lawrence z Arabii jest scena, kiedy g艂贸wny bohater zostaje pozbawiony przewodnika. Gdy inny Beduin proponuje mu pomoc w drodze przez pustyni臋, Lawrence odmawia. Twierdzi, 偶e poradzi sobie jedynie ze swoim kompasem.

Ta scena uderzy艂a mnie, poniewa偶 zauwa偶y艂em, 偶e cz臋sto zbyt bardzo polegamy na zewn臋trznych pomocach, zamiast na naszym instynkcie. Arabowie podr贸偶uj膮cy przez pustyni臋 nie potrzebowali kompasu, poniewa偶 艣wietnie j膮 znali. Je艣li znasz si臋 na tym co robisz, nie potrzebujesz zewn臋trznych pomocy.

poniedzia艂ek, 14 lipca 2025

Antynauka

Wiedzy w Internecie mamy dzisiaj wi臋cej ni偶 kiedykolwiek, a ci膮gle przybywa. Niestety, ale z jej jako艣ci膮 jest coraz gorzej ;) Antynauka to marnowanie czasu, kt贸re daje wra偶enie 偶e robimy co艣 przydatnego dla rozwoju umiej臋tno艣ci. Przyk艂ady:

* 90% film贸w na YouTubie / 100% shorts贸w

* Szukanie skr贸t贸w / najlepszych materia艂贸w na jaki艣 temat 

*  Robienie tych samych, powtarzalnych rzeczy bez analizy / refleksji

* Robienie rzeczy bez zrozumienia podstaw 

* Czytanie news贸w na jaki艣 temat 

czwartek, 3 lipca 2025

Vscode Copilot - wsparcie dla plik贸w z promptami

Customize AI responses in VS Code

Copilot dodaje wsparcie dla plik贸w z promptami, dzi臋ki czemu b臋dzie 艂atwiej dodawa膰 reu偶ywalne instrukcje dla r贸偶nych zada艅. 

wtorek, 17 czerwca 2025

Problem wielor臋kiego jednor臋kiego bandyty

 

Ciekawe zagadnienie, kt贸re pozwala lepiej zrozumie膰 reinforcement learning. Wyobra藕my sobie, 偶e jeste艣my w kasynie i mamy przed sob膮 kilka automat贸w do gry. Poci膮gamy za kolejne d藕wignie automatu i z czasem odkrywamy, 偶e niekt贸re z nich daj膮 lepsz膮 wyp艂at臋 ni偶 inne. Celem jest uzyskanie jak najwy偶szej nagrody.

Problem polega na tym, czy mamy skupi膰 si臋 na eksploracji, czy na eksploatacji. Eksploracja to odkrywanie nowych d藕wigni, natomiast eksploatacja, pozostanie przy tych, kt贸re daj膮 dobre wyniki teraz. 

Eksploracja mo偶e prowadzi膰 do tymczasowego zmniejszenia wygranych, a eksploatacja, do zmniejszenia szans na nowe wygrane. 

Problem mo偶na zastosowa膰 w wielu dziedzinach 偶ycia. Przyk艂adowo, mo偶emy uczy膰 si臋 nowego j臋zyka programowania, ale czy nie lepiej jest pozosta膰 przy tym, kt贸ry ju偶 dobrze znamy? Lekarz mo偶e zleci膰 dobrze znan膮 terapi臋, albo wys艂a膰 pacjenta na mniej znan膮 i bardziej ryzykown膮.  

niedziela, 1 czerwca 2025

Arrazzo Specification

Ostatnio wpad艂em na https://spec.openapis.org/arazzo/latest.html. Jest to powstaj膮cy projekt, maj膮cy na celu stworzenie specyfikacji do jeszcze lepszego opisywania endpoint贸w. Opr贸cz swaggera, oferuje ona bardziej szczeg贸艂owy opis, na przyk艂ad opisuj膮cy kolejno艣膰 pobierania danych. Ciekawa inicjatywa, czekam kiedy pojawi si臋 w szerszym u偶yciu :)

sobota, 24 maja 2025

Przeuczenie (nadmierne dopasowanie) w rzeczywisto艣ci

Przeuczenie to negatywna sytuacja, kiedy zbytnio dopasowujemy si臋 do czego艣. Niesie to za sob膮 konsekwencje. Kilka przyk艂ad贸w:

  • Osoba, kt贸ra nigdy nie opu艣ci艂a rodzinnego miasta i stara si臋 szpanowa膰 tuningowanym samochodem
  • Pracownik robi膮cy w tej samej firmie przez 20 lat w ten sam spos贸b, kt贸ry zostaje zwolniony i ma pretensje do wszystkich o to, 偶e 艣wiat poszed艂 do przodu
  • Hejter, kt贸ry siedzi na politycznym forum / Linkedinie i robi sobie hobby z komentowania rzeczywisto艣ci w coraz bardziej z艂o艣liwy spos贸b. W mniej bolesnej formie, s膮 to osoby kt贸re 偶yj膮 w jakiej艣 internetowej spo艂eczno艣ci, kt贸ra nie ma realnego znaczenia.
  • Rodzina, kt贸ra zaczyna m贸wi膰 j臋zykiem coraz mniej zrozumia艂ym dla wszystkich wok贸艂

niedziela, 11 maja 2025

Sposoby jak realnie poprawi膰 jako艣膰 kodu

U偶ywaj ESLint

ESLint to narz臋dzie do analizy statycznej kodu JavaScript, kt贸re pomaga wykrywa膰 i naprawia膰 problemy w kodzie. Dzi臋ki niemu mo偶na zautomatyzowa膰 proces sprawdzania zgodno艣ci kodu z okre艣lonymi standardami, co znacznie poprawia jego jako艣膰. Konfiguruj膮c ESLint, warto dostosowa膰 regu艂y do specyficznych potrzeb projektu, aby maksymalnie wykorzysta膰 jego mo偶liwo艣ci.

poniedzia艂ek, 5 maja 2025

Pracuj jak tatua偶ysta albo chirurg, czyli znowu o skupieniu

Je艣li masz trudno艣ci ze skupieniem si臋 na 25 minut, pami臋taj, 偶e tatuator podczas sesji skupia si臋 na 6 do 10 godzin :)

Podobnie chirurg operuj膮cy pacjenta. Nie chc臋 nawet my艣le膰, jak bardzo musi si臋 skupia膰 wspinacz zdobywaj膮cy jak膮艣 trudn膮 g贸r臋.

Ze swojego do艣wiadczenia przytocz臋 nieco mniej spektakularne przyk艂ady. Kiedy艣 napisa艂em jednego dnia jakie艣 30 tysi臋cy znak贸w, pracuj膮c jak szalony z technik膮 Pomodoro i s艂uchaj膮c Shakiry, kt贸ra lecia艂a w galerii w kt贸rej wtedy urz臋dowa艂em. Raz uda艂o mi si臋 te偶 zrobi膰 jednego dnia 22 leki recepturowe. 

Co mo偶na zrobi膰 by si臋 lepiej skupi膰?

 M贸j autorski spos贸b:

  • Odstaw zb臋dn膮 elektronik臋, by nie widzie膰 powiadomie艅. Ustal sobie, o kt贸rej godzinie sprawdzisz telefon. 
  • W艂膮cz sobie jak膮艣 playlist臋 z muzyk膮 do skupienia. Mo偶e to by膰 na przyk艂ad muzyka z Sim City, jakie艣 low fi albo https://www.flowtunes.app/. Je艣li zamulasz, wybierz co艣 bardziej energetycznego. Staraj si臋 nie s艂ucha膰 niczego mocno anga偶uj膮cego. Przyk艂adem jest dla mnie s艂uchanie nowej muzyki - nie mog臋 si臋 cz臋sto powstrzyma膰, by nie sprawdzi膰, co aktualnie leci i poczyta膰 co艣 wi臋cej na temat autora. Czasem jednak s艂ucham Radio Swiss Classic.
  • Zadbaj o dobre samopoczucie. Zjedz co艣 lekkiego, naszykuj swoje ulubione picie. Zawsze mam przy sobie wod臋 w butelce wielorazowego u偶ytku i kaw臋 / herbat臋.
  • Zapisuj sobie zadania w formie list todo i aktywnie dodawaj do nich nowe rzeczy.
  • Side note - wydaje mi si臋 偶e chirurg czy tatua偶ysta tak nie pracuje, anyway
  • Pracuj :) 
  • Je艣li robisz np. co艣 dla klienta albo dla innej osoby z zespo艂u (ach ta praca w korpo), to pytaj o feedback. Niepok贸j cz臋sto powoduje prokrastynacj臋. 
  • Z czasem nawyk pracy wejdzie Ci w krew i b臋dziesz czu艂 si臋 niekomfortowo, gdy nie b臋dziesz tego robi艂.

 Inspiracje