piątek, czerwca 30, 2023

Impreza ;-)

Wczoraj ludzie z mojej poprzedniej firmy mieli imprezę na dachu ;-) więc się wkręciłem ;-)

Dowiedziałem się paru fajnych rzeczy, ale też dotarło do mnie, że ja jednak muszę mieć ludzi w pracy ;-) Nie jakichś gdzieś w świecie, ale takich materialnych.
Wychodzi na to, że jak umiem w remote work to to jednak nie jest mój idealny setup.

Tak btw jestem ciekaw czy za parę lat takiej pracy remote jakieś niezależne badania wykażą, że ludzie są szczęśliwsi, mniej szczęśliwi, albo że to jest neutralne. Ja uważam, że będą mniej szczęśliwi w swojej masie bo chodzenie do biura jest niekomfortowe i wymaga niepotrzebnego wysiłku, ale to taki impuls do wyjścia poza sferę komfortu.

Ale tak, do opisu idealnej firmy dodaję sobie "pracuje z biura" i "ludzie są lokalnie i chociaż raz na jakiś czas się ze sobą spotykają" ;-)




Podobne postybeta

No comment
Lepszy test mniejszy i dokładniejszy, niż większy i ogólniejszy ;-)
Co widuję w drodze z pracy... ;-)
Szybszy = lepszy?

środa, czerwca 28, 2023

Znaczące wersji Java'y ;-)

Ostatnio gdy pisałem posta, którego nie opublikowałem i może i nie opublikuję ;-) doszedłem do przypisu w którym sobie opisałem takie "wielkie" wersje Java'y ;-)
I to jest imho dość ciekawe, stąd tutaj o tym napiszę :-)

Jeśli spojrzeć na Java'ę to jest takie 5 faz Java'y.

Java od 1.0 do 1.2 (bez 1.2)

Nazwijmy ją początkową, nie wiedzieli jeszcze o czym to będzie, były Applety i AWT.
W okolicach 1.1 dodano jeszcze JDBC, refleksje, RMI i podobne.

Java 1.2

Tutaj już mniej więcej wiedzieli, co chcą robić, czyli język dla Enterprise, nie wiedzieli do końca czy to będzie coś bardziej do backendu czy do frontendu, więc dodali i Swinga (IntelliJ jest w Swingu ;-)), ale w tym samym czasie też JEE powstało i JSP. Do tego doszły Java Collection Framework, który był takim dość znaczącym krokiem w kierunku dodania dobrych kolekcji do Java'y.

Java 5

To była rewolucja o tyle, że wcześniej dochodziły nowe rzeczy, nawet ważne rzeczy, ale tutaj pojawiły się generyki i pierwszy raz wprowadzenie nowego słowa kluczowego mogło popsuć stary kod ;-) [wcześniej dodali np. strictfp, ale raczej nikt nie używał nigdzie takiej nazwy dla zmiennych, a enum już tak ;-)]

Java 8

To była już nowa Java, odpowiedź na pytanie które w światku Java'y istniało od paru lat "co po Java'ie?".
Do tego doszły streamy i programowanie funkcyjne, bytecode dorobił się kilku dodatkowych rzeczy, które były na tyle poważne, że nie wiem czy Google w końcu udało się to przeskoczyć tak by dało się używać ficzerów z Java 8 w programach dla Androida (szczerze nie sprawdzałem, ale wydaje mi się, że z 3 lata temu jeszcze się nie dało łatwo używać funkcyjnych rzeczy).

Java 9

Tak cichaczem przeszła, ale Jigsaw/modularyzacja i zniknięcie tools.jar zrobiło masę kłopotów wielu projektom. To była chyba pierwsze wersja Java'y w której duża ilość niezależnych projektów zderzyła się ze ścianą, Scala, Spark, Gosu, dla wszystkich to było wyzwanie i nie wszystkim udało się je przeskoczyć.
Stąd nadal w 2023 roku powstają projekty w Java 8...

Kurcze, może czas rzucić Java'ę? ;-)




Podobne postybeta
Szkoda Java'y
Naprawdę nienawidzę...
Nie wierze w polyglot developer, ale... ;-)
Swing - największe zło Java'y ;-)
Rosnąć wszerz czy wzwyż?

wtorek, czerwca 27, 2023

ChatGPT jako żółta koczuszka ;-)

Wielu zna moc żółtej kaczuszki ;-) czyli mental toola w którym wyjaśnianie komuś swojego problemu powoduje, że widzimy go w innym świetle i często znajdujemy problem.

Najlepiej jak tym kimś jest człowiek, ale standardowo doradza się by była to mała żółta gumowa kaczuszka ;-) 

Chociaż kocham gumowe kaczuszki ;-) to jednak mam problem z mówieniem do takiej, szczególnie w biurze.

Stąd jakoś tak wychodzi, że the next best thing okazuje się ChatGPT ;-) który nawet czasem potrafi coś doradzić ;-)

Chociaż jeszcze nie jestem na 100% przekonany, że to działa, bo mojego Sparkowego problemu nie rozwiązaliśmy ;-) ciągle wracamy do tego, że albo używam cache() albo wykonuję operacje wielokrotnie ;-)



Podobne postybeta
Wernyhora mode 3 ;-)
Electron + Airly = wskaźnik jakości powietrza w pasku ;-)
Google Me - ja stawiam na start 1 kwietnia ;-)
"Cywlizacja białego człowieka" - WTF?
Wyznania programoholika ;-)

poniedziałek, czerwca 26, 2023

Nie lubię Sparka ;-)

Tak bawię się Sparkiem i nie do końca rozumiem co on ułatwia ;-)
Jak nie używam cache to mi pewne rzeczy wykonuje po wiele razy (co ma sens bo przecież większość kodu składa takie gigantyczne funkcje i dopiero jak jest coś terminującego jak count, collect czy reduce to się te funkcje wykonują), a jak używam cache to mi potrafią wyskakiwać problemy z pamięcią ;-)

To jest chyba problem używania czegoś do danych liczonych najmniej w setkach GB, a jeszcze lepiej w TB do procesowania stuffy który zajmuje w porywach do 6 GB ;-)

Tak przy okazji co wg Was zrobi taki kod:
// build ArrayList with numbers from 0 to 2
List<Integer> inputData = new ArrayList<>();
for (int i=0; i<3; i++) inputData.add(i);

// Sparkaize it ;-)
JavaRDD<Integer> myRDD = sc.parallelize(inputData);

// map function, it returns the same what is on input but also "logs" it
Function<Integer, Integer> func = a -> {
System.out.println("Toster "+a);
return a;
};
// map
JavaRDD<Integer> map1 = myRDD.map(func);

// count and print
System.out.println("1:"+map1.count());
// again count and print
System.out.println("2:"+map1.count());
Co on wypisze? :-)
Okazuje się, że ponieważ 2 razy wołamy count na map1 to nasza funkcja mapujaca wykona się przy pierwszym count tyle razy ile mamy danych w myRDD, a później drugi raz przy drugim count.
To ma sens, bo tak naprawdę map1 ma w sobie tylko informację w stylu zaapply'uj funkcję map do danych z myRDD, i jak wołamy count() to znaczy, że trzeba zrobić apply tej funkcji mapującej dla każdego kawałka danych i na tym czymś zrobić count, to samo przy drugim count().
To jest sensowne, ale takie ciut zaskakujące jeśli się zapomni, że to jest funkcyjne ;-)




Podobne postybeta
Nie znoszę programowania "funkcyjnego" :-)
Zdradliwa Java i 8 królowych ;-)
Java 8 nadchodzi....
SleepAdvisor - komórka pomaga w wyspaniu się ;-)
Reality Check

niedziela, czerwca 25, 2023

Proste, a potężne API to było coś...

Tak oglądam API Obsidiana i tęsknię za API PowerGG ;-)

Ogólnie zawsze wolałem być bliżej metalu w programowaniu, może nie na poziomie metalu, ale niżej w abstrakcji i API PowerGG na to pozwalało ;-) w końcu tam idea polegała na tym by przyczepić się do menu GG/PowerGG i przechwycić odwołania do DLLki wsock32.dll i można było słuchać tego co GG wysyłało i co dostawało....

Teraz chciałbym np. dodać do Obisidana zapisywanie notek w postaci zaszyfrowanej i wydaje mi się, że się nie da ;-)

API dodają możliwość wykonywania pewnej skończonej ilości rzeczy i niczego więcej.

Chociaż jak pamiętam API Chrome jest całkiem przyjemne, pozwala na dużo, nawet na przechwytywanie odwołań po HTTP.

W Java'ie jest np. API które pozwala by całą aplikację owinąć w przypadku ruchu do aplikacji (webowej) Filtrem, ale już w drugą stronę jest tylko ewentualnie możliwość ustawienia Proxy.... 

Takie proste, a potężne API to fajna sprawa by była ;-)

Wbrew pozorom API dla Alfreda jest fajne. W ogóle może API używam tu w innym znaczeniu, bo nie chodzi mi tylko o dostęp do funkcji aplikacji, ale ogólnie o swobodę i otwartość. Idealnie np. żeby można było podmieniać elementy UI, albo wstawiać swoje ;-)



Podobne postybeta
Rant śmietnikowy ;-)
Plug-in master ;-)
Metapost o pisaniu posta, albo moje próby z Obsidianem
Symlink zamiast zmiany nazwy usera ;-)
11. Nie będziesz używał komunikatorów innych...

sobota, czerwca 24, 2023

Kolejne książki :-)

Jakoś tak w listopadzie kupiłem 1, a później pozostałe 19 książek z serii Silver Ships napisanych przez S.H. Jucha. Nawet te 19 kupowałem będąc w Wenecji i mi PKO BP kartę zablokowało... 2 razy ;-)

Później dotarło do mnie, że są jeszcze 4 dodatkowe w tym samym wszechświecie, które warto przeczytać po 13 książkach.
Przeczytałem, pierwszą wyjeżdżając z Juraty, później kolejne w Finlandii i w końcu skończyłem w Polsce i wróciłem do Silver Ships bo miałem jeszcze 7 ksiązek.

Ale jakoś niedawno, gdy byłem w Wawie (nie pomnę czy przed czy po marszu 4 czerwca na którym byłem :-)) mi się skończyły.... 

Okazało się, że jest jeszcze parę, 5 dodatkowych... i tak się zbliżałem do końca 4, aż dziś się okazało, że ich jest nie 5, a 8 dodatkowych ;-)

I tak mam jeszcze do czytania 4 książki, a podobno autor pracuje nad 9 z 3 serii...



Podobne postybeta
Marsz, książka i resorówki ;-)
Dalsze szukanie ładnych rzeczy ;-)
W 2023 będę na Rammstein 2.... wróć 3 razy ;-)
Książeczki :-)
Książki w grudniu ;-)

piątek, czerwca 23, 2023

2.5 stopnia robi różnicę? ;-)

W ciągu zimy temperatura w moim mieszkaniu to było tak mniej więcej 25 stopni Celsiusza i było fajnie, chociaż czasem zdarzało mi się założyć hoodiego, albo schować pod kocem.

Teraz mam 26-27 momentami 27.5 i umieram z gorąca ;-)

OK, wilgotność wtedy to było tak koło 40% (dzięki nawilżaczowi ;-)), a teraz koło 60%


I jak widać buzia na termometrze jest smutna.

Ciekawe, jak wrzuciłem te liczby (+ 27.5 i 60% które mam teraz pod monitorem ;-)) to mi wyszły takie temperatury "odczuwalne":

25 °C i 40% - 25.68 °C
27.2 °C i 61% - 28.42 °C
27.5 °C i 60% - 28.74 °C

Skąd mam temperaturę odczuwalną? ;-) od ChatGPT ;-), poprosiłem o kawałek w Pythonie który to liczy.... chociaż fakt, nie mam jak do końca zweryfikować ;-) (OK, spytałem strony National Weather System i mi wyszło tak samo dla 27.5 °C ;-))

Przy okazji okazuje się, że temperatura wyższa o 2.5 °C i wilgotność wyższa o 20% daje 3.06 °C więcej odczuwalnej ;-)



Podobne postybeta
Testowanie termometrów ;-)
Pixel 6 po ~2 miesiącach.... prawie nieodróżnialny od Pixela 4 XL ;-)
awww. Dads rock!
Pociąg vs samolot - cena
Maksymalna temperatura operacyjna Przemka

czwartek, czerwca 22, 2023

Umykający postęp

Dotykając się z Java'ą 8 i porównując ja z Javami wyższymi widzę jak to nieprzyjemny język jest ;-) co najlepsze jak Java 8 była funkiel nówką to było tak, że ona była taka fajna w porównaniu do 7.
Albo gdy uruchomię jakiś starszy telefon, np. G1 z Androidem w wersji 1.6 to patrzę na to i takie mam "rany boskie jak na tym można pracować", a tak naprawdę możliwe, że wtedy bardziej z telefonu korzystałem niż teraz ;-)

Ten ciągły postęp w jakości softu jest zadziwiający.

Pamiętam gry, czy dema z lat 90 i mam w głowie wizję, że to było takie doskonałe. Np. taki początek Another World, przecież to była taka świetna grafika... a jak dziś się na to patrzy to jest takie "OK, fajne, ale o co tyle szumu?".

Tak nam chyba umyka ten postęp ;-)


Podobne postybeta
Nadal jestem zachwycony moim Macbookiem Air z M4 :-)
Dalsze szukanie ładnych rzeczy ;-)
Android 10 już jest :-)
Czas nowych laptopów ;-)
Amd64, Intel64, EMT64, WTF64? ;-)

środa, czerwca 21, 2023

Nie znoszę programowania "funkcyjnego" :-)

Jedną z rzeczy, która mnie wkurza w kodzie który oglądam jest programowanie "funkcyjne" ;-)

O takie np:

var freq = new HashMap<Integer, Integer>();
list.forEach(i -> freq.put(i, freq.getOrDefault(i, 0)+1));

czyli niby jest funkcyjnie, ale jest side effect w postaci zmian na obiekcje spoza funkcji.

To szczególnie boli jak z takim podejściem przychodzi się do ohydnego Sparka... 

Bo jak zrobimy coś w ten deseń w Sparku:

HashMap<Integer, Integer> m = new HashMap<Integer, Integer>();
rdd.map(x -> m.put(x % 100, m.getOrDefault(x, 0) + 1));
System.out.println(m);

to wypisze nam {} ;-) bo my w 2 linii co najwyżej sugerujemy Sparkowi, by może taką operację wykonał, a on ją zrobi jeśli uzna za stosowne i co najważniejsze zrobi wtedy kiedy będzie trzeba...

Co lepsze jeśli to to m będzie za każdym wykonaniem inną mapą ;-) bo on sobie zrobi totalnie nową klasę dla funkcji i ją zserializuje i w niej będzie pole dla HashMap, ale jak rozumiem to pole nie będzie miało wartości z naszą HashMap'ą ;-)




Podobne postybeta
Nie lubię pseudofunkcyjnych wtrętów w kodzie ;-)
Nie lubię Sparka ;-)
Spisek ClassLoader'ów ;-)
Zaczynam woleć Map nad Map ;-)
Który kod (nie kot! ;-)) lepszy?

wtorek, czerwca 20, 2023

Większa pensja -> ciut późniejsza pensja -> problemy z płynnością ;-)

Ciekawostka, od jakiegoś czasu znów mam prawa autorskie ;-) (ale tylko 40%, bycie managerem zabiera czas na kodowanie :-(), ale z tego powodu mam też pensję wypłacaną trochę później.
Przez ostatnie ~15 lat? Pensję dostawałem tak najpóźniej do 28 każdego miesiąca, a teraz tak do 10 kolejnego miesiąca (coby można było policzyć autorskie).
I nawet bym nie przypuszczał jak mi to zaburzy finanse ;-)
Już parę razy w tym roku miałem sytuację, że bałem się o swoją płynność finansową ;-) (OK, to że przez 2 miesiące czekałem na zwrot kosztów podróży do Finlandii też było ciut winne ;-), szczególnie że jeszcze mi się kilka wyjazdów na to nałożyło)
Bo mój model był zawsze taki, zaraz po pensji kupowałem obligacje, na początku kolejnego miesiąca robił się przelew na inwestycje, tak w połowie miesiąca się karta kredytowa spłaca, a jeszcze co parę dni są różne rachunki.
Tylko, że w momencie jak pensja jest 10 to nagle mój model się wali ;-) i trzeba by było poprzesuwać daty... stąd na razie chcę pójść prostszą drogą i będę próbował zostawić na koncie jakiś bufor.

A wszystko przez to, że dostaję ciut więcej. Swoją drogą to jest już nawet nie first world problem, a ogólna dekadencja ;-)



Podobne postybeta
JNI i łańcuchy ;-)
Chrome2ChromeV2 - działamy przez chrome.storage.sync :-)
Takie tam dywagacje
Bonusy, koszty autorskie i limit 30 krotności...
Pociąg pociągowi nierówny ;-)