piątek, czerwca 09, 2023

Axis Crossing jest dobre

Parę dni temu płakałem, że mi się książka skończyła.. w końcu trafiłem na kolejne ze świata, tym razem dzieją się jakieś ~400-500 lat po Silver Ships... ale jest dobra :-)

Wczoraj jadąc do Gdyni z Gdańska by przejść do Orłowa i później do Sopotu czytałem i aż mi przykro było, że już jest Gdynia ;-)

Dziś jadąc do Malborka też czytałem :-)

Może nawet lepsza na razie jest od Silver Shops.




Podobne postybeta
AirPods Pro nie lubią się z hulajnogami ;-)
Marsz, książka i resorówki ;-)
Najszybsza droga z Krakowa do Szczecina wiedzie przez....
Zimno - jeszcze większy wróg książki ;-)
Książki mi jakoś nie wchodziły w czasach COVIDa...

czwartek, czerwca 08, 2023

Są ludzie, którzy nie kochają Java'y

Tak de facto od 2004 roku moim głównym językiem programowania jest Java, trochę pisałem po drodze w C#, dość dużo w JavaScript, tak nieoficjalnie był też Python, trochę Scali i Gosu.

No i ostatnio miałem do czynienia z ludźmi którzy używają Scali, albo TypeScript i oni nie lubią Java'y.

OK, sam nie znoszę Scala'i i mam powody ;-) ale TypeScript imho jest ciekawym pomysłem, ale nadal jakbym miał teraz zaczynać jakiś nowy projekt to zdecydowałbym się wybrać Java'ę, bo najprościej o developerów i po prostu język jest dobry. Do Scala'i o ludzi trudniej, do TypeScripta nie, ale znów więcej się w nim jednak robi frontendu.

Tzn. mógłbym zrozumieć jakby ludzie używali czegoś sexy jak Rust, Kotlin czy nawet Go, albo Pythona jako czegoś całkiem innego, ale opór Scala'owców przed Java'ą jest dziwny.

A to wszystko tak piszę bo zdziwiło mnie, że są ludzie, którzy nie kochają Java'y ;-) a mój wbudowany pragmatyk jest nią po prostu zachwycony.




Podobne postybeta
GeeCON 2015
Rozszerzenia Chrome - Content Script nie wszystko może...
Poniedziałek, czyli "w tę"
Przemowy współczynnik fajności firmy ;-)
Krótki przepis na użytecznego Windows 8 ;-)

środa, czerwca 07, 2023

Mózg jako komputer

Chyba w niedzielę słuchałem podcastu Lex’a Fridmana ze Stephenem Wolframem (twórcą Wolfram Alpha).

I tam było ciekawe stwierdzenie, że nie umiemy uruchamiać programów w naszej głowie .Niby rozsądne, ale czemu tak jest?

I wg mnie sprawa sprowadza się do pamięci. Nie umiemy spamiętać programu, nie umiemy utrzymać wartości zmiennych i nie umiemy utrzymać wartości w strukturach danych.

Chociaż gdyby to było programowanie funkcyjne, to powinno być ciut łatwiej... ale tylko dla działania danej funkcji. Może na mózgu by się dało bezstanową lambdę odpalić ;-)

Chociaż do już arytmetyki też trzeba by było lepszej pamięci. Przecież dodawanie czy nawet mnożenie dużych liczb to nie jest taka strasznie trudna sprawa, ale jednak trzeba wartości tych liczb zapamiętać.

Ale już powinno się dać uruchamiać programy na mózgu + kartka papieru :-), mózg z kartką papieru powinien być w stanie symulować maszynę Turinga. Chociaż są ograniczenia, bo wolne byłoby przetwarzanie i dostęp do pamięci, ale jednak dałoby się nawet wielowątkowy kod wykonywać, tylko trzeba by było pewnie użyć dodatkowego licznika (znów na kartce ;-)) do wywłaszczania.

W ogóle nasza pamięć jest słaba pod tym względem, umiemy w głowie utrzymać niby teoretycznie max 7 rzeczy na raz, ale tak naprawdę 4, w porywach do 5. Chunkowanie pomaga... i jakby zchunkować jakiś prosty program (zwykle jedną funkcję) to można by spróbować uruchamiać kod w głowie, przecież tak się robi debugowanie w blindfold programming.





Podobne postybeta
Kartka i ołówek
DEC z INC odpowiedź i mała Maszyna Wirtualna ;-)
Komputery są naprawdę stare ;-)
Kod jako insight w umysł ;-)
GCJ mnie przerosło ;-)

wtorek, czerwca 06, 2023

Pendolino aka Wahadełko bez wahadełka ;-)

W latach 60 Brytyjczycy planowali przyspieszyć swoje pociągi, dlatego wymyślili wychylne pudło w pociągu… ale im nie wyszło i sprzedali patenty Włochom.

A oni w końcu zbudowali Pendolino, czyli Wahadełko, pociąg który się wychyla.

No i PKP kupiła Pendolino, ale bez tego kawałka z wychylnymi wagonami.

Stąd gdy Pendolino jedzie na pełnej kicie to trzęsie ;-) co widać jak się idzie (im ktoś wyższy tym gorzej bo ma wyżej środek ciężkości), a w toalecie to już jest w ogóle coś w stylu odkrywania akrobaty ;-)

I jak lubię Pendolino (chociaż ja ogólnie pociągi lubię ;-)) to jednak Pendolino może się schować przy takim VR z Finlandii jeśli chodzi o stabilność jazdy.




Podobne postybeta
Pociąg pociągowi nierówny ;-)
O! Pociąg ;-)
Planning poker w komórce ;-)
Mobosiciel ;-) czyli mobilny donosiciel, pomysł na mega złą aplikację
Patenty

poniedziałek, czerwca 05, 2023

Marsz, książka i resorówki ;-)

Byłem na marszu 4 czerwca, dużo buło ludzi :-)
Dotarłem w okolice placu Zamkowego, ale to już było w okolicach hasła "marsz uznajemy za zamknięty" ;-)
Masa ludzi szła, co fajne znów byli młodzi ludzie :-)

Policzono się, widać, że dużo nas jest. Ciekawa sprawa jak wszedłem już na Marszałkowską to wszyscy ludzie szli w jednym kierunku i w jednym celu ;-)

To było z dobrych.

Ze złych, książka mi się wzięła i skończyła... a nawet nie książka, a cały cykl książek, czyli Silver Ships.

Tak próbowałem zacząć Lost Fleet, ale na razie mnie nie porwało (pół strony przeczytałem ;-)), więc na razie jestem na Bobiverse, a rozważam czy nie wrócić do Project Hail Mary :-)

Te 24 książki z Silver Ships (czy de facto 20 książek z Silver Ships i 4 z Pyreans chwilę czytałem, kupiłem je w listopadzie, co by znaczyło, że przeczytałem je w pół roku... co by dawało 4 książki na miesiąc... pierwsza z książek z serii Pyreans była 11 książek temu, a zacząłem ją w pociągu wracając z Juraty,  czyli 27 marca... to wychodzi mi 11 książek na powiedzmy 2 i 1/3 miesiąca...
Przy okazji, w międzyczasie dowiedziałem się o jeszcze jednej serii tego samego autora, w tym samym wszechświecie, chociaż możliwe, że bez mieszania... więc Axis Crossing będzie chyba zamiast pierwszej z Bobiverse... ale to się jeszcze okaże :-)

I resorówki ;-)

Z "mojego" 28 piętra widzę coś takiego:



Całe mnóstwo jakichś Ferrari, Lambo chyba i innych. Niby ładne, ale głośne i do tego praktycznie wszystkie mają jakieś napisy, co im odbiera uroku ;-)



Podobne postybeta
Feeling Good SF :-)
Axis Crossing jest dobre
Książki mi jakoś nie wchodziły w czasach COVIDa...
Spryciarz z Londynu i kilka uwag o tłumaczeniu
Rube Goldberg machine do panowania nad spotkaniami... częściowego chociaż ;-)

niedziela, czerwca 04, 2023

Im hotel wyższy, tym pokój większy? ;-)

Siedzę teraz w pokoju na 28 piętrze w hotelu w Warszawie, pokój jest duży, ma tak z 30-40 m2 ;-) 
Trzeci raz tu chyba jestem i zawsze pokoje są dość duże.

W hotelu tej samej sieci byłem w Dallas i też były duże pokoje, podobnie w Los Angeles w Hilton LAX.

Wszystkie te hotele to wysokie budynki i plan tego z Warszawy sugeruje czemu te pokoje są takie duże ;-)


Po prostu dla hotelu ważna jest powierzchnia zewnętrzna.... bo tam są okna ;-)
Stąd większość pokoi jest wąska (w pewnych granicach wąskości ;-)) ale długa... bo tak naprawdę ta długość nic nie kosztuje, bo przecież nie da się zrobić pokoi bez okien (tzn. dać się da, ale nikt takich nie będzie chciał), można niby zrobić szersze korytarze, albo większe pomieszczenia techniczne... ale równie dobrze można zrobić większe pokoje :-)



Podobne postybeta
Odsłaniać okna na noc w gorące noce, czy nie odsłaniać? Oto jest pytanie....
10 milionów pięter...
Lecę do Stanów... i co z tego? ;-)
Empik w Bonnarce ssie
Spalmy wszystkie książki!

sobota, czerwca 03, 2023

git push -f

Taki fenoment GITa, został stworzony z myślą o wielu ludziach pracujacych nad dużym kodem, gdzie wiele osób może pracować nad 1 branchem...

Stąd gdy robi się rebase to zrobienie samego rebase często nie wystarczy, trzeba jeszcze zrobić je drugi raz gdy się robi push... 
Więc wszyscy w końcu zaczynają używać git push -f... które jest niezalecane jako niebezpieczne, z tym zastrzeżeniem, że takie jest jak się robi zmiany na branchu z kimś innym.

Czyli jak się wydaje główny use case dla GITa teraz to używanie go tak, że 1 branch = 1 dev i przez to git push -f, które w zamyśle miało być specjalnym sposobem stało się standardem ;-)





Podobne postybeta
Nie przepisujcie mi historii w repozytorium
O tym czemu branche są złe...
Czemu Sejm i Senat nie korzystają z żadnego systemu kontroli wersji?
Plan lekcji - wersja hard ;-)
Kryzys użyteczności part II - tablet

piątek, czerwca 02, 2023

Ile z obligacji... odsłona 2 ;-)

Pisałem tutaj kilka dni temu o bookmarklecie, który sobie zbudowałem do sprawdzania ile w tym i przyszłym miesiącu dostanę z obligacji.

Największym problemem mojego narzędzia było to, że nie dawało sobie rady ze zmienieniem liczby obligacji... 

Do czasu ;-)

Spytałem ChatGPT ;-) (Google też pytałem, ale nie było takie mądre) takim tekstem: "there is web page I'm writing bookmarklet, and I want to change number of elements in table, normally I would go with mouse and click on select element and choose instead of 20, value 50 and this would do a trick, how to do the same with JavaScript"

I poradził by użyć dispatchEvent ;-)

Więc mam teraz taki kod:

var selector = document.getElementsByTagName("select")[0];
selector.value="50";
var event = new Event("change");
selector.dispatchEvent(event);

Który to kod najpierw znajduje pierwszy selektor na stronie, ustawia wartość na 50, i teraz najważniejsze, którego nie umiałem zrobić sam :-)
Wysyła event "change" :-)

Oczywiście to powoduje, że coś się tam musi pobrać i nie mogę zrobić mojej reszty machlojek...

Stąd wrzuciłem większość kodu do metody doMagic() ;-) i mam takie coś:

function doMagic() {
var downSelector = document.getElementsByTagName("select")[1];
if (downSelector.value!="50") {
setTimeout(doMagic,100);
return;
}

A na samym dole kodu:


setTimeout(doMagic,100);

i dzięki temu 100 ms po wykonaniu manewru ze zmianą selektora uruchamia się kod w doMagic, który w pierwszym kroku sprawdza wartość w drugim selektorze :-)
Jeśli nie jest 50 to znów próbuje za 100 ms :-)

Jakby ktoś chciał to tutaj bookmarklet: ile odsetek w tym i przyszłym miesiącu?

OK, chociaż tak naprawdę kod jest ciut bardziej skomplikowany ;-) bo np. ten selektor jest widoczny tylko jak się ma minimum 20 emisji ;-) i może, jak się ma więcej niż 50 emisji to jest większa wartość możliwa do wybrania? ;-)
Stąd mój kod jest teraz ciut bardziej skomplikowany ;-)

Bo wygląda teraz mniej więcej tak:

var expectedNumber = null;
var selectors = document.getElementsByTagName("select");
if (selectors.length>0) {
var selector = document.getElementsByTagName("select")[0];
var max = selector[selector.options.length-1].value;
expectedNumber = max;
selector.value=expectedNumber;
var event = new Event("change");
selector.dispatchEvent(event);
}

function doMagic() {
if (expectedNumber!=null) {
var downSelector = document.getElementsByTagName("select")[1];
if (downSelector.value!=expectedNumber) {
setTimeout(doMagic,100);
return;
}
}

Czyli najpierw sprawdza czy w ogóle są jakieś selektory, jak nie ma to po prostu olewa zmianę liczby obligacji na stronie i czekanie... jak jednak selektor istnieje to wybiera największą (tak naprawdę ostatnią na liście) wartość z selektora, po czym sprawdza co jakiś czas czy ustawiona jest ta wartość....

Teraz jedynym założeniem jest, że to są 4 letnie obligacje.... i już wiem jak to shackować ;p trzeba spojrzeć na pierwszą literę nazwy emisji ;-)




Podobne postybeta
Bookmarklet do robienia CSV z obligacjami i ich oprocentowaniem ;-)
Ile w tym i przyszłym miesiącu z odsetek za obligacje?
Umiejętność programowania pomaga :-)
[Updated] Czytanie Pocketa ;-)
Czytelnictwo ;-)

czwartek, czerwca 01, 2023

Wojna promptów ;-)

Dalej walczę z siecią hoteli o pieniądze, które straciłem na ich błędzie.
I znów używam do tego ChatGPT do napisania lepszego maila.

Co zabawne, po drugiej stronie też może być jakiś człowiek, który też używa ChatGPT czy podobnego do streszczenia mojego maila, a później odpowiedzenia.

OK, może jeszcze nie teraz, ale wkrótce to może być norma.

Czyli może być tak, że zaczniemy od pisania dla ChatGPT, Barda czy innego modelu skrótu tego co chcemy osiągnąć.
Dostaniemy w odpowiedzi mail, który wyślemy.

Po drugiej stronie przeczyta go tylko jakiś inny model językowy i albo nam sam odpowie, albo da skrót człowiekowi, który to człowiek wyda polecenie co napisać.

My dostaniemy maila i też albo automatycznie odpowiemy, albo dostaniemy streszczenie....

To taka wojna promptów będzie ;-) która strona będzie miała lepszy model, albo przy tym samym modelu lepsze prompty ta wygra ;-)



Podobne postybeta
Przymiarki do nowego Bloggeroida
Moc promptów
DVD BtVS sezon 2
Język ma znaczenie w kontaktach z ChatGPT
Bard vs ChatGPT ;-)

środa, maja 31, 2023

Moc promptów

Zrobiłem sobie ostatnio kurs z robienia promptów do ChatGPT (ogólnie do LLMów) i to jest ciekawe, proste u podstaw, ale widać, że dobrze dobrany prompt pozwala na dużo :-)

Dziś użyłem tych sztuczek z kursu do spromptowania ChatGPT ;-)

Wszystko zaczęło się od tego, że Google w GMAILu włączyło mi "Help me write", które jak rozumiem bierze model podobny do Barda z Google i używa go do pisania maili na podstawie tego co wprowadzi user i chyba też treści wcześniejszej korespondencji...

Ja mam sprawę do załatwienia z siecią hoteli. Próbowałem jakiś czas temu, gdy mój bank genialne robił coś ze swoimi systemami, że przez cały weekend nic praktycznie nie działo, kupić za punkty + kasa hotel w Wenecji*. Ale się tak porobiło, że mi zabrali 3 razy po 420 USD, ale dodali ponad 210k punktów ;-)
No i się próbowałem skontaktować z siecią w sprawie tego, że chcę moje pieniądze z powrotem ;-), co też nie było proste, w końcu mail do nich dostałem na FB od ich fanpage'a ;-)
No i zrobili mi zwrot, ale problem jest, że moje 3x420 USD w momencie księgowania transakcji na karci miało jeden kurs**, a jak mi zwrócili miało drugi, mniejszy i jestem w plecy jakieś 400 PLN.

Więc w mailu, który dostałem od tej sieci z info o refundach poprosiłem Barda*** o napisanie maila, w opisie mu się podzieliłem opisem różnic w kursach i podkreśliłem, że wina jest po stronie sieci bo zrobili w końcu autoryzację transakcji (potrójnej) nawet bez rezerwacji podpiętej.

No i Bardowi wyszło tak sobie...

To uznałem, że dam szansę ChatGPT :-)

I mój prompt to coś takiego (tu sam prompt, bez treści maili wcześniejszych i mojej idei treści):


I'm writing e-mail in answer to other e-mail, I will share with you with my original e-mail
delimited in triple backticks, next answer to it, delimited inside triple square brackets,
and next I will share with you with idea for content of my answer which will be delimited by
triple pipes. I want you to produce response e-mail based on my idea
```{first_email}```
[[[{response__to_email}]]]
|||{my_idea_for_email}|||


I powiem wprost, że odpowiedź tak poproszonego ChatGPT z modele GPT-4 jest niezła :-)

Programistycznie poprosiłem o to samo gpt-3.5-turbo używając Pythona i odpowiedź też jest niezła :-)

W pracy jest ciekawa sprawa z adresami cosiów i tak myślałem czy można by było spróbować do takich dziwniejszych użyć ChatGPT... może**** sprawdzę.

Ale taki próbuję użyć prompt:
Your task is to read address from text delimited by triple backticks, if this is proper
address produce JSON object with following fields:
"street", "city", "country", "postal code", "house number", "apartment number", "person",
"company", if it is impossible produce empty JSON object.
```{text}```

Takie dałem mu adresy i takie dostałem wyniki:

AdresJSONCo to
Przemysław Rumik
Calle Buccari, 10, 30132 Sant'Elena, VE, Italy
{
 "street": "Calle Buccari",
 "city": "Sant'Elena",
 "country": "Italy",
 "postal code": "30132",
 "house number": "10",
 "apartment number": "",
 "person": "Przemysław Rumik",
 "company": ""
}
Mój hotel w Wenecji
Przemysław Rumik
Mestwina 45
OSW Kaper
84-141 Jurata
Poland
{
 "street": "Mestwina 45",
 "city": "Jurata",
 "country": "Poland",
 "postal code": "84-141",
 "house number": "",
 "apartment number": "",
 "person": "Przemysław Rumik",
 "company": "OSW Kaper"
}
Ośrodek wczasowy w Juracie
100 GRAND LN APT 405
FOSTER CITY, CA 94404-2265
United States
{
 "street": "100 GRAND LN",
 "city": "FOSTER CITY",
 "country": "United States",
 "postal code": "94404-2265",
 "house number": "",
 "apartment number": "APT 405",
 "person": "",
 "company": ""
}
tu mieszkałem w Dolinie Krzemowej

No i tak sobie mu to wychodzi... 
Wenecję zrobił najlepiej, w Juracie nie zajarzył że Mestwina to nazwa ulicy, w przypadku Foster City nie wiem ;-) bo 100 Grand to nazwa budynku, ale też może nazwa ulicy? 
A i tak tu miał ułatwione bo większość adresów skopiowałem z Amazona z moich adresów ;-)
Chociaż fakt, mój domowy adres zrobił dobrze.

* - ja po prostu lubię Wenecje :-)
** - plus pewnie spready, bo karta jest w PLN, walutą wymiany jest Euro, więc była transakcja z USD do Euro, a później z Euro do PLN, więc pewnie 2 spready.
*** - dla prostoty przyjmijmy, że to jest Bard, a nie inny model od Google.
**** - to jest funkcja czasu (nie mam ;-)) i tego, że ja sam sobie płacę za dostęp do API OpenAI.



Podobne postybeta
Workation ;-)
Zinwigiluj się sam ;-)
Automatyczne tłumaczenie - Automatic translation
YouTube czy Vimeo?
Generowanie plików ePub z OpenOffice.org :-)