środa, 22 kwietnia 2020

wtorek, 21 kwietnia 2020

Najsłabsze ogniwo

WIG_BANKI jest obecnie słabszy nawet od odzieżówki. Praktycznie nie uczestniczył w odbiciu z marcowych dołków, a nawet pogłębił je:



Szukanie wsparć w sytuacji jaką mamy obecnie wydaje się jałowe, ale chociaż RGRa narysuję, a co.


poniedziałek, 20 kwietnia 2020

Reminiscencje Twórcy Systemów cz. 4: Pierwsza kompetencja

Nauka stojąca za wczorajszym wpisem jest prosta: znajdź mentora, grupę pasjonatów. Z kim przystajesz, takim się stajesz. Dzisiaj możesz to zrobić ze środka lasu, jeśli masz dostęp do neta. Możesz być aktywnym członkiem grupy programistycznej bez wychodzenia z piwnicy.

Pierwszy semestr na studiach inżynierskich to głównie przedmioty techniczne, fizyka i matematyka. Jest jeden o C++ i najważniejszy dla mnie przedmiot: Organizacja Komputerów. Prowadzi go AJ, facet o aparycji generała Montgomery’ego (tego co pokonał lisa pustyni Rommla): szczupły, krótko przycięte siwe włosy, angielski wąsik. Prawdziwy pasjonat architektury komputerów, rozwiązań technicznych, wszystko rozpisane na instrukcje asemblera. Nie opuszczam żadnego wykładu, chłonę każde słowo.

To co dla mnie jest złotem, dla innych smutną koniecznością. Jak ktoś walczy o średnią (lub przetrwanie), większą wagę przykłada do Analizy Matematycznej. Wielu nie widzi żadnej wartości w pisaniu programów w asemblerze. Chcą zostać administratorami sieci, baz danych. Powoli klarują się obszary kompetencji. Mój cel jest jasno zdefiniowany: robić gry komputerowe, zatem w tym momencie wydaje mi się, że najważniejsze to nauczyć się C++.

Używam starego dobrego kompilatora Borland C++ pod DOS. Jeśli mój program się zawiesza, muszę restartować kompa. Mógłbym już przenieść się na znacznie lepsze środowiska programistyczne pod Windowsa (Linuxa już mam, ale nie udaje mi się skonfigurować karty sieciowej), jednak blokuje mnie ilość nowych rzeczy do nauki. Czuję się niepewnie, więc trzymam się tego co znam. Z jednej strony to wada, bo zamyka mnie na nowości, z drugiej zaleta, bo skupiam się na tym co najważniejsze: programowaniu.

Nad kodem trzeba spędzić kilkaset godzin miesięcznie. Tysiące w skali roku. Dopiero gdy ograniczenia narzędzia zaczynają mi doskwierać, rozglądam się za lepszym. Im więcej umiem, tym więcej pomysłów na bardziej złożone programy. Trzeba przejść przez wskaźniki, sortowanie, listy, żeby napisać pierwszą bazę danych w C. Nie spinać się, że jeden już robi gry, a drugi demka w 3d. Kumpel z łącznika w akademiku zaraża mnie do matematyki wyższej, i pierwszy raz w życiu jestem w stanie wykorzystać komputer do złożonych obliczeń matematycznych i rysowania wykresów. Droga do robienia gier (w tamtych czasach pisało się je od A do Z) jeszcze daleka, ale później te umiejętności będą kluczowe do pisania enginów.

Programowanie to pasja. Fundament tworzenia systemów. Nie wierzę, że można zaprojektować dobry system, jeśli nie podjęło się wcześniej setek tysięcy decyzji co, gdzie i dlaczego zdefiniować, przenieść, usunąć w kodzie.


Reminiscencje Twórcy Systemów


1. Początki
https://podtworca.blogspot.com/2020/04/reminiscencje-tworcy-systemow-cz-1-2.html

2. Pierwsza mapa
https://podtworca.blogspot.com/2020/04/reminiscencje-tworcy-systemow-cz-1-2.html

3. Przyjaciel
https://podtworca.blogspot.com/2020/04/reminiscencje-tworcy-systemow-cz-3.html

4. Pierwsza kompetencja
https://podtworca.blogspot.com/2020/04/reminiscencje-tworcy-systemow-cz-4.html

5. Koncentracja, perspektywa, zaciemnienie
https://podtworca.blogspot.com/2020/04/reminiscencje-tworcy-systemow-cz-5.html

6. Programming Linux Games
https://podtworca.blogspot.com/2020/05/reminiscencje-tworcy-systemow-cz-6.html

7. Pierwsza gra, pierwszy system, pierwsza porażka
https://podtworca.blogspot.com/2020/05/reminiscencje-tworcy-systemow-cz-7.html

8. Liniowość i chaos
https://podtworca.blogspot.com/2020/06/reminiscencje-tworcy-systemow-cz-8.html

9. Druga gra, pierwsza praca i przełom
https://podtworca.blogspot.com/2020/07/reminiscencje-tworcy-systemow-cz-9.html

10. Programowanie funkcyjne i sposób na naukę trudnych zagadnień

11. Uczelnia zaskakuje na finiszu






piątek, 17 kwietnia 2020

W drodze na opór

Skala odbicia na niektórych akcjach zmusiła mnie do podjęcia przesunięć w portfelu. Być może najlepszą decyzją byłoby nic nie robienie i zajrzenie na konto za rok. Jednak szybkość z jaką indeksy odrabiają straty i rosnący entuzjazm graczy skłaniają do redukcji ryzyka.

ES.F weekly:


Kontrakty amerykańskie osiągnęły już wsparcie z lutego, SMA50, a RSI zbliża się do 60 pkt, które w bessie są często barierą.

DAX:


Tutaj aż się prosi o test luki na 11 tys. gdzie przy okazji biegnie SMA50.

Krach 2020 znowu pokazał jak obosieczną bronią są pochodne. Kilka spektakularnych bankructw, kilka epickich rajdów. Większość uczestników rynku pochodnych doznało poważnych szkód. Następuje wymiana pokolenia. Masowy napływ nowego narybku na giełdę interpretuje się pro-spadkowo i sam zaczynam mieć niedźwiedzie nastawienie w skali najbliższych tygodni. Jednakże w długim terminie interpretuję ten sygnał byczo - byłem wśród rzeszy nowych leszczy, którzy zaczynali przygodę z giełdą po krachu 2008. Nie trzeba było być geniuszem, żeby zobaczyć że KGHM po spadku ze 140 na 20 zł to okazja.

Podobnie jest dzisiaj - PKO po 2 dychy, PEKAO po 5, nigdy nie był tak tani. Zjazd styczeń-luty 2009 trochę mnie poturbował, ale późniejsza hossa wybaczyła wszystkie błędy. I podobnie będzie po tej bessie. Krótkoterminowo może być boleśnie, ale za rok obecne poziomy będą najprawdopodobniej rozpatrywane jak okazja życia. I podobnie jak ja 11 lat temu, większość nowych graczy będzie żałować, że gdyby trzymali akcje kupione na dnie, zarobiliby x10, ale pokusili się o zyski 20-50%, szarpali się z rynkiem, aktywnie tradowali i niewiele zarobili.


czwartek, 16 kwietnia 2020

Reminiscencje Twórcy Systemów cz. 3: Przyjaciel

W pierwszej reminiscencji zaszyłem naukę, żeby się nie poddawać, szczególnie w sytuacjach, gdy robią to wszyscy wokół. To wiedziałem od zawsze, działało w szkole, na boisku, przy dokańczaniu rozpoczętych prac.

Reminiscencja druga kryje prawdę, którą zrozumiałem wiele lat później. Za bardzo przywiązujemy się do pierwszej mapy. To dotyczy każdego nowego terytorium, na które wkraczamy. Błąd zakotwiczenia. Pierwszy sposób radzenia sobie z problemem wiąże się z silnymi emocjami, do których wracamy w fazie, gdy nasze kompetencje są wciąż niskie. W pewnym momencie musisz jednak eksperymentować z nowymi podejściami i porzucać stare schematy. Inaczej będziesz jak wujek, który próbował namówić mnie do pisania w Tagu pod DOSem, kiedy dostałem pierwszego pentiuma z Wordem.

Wróćmy do studiów. Mamy rok 2000. Pierwsze zajęcia. Przychodzę na wszelki wypadek godzinę przed czasem. Szeroki margines bezpieczeństwa zawsze się u mnie sprawdzał. A tu zaskocz, stoi sobie wysportowany typek (ćwiczył gimnastykę artystyczną), który przyszedł jeszcze wcześniej. Upewniłem się, że czekamy na te same zajęcia. Potem przekonaliśmy się, że faktycznie mamy jeszcze godzinę zapasu i wyszliśmy zwiedzać teren polibudy. Rozmawialiśmy o asemblerze, liczbach zespolonych i fizyce. Z jakiegoś powodu te tematy wydawały mi się kluczowe do zrozumienia na nowej ścieżce życia.



Tak poznałem swojego największego przyjaciela na studiach. Leny i Tony. Dla mnie on był Leny, bo wpadał do każdego pokoju w akademiku z bananem na twarzy jak gość z filmu Memento, który wpada na maskę auta z okrzykiem “Leny!” A ja dla niego byłem Tony, od Tony’ego Halika. Trop do sceny z “Chłopaki nie płaczą” może nie być fałszywy.

Najlepsi programiści systemów są samotnikami. Żeby ogarniać złożone systemy musisz kontemplować nad nimi tysiące godzin. Nie ma dróg na skróty. Głupie sortowanie bąbelkowe symulowałem w głowie przez wiele godzin. Wstawiałem komórki do pamięci, śledziłem wskaźniki i zachowanie procka. Za to kiedy kilku takich samotników zbierze się w grupę i ustali wspólny interfejs, nie ma dla nich rzeczy niemożliwych. 1 + 1 = 11.

poniedziałek, 13 kwietnia 2020

Reminiscencje Twórcy Systemów cz. 1-2

Zacząłem niedawno cykl wpisów na wykopowym mikroblogu, w których dzielę się swoimi doświadczeniami z 20-letniej ścieżki programisty. Ponieważ jednak opisane wnioski wykraczają poza inżynierię, zachodzą na zarządzanie, grę na giełdzie, wnioski z lektur i teorii uczenia, pomyślałem że zacznę przenosić tamte wpisy na bloga i rozwijać w obu miejscach.

Hello world.

Zaczynam wykopowego mikrobloga. 20 lat programowania, projektowania i tworzenia systemów, kompilatorów, definiowania języków programowania. Nazwę go Reminiscencje Twórcy Systemów. Robiłem też milion innych rzeczy. Blog nie będzie tylko o programowaniu - dobre programowanie jest pochodną ciekawości, nieustępliwości i ciągłego ulepszania. Poszukiwania formy idealnej.

Reminiscencje Twórcy Systemów cz. 1: Początki

W 1991 wyszedł Terminator 2. Miałem 10 lat, zacząłem słuchać Gunsów (You could be mine), kupiłem komiksową adaptację filmu z TM-Semic. Przyszłość opanowana przez maszyny. Dopiero co dostałem Commodore C-64 na przyjęcie, a w komiksie Skynet był już w stanie opanować świat!

Gram nałogowo od późnych lat 80-tych, kilka tytułów wrzuciłem tutaj:
https://p-gry.blogspot.com/2011/03/powitanie.html

Od rozpowszechnienia się PC-tów w Polsce wsiąkam w gry strategiczne. Ale programowanie wydaje mi się zbyt nieosiągalne - w latach 90-tych rysuję komiksy. Komputery służą do konsumpcji gier, a nie tworzenia.

1999 Matrix. Skynet przy Matriksie to pikuś. Obejrzany w 2000, kiedy zmieniam życiowy cel: zamiast iść na studia plastyczne, żeby rysować komiksy, pójdę na informę, żeby robić gry.

2000 - dostałem się na informę na Politechnikę Gdańską. Dzięki fizyce. Na teście z matematyki i angielskiego cięli punkty o byle co. Na teście z fizyki odwrotnie: ludzie oddawali puste kartki, więc jak chociaż wypisałeś dane i kilka wzorów, udumałeś jakiś rysunek, to dawali za to punkty. Z fizy byłem cienki jak większość, ale 2 dni przed egzaminem intensywnie czytałem, przepisywałem wzory do zeszytu, szukałem korelacji. Na egzaminie wstępnym dostałem 27/50 i to mi wystarczyło, żeby się dostać. To był szczyt bańki dotcomów, po 10 osób na miejsce na informę, ale większość się nie dostawała i szli na ekonomię, elektronikę i telekomunikację, matematykę stosowaną, fizykę techniczną. A potem musieli wkuwać miliony trudnych rzeczy, typu opory w drutach czy rozchodzenie fal w wodzie, choć i tak chcieli pracować w IT.

Linkuję obrazek z grową wersją polibudy, jak zapamiętałem ten klimat.



Reminiscencje Twórcy Systemów cz. 2: Pierwsza mapa

Dostałem się na informatykę. Nie wiem, czego nie wiem. Chcę jak najszybciej nauczyć się wszystkiego. Problem w tym, że nie wiem czym jest to wszystko. Potrafię dostrzec tylko zewnętrzne aspekty: gry komputerowe, systemy operacyjne, internet, układy scalone. Wszystko wydaje się zajebiście ważne. Potrafię złożyć PC-ta, wymienić procka, mieszać zworkami na twardym dysku, pisać ściągi w Wordzie, rysować pixelkami w Gfx2 i oczywiście grać. To tyle co nic.

Od innych speców w podobnej sytuacji do mnie wiem, że Pascal jest be, a C++ jest cool. Wszyscy to wiedzą. Kupuję jakąś biblię C++ z Heliona, która leży na półce do dziś. Równie dobrze mógłbym wydrukować dokumentację. Pascala liznęliśmy w szkole. Pisałem w nim programy podobne do tych na C-64 w basicu prawie 10 lat wcześniej: 2+3 . Podaj imię. Cześć . Pamiętam taką scenkę: leżę w namiocie na Przystanku Woodstock i studiuję podręcznik do informatyki. Szukanie elementu w tablicy w Pascalu ze znaną długością tablicy i z wartownikiem.

Mamy na mat-fizie dwóch klasowych guru. Oni już potrafią w C++, ale uchylają rąbka prawdy: jak chcesz, żeby twoja gra szybko działała, musisz znać C i asemblera. Wszystkie newralgiczne części gier pisze się w asemblerze. Na demo scenach piszę się tylko w asemblerze. Dobry programista pisze w asemblerze. Wymieniamy się dyskietkami z kursami i piszę swoje pierwsze programy. Wreszcie jakieś światełko, coś czego mogę się uchwycić. Adresowanie ekranu, wyświetlenie pixela w określonym kolorze, przesuwanie bitów, żeby nie mnożyć, bo ‘mul’ zabiera więcej cykli procesora, z tego samego powodu ‘xor ax, ax’ zamiast ‘mov ax, 0’.

Ten pierwszy wybór (asembler) ustawia mnie na wczesne lata. Pierwsza mapa, jakiej uchwyciłem się, by wpłynąć na ocean informacji. Nie wiesz czy obrałeś dobry kurs, może płyniesz do Ameryki, szukając odpowiedzi w mapie śląskiej kopalni.  Potrzeba zrozumienia podstaw działania hardware i oprogramowania da mi z jednej strony lepsze zrozumienie systemów informatycznych. Dzięki niej odkryję, że dobre systemy są jak cebula w Shreku: składają się z warstw. Coś jak protokół sieciowy - każda warstwa ma funkcję do spełnienia, udostępnia pozostałym warstwom niezbędne API, ale ukrywa przed nimi swoje bebechy.

Z drugiej strony wyjście od dołu odciąga mnie od korzystania z wysokopoziomowych narzędzi. Mój bliski przyjaciel też dostał się na informę (na inną uczelnię), ale zamiast trzaskać programy w asmie pisze swoją pierwszą gierkę w html + javascript. Nie drąży jak i dlaczego działa to wszystko poniżej, interesuje go efekt w postaci interaktywnej strony. On się skupi w przyszłości na operowaniu systemami jak klockami, żeby budować wysokopoziomowe usługi.