poniedziałek, listopada 30, 2020

Istotny łowca sztabowy ;-)

Z jednej strony Ty widzisz ślady jakiegoś zwierza, coś nie działa, a Ty widzisz trop i wiesz, że to będzie coś fajnego.

Z drugiej inni łowcy idą na polowanie, a Ty jesteś odpowiedzialny za wydanie im odpowiednich narzędzi, do zadbania by dzida miała krzemień dobrze przywiązany i by wszyscy wiedzieli mniej więcej na co idziemy polować i dlaczego.

Ci, którzy wypatrzyli zwierzynę pokrzykują, że trzeba upolować tego słonia i jeszcze te 12 żyraf...

Musisz z łowcami obgadać, które zwierzęta najlepiej upolować, biorąc pod uwagę to co mówią wypatrywacze, w końcu oni już znaleźli kogoś komu można oddać te żyrafy i dostaniemy za nie coś innego...

Ale jednak jest w Tobie ten łowca i też chce polować.

Tak, wydawanie dzid i ogólnie planowanie polowania jest ważne, ale jest tak cholernie męczące i nudne.... z jednej strony musisz lecieć na 100% mocy, a z drugiej nic się nie dzieje.
Nie czaisz się na zwierza, ale oficjalnie nosisz tytuł istotnego łowcy sztabowego...

Jakby Ci chociaż pozwolili czasem polować, albo decydować jak będziemy polowali, ale nie Ty masz spędzać większość czasu na spotkaniach z innymi istotnymi łowcami i istotnymi łowcami sztabowymi gdzie wraz z innymi dyskutujecie o tym, że trzeba przeprowadzać polowania testowe, że trzeba dbać o jakość skór i w ogóle... chociaż te spotkania nic nie wnoszą to starszyzna je lubi... albo i nie lubi, ale myśli, że inni lubią.

I tak to się toczy....



Słowniczek ;-)

łowca - developer,
istotny łowca - tech lead,
istotny łowca sztabowy - tech lead, staff software engineer,
wypatrywacze - PMowie




Podobne postybeta
Jak upolować satelitę? :-)
70+ godzin, Staff i iPhone ;-)
Filmy
Dlaczego wybrałem Windows XP dla mojego EEE?
A jednak jest nadzieja :-)

piątek, listopada 20, 2020

niedziela, listopada 01, 2020

YouTube/Facebook/Instagram dla jedzenia by nie przeszedł ;-)

Wyobraźcie sobie taką sytuację, pewna firma zbudowała maszynę w oparciu o sztuczną inteligencję, która to maszyna potrafi ugotować/przygotować dowolną rzecz, trzeba jej przynieść tylko przepis.

Ta firma zbudowała też biznes na tej maszynie polegający na tym, że w wielu miejscach na świecie postawiła sklepy/fabryki w których ludzie mogą sobie tam pójść wybrać dowolny z produktów i go kupić. Ba gdy firma widzi, że coś się lepiej sprzedaje produkuje tego więcej. Twórcy dostają procent od sprzedaży.

Co ciekawe w prawie istnieje specjalna luka, która sprawia, że jak długo ta firma jest tylko platformą/dostawcą, a nie producentem (a producentem jest tylko jeśli sama dostarczy przepis) to nie odpowiada za to co się sprzedaje, jak długo w razie zgłoszenia, że coś jest nieteges przestanie to sprzedawać.

Ludzie szybko odkryli, że mogą tak produkować alkohol i narkotyki, albo dynamit.

Ale firma nie jest w żaden sposób za to odpowiedzialna, bo ona dostarcza tylko platformę.

Obiecali nawet i rzeczywiście wdrożyli mechanizmy w oparciu o sztuczną inteligencję, które starają się, z różnymi skutkiem, wyłapywać takie niepewne rzeczy.

Do tego na życzenie firm farmaceutycznych i spożywczych wprowadziła mechanizm FoodID, tak, że producent może wprowadzić instrukcję produkcji swojego produktu oraz zaznaczyć co chce by się stało w razie ktoś wprowadzi takie coś lub podobnego do systemu. Do wyboru jest zablokowanie, ale mało kto to wybiera, nic nie robienie, też mało kto wybiera i opcja najbardziej popularna branie całej kasy ze sprzedaży (po potrąceniu honorarium do platformy).

Co ciekawe można przygotować np. instrukcję/przepis na pyszne ciasto i tak się złoży, że FoodID opisuje dowolny z elementów występujących w cieście i cały zysk idzie dla tego kto zarejestrował go w FoodID.

Co sądzicie o takim biznesie?

Brzmi trochę tak szemranie, nie? ;-)

A jak tymi przepisami są filmy, albo zdjęcia czy wpisy to nam to nie przeszkadza ;-)

W końcu to wyżej to model działania YouTube, Facebooka czy Instagrama ;-)




Podobne postybeta
Po Google I/O - TensorFlow, App Maker, Kotlin i Firebase ;-)
Strasząca książka - Extinction: The Thriller
DVDowe pytanie ;-)
Do 3 razy sztuka ;-)
Naiwny klasyfikator bayesowski nie jest jednak dobry do rozpoznawania clickbaitów ;-)

czwartek, października 29, 2020

[SOLVED :-)] Google kłamie ;-) co do tego jak często odświeża subskrypcję kalendarzy

Update:

Okazuje się, że jest sposób, trzeba iść na stronę https://calendar.google.com/calendar/u/0/syncselect i tam zaznaczyć takie kalendarze by się synchronizowały :-)

Jest tak, w pracy mam Outlooka, prywatnie używam Google Calendar.
Chciałbym móc "w domu"* widzieć spotkania w kalendarzu**....

No to mam wyeksportowany kalendarz firmowy z Outlooka do pliku ICS, mam ten plik zaimportowany w Google Calendar... i nic, spotkanie się nowe nie pojawiają, tylko te które były w momencie subkrypcji.

Najpierw myślałem, że to Microsoft coś popsuł, ale nie, jak sobie pobieram ten plik cURLem to widzę jak mi dochodzą nowe spotkania....

Szukałem po Internecie i Google twierdzi, że robi refresh takich kalendarzy co 8 godzin....

I nie robi, wrzuciłem sobie do sieci swój plik ICS i widzę w logach, że ostatni raz Google Calendar dotykał się go mniej więcej 25 godzin temu i od wtedy cisza...

Będę monitorował sytuację i zobaczę czy w końcu jednak odświeży ten kalendarz, czy może jednak nie ;-)



* - nawet na WFH na którym jestem (jak i wielu innych) od połowy roku w domu to wtedy jak nie pracuję.

** - głównie dlatego, że od tego pół roku szczególnie, a wcześniej też dość często masa innych ludzi wie lepiej co powinienem ze swoim czasem robić ;-)***

*** - do teraz pracując z domu nie miałem czasu żeby pójść nowe okulary kupić!!




Podobne postybeta
Wpisy z Bloggera jako eventy w Google Calendar, odsłona 3 - Aplikacja ;-)
Cisza
[Updated] Największe zagadki wszechświata - imieniny, kto ustalił, że taka Grażyna ma imieniny 1 kwietnia?
Multiscreen world nie działa do końca ;-)
Ucieczka z Evernote - wersja 0.0.1 ;-)

piątek, października 23, 2020

Powrót laptopa :-)

Wrócił do mnie mój laptop, którego bateria mocno zgrubła ;-)

Teraz dostałem nową :-) co ciekawe, załapałem się na program Apple dzięki któremu bateria w moim laptopie została wymieniona za darmo :-)

W trakcie gdy laptop był chory używałem mojego Macbooka Air jako "głównego" komputera i był problem...

Jest jednak zauważalna różnica między:


Z Macbooka Air, a:


Z Macbooka Pro :-)

Może to przez to, że w mojej przeglądarce jest zawsze cała masa zakładek i z racji ćwiczenia zadanek mam ostatnio zawsze otwartego IntelliJ'a :-)

Ale laptop wrócił, został zdezynfekowany i działa :-)

A Macbook Air aka Maleństwo wrócił do bycia maszyną kanapowo-łóżkową :-)




Podobne postybeta
Power ;-)
Postanowienia noworoczne programisty ;-)
Macbook - chyba chcę (prywatnie)
Pierwsze hack'i pamięta się najlepiej ;-)
Z placu boju z Bloggeroidem ;-)

poniedziałek, października 19, 2020

Nieoczywiste oczywistości ;-) podstępny autoboxing ;-)

Java jest prostym językiem, ale dodawanie kolejnych ficzerów powoduje, że staje się coraz bardziej skomplikowana.

Jakoś tak milion lat temu w Java 5 dodano autoboxing i auto unboxing. I to bardzo ułatwia życie, tak naprawdę mało kto teraz pamięta w trakcie kodowanie, że int i Integer to dwie różne rzeczy i zwykle po prostu ludzie pamiętają, że Integer to taki "specjalny" int który można trzymać w kolekcjach.

I stąd są problemy....

Bo co się stanie w sytuacji gdy z mapy albo listy pobieramy Integer'y i porównujemy je z czymś przy pomocy ==?

To zależy czy to z czym porównujemy to int czy Integer ;-)
Jeśli int to kompilator w trakcie kompilacji zrobi nam auto unboxing naszego pobranego Integer'a.
Jeśli Integer to zależy.... gdy to jest Integer w zakresie -128..127 to zwykle powinno działać == tak jakby zadziałało equals.... przy założeniu, że oba te Integer'y zostały poprawnie "stworzone", czyli nie przez new Integer(int).
Jeśli coś wyższego niż 127, albo niższego niż -128 to raczej nie zadziała == jak equals.

Niby to wszystko to żaden problem, ale.....

Idźmy dalej, a co jak mamy takie 2 z overloadowane metody:

boolean test() {
return isEven(10);
}

boolean isEven(int x) {
return x%2==0;
}

boolean isEven(Integer x) {
return x%2==0;
}

To która zostanie zawołana gdy wykona się metoda test? ;-)

Wiadomo, że isEven(int), ale jeśli usuniemy metodę isEven(int) to kod nadal się będzie kompilował i nadal będzie działał ;-)

Tu niby problem nie jest z autoboxingiem i unboxingime chociaż trochę jest ;-) bo jak kompilator decyduje którą metodę zawołać? No szuka metody najbardziej "szczegółowej". 

Czyli tutaj w metodzie test ma 10, a 10 to int, więc wie, że ma zawołać isEven(int), ale jeśli nie będzie metody isEven(int) to popatrzy i znajdzie metodę isEven(Integer) więc dokona auto boxingu tego 10 do Integer.valueOf(10) i wrzuci je do tej metody...
Jakby nie było tej metody, ale byłaby metoda isEven(Object) to ona by została zawołana....

To niby są wszystko oczywistości, ale takie nie do końca oczywiste ;-)

A patrząc jak ludzie chętnie dodają do API nowe metody to takie problemy się po prostu muszą zdarzać ;-)






Podobne postybeta
Człowiek się uczy całe życie - źle rozumiałem cache'owanie Integerów :-)
Ile to jest 1+1 w Java'ie?
Magia w Java'ie ;-)
finalize() - do czego służy, a do czego nie i z czym to się je.
Sztuczki tropiciela błędów - breakpoint na sterydach ;-)

sobota, października 17, 2020

Kiedy następny on-call?

 OK, już się skarżyłem, że mam znów on-call'a ;-)

To napisałem sobie dziś narzędzie, które pokazuje mi ile mi jeszcze zostało czasu do końca on-call'a:


A jak nie mam on-call'a to ile mam do kolejnego:


To sobie siedzi w zasobniku macOS'a i pokazuje ile jeszcze czasu ;-)

Jak kropka jest czerwona, znaczy że jesteśmy w trakcie, jak zielona to czekamy ;-)


Skąd programik wie kiedy mam on-call'a?

A bo możemy go skonfigurować wybierając Configure:


Które otworzy "przepiękne" okienko gdzie można wkleić link do kalendarza z on-call'em.

PagerDuty coś takiego ma.

Teoretycznie może to być dowolny kalendarz, ale lepiej żeby miał tylko proste event'y ;-) bo z innymi sobie mój kod nie radzi ;-)

Jak ktoś zainteresowany do zapraszam do repo ;-) [jest tam też DMG]

https://github.com/przemelek/next-on-call



Podobne postybeta
Electron + Airly = wskaźnik jakości powietrza w pasku ;-) - part 2, źródła ;-)
On-call....
A może by tak nosić drugi telefon specjalnie do on-call'a?
9 miesięcy bez on-call'a - to jest super :-)
Alfred + Todoist i wysyłanie tasków do projektu, a nie tylko do Inbox'a ;-)

Feature Request do OSów ;-)

 Mój główny komputer, czyli mój Macbook Pro z 2018 roku nabawił się spuchniętej baterii...

Wygląda to nie najlepiej:


Tak, to na dole/z tyłu to tył Macbooka który się wziął i wygiął, a laptop się nie da zamknąć ;p

Stąd od razu jak to zauważyłem (drań stoi sobie zawsze podpięty do monitora więc go nie oglądam za często, tym razem po prostu przestała działać mysza i klawiatura i trzeba było odłączyć hub od MBP i wtedy to zauważyłem) został zgłoszony do Apple, które wskazało mi serwis, który jest w odległości 200 metrów od mojego mieszkania ;-)

Więc teraz używam mojego Macbooka Air jako komputera, który jest podpięty do monitora.

Jest to więc też moja maszyna do kodowania ;-)

No i są problemy, bo co chwile się okazuje, że nie mam a to wget'a, a to Midnight Commandera, a to ForkLift jest inaczej skonfigurowany.

A co gorsza okazuje się, że nie wszystkie moje źródła mam na repach ;p więc teraz jak piszę sobie narzędzie do pokazywania mi kiedy mam następnego on-call'a (albo kiedy mi się skończy ;-)) nie mam skąd kopiować kodu ;p

Przydałoby się mieć coś w stylu "shared profile" które można by było dzielić między komputerami, idealnie by dało się to podzielić na installed apps, files stored on drive i profiles in apps ;-)
A i by można było mieć też na 1 komputerze kilka profili.




Podobne postybeta
Mój pomysł na sprzedaż tabletów ;-)
Zły provider, albo głupi ja ;-)
Macbook PRO Retina i OS X po 2* tygodniach
Google+
A może by tak Macbooka Air?

On-call....

Od 1:00 do 13:00 mam on-call'a, nic się niby nie powinno zdarzyć, ale już mi odbija. 

Mam słuchawki na uszach to przyniosłem sobie telefon z PagerDuty na biurko, żeby w razie czego zobaczyć jak będzie wyło i błyskało....

Coś czuję, że jak będę szedł pod prysznic to też będę brał.

Fuck..... chciałbym umieć ciut bardziej olewać.




Podobne postybeta
Chyba zabiłem mojego Pocket PC....
Kiedy następny on-call?
A może by tak nosić drugi telefon specjalnie do on-call'a?
Miejsca gdzie nie używałeś jeszcze komputera [ewentualnie miejsca, gdzie nie dopadły nas jeszcze komputery ;-)]
Żyje :-)

sobota, września 26, 2020

Człowiek się uczy całe życie - źle rozumiałem cache'owanie Integerów :-)

Tak się bawię nowym IntelliJ i jak używa się var to próbuje podpowiedzieć jaki będzie wywnioskowany typ.

Działa to różnie:


Ogólnie zasada chyba jest taka, że parser Java'y w IJ potrafi wywnioskować typ na podstawie zwracanego typu (to ma przy metodach) i czasem jak przypisanie jest z prostej deklaracji z typem.
Nie jest więc tak wszechstronny jak kompilator Java'y, ale kompilator wie więcej.

Ale ja nie o tym tutaj ;-)

Bawiąc się tym zauważyłem, że konstruktor dla Integer jest deprecated, sprawdziłem i to prawda od wersji 9.
I tak się zacząłem tym bawić i okazuje się, że przez ostatnie ~16 lat żyłem w błędnym przekonaniu....

Zawsze pamiętałem, że JVM ma optymalizację by nie przeginać z ilością Integer'ów, i że np. dla 1 jest dokładnie 1 obiekt w pamięci, a wszystkie zmienne które trzymają Integer'a o wartości 1 mają referencję do tego jednego jedynego.... i że JVM od Oracle'a ma to dla liczb od -128 do 127 (choć teraz jak to widzę to jest konfigurowane).

I zawsze tu zakładałem, że JVM ogarnia jakoś wołanie new Integer(x), czy może bardziej kompilator jak się zastanowić...

No i byłem przekonany, że:

wypisze true...

A tu "dupa", nie, wypisze false, bo new stworzy dwa całkiem nowe obiekty. Żeby cache zadziałał trzeba użyć Integer.valueOf....

Fakt, sam używam "od zawsze" Integer.valueOf(int), ale przyznam, że coś mi się porobiło w głowie jak do mnie dotarło jak błądziłem.

Choć niech mnie tłumaczy, że jak mi się zdarza pracować z Integer to właśnie przez Integer.valueOf, albo przez autoboxing, a:
Zadziała tak, że wypisze true.

Jak na to spojrzeć to to ma pełen sens, bo skąd biedna JVM ma wiedzieć, że nowo tworzony obiekt Integer wskazuje na już istniejący? Albo kompilator by musiał generować tu specjalny kod do obsługi tego dla new, albo sama JVM w momencie "zobaczenia wołania" w stylu:

musiałaby nie wołać konstruktora, ale zaglądać do cache.... i jak sprawdziłem nawet Java 8 nie robiła takich cudów :-)




Podobne postybeta
Nieoczywiste oczywistości ;-) podstępny autoboxing ;-)
Ile to jest 1+1 w Java'ie?
Magia w Java'ie ;-)
Chorowanie jest do bani, czyli wspomnienia z L4... które trwa ;-)
Zmienne Go ;-)