Taka obserwacja z dziś, sen działa cuda ;-)
W czwartek miałem podły humor.
A w piątek wspaniały.
Czemu? Bo obudziłem się dopiero po 8 godzinach 15 minutach snu ;-)
Ja świetnie sobie daję radę śpiąc po 6 i mniej godzin dziennie, ale raz na jakiś czas przychodzi moment gdy albo mam emergency shutdown i po prostu zasypiam i śpię dłużej, albo taki dzień gdy jestem w tak podłym nastroju, że nadlatująca asteroida wydaje mi się być wspaniałą perspektywą (chociaż nie, nawet wtedy nie jest wspaniałą perspektywą).
Do tego widziałem dziś jaką mamy atmosferę w biurze ;-)
Jeden z naszych managerów wraca po roku do USA i tak na koniec były jeszcze pierogi (impreza była w czwartek) i się spóźniały, i całe to przeżywanie tego spóźniania się, później radość z tych pierogów i to jak wszyscy to przeżywali pokazało, że my się chyba naprawdę lubimy ;-)
Podobne postybeta
Kuchenka mikrofalowa
Praca na stojąco - wersja pro ;-)
Linia poleceń rządzi!
Jak się poluje na programistów ;-)
Sposób na upierdliwych użyszkodników
sobota, sierpnia 03, 2019
czwartek, sierpnia 01, 2019
Jak nic nie robiąc robię się mniej Polakiem ;-)
Patrząc na zmieniające się dane o moim pochodzeniu w 23andMe zastanawiam się jak to jest, że ciągle będąc tym samym mną, zmienia się mój skład etniczny ;-)
W tamtym roku, we wrześniu 65.9% moich genów zostało uznanych za pochodzące z Europy Wschodniej, głównie Polski, 12.5% z Niemiec lub Francji (ale uznali, że z Niemiec), 3.9% Szwecji, 2.5% z Bałkanów, 0.6% z Włoch i 0.1% z półwyspu iberyjskiego.
Później gdy 23andMe poznało też geny mojej własnej prywatnej matki, uznało, że jednak nie, że mój nowy skład to:
59.1% Europa Wschodnia (Polska i trochę Rosja),
23.0% Europa Północno-Zachodnia, w tym
9.2% Niemcy
1.8% Skandynawia,
0.2% Wyspy Brytyjskie
11.9% ogólnie północno-zachodnio europejskie
8.6% Europa Południowa
5.2% Grek lub mieszkaniec Bałkanów,
1.0% mieszkaniec półwyspu iberyjskiego,
2.4% ogólnie Europa południowa
9.2% ogólnie europejskie
0.1% nieopisane
A teraz w wynikach bata jestem:
55.4% Europa Wschodnia (głównie Polska, może trochę Rosji)
23.7% Europa Północno-Zachodnia, w tym
11.9% Niemcy,
1.5% Skandynawia,
0.3% Wyspy Brytyjskie,
10% ogólnie Europa północno-zachodnia
9.9% Europa południowa,
6.8% Grek lub mieszkaniec Bałkanów,
1.0% mieszkaniec półwyspu iberyjskiego,
2.2% ogólnie mieszkanie Europy południowej
10.9% ogólnie europejski
Jakby to próbować narysować to przesuwa mnie coraz bardziej na zachód i na południe.
Czemu wyniki się zmieniają? Bo zmieniają się bazy danych które ma 23andMe, więcej ludzi robi test, więc więcej mają próbek i mogą lepiej budować model.
Chociaż wydaje mi się też, że ten model jest budowany głównie dla USA i ogólnie krajów zachodnich ;-)
Stąd najpewniej to nie jest tak, że ja mam w sobie "w 0.3% krew" mieszkańca wysp brytyjskich, a raczej ja i pewna grupa ludzi zamieszkujących wyspy brytyjskie mieliśmy wspólnego przodka, który pewnie mieszkał gdzieś na terenach dzisiejszej Polski i jedno z jego/jej dzieci zawlekło swoje geny tam, albo i kilka razy.
Podobne postybeta
Wydało się jakim jestem Polakiem ;-)
Czemu Google Play nie sprzedaje u nas urządzeń, filmów, książek i reszty?
Tak czy nie? - wyniki ;-)
W obronie zmiany czasu ;-)
"Obserwacje"
W tamtym roku, we wrześniu 65.9% moich genów zostało uznanych za pochodzące z Europy Wschodniej, głównie Polski, 12.5% z Niemiec lub Francji (ale uznali, że z Niemiec), 3.9% Szwecji, 2.5% z Bałkanów, 0.6% z Włoch i 0.1% z półwyspu iberyjskiego.
Później gdy 23andMe poznało też geny mojej własnej prywatnej matki, uznało, że jednak nie, że mój nowy skład to:
59.1% Europa Wschodnia (Polska i trochę Rosja),
23.0% Europa Północno-Zachodnia, w tym
9.2% Niemcy
1.8% Skandynawia,
0.2% Wyspy Brytyjskie
11.9% ogólnie północno-zachodnio europejskie
8.6% Europa Południowa
5.2% Grek lub mieszkaniec Bałkanów,
1.0% mieszkaniec półwyspu iberyjskiego,
2.4% ogólnie Europa południowa
9.2% ogólnie europejskie
0.1% nieopisane
A teraz w wynikach bata jestem:
55.4% Europa Wschodnia (głównie Polska, może trochę Rosji)
23.7% Europa Północno-Zachodnia, w tym
11.9% Niemcy,
1.5% Skandynawia,
0.3% Wyspy Brytyjskie,
10% ogólnie Europa północno-zachodnia
9.9% Europa południowa,
6.8% Grek lub mieszkaniec Bałkanów,
1.0% mieszkaniec półwyspu iberyjskiego,
2.2% ogólnie mieszkanie Europy południowej
10.9% ogólnie europejski
Jakby to próbować narysować to przesuwa mnie coraz bardziej na zachód i na południe.
Czemu wyniki się zmieniają? Bo zmieniają się bazy danych które ma 23andMe, więcej ludzi robi test, więc więcej mają próbek i mogą lepiej budować model.
Chociaż wydaje mi się też, że ten model jest budowany głównie dla USA i ogólnie krajów zachodnich ;-)
Stąd najpewniej to nie jest tak, że ja mam w sobie "w 0.3% krew" mieszkańca wysp brytyjskich, a raczej ja i pewna grupa ludzi zamieszkujących wyspy brytyjskie mieliśmy wspólnego przodka, który pewnie mieszkał gdzieś na terenach dzisiejszej Polski i jedno z jego/jej dzieci zawlekło swoje geny tam, albo i kilka razy.
Podobne postybeta
Wydało się jakim jestem Polakiem ;-)
Czemu Google Play nie sprzedaje u nas urządzeń, filmów, książek i reszty?
Tak czy nie? - wyniki ;-)
W obronie zmiany czasu ;-)
"Obserwacje"
środa, lipca 31, 2019
Statyczna analiza kodu, czy to ma sens?
Ostatnio się zajmuję statyczną analizą kodu i się nad tym zastanawiam. Czy to ma sens, gdzie jest ten sens i tak dalej.
Z jednej strony nigdy nie lubiłem statycznej analizy kodu.
Nawet jak w tamtym roku robiłem wtyczkę do SonarQube to prezentując ją zacząłem od stwierdzenia, że SQ używa się zwykle po to żeby development poczuł się lepszy, że proszę tak bardzo dbamy o jakość kodu. Że to głównie na pokaz, ale jakoś normalnie nie działa szczególnie dobrze.
Bo niby cala idea opiera się na całkiem rozsądnym założeniu, że jak kod jest "brzydki" i łamie pewne dobre praktyki to istnieje duże prawdopodobieństwo, że sam kod też ma błędy.
Nie działa to w drugą stronę, bo "ładny" kod wcale nie musi być bezbłędny, ale to nie jest aż tak istotne.
Problem w tym, że większość narzędzi jest po prostu bardzo głupia.
Może się np. rzucać, że nasz kod, który od 10 lat był pisany z całą możliwą miłością jaką mu można poświęcić, nie używa lambd. Bo ktoś uznał, że skoro gdzieś używam Runnable to zamiast interfejsu powinniśmy użyć lambdy, bo to poprawni czytelność kodu.
Może, i rzeczywiście tak może powinniśmy pisać teraz kod, ale skoro mamy fragment kodu, który działa od 10 lat i od tego czasu nie był zmieniany to czy użycie Runnable jest tu zbrodnią?
OK, można w takim przypadku dodać historię kodu i próbować wysnuwać wnioski z tego jak kod się w trakcie swojego życia zmieniał i np. nie rzucać się tak bardzo w przypadku czegoś co obecnie jest uznawane za brzydkie jeśli napisano to 10 lat temu i nigdy nie zmieniano.
Ale nadal ktoś musi na to wszystko spojrzeć i jak liczba issues które są uznane za Blockery wynosi ponad 2 tysiące sztuk to powstaje pytanie czy w ogóle warto.
Chociaż ciekawa sprawa, zagregowane dane w postaci "242 tysiące issues" i później miliony plików z błędami nie są zbyt pomocne, ale inspekcje w IntelliJ już zwykle są.
Tak na "chłopski" rozum masę rzeczy da się zautomatyzować.
Sam tu kiedyś wypisywałem code smellsy które wzbudzają moje podejrzenia w trakcie inspekcji kodu. Nie ufam np. protected, albo sytuacji gdy za dużo metod jest public.
Ale szybko się okazuje, że te takie łatwe strzały się kończą i jest o wiele trudniej.
Kiedyś w jednej z firm nasz architekt miał genialny pomysł, żeby użyć Prologa i wnioskowania do znajdowania akcji z menu które trzeba przetestować bo mogły być "zaafektowane" zmianami w kodzie.
Zrobiliśmy świetne narzędzie, które potrafiło na podstawie logów z historii wersji stwierdzić, które linie, a więc i które metody w klasach się zmieniły i znając strukturę kodu wskazać które opcje menu tego używają.
Ale w końcu narzędzie nie działało bo zbyt często pokazywało wszystkie opcje jako zaafektowane.
Problem nie był w toolu, ale w tym jak nasza aplikacja była napisana.
Znów w poprzedniej firmie zbudowałem narzędzia które na podstawie analizy skompilowanego kodu potrafiły odkryć gdzie tworzymy i przetwarzamy jeden z ponad 500 rodzajów komunikatów JMS, a inne na podstawie analizy zależności między projektami potrafiło powiedzieć i napisać plik do zrobienia clone'a z wszystkich niezbędnych repozytoriów.
Próbowałem jakoś zbudować coś podobnego w obecnej firmie i okazuje się, że nie ma to sensu. Tu mamy innego rodzaju problemy (mniejsze, to fakt :-)).
To co teraz próbujemy rozwiązać jest jeszcze innym rodzajem problemu i nie wiem czy analiza statyczna jest dobrym rozwiązaniem czy nie.... na razie jest pierwszym kandydatem ;-)
Podobne postybeta
Moc wykresu.... Czyli jak wieść szczęśliwsze życie ;-)
Klasa statyczna - ki diabeł?;-)
Inercja i koło wielokrotnego wynajdywania, czyli radosne macki piekieł w kodzie [alem pojechał w tytule ;-)]
Jak walczyć z gigantycznym kodem w Java'ie, część 1.5 ;-) - czyli jak je się słonie ;-)
Enum zdradziecki jest ;-)
Z jednej strony nigdy nie lubiłem statycznej analizy kodu.
Nawet jak w tamtym roku robiłem wtyczkę do SonarQube to prezentując ją zacząłem od stwierdzenia, że SQ używa się zwykle po to żeby development poczuł się lepszy, że proszę tak bardzo dbamy o jakość kodu. Że to głównie na pokaz, ale jakoś normalnie nie działa szczególnie dobrze.
Bo niby cala idea opiera się na całkiem rozsądnym założeniu, że jak kod jest "brzydki" i łamie pewne dobre praktyki to istnieje duże prawdopodobieństwo, że sam kod też ma błędy.
Nie działa to w drugą stronę, bo "ładny" kod wcale nie musi być bezbłędny, ale to nie jest aż tak istotne.
Problem w tym, że większość narzędzi jest po prostu bardzo głupia.
Może się np. rzucać, że nasz kod, który od 10 lat był pisany z całą możliwą miłością jaką mu można poświęcić, nie używa lambd. Bo ktoś uznał, że skoro gdzieś używam Runnable to zamiast interfejsu powinniśmy użyć lambdy, bo to poprawni czytelność kodu.
Może, i rzeczywiście tak może powinniśmy pisać teraz kod, ale skoro mamy fragment kodu, który działa od 10 lat i od tego czasu nie był zmieniany to czy użycie Runnable jest tu zbrodnią?
OK, można w takim przypadku dodać historię kodu i próbować wysnuwać wnioski z tego jak kod się w trakcie swojego życia zmieniał i np. nie rzucać się tak bardzo w przypadku czegoś co obecnie jest uznawane za brzydkie jeśli napisano to 10 lat temu i nigdy nie zmieniano.
Ale nadal ktoś musi na to wszystko spojrzeć i jak liczba issues które są uznane za Blockery wynosi ponad 2 tysiące sztuk to powstaje pytanie czy w ogóle warto.
Chociaż ciekawa sprawa, zagregowane dane w postaci "242 tysiące issues" i później miliony plików z błędami nie są zbyt pomocne, ale inspekcje w IntelliJ już zwykle są.
Tak na "chłopski" rozum masę rzeczy da się zautomatyzować.
Sam tu kiedyś wypisywałem code smellsy które wzbudzają moje podejrzenia w trakcie inspekcji kodu. Nie ufam np. protected, albo sytuacji gdy za dużo metod jest public.
Ale szybko się okazuje, że te takie łatwe strzały się kończą i jest o wiele trudniej.
Kiedyś w jednej z firm nasz architekt miał genialny pomysł, żeby użyć Prologa i wnioskowania do znajdowania akcji z menu które trzeba przetestować bo mogły być "zaafektowane" zmianami w kodzie.
Zrobiliśmy świetne narzędzie, które potrafiło na podstawie logów z historii wersji stwierdzić, które linie, a więc i które metody w klasach się zmieniły i znając strukturę kodu wskazać które opcje menu tego używają.
Ale w końcu narzędzie nie działało bo zbyt często pokazywało wszystkie opcje jako zaafektowane.
Problem nie był w toolu, ale w tym jak nasza aplikacja była napisana.
Znów w poprzedniej firmie zbudowałem narzędzia które na podstawie analizy skompilowanego kodu potrafiły odkryć gdzie tworzymy i przetwarzamy jeden z ponad 500 rodzajów komunikatów JMS, a inne na podstawie analizy zależności między projektami potrafiło powiedzieć i napisać plik do zrobienia clone'a z wszystkich niezbędnych repozytoriów.
Próbowałem jakoś zbudować coś podobnego w obecnej firmie i okazuje się, że nie ma to sensu. Tu mamy innego rodzaju problemy (mniejsze, to fakt :-)).
To co teraz próbujemy rozwiązać jest jeszcze innym rodzajem problemu i nie wiem czy analiza statyczna jest dobrym rozwiązaniem czy nie.... na razie jest pierwszym kandydatem ;-)
Podobne postybeta
Moc wykresu.... Czyli jak wieść szczęśliwsze życie ;-)
Klasa statyczna - ki diabeł?;-)
Inercja i koło wielokrotnego wynajdywania, czyli radosne macki piekieł w kodzie [alem pojechał w tytule ;-)]
Jak walczyć z gigantycznym kodem w Java'ie, część 1.5 ;-) - czyli jak je się słonie ;-)
Enum zdradziecki jest ;-)
wtorek, lipca 30, 2019
Taki tam rant po Gradle i Dockerze ;-)
Jest coś takiego jak standardy, jest też coś takiego jak od lat stosowane praktyki.
Gdy jeszcze nie było Internetu, a był ARPANET to komputery "widziały" się tylko po adresach IP.
To ludziom przeszkadzało, bo czasem fajnie było wiedzieć, że łączymy się do maszyny o nazwie ALICE zamiast do jakiegoś zbitka 4 liczb oddzielonych kropkami.
Więc ludzie zaczęli tworzyć pliki HOSTS.TXT, w których były zapisane mapowania adresów tekstowych na adresy IP.
W końcu wyewoluowało to z jednej strony w DNS, z drugiej w /etc/hosts, czyli plik w którym administrator lokalnej maszyny może zapisać swoje mapowania.
Przestrzega tego Linux i inne *niksy, przestrzega Windows (z ciut inną lokalizacją), przestrzega macOS.
Ale nie działa to z Dockerem ;-)
Przynajmniej w domyślnej konfiguracji.
Docker ma w głębokim poważaniu to co jest skonfigurowane w /etc/hosts jego hosta, z tego co widziałem olewa też to co ma w swoim.
Dopiero dodanie mu przełącznika -net=host powoduje, że zaczyna być świadom tego pliku.
Kiedyś wymyślono też coś takiego jak Exit code z aplikacji.
Jeśli aplikacja zwraca coś innego niż 0 to jest to error code i informacja dla procesu, który ją wywołuje, że wróciła z błędem.
POSIX to nawet "ustandaryzował" i wymaga by każdy OS który jest zgodny z POSIX stosował się do tego schematu.
Do tego w *niksach wprowadzono, a później przeszło to do innych OSów podział konsoli na konsolę i konsolę błędów. Idea była taka, że na konsolę błędów powinny iść wszystkie informacje, które są lub mogą być istotne w troubleshootingu.
I w pewnym momencie przyszli ludzie piszący Gradle'a. W swym szaleństwie uznali, że kto by tam bazował na jakimś kodzie wyjścia z aplikacji w celu uznania, że aplikacja skończyła się z błędem.
Uznali, że oni wiedzą lepiej i dlatego jeśli przez ich Exec czy jak to się zowie task odpali jakiś zewnętrzny proces i ten proces zapisze coś do konsol błędów to nawet gdy zwróci 0 mówiące, że skończył się z sukcesem to oni uznają, że wiedzą lepiej i zgłoszą, że był fail.
Teraz dodajmy do tego to, że jeśli używa się _JAVA_OPTIONS do nadpisania jakichś ustawień JRE to JRE wypisze na konsolę błędów, że użyje wartości z _JAVA_OPTIONS to mamy to, że taki proces w Java'ie nie będzie się nigdy w Gradle kończył sukcesem ;-)
Jak już o Gradle mowa.
Zwyczajowo robi się tak, że jak Twój kod jest odpalany w jakimś katalogu, to jest to katalog roboczy i wszystkie operacje które się robi powinno się robić względem tego katalogu.
Gradle tak robił, ale już nie robi ;-) Gradle 5.0 wie lepiej i robi tak. Jeśli w tasku wykonuje się kod w Java'ie i ten kod odpali proces, to ten proces odpali się w katalogu roboczym (startowym), ale pliki widziane przez ten kod będą w katalogu z którego startuje któraś tam "warstwa" wrappera Gradle'a ;-)
Podobne postybeta
Rant po toolach w stylu Mavane, Gradle, Bowera i całej tej hałastry
A ja wybrałem Xbox One ;-)
Gdzie popełniliśmy błąd?
Serwisy mniejszej miłości ;-)
Jak zmusić Gradle'a do używania ramdysku (na OS X)
Gdy jeszcze nie było Internetu, a był ARPANET to komputery "widziały" się tylko po adresach IP.
To ludziom przeszkadzało, bo czasem fajnie było wiedzieć, że łączymy się do maszyny o nazwie ALICE zamiast do jakiegoś zbitka 4 liczb oddzielonych kropkami.
Więc ludzie zaczęli tworzyć pliki HOSTS.TXT, w których były zapisane mapowania adresów tekstowych na adresy IP.
W końcu wyewoluowało to z jednej strony w DNS, z drugiej w /etc/hosts, czyli plik w którym administrator lokalnej maszyny może zapisać swoje mapowania.
Przestrzega tego Linux i inne *niksy, przestrzega Windows (z ciut inną lokalizacją), przestrzega macOS.
Ale nie działa to z Dockerem ;-)
Przynajmniej w domyślnej konfiguracji.
Docker ma w głębokim poważaniu to co jest skonfigurowane w /etc/hosts jego hosta, z tego co widziałem olewa też to co ma w swoim.
Dopiero dodanie mu przełącznika -net=host powoduje, że zaczyna być świadom tego pliku.
Kiedyś wymyślono też coś takiego jak Exit code z aplikacji.
Jeśli aplikacja zwraca coś innego niż 0 to jest to error code i informacja dla procesu, który ją wywołuje, że wróciła z błędem.
POSIX to nawet "ustandaryzował" i wymaga by każdy OS który jest zgodny z POSIX stosował się do tego schematu.
Do tego w *niksach wprowadzono, a później przeszło to do innych OSów podział konsoli na konsolę i konsolę błędów. Idea była taka, że na konsolę błędów powinny iść wszystkie informacje, które są lub mogą być istotne w troubleshootingu.
I w pewnym momencie przyszli ludzie piszący Gradle'a. W swym szaleństwie uznali, że kto by tam bazował na jakimś kodzie wyjścia z aplikacji w celu uznania, że aplikacja skończyła się z błędem.
Uznali, że oni wiedzą lepiej i dlatego jeśli przez ich Exec czy jak to się zowie task odpali jakiś zewnętrzny proces i ten proces zapisze coś do konsol błędów to nawet gdy zwróci 0 mówiące, że skończył się z sukcesem to oni uznają, że wiedzą lepiej i zgłoszą, że był fail.
Teraz dodajmy do tego to, że jeśli używa się _JAVA_OPTIONS do nadpisania jakichś ustawień JRE to JRE wypisze na konsolę błędów, że użyje wartości z _JAVA_OPTIONS to mamy to, że taki proces w Java'ie nie będzie się nigdy w Gradle kończył sukcesem ;-)
Jak już o Gradle mowa.
Zwyczajowo robi się tak, że jak Twój kod jest odpalany w jakimś katalogu, to jest to katalog roboczy i wszystkie operacje które się robi powinno się robić względem tego katalogu.
Gradle tak robił, ale już nie robi ;-) Gradle 5.0 wie lepiej i robi tak. Jeśli w tasku wykonuje się kod w Java'ie i ten kod odpali proces, to ten proces odpali się w katalogu roboczym (startowym), ale pliki widziane przez ten kod będą w katalogu z którego startuje któraś tam "warstwa" wrappera Gradle'a ;-)
Podobne postybeta
Rant po toolach w stylu Mavane, Gradle, Bowera i całej tej hałastry
A ja wybrałem Xbox One ;-)
Gdzie popełniliśmy błąd?
Serwisy mniejszej miłości ;-)
Jak zmusić Gradle'a do używania ramdysku (na OS X)
poniedziałek, lipca 29, 2019
5G do mnie nie trafia
Głośno się robi co jakiś czas w koło 5G.
Tego, że Huawei jest tu potęga, że zachodnie firmy przegapiły 5G.
Ale ja się zastanawiam co właściwie 5G wnosi.
Od strony technicznej są tam genialne rzeczy, jak formowanie wiązek w komórce tak by transmisja do urządzenia odbiorczego była nie dookolna, czy nawet kierunkowa, ale w wiązce, co powinno pozwolić na ogólnie mniejszą moc i wyższe prędkości, ma być większe spektrum czyli powinno się dać przyspieszyć transmisje jednocześnie zwiększając ilość urządzeń które jednocześnie mogą transmitować.
To wszystko fajne, ale nie jestem przekonany czy to jest nam właściwie potrzebne.
Urządzenia IoT mogłyby dzięki 5G operować na wyższych transferach, ale po co? Większość tych urządzeń, jeśli nie wszystkie ma raczej tryb pracy fire and forget, a nie taki gdzie jest konieczny ciągły przekaz tego co się dzieje w urządzeniu.
Jakieś elektroniczne niańki zyskają, bo będą mogły przesyłać wyższe rozdzielczości do jakiegoś urządzanie rejestrującego...
Ale nadal trzeba to będzie wypchnąć na zewnątrz albo gdzieś przechować, a 5G tu problemu nie rozwiązuje.
Mam teraz w domu downlink na poziomie 512 Mbps i tak zwykle nie leci więcej niż 100 Mbps bo serwery po drugiej stronie nie mają takiej przepustowości.
Fajnie będzie mieć transfer w 5G na poziomie 20Gbps, ale po co?
W moim odczuciu obecne transfery jakie mamy są blisko tego czego potrzebujemy.
Doszły do tego samego poziomu co komputery. Zwiększenie 2x czy nawet 20x nie zmienia znacząco warunków używania.
Czekanie na stronę 10ms zamiast 100ms jest niezauważalne.
Stąd, na dziś wydaje mi się, że 5G to takie szpanowanie, a nie realna potrzeba.
Większych zmian w świecie spodziewałbym się po tym co może się stać gdy ruszy StarLink od SpaceX.
Internet na całej powierzchni Ziemi to będzie coś... 5G na razie do mnie nie trafia.
Tego, że Huawei jest tu potęga, że zachodnie firmy przegapiły 5G.
Ale ja się zastanawiam co właściwie 5G wnosi.
Od strony technicznej są tam genialne rzeczy, jak formowanie wiązek w komórce tak by transmisja do urządzenia odbiorczego była nie dookolna, czy nawet kierunkowa, ale w wiązce, co powinno pozwolić na ogólnie mniejszą moc i wyższe prędkości, ma być większe spektrum czyli powinno się dać przyspieszyć transmisje jednocześnie zwiększając ilość urządzeń które jednocześnie mogą transmitować.
To wszystko fajne, ale nie jestem przekonany czy to jest nam właściwie potrzebne.
Urządzenia IoT mogłyby dzięki 5G operować na wyższych transferach, ale po co? Większość tych urządzeń, jeśli nie wszystkie ma raczej tryb pracy fire and forget, a nie taki gdzie jest konieczny ciągły przekaz tego co się dzieje w urządzeniu.
Jakieś elektroniczne niańki zyskają, bo będą mogły przesyłać wyższe rozdzielczości do jakiegoś urządzanie rejestrującego...
Ale nadal trzeba to będzie wypchnąć na zewnątrz albo gdzieś przechować, a 5G tu problemu nie rozwiązuje.
Mam teraz w domu downlink na poziomie 512 Mbps i tak zwykle nie leci więcej niż 100 Mbps bo serwery po drugiej stronie nie mają takiej przepustowości.
Fajnie będzie mieć transfer w 5G na poziomie 20Gbps, ale po co?
W moim odczuciu obecne transfery jakie mamy są blisko tego czego potrzebujemy.
Doszły do tego samego poziomu co komputery. Zwiększenie 2x czy nawet 20x nie zmienia znacząco warunków używania.
Czekanie na stronę 10ms zamiast 100ms jest niezauważalne.
Stąd, na dziś wydaje mi się, że 5G to takie szpanowanie, a nie realna potrzeba.
Większych zmian w świecie spodziewałbym się po tym co może się stać gdy ruszy StarLink od SpaceX.
Internet na całej powierzchni Ziemi to będzie coś... 5G na razie do mnie nie trafia.
posted from Bloggeroid
Podobne postybeta
Pixel i iPhone mają chyba inne "filozofie" pracy z radiem ;-)
Przechodzę na iPhone'a...
Telefon lepszym aparatem niż prawdziwy aparat ;-)
Biurko
Social networks, mapy i papierowy organizer
niedziela, lipca 28, 2019
Alert RCB - minimalizacja false negative prowadzi do zwiększenia false positive ;-)
Drugi raz w ciągu 24 godzin dostałem SMSa z Alertem RCB.
Wczorajszy się nie sprawdził, patrząc na pogodę od Google jest znaczna szansa, że dzisiejszy się też nie sprawdzi.
Mamy tu klasyczny konflikt między użytecznością, a przysłowiowym kryciem swojego tyłka.
Albo jak kto woli, problem wysokiego stopnia false postive ;-)
Mamy tak:
I jak patrzeć racjonalnie to jeśli wiemy, że może przyjść nawałnica czy burza i mogą coś drogiego uszkodzić, albo komuś krzywdę zrobić to trzeba ludzi o tym poinformować.
Pytanie co znaczy "wiemy". To nie jest binarna sprawa, bo zamiast wiedzieć "na 100% będzie" albo "na 100% nie będzie" wiemy tylko, że z prawdopodobieństwem X wystąpią opady o wielkości Y.
Nawet nie tak, wiemy tylko, że model przewiduje opady od wartości A do wartości B, większość symulacji wskazuje na wartość C, ale kilka wskazuje na wartość D, która jest wyższa niż jakiś arbitralnie ustawiony threshold to krzyczymy, że coś się może stać.
Coś jakby zbudować klasyfikator mówiący czy grozi nam w ciągu następnych 24 godzin uderzenie asteroidy, który może zabić ludzi i zawsze odpowiadać tak.
W końcu duża asteroida spada na Ziemię średnio raz na 20 milionów lat, a mała raz na pół miliona lat, czyli patrząc na dane historyczne duża każdego dnia ma szansę spaść jak 1 do trochę ponad 7 miliardów, a mniejsza jak 1 do jakichś 180 milionów.
Jeśli duża może zabić całą ludzkość, to mamy średnio szansę śmiercie tak jakoś 1 osoby, jeśli mała może zniszczyć miasto z okolicami gdzie mieszka powiedzmy 30 mln ludzi, to mamy średnio 6 osób. Czyli nasz klasyfikator ostrzega przed śmiercią jakichś 7 osób.
Dzień w dzień.
W przypadku alertów RCB jest tak, że jak np. jest sobie kolonia, czy obóz harcerski i przyjdzie nawałnica i coś się komuś stanie, a alertu nie było to prokurator zacznie ścigać meteorologów z RCB czy okolic, szczególnie jeśli się okaże, że jakaś symulacja mówiła, że coś się może zdarzyć.
Jak alert pójdzie, to w razie coś się uczestnikom kolonii/obozu stanie to problem opiekunów, nie RCB.
Jak alert pójdzie, a nic się nie stanie, to tylko się ludzie trochę wkurzą.
Czyli z punktu widzenia "gracza" jakim jest RCB, by uniknąć problemów prawnych należy ostrzegać o wszystkim co może źle się skończyć. Nieważne jakie jest tego prawdopodobieństwo.
To minimalizuje false negative, czyli minimalizuje szansę na zarzuty prokuratorskie za "niedopełnienie obowiązków".
Maksymalizuje też false positive (nie wprost, ale zwykle jak się dąży do zminimalizowania false negative, to zwiększa się liczbę false positive), a co za tym idzie zmniejsza się zaufanie do klasyfikatora.
Czyli chociaż pracownicy RCB są kryci i nie grożą im zarzuty prokuratorskie, to sam alert RCB staje się coraz mniej wiarygodny i coraz więcej ludzi go ignoruje.
A to siłą rzeczy prowadzi do tego, że ktoś może zginąć, bo zignoruje alert RCB.
Podobne postybeta
Pomodoro z positive reinforcement? ;-)
Kiedy trigger words będą w mailach obowiązkowe? ;-)
Ofiara algorytmu
Paranoja i Strach
Rube Goldberg machine do panowania nad spotkaniami... częściowego chociaż ;-)
Wczorajszy się nie sprawdził, patrząc na pogodę od Google jest znaczna szansa, że dzisiejszy się też nie sprawdzi.
Mamy tu klasyczny konflikt między użytecznością, a przysłowiowym kryciem swojego tyłka.
Albo jak kto woli, problem wysokiego stopnia false postive ;-)
Mamy tak:
| Niebezpieczne anomalie pogodowe | Normalna pogoda | |
| Alert RCB | true positive Ludzie zostali poinformowani, mieli czas na przygotowanie się, jak ktoś się dał złapać to jego problem | false positive Odbiorcy wkurzeni Ludzie zaczynają ignorować alerty RCB |
| Brak alertu RCB | false negative Wszyscy wśiekli Pojawiają się pomysły by kogoś postawić przed sądem za "niedopełnienie obowiązków" | true negative Wszyscy mają w nosie |
I jak patrzeć racjonalnie to jeśli wiemy, że może przyjść nawałnica czy burza i mogą coś drogiego uszkodzić, albo komuś krzywdę zrobić to trzeba ludzi o tym poinformować.
Pytanie co znaczy "wiemy". To nie jest binarna sprawa, bo zamiast wiedzieć "na 100% będzie" albo "na 100% nie będzie" wiemy tylko, że z prawdopodobieństwem X wystąpią opady o wielkości Y.
Nawet nie tak, wiemy tylko, że model przewiduje opady od wartości A do wartości B, większość symulacji wskazuje na wartość C, ale kilka wskazuje na wartość D, która jest wyższa niż jakiś arbitralnie ustawiony threshold to krzyczymy, że coś się może stać.
Coś jakby zbudować klasyfikator mówiący czy grozi nam w ciągu następnych 24 godzin uderzenie asteroidy, który może zabić ludzi i zawsze odpowiadać tak.
W końcu duża asteroida spada na Ziemię średnio raz na 20 milionów lat, a mała raz na pół miliona lat, czyli patrząc na dane historyczne duża każdego dnia ma szansę spaść jak 1 do trochę ponad 7 miliardów, a mniejsza jak 1 do jakichś 180 milionów.
Jeśli duża może zabić całą ludzkość, to mamy średnio szansę śmiercie tak jakoś 1 osoby, jeśli mała może zniszczyć miasto z okolicami gdzie mieszka powiedzmy 30 mln ludzi, to mamy średnio 6 osób. Czyli nasz klasyfikator ostrzega przed śmiercią jakichś 7 osób.
Dzień w dzień.
W przypadku alertów RCB jest tak, że jak np. jest sobie kolonia, czy obóz harcerski i przyjdzie nawałnica i coś się komuś stanie, a alertu nie było to prokurator zacznie ścigać meteorologów z RCB czy okolic, szczególnie jeśli się okaże, że jakaś symulacja mówiła, że coś się może zdarzyć.
Jak alert pójdzie, to w razie coś się uczestnikom kolonii/obozu stanie to problem opiekunów, nie RCB.
Jak alert pójdzie, a nic się nie stanie, to tylko się ludzie trochę wkurzą.
Czyli z punktu widzenia "gracza" jakim jest RCB, by uniknąć problemów prawnych należy ostrzegać o wszystkim co może źle się skończyć. Nieważne jakie jest tego prawdopodobieństwo.
To minimalizuje false negative, czyli minimalizuje szansę na zarzuty prokuratorskie za "niedopełnienie obowiązków".
Maksymalizuje też false positive (nie wprost, ale zwykle jak się dąży do zminimalizowania false negative, to zwiększa się liczbę false positive), a co za tym idzie zmniejsza się zaufanie do klasyfikatora.
Czyli chociaż pracownicy RCB są kryci i nie grożą im zarzuty prokuratorskie, to sam alert RCB staje się coraz mniej wiarygodny i coraz więcej ludzi go ignoruje.
A to siłą rzeczy prowadzi do tego, że ktoś może zginąć, bo zignoruje alert RCB.
Podobne postybeta
Pomodoro z positive reinforcement? ;-)
Kiedy trigger words będą w mailach obowiązkowe? ;-)
Ofiara algorytmu
Paranoja i Strach
Rube Goldberg machine do panowania nad spotkaniami... częściowego chociaż ;-)
sobota, lipca 27, 2019
Kiedy Twój kod to legacy kod?
Jest stosunkowo prosty test na to czy Twój kod jest legacy.
Sprawdź jak szybko jesteś w stanie:
a) przetestować zmianę,
b) zrobić prototyp, w którym Twój kod służy jako komponent,
c) zrobić prototyp, w którym Twój kod wyrzuca odpowiedź w innym formacie,
d) zrobić prototyp, w którym Twój kod dostaje dane w innym formacie,
e) zrobić prototyp, w którym jeden (dowolny) aspekt Twojej logiki "biznesowej" ulega zmianie tak, że chcesz móc inicjalizować Twój kod tak by ten kawałek był tam dostarczany z zewnątrz,
f) zrobić prototyp, w którym jeden (dowolny) aspekt Twojej logiki "biznesowej" ulega zmianie tak, że możesz wyrzucić go na zewnątrz i podpiąć po sieci.
Im wcześniej na tej liście okazuje się, że tego się nie da zrobić bez głębokiego refaktoringu i zajmie to więcej niż powiedzmy 1/10 czasu zużytego na napisanie kodu to masz legacy code.
Dodatkowe sygnały to klasy ze słowami Old, Legacy i podobnymi w nazwie, które opisują "stary" sposób robienia czegoś.
Podobne postybeta
Za co nie lubię machine learningu.... i jak się przed nim bronić ;-)
AppInventor - tego się da używać :-)
Jak zamachuję się na wolność wiary....
Vibecoding to jak praca z obcym ;-)
Delete Driven Development ;-)
Sprawdź jak szybko jesteś w stanie:
a) przetestować zmianę,
b) zrobić prototyp, w którym Twój kod służy jako komponent,
c) zrobić prototyp, w którym Twój kod wyrzuca odpowiedź w innym formacie,
d) zrobić prototyp, w którym Twój kod dostaje dane w innym formacie,
e) zrobić prototyp, w którym jeden (dowolny) aspekt Twojej logiki "biznesowej" ulega zmianie tak, że chcesz móc inicjalizować Twój kod tak by ten kawałek był tam dostarczany z zewnątrz,
f) zrobić prototyp, w którym jeden (dowolny) aspekt Twojej logiki "biznesowej" ulega zmianie tak, że możesz wyrzucić go na zewnątrz i podpiąć po sieci.
Im wcześniej na tej liście okazuje się, że tego się nie da zrobić bez głębokiego refaktoringu i zajmie to więcej niż powiedzmy 1/10 czasu zużytego na napisanie kodu to masz legacy code.
Dodatkowe sygnały to klasy ze słowami Old, Legacy i podobnymi w nazwie, które opisują "stary" sposób robienia czegoś.
Podobne postybeta
Za co nie lubię machine learningu.... i jak się przed nim bronić ;-)
AppInventor - tego się da używać :-)
Jak zamachuję się na wolność wiary....
Vibecoding to jak praca z obcym ;-)
Delete Driven Development ;-)
Coś chyba robimy nie tak w programowaniu ;-)
SpaceX właśnie wykonał pierwszy 20 metrowy skok swoim skoczkiem dla Starshipa.
Elon odgraża się, że w ciągu tygodnia, czy dwóch zrobią 200 metrów.
To nie jest takie proste, trzeba policzyć wszystko, zrobić symulacje, przebudować sprzęt, wcześniej go jeszcze przeprojektować, do tego pewnie coś zmienić w sofcie i sprzęcie na podstawie tego 20 metrowego skoku.
I zrobią to w tydzień, albo dwa.
A w IT, połączenie 2 prostych narzędzi może wziąć więcej czasu, bo każdy test może trwać godzinę, albo i dwie....
Mój rekord jakiś czas temu to było jakieś góra 20 minut pracy dziennie, resztę czasu czekałem na kompilację....
Coś chyba robimy nie tak ;-)
Podobne postybeta
Kiedy polecimy na Marsa?
Dobrze wykorzystany programista
Żonglowanie to kolejna sztuczka w zasobniku programisty ;-)
Dart, opcja --optimze naprawdę pomaga ;-)
Rząd wykonał swój plan aż w 17% ;-)
Elon odgraża się, że w ciągu tygodnia, czy dwóch zrobią 200 metrów.
To nie jest takie proste, trzeba policzyć wszystko, zrobić symulacje, przebudować sprzęt, wcześniej go jeszcze przeprojektować, do tego pewnie coś zmienić w sofcie i sprzęcie na podstawie tego 20 metrowego skoku.
I zrobią to w tydzień, albo dwa.
A w IT, połączenie 2 prostych narzędzi może wziąć więcej czasu, bo każdy test może trwać godzinę, albo i dwie....
Mój rekord jakiś czas temu to było jakieś góra 20 minut pracy dziennie, resztę czasu czekałem na kompilację....
Coś chyba robimy nie tak ;-)
Podobne postybeta
Kiedy polecimy na Marsa?
Dobrze wykorzystany programista
Żonglowanie to kolejna sztuczka w zasobniku programisty ;-)
Dart, opcja --optimze naprawdę pomaga ;-)
Rząd wykonał swój plan aż w 17% ;-)
czwartek, lipca 25, 2019
Fotografowanie
Dużo fotografuję, szczególnie na imprezach w stylu koncertów czy fajerwerkach.
Tylko nie wiem po co ;-)
Wczoraj w okolicach koncertu Rammsteina zrobiłem jakieś 500-600 zdjęć, które zajęły 1.7GB.
Żadnego nigdy jakoś szczególnie nie obejrzę ;-)
Chociaż mam Pixela 3 XL z najlepszym aparatem w telefonie to ciemne zdjęcia nie oddają tego co widziałem będąc na koncercie.
A robiąc zdjęcia ryzykuje się, że coś się z tego co się dzieje na scenie nam ucieknie.
Chociaż tutaj już kilka lat temu nauczyłem się, żeby robiąc zdjęcie NIE PATRZEĆ na ekran, jeśli robię zdjęcia w trakcie jakiejś imprezy.
Bo wtedy widzę nie imprezę, a to co widać na ekranie telefonu i pomiędzy mną, a tym co odbiera wchodzi dodatkowa przerwa.
Jeden plus ze zdjęć, jest jakieś które pamiętam, wpisuję jego opis w Google Photos i dostaję zdjęcie ;-)
Podobne postybeta
Rammstein :-)
No to posprzątane, pójdę siedzieć, za obrazę uczuć religijnych....
Odinstalowałem Duolingo :-)
Rammstein :-)
Matrix to niezawodny sposób na sen ;-)
Tylko nie wiem po co ;-)
Wczoraj w okolicach koncertu Rammsteina zrobiłem jakieś 500-600 zdjęć, które zajęły 1.7GB.
Żadnego nigdy jakoś szczególnie nie obejrzę ;-)
Chociaż mam Pixela 3 XL z najlepszym aparatem w telefonie to ciemne zdjęcia nie oddają tego co widziałem będąc na koncercie.
A robiąc zdjęcia ryzykuje się, że coś się z tego co się dzieje na scenie nam ucieknie.
Chociaż tutaj już kilka lat temu nauczyłem się, żeby robiąc zdjęcie NIE PATRZEĆ na ekran, jeśli robię zdjęcia w trakcie jakiejś imprezy.
Bo wtedy widzę nie imprezę, a to co widać na ekranie telefonu i pomiędzy mną, a tym co odbiera wchodzi dodatkowa przerwa.
Jeden plus ze zdjęć, jest jakieś które pamiętam, wpisuję jego opis w Google Photos i dostaję zdjęcie ;-)
Podobne postybeta
Rammstein :-)
No to posprzątane, pójdę siedzieć, za obrazę uczuć religijnych....
Odinstalowałem Duolingo :-)
Rammstein :-)
Matrix to niezawodny sposób na sen ;-)
Rammstein :-)
Byłem wczoraj w Chorzowie na koncercie Rammstein :-)
Prawie ogłuchłem, ale słuchawki nawet takie "na wtyk" w uszach powodują, że jednak trochę mniej się dostaje niż te 80-90 dB ;-) [mam nadzieję ;-)]
Ludzie na Stadionie Śląskim od jakichś 10 lat (pewnie byli młodsi też) do ponad 60 ;-)
W samym Chorzowie było widać wielu, którzy szli na koncert. To dla mnie trochę dziwne, bo w Krakowie tego zwykle nie widać ;-)
A ja czas przed koncertem wykorzystałem do tego by pochodzić po Chorzowie (~14 km przeszedłem ;-)) i zobaczyć "stare śmieci", czyli miejsce gdzie mieszkałem, gdzie chodziłem do szkoły i inne podobne :-)
Trudno mi powiedzieć czy ten koncert był lepszy czy gorszy od koncertu Rammstein na którym byłem 3 lata temu.
Był inny, inną miał oprawę, nawet inną dynamikę.
Rammstein postanowił też wkurzyć skrajną prawicę ;-) i gdy "płynęli" na pontonach bisować to wymachiwali nie tylko Polską flagą, ale i tęczowymi ;-)
Podobne postybeta
W 2023 będę na Rammstein 2.... wróć 3 razy ;-)
Ostatni Rammstein... przynajmniej w 2024 ;-)
Wszystko tkwi w głowie
Bug w debugu ;-)
Eventy na żywo nie zawsze są bardziej wow niż w TV ;-)
Prawie ogłuchłem, ale słuchawki nawet takie "na wtyk" w uszach powodują, że jednak trochę mniej się dostaje niż te 80-90 dB ;-) [mam nadzieję ;-)]
Ludzie na Stadionie Śląskim od jakichś 10 lat (pewnie byli młodsi też) do ponad 60 ;-)
W samym Chorzowie było widać wielu, którzy szli na koncert. To dla mnie trochę dziwne, bo w Krakowie tego zwykle nie widać ;-)
A ja czas przed koncertem wykorzystałem do tego by pochodzić po Chorzowie (~14 km przeszedłem ;-)) i zobaczyć "stare śmieci", czyli miejsce gdzie mieszkałem, gdzie chodziłem do szkoły i inne podobne :-)
Trudno mi powiedzieć czy ten koncert był lepszy czy gorszy od koncertu Rammstein na którym byłem 3 lata temu.
Był inny, inną miał oprawę, nawet inną dynamikę.
Rammstein postanowił też wkurzyć skrajną prawicę ;-) i gdy "płynęli" na pontonach bisować to wymachiwali nie tylko Polską flagą, ale i tęczowymi ;-)
Podobne postybeta
W 2023 będę na Rammstein 2.... wróć 3 razy ;-)
Ostatni Rammstein... przynajmniej w 2024 ;-)
Wszystko tkwi w głowie
Bug w debugu ;-)
Eventy na żywo nie zawsze są bardziej wow niż w TV ;-)
Subskrybuj:
Posty (Atom)
