Gdzieś między Polską a Niemcami, a szczególnie w NRD

Twit programmers of the year (3)

Dziś kolejne doniesienia z frontu walki z programistycznymi twitami, bo na nic innego chwilowo nie mam czasu.

Projekt w którym dotąd robiłem ma od dłuższego czasu dwa projekty pochodne dla dwóch innych modeli samochodów. Jeden z tych dwóch ma dwa warianty - z HUDem i bez. No ale to wszystko jest na tej samej bazie sprzętowej i ma robić z grubsza to samo, różnice są głównie w wyświetlaczu, rozłożeniu LEDów i zegarkach pokazujących niekoniecznie to samo. Tylko wziąć ten wcześniejszy projekt i trochę dopasować. No i prawdziwy twit manager of the year potrafi spieprzyć nawet coś takiego - każda z tych wersji jest wyraźnie inna, te same moduły są w różnych wersjach, albo są wręcz zupełnie inne, nawet mnóstwo nazw tych samych obiektów się nie zgadza. Nikt tego po prostu nie pilnuje. Największy problem jest z jednym z zasadniczych modułów, już w tym pierwszym projekcie on jako-tako działa tylko dlatego, że kiedyś połowę jego zrobiłem na nowo rysując statechart w Rhapsody i generując kod. Teraz zreimplementowałem go całego również w Rhapsody, narysowałem czyste i klarowne statecharty z dobrze zdefiniowanymi interfejsami, w dwa dni było zrobione, a teraz od półtora tygodnia próbuję to zintegrować z wszystkimi trzema systemami. No i wyłazi na każdym kroku to, co im powtarzam od lat: Tak się nie da pisać programów tej wielkości. Ten system jest zrobiony w AUTOSARze - to taka koncepcja modułowości do C, całkiem nie najgorsza (chociaż w pewnych aspektach nie domyślana do końca). Działa to mniej więcej tak, że każdemu modułowi definiujemy w XML porty z dobrze wyspecyfikowanymi interfejsami, a potem te porty łączymy, też w XML, są do tego narzędzia. Całość klei generowany kawałek kodu. Konsekwentnie użyte dałoby to niezły, modularny system, mimo że w C. Tyle że te twity cały czas idą po linii najmniejszego oporu i przestawiają na AUTOSAR tylko to, co absolutnie niezbędne, a pozostałe połączenia międzymodułowe są nadal robione jak ćwierć wieku temu przez #define funkcja1 funkcja2, potem w innym miejscu jest #define funkcja2 funkcja3 i tak dalej. W rezultacie nie ma żadnej modularności, a system przypomina węzeł gordyjski.

Przy okazji zauważyłem, że te nowe projekty kompilują się dobrze ponad dwa razy dłużej niż ten pierwotny, mimo że są mniejsze. Oczywiście nikt z twitów się nie skarży, ale przy czasie rekompilacji powyżej pół godziny rozsądna praca nie jest możliwa, i jest to jedna z przyczyn dlaczego te projekty są w stanie katastrofalnym. Postawiłem hipotezę roboczą, że gdzieś kluczowy header file inkluduje o wiele za dużo. Sprawdziłem i się okazało, że losowo wybrany plik źródłowy inkluduje pośrednio 55.000 headerów. Tak, dobrze widzicie: słownie pięćdziesiąt pięć tysięcy. Krótka analiza pokazała, że to idzie tak: AUTOSAR ma taki specjalny mechanizm definiowania, do której sekcji linkera dany obiekt ma iść - definiuje się powiązany z tą sekcją symbol preprocesora i includuje plik "MemMap.h" (przed obiektem i po obiekcie, zarówno przy definicji jak i deklaracji). Ten plik includuje wszystkie pliki z konkretnymi definicjami, a jest ich z grubsza tyle, ile modułów. To już robi całą masę includów. Ale teraz każdy z tych plików includuje zawsze ten sam plik z definicjami kompilatora, a przecież wystarczyłoby raz. Wywaliłem te niepotrzebne includy i ilość pośrednich includów w moim losowym pliku źródłowym spadła zaraz o 20.000 a czas rekompilacji spadł o jakieś 10%. Zawsze coś, ale w tym pierwszym projekcie jest dokładnie ten sam problem i to nie jest przyczyna różnicy czasów kompilacji. Na moje oko przyczyną jest to, że większość modułów includuje losowo i bez sensu, w pierwszym projekcie dużo tego wyczyściłem albo kazałem ludziom wyczyścić, a w tych nowych nikt się tym nie zajął, ani nawet nie przeniósł do nich poprawek. Niby drobiazg, ale 15 niepotrzebnych minut na każdą kompilację, przy sporym zespole przekłada się na stratę liczoną w osobodniach na tydzień!

W tym pierwotnym projekcie już dawno temu zauważyłem, że kompilacja idzie bez sensu: kompilowało się równolegle na pięciu corach, tyle że największy plik (wygenerowany przez AUTOSAR), kompilujący się przez 6 minut jest w grupie o nazwie alfabetycznie prawie na samym końcu. W związku z tym na końcu pozostałe cory nie mają nic do roboty, a jeden jeszcze przez 5 minut mieli ten jeden plik. Przesunąłem więc tą grupę na początek i voila - kompilacja skróciła się o prawie 5 minut czyli 30%.

W ogóle problematyka czasu i wygody kompilacji i ich wpływu na produktywność, a nawet sukces projektu jest mocno niedoceniana. Znany jest mi wypadek projektu który padł, bo każda generacja kodu z modelu trwała ponad 30 minut. Poprzednią robotę rzuciłem między innymi dlatego, że klient dla którego robiliśmy wymyślił sobie świetny tooling: Program (w Javie) składał się z sześciu części, i żeby je skompilować trzeba było każdą część kliknąć z osobna, i to nie wszystkie naraz, ale po kolei. Każda część kompilowała się 3-4 minuty, czyli akurat tyle żeby tymczasem się przełączyć i coś porobić. Tyle że jak się potem przełączało do Eclipsa to było zawsze "O k..., znowu nie pamiętam który ostatnio klikałem!".  Focusu już nie było, z konsoli też nie dało się łatwo wywnioskować. Efekt był taki, że klikało się parę razy w to samo, albo coś się pomijało i trzeba było od wszystko od nowa. Rozwiązania typu notować na karteczce, albo cały czas się gapić w tego Eclipsa były tak upierdliwe, że aż poszukałem książki od tego badziewia, ale po paru godzinach prób zrobienia żeby wszystko startowało się automatycznie z Anta dałem spokój. Nie dało się i już. Mój szef, też bardzo dobry w te klocki, nie chciał w to uwierzyć, sam się za to zabrał ale wkrótce też się poddał. Dla zainteresowanych podaję słowo kluczowe, po usłyszeniu którego trzeba szybko uciekać: Buckminster.

 Na zakończenie coś dla zmniejszenia hermetyczności notki. Przykłady twitowego i nietwitowego designu UI w elektronice konsumpcyjnej. Najpierw twitowy:

Budzik z twitowym UI

Budzik z twitowym UI

To jest typowy budzik za kilka euro, różne warianty i odmiany można kupić w każdym sklepie. Każdy ma trochę inne ustawianie czasu budzenia, praktycznie zawsze nieintuicyjne. Podejrzewam, że projektanci tego sprzętu w ogóle go nie używają, albo mają jakieś zaburzenia ze spektrum autystycznego i obudzeni w środku nocy, po ciemku, bez problemu potrafią przypomnieć sobie sekwencję klawiszy konieczną żeby alarm na stałe wyłączyć.

Ten konkretny model jest jeszcze bardziej twitowy, bo piszczy przy każdym przyciśnięciu przycisku. Autor tego rozwiązania jest z całą pewnością samotny, albo mieszka u rodziców i ma swoją, osobną sypialnię, nie dzieloną z nikim. Ale przy tak daleko posuniętym autyzmie to nic dziwnego.

A można inaczej. UI tego budzika jest zrobione genialnie:

Budzik z nietwitowym UI

Budzik z nietwitowym UI

Włączenie i wyłączenie alarmu robi się przy pomocy suwaków z boków. Suwak w górę - alarm włączony, suwak w dół - alarm wyłączony. Czas alarmu ustawia się po po przyciśnięciu jednego z tych większych przycisków po lewej i po prawej. Z wyświetlacza znika wtedy wszystko poza ustawianym czasem i naprawdę nie sposób tego nie umieć, nawet bez instrukcji.

Budzik z nietwitowym UI - ustawianie czasu

Budzik z nietwitowym UI - ustawianie czasu

Suwaki podnoszą oczywiście koszt całości o kilka centów - bo program to żadna różnica, te kilkanaście linii kodu przeliczone na wielkość produkcji to koszt przyzerowy. Za to za taki budzik kasują 25 euro (sugerowana cena producenta), w sieci daje się znaleźć oferty od kilkunastu. W bonusie ma jeszcze różne cuda z podświetleniem wyświetlacza. Można? Można!

-----------------------------------------------------------------------------------------------------------------------

Dotyczy: ,

Kategorie:Ciekawostki, Pomyślmy

Komentarze: (7)

Twit Programmers of the Year (2)

Poprzednia notka spotkała się z żywym odzewem czytelników, więc ponieważ ostatnio temat bardzo mnie zajmuje - zarówno w pracy jak i prywatnie - to może następna.

W pracy ostatnio miałem satysfakcję z gatunku Schadenfreude - od dobrych dwóch lat marudzę przy każdej okazji szefowi działu że tak jak robią to nic z tego nie będzie i trzeba coś zmienić (lista propozycji w załączeniu). Oczywiście, jak to w korpo, nic się nie zmienia. Projekt w którym jestem udało mi się doprowadzić do jako-tako szczęśliwego końca w zasadzie tylko w taki sposób, że co poważniejsze problemy popoprawiałem na własną rękę albo powymuszałem różne rzeczy tworząc fakty dokonane. Ale równolegle idzie projekt pochodny, do innego wariantu, w zasadzie tylko przejąć ten "mój" i trochę pozmieniać. Tego nowego projektu dotąd nawet nie dotknąłem i jest on w stanie tragicznym. No i w czwartek szefu był u klienta na zebraniu kryzysowym, pojawił się tam szef działu testowania (zresztą o polskim nazwisku), stwierdził że jakość tego softu jest katastrofalna (co i ja ciągle szefowi mówię) i zaczął zadawać pytania w stylu "a czy macie development patterny?", "a czy macie continous integration?", "a czy macie automatyczne testy?" - i wszystkie te pytania pokrywały się dokładnie z tym, o czym marudzę. No i już w piątek było "Powiedz nam, co mamy robić żeby ten projekt się nie zawalił?".

Jak źle jest? SOP jest na marzec, to jest do tańszego modelu więc od samego początku ilości będą rzędu 5000 tygodniowo, a na dzień dzisiejszy kompilator daje aż 25.000 warningów. Szybko przejrzałem listę i zauważyłem, że większość z nich musi być z bardzo niewielu miejsc - pół godziny szukania, znalazłem że w dwóch miejscach ktoś zainkludował headery wewnątrz funkcji. Po usunięciu ich, ilość warningów spadła do poniżej 10.000. Rzecz graniczy z sabotażem. Funkcjonalnie to nawet nie przejęli sporej części rzeczy, które od dawna działają u nas. Jedną dość kluczowy moduł infrastrukturalny który opracowałem, zamiast go po prostu przejąć zrobili "lepiej". Poświęcili na to masę czasu, zawracali mi dupę mnóstwo razy, ale oczywiście nie zintegrowali najpierw mojej wersji, tylko od razu zabrali się za poprawianie, czym opóźnili o miesiące włączenie mechanizmów ochrony pamięci - które przecież pozwalają znaleźć sporo błędów. Na koniec jeszcze nie wszystko działa, a nie mają z tego wszystkiego żadnych zalet poza tą abstrakcyjną "lepszością". Za to będzie teraz źle, bo rozwiązania tego samego w obu projektach są różne (a na przykład cały generator kodu jest wspólny, oni poprawiają moje zmiany za każdym razem). Przy pierwszym problemie każę im to wywalić do kosza i wrócić do mojego. Tragedia po prostu, znowu trzeba będzie ratować im dupy, za każdym razem z coraz głębszego szamba.

No dobrze, ale bywa jeszcze gorzej. Wróćmy do naszych ulubionych Twit Programmers z consumer electronics.

Mam w domu zegar ścienny z DCF, produkcji znanej firmy Citizen. Trochę lat już ma. Taki zegar synchronizuje się z nadajnikiem DCF-77 (tu niedaleko, koło Aschaffenburga) w południe i o północy, jeżeli wychodzi mu że się spóźnia to nie ma sprawy - wskazówki pojadą trochę do przodu. Gorzej jest, jak się spieszy - taki zegar do tyłu się nie pokręci. Ja bym zrobił tak, że zegar powinien trochę poczekać aż upływ czasu dogoni czas wskazywany, a potem niech chodzi dalej, w końcu o ile może się pospieszyć przez 12 godzin. Tymczasem tutaj jakiś twit programmer wymyślił, że zegar pokręci się niecałe 24 godziny do przodu. Ponieważ to stara konstrukcja i wszystkie wskazówki są posprzęgane na stałe, to sekundnik musi się w tym celu obrócić 12*60=720 razy dookoła, a trwa to prawie 20 minut. Oczywiście spać się w tym pokoju nie da, jak zegar o północy przez 20 minut warczy. A teraz najlepsze: Zegar przy czasie letnim ZAWSZE stwierdza, że się spieszy - ten twit nie uwzględnił przy porównaniu flagi DST.

Teraz honourable mention dla elektroników którzy projektowali mojego notebooka marki Acer. To jest 18'' desktop replacement i ma dwie karty graficzne. Jedna (Intel) jest wolna, ale bierze mało prądu, druga (ATI Radeon HD4670) odwrotnie. Tyle że jakiś twit wymyślił, że ta szybka będzie niestandardowa i będzie wymagała specjalnego drivera. Notebook był zaprojektowany do Windowsów Vista, ja kupiłem go z Windows 7 i na początku ta szybka karta jeszcze działała. Potem, po jakiejś aktualizacji systemu przestała, w Windows 10 też nie działa. Aktualizacji drivera już nie ma i nie będzie, szlag by ich trafił. Pod Linuxem też nie chodzi, bo tam specjalnego drivera też nie ma.

Problem jest taki, że załamany twitami piszącymi soft na Androida wymyśliłem, że sam sobie napiszę rzeczy które potrzebuję. Zainstalowałem Eclipse z developmentem do Androida, on ma emulację urządzenia z Androidem. Tyle że na moim notebooku ta emulacja startuje się 11 minut. Popatrzyłem co się da zrobić i radykalne przyspieszenie dałoby włączenie hardwarowej wirtualizacji, ale do tego potrzebne jest Intel Virtualisation Technology w procesorze, a w moim tego nie ma. Następna możliwość to włączenie opcji użycia hardware karty graficznej, a tutaj ta szybka nie działa, a do wolnej nie ma już aktualnych driverów. No to może Linux? Partycję z Linuxem miałem, zainstalowałem tam takiego samego Eclipsa, Linux ma driver do tej karty od Intela i emulacja startuje w minut pięć. No to może nie ideał, ale zawsze znacznie lepiej. Na razie zorganizuję sobie to wszystko, a jak dojdę do poważnej roboty to kupię nowego notebooka.

Tak więc przeszedłem na Linuxa na notebooku. Poinstalowałem na moim serwerze Linuxowym trochę serwerowych narzędzi żeby robić development porządnie, i tu też zaraz wykryłem paru twitów. Na przykład u Epsona. Linuxowy driver drukarki od Epsona występuje w dwóch wersjach: Jedna drukuje wszystkie kolory poprzesuwane o parę milimetrów, druga trafia z kolorami we właściwe miejsca, ale wcale nie drukuje koloru żółtego. Wybór należy do Ciebie.

Następny twit jest od projektów do Eclipse. Zainstalowałem na serwerze CDO Repository Server żeby trzymać moje modele w czymś porządnym. A tu jakiś twit nie upilnował, żeby nazwy tabel w bazie danych były pisane zawsze tak samo. Na Windowsach nie ma problemu - tabele lądują w plikach a Windowsom jest scheissegal czy piszemy nazwy plików dużymi czy małymi literami. Ale Linuxowi nie jest to obojętne i od razu wychodzi błąd że nie można znaleźć tabel. Jako workaround podają żeby włączyć w MySQL-u opcję konwertującą nazwy tabel do małych liter, ale ta opcja jest globalna dla całej instancji serwera bazodanowego i wtedy zaczynają mi się wywalać wcześniej utworzone bazy, w których nazwy tabel zawierają duże litery. Wygląda na to, że na początek będę musiał poprawić na własną rękę CDO Server Project (na szczęście jest w źródłach).

I tak dalej, i tak dalej. Teraz na pociechę: Nie każdy problem z softem/hardwarem jest wywołany przez twitów. Typowy przykład to "na początku mój WiFi stick/WiFi router/urządzenie z WiFi chodziło dobrze, a teraz coraz wolniej, na pewno to przez jakiegoś twita od driverów". Otóż nie. Jak kupowałeś tego sticka, WiFi miało tylko trzech sąsiadów i to nie w Twojej klatce. Teraz WiFi mają wszyscy, a kanały mają poustawiane całkiem randomowo. Tak wygląda to u mnie w paśmie 2,4 GHz.

WiFi-2-4-GHz

WiFi w paśmie 2,4GHz

WiFi jest o tyle źle zrobione, że komunikacja na kanale n zakłóca komunikację na kanałach od n-2 do n+2. Jakby poprzydzielać kanały jakoś centralnie to jeszcze może dałoby się to jakoś opanować, ale tak w realnych warunkach sieci jest tyle i poustawiane są na tyle źle że całość się ślimaczy. U mnie było jeszcze gorzej, bo pojawiał się jakiś nieprawdopodobnie mocny sygnał (chyba z biurowca naprzeciwko) zagłuszający wszystko dookoła. Jest na to tylko jeden sposób - przejść na pasmo 5GHz. Tak wygląda u mnie pasmo 5GHz:

WiFi-5-GHz

WiFi w paśmie 5GHz

Czego i czytelnikom życzę.

-----------------------------------------------------------------------------------------------------------------------

Dotyczy: ,

Kategorie:Ciekawostki, Pomyślmy

Komentarze: (8)

Twit Programmers of the Year

Tytuł notki zainspirowany jest notką Boniego - "Twit of the Year". A co do meritum:

Jako - było nie było - fachowiec od inżynierii oprogramowania, z za chwilę trzydziestoletnim doświadczeniem, ze zgrozą obserwuję poziom wykonania programów wszędzie dookoła. Tak w zasadzie to tworzenie oprogramowania jest stosunkowo proste. Są do tego dość jasno określone zasady, cała kupa darmowych narzędzi pomocniczych, mnóstwo książek, nieprawdopodobne ilości porad do znalezienia w sieci, ... Co prawda w dowolnej innej branży też są dość jasne zasady, narzędzia, książki, tyle że przy programowaniu jest łatwiej - bardzo dużo można sobie po prostu wypróbować i poćwiczyć w domu, praktycznie za darmo. A na przykład w takim budownictwie to jakoś tak nie bardzo da radę.

Tymczasem w realnym świecie trudno o kawałek programu, który nie jest spieprzony i to najczęściej w sposób który powinien być łatwy do uniknięcia. Jaki-taki poziom mają najczęściej programy z okolic Free Software pisane w Javie, ale też wcale nie wszystkie. Dlaczego tak jest? To jest proste: Oni tam stosują się do ogólnie znanych reguł - używają development patternów, robią module testy, konsekwentnie robią komentarze w Javadocu z których potem powstaje dokumentacja, testy wykonują automatycznie w jakimś serwerze CI w rodzaju Jenkinsa, ... W sumie nic skomplikowanego, tyle że inni tego nie robią, albo robią to źle.

Ja rozumiem że bardzo duża część programów które można zdownloadować w systemowym sklepie jak Google Play czy Windows Store to produkcje półamatorskie i ich autorzy nie mają większego pojęcia o tym, co robią. Ale w produkcjach profesjonalnych, zwłaszcza w branżach które nie zajmują się tylko czystym softem nie jest wiele lepiej. Na przykład u mnie, w automotive.

U nas w fabryce, jestem jedyny który ma rzeczywiście pojęcie o inżynierii oprogramowania. Cała reszta to elektronicy, którzy na studiach mieli pobocznie cośtam o programowaniu. Albo i nawet nie i są samoukami. Niektórzy są nawet nieźli, myśleć logicznie potrafią, tyle że podstaw im brakuje. No i potem wygląda to na przykład tak, że w kawałkach w C++ nie jest nawet dobrze określone który header file jest do C, a który do C++ i jak pojawiają się problemy przy includowaniu, to ktoś łata problem takimi sposobami,  że jakbym miał jeszcze dość włosów na głowie, to bym je sobie powyrywał. W innych, zupełnie podstawowych sprawach też nie jest lepiej. A jak jakiś problem trzeba rozwiązać, to niemal każdy szuka podobnego miejsca w innym module i zrzyna rozwiązanie. A ponieważ to rozwiązanie rzadko tylko jest dobre, to złe rozwiązania rozprzestrzeniają się coraz bardziej. Testy modułowe są wymuszane przez klienta - więc robi się je na sam koniec, często już po tym jak program poszedł do na produkcję. Według mnie to zbędna robota, równie dobrze można by wyprodukować oszukany test report, nic by nie zmieniło a roboty mniej. I tak dalej, i tak dalej, ogólnie to cieszcie się że samochody w ogóle są w stanie ruszyć z miejsca.

No ale mimo wszystko programiści z automotive nie zasługują jeszcze na tytuł "Twit Programmers of the Year". Ponieważ samochód podpada pod różne takie tam związane z bezpieczeństwem (znaczy może kogoś zabić), to producenci wymuszają na wykonawcach żeby program nie wieszał się co chwilę, a przynajmniej żeby się potem jakoś znalazł. Na spełnienie tych wymagań idzie niesamowita ilość wysiłku a modus operandi typowego projektu w automotive to eskalacja. Jeszcze nigdy nie słyszałem o projekcie w automotive który by nie wszedł w eskalację. Mi to ręce opadają, bo tego wszystkiego można by uniknąć, gdyby chociaż trochę stosować się do ogólnie znanych zasad.

Ale jest branża w której jest jeszcze gorzej - to consumer electronics. Soft do telewizora jeszcze nigdy nikogo nie zabił, więc nikt nie wymusza w nim zachowania zasad fuctional safety. Ba, jak poklikać trochę w jakiś współczesny telewizor to wychodzi że oni w ogóle nawet podstawowego system testu to raczej jednak nie robią.

Skąd mi się temat wziął? Mój sprzęt audio-video już się mocno historyczny zrobił. Telewizor był jeszcze CRT, od Sony, ale nic bardzo specjalnego. Ciągłe mam video VHS i analogowy zestaw kina domowego z wejściem przez SCART. Najnowszym z urządzeń był dekoder kablowy, też dający sygnał na SCARTa. No i ten dekoder zaczął mieć problemy. Zaczęło się od różnych zakłóceń w obrazie, potem odbierał coraz mniej kanałów, w końcu zostało tylko Russia Today. A potem poszedł z niego dym - sfajczyły się dwa elektrolity. No i po analizie opcji wyszło mi, że najlepiej będzie kupić nowy telewizor, bo tunel kablowy będzie w zestawie, a i nagrywanie na dysk USB przynajmniej częściowo zastąpi video. A w następnej kolejności będzie nowe kino domowe.

Jako warunki brzegowe postawiłem rozmiar 32 cale (wystarczy mi), FullHD (4K to przesada, ale poniżej FullHD w dzisiejszych czasach bez sensu) i żeby był Smart. No i zaraz wybór skurczył mi się do zaledwie kilku modeli. A potem się doczytałem, że są już telewizory z Androidem. Ponieważ moje zdanie o programistach od telewizorów było utrwalone już od dawna, stwierdziłem że wezmę taki - jak nie będą pisać wszystkiego sami tylko wezmą za bazę niezłego Linuxa i jakie-takie API od Googla to okazji do narobienia głupot będą mieli mniej.

Od paru dni mam taki telewizor i jak widzę, prawdziwy Twit Programmer of the Year potrafi spieprzyć nawet taką integrację:

  • To nie jest "telewizor na Androidzie" tylko "telewizor z własnym systemem + Androidem". Miejsca sklejenia widać dość wyraźnie. Ale i tak jest trochę lepiej niż bez Androida.
  • Do telewizora można podłączyć mysz. Wszystko pięknie, tyle że rolka myszy chodzi w różnych menu, ale nie w web browserze. Po prostu nie chodzi i już, do scrollowania strony trzeba klikać w suwak, nawet ciąganie go nie działa.
  • Można sobie utworzyć cztery listy ulubionych kanałów, ale wybrać jakiejś już nie. Znaczy okienko wyboru się pojawia, na liście są utworzone listy, ale listy wszystkich kanałów na niej nie ma. Nie muszę chyba pisać, że niezależnie od tego co wybiorę, po wyjściu z okienka ustawiona jest lista wszystkich kanałów. Zmienić to mogę tylko przy użyciu programu zdalnego sterowania na innym urządzeniu Androidowym. Na telewizorze nie da rady, próbowałem chyba z pół godziny. Proszę sobie darować komentarze że RTFM- w manualu nie ma o tym nawet słowa. Tytuł Twit Programmer of the Year słusznie się należy.
  • Własny program do zdalnego sterowania z innego urządzenia Androidowego od producenta telewizora nie łączy się z telewizorem. Inne, od jakichś amatorów, jakoś się łączą (ale też nie wszystkie). Może ma to związek z tym, że w drugim urządzeniu WiFi chodzi na 2,4GHz, a telewizorowe na 5 GHz, ale amatorzy radzą sobie mimo routera po drodze.
  • Nagrywać na dysk USB można tylko to, co się widzi. To akurat zrozumiałe - tuner jest tylko jeden. Ale nie da się odtwarzać nagranego programu na komputerze (przez DLNA) oglądając co innego.
  • Jak ustawić nagrywanie na powiedzmy za dwa dni, dysk kręci się przez te dwa dni cały czas, nawet przy wyłączonym telewizorze. Naprawdę nie można go obudzić na pięć minut przed nagraniem?
  • Już raz mi się coś powiesiło - oglądać TV można było, ale nie chodziło odtwarzanie nagranego programu i nic z internetem. Pomógł dopiero twardy reset z odłączeniem zasilania. Chyba zwisała część Androidowa.

Oczywiście nie twierdzę, że ten model telewizora przebija dno, z pewnością są gorsze. Ale programiści od consumer electronics rozumianej jako cała branża z pewnością zasługują na tytuł Twit Programmers of the Year

Jeszcze autoreklama, jakby czytał to jakiś decydent z branży: Za odpowiednią opłatą zorganizuję wam to bez porównania lepiej. Tylko poważne propozycje.

-----------------------------------------------------------------------------------------------------------------------

Dotyczy: ,

Kategorie:Ciekawostki, Pomyślmy

Komentarze: (36)

Pomyślmy: Co z tą Syrią?

W sobotę wybrałem się do miasta i na Römerze była demonstracja. Machali syryjskimi flagami, ktoś przemawiał, wznosili okrzyki. Demonstracja całkiem spora, nie tak wiele mniejsza niż przy Blockupy.

Demonstracja w sprawie Syrii, Frankfurt

Demonstracja w sprawie Syrii, Frankfurt

Człowiek myśli schematami i wychodzi mindfuck - myślałem że to w sprawie obalenia Assada, ale oni nosili jego portrety i byli za nim.

Demonstracja w sprawie Syrii, Frankfurt

Demonstracja w sprawie Syrii, Frankfurt

A policja nie wpuszczała na plac kilkunastoosobowej grupki zwolenników strony przeciwnej.

Demonstracja w sprawie Syrii, Frankfurt

Demonstracja w sprawie Syrii, Frankfurt

Demonstranci woleli satrapę od Bractwa Muzułmańskiego.

Demonstracja w sprawie Syrii, Frankfurt

Demonstracja w sprawie Syrii, Frankfurt

 A mi się znowu włączyło porównanie z Polską. Nasz satrapa nie był na szczęście taki chętny do sięgania po broń, ale rodzime Bractwo Katolickie skorzystało z naszej nieświadomości i natychmiast zajęło praktycznie wszystko co się dało. Nie przypominam sobie z tamtych czasów znaczących głosów ostrzegających przed takim obrotem sprawy. Ale byliśmy głupi.

I co teraz myśleć o Syrii?

-----------------------------------------------------------------------------------------------------------------------

Dotyczy: , ,

Kategorie:Pomyślmy

Komentarze: (5)

Pomyślmy: Wyłączyć reaktory i co dalej?

Wszyscy piszą teraz o energetyce jądrowej. Ja swoją notkę o tym, jak to jest w Niemczech zacząłem pisać już w listopadzie, po ostatnim większym transporcie odpadów z Francji do Niemiec, ale notka nadal nie jest skończona. Dziś inne przemyślenia.

Ludzie krzyczą teraz "Wyłączyć! Wyłączyć!" (reaktory oczywiście), ale trzeba się zastanowić, co zamiast nich?

Nie ma aż tak wiele sposobów wytwarzania prądu na skalę potrzebną żebyśmy nie siedzieli po ciemku i mieli zaopatrzone sklepy. Przyjrzyjmy się im po kolei.

Najpierw zauważmy, że nie ma metody na zmagazynowanie prądu w znaczniejszych ilościach. Jedyna używana metoda to elektrownia szczytowo-pompowa, ale to są drobiazgi w porównaniu z potrzebami. Generalnie prąd trzeba wytwarzać w tym momencie, w którym jest zużywany.

Spójrzmy na energię atomową. Ma ona sporo zalet (gdyby ich nie miała, nikt by się w to nie bawił). Elektrownia jądrowa zużywa stosunkowo niewielkie ilości paliwa, daje niedużo odpadów i żadnych spalin. Prąd z elektrowni jądrowej jest tani (chociaż dyskusyjne jest, czy prawidłowo dolicza się do tej ceny koszty składowania odpadów). Oczywiście nie ma na świecie nic z samymi zaletami - odpadów nie jest wiele, ale za to bardzo problematyczne. Trzeba je przechowywać przez wiele tysięcy lat zanim przestaną być niebezpieczne, i jak dotąd nikt nie ma na to dobrego sposobu. Skutki awarii elektrowni mogą też być paskudne.

No to może coś innego. Najwięcej prądu na świecie wytwarza się z paliw kopalnych - węgla kamiennego i brunatnego. No ale to jest jeszcze o wiele gorsze niż elektrownia jądrowa! Elektrownia na węgiel sieje po znacznej okolicy produktami spalania węgla i produkuje góry popiołów zawierające całą tablicę Mendelejewa, nie wyłączając pierwiastków i izotopów radioaktywnych. Szacuje się, że rocznie przez wszystkie elektronie węglowe na świecie przechodzi 10.000 ton uranu i 25.000 ton toru, większość z tych pierwiastków ląduje w popiele gromadzonym na hałdzie.  Te hałdy leżą sobie po prostu, są rozmywane i wypłukiwane przez wodę deszczową, wszystko co w nich jest trafia do powietrza i wód gruntowych, a potem do żywności. Były już próby wydobywania uranu z popiołów elektrowni, w USA między 1960 a 1970 uzyskano tak 1100 ton. Dalej: przy wydobyciu węgla giną ludzie i to wcale niemało. A wydobywanie go spod ziemi powoduje szkody górnicze, bywa że również ze skutkami śmiertelnymi.

Bezpieczniejsze są  ropa i gaz, ale przypomnijmy sobie niedawną katastrofę w Zatoce Meksykańskiej. Poza tym ropy szkoda na spalenie - jak się skończy to jak będziemy robić tworzywa sztuczne?

Jest jeszcze geotermia, no ale nie wszystkie kraje mają takie szczęście jak Islandia. Tak normalnie to można tą metodą podgrzać sobie wodę do ogrzewania, a nie popędzić dużą elektrownię.

No to może posłuchać zielonych ekologistów[*] i zająć się energią odnawialną?

Weźmy taką energię wodną. Ekologiści[*] chwalą ją, ale spróbujcie zaproponować budowę takiej elektrowni, zaraz ich grupa przykuje się do drzew w tej okolicy i wyliczy wszystkie wady tej technologii, nie trzeba będzie samemu się wysilać. Poza tym katastrofa takiej elektrowni też się zdarza i też może mieć niezły body count. Dużo energii to dużo energii, nie ma z tym żartów, niezależnie od tego w jakiej formie ta energia jest.

A co z wiatrem? Pierwszym problemem wiatru jest to, że nie zawsze wieje. A prąd musi być zawsze. Czyli każdy wiatrak musi mieć pokrycie w jakiejś innej elektrowni. A wiatraki też nie są bezproblemowe, są drogie w eksploatacji i musi być ich strasznie dużo - duży wiatrak to zaledwie 5 MW (i to jak dobry wiatr) a jeden blok normalnej elektrowni może mieć nawet 1000 MW. Podzielenie jednego przez drugie pozostawiam jako ćwiczenie dla czytelnika.

A słońce? Tu jest jeszcze gorzej. Po pierwsze u nas jest raczej słabe, a do tego z definicji nie ma go w nocy. Do tego wtedy, gdy prądu najbardziej potrzebujemy, czyli w zimie, jest go akurat najmniej. Prąd ze Słońca to, jak na razie,  rzecz nadająca się do zasilania klimatyzatorów w ciepłym klimacie, a nie na naszą strefę klimatyczną. Najwyżej trochę wody do mycia można podgrzać.

Jeszcze mamy falowanie i pływy. Ale tu podobnie jak z wiatrakami - gęstość tej energii jest zbyt mała żeby naprodukować w rozsądnej cenie potrzebną ilość prądu.

Zostało już tylko jedno - biomasa. No ale ekologiczność palenia biomasą jest baaardzo wątpliwa. Zauważmy, że bioetanol dodawany do benzyny to często jest robiony z roślin, dla uprawy których wycięto kawałek dżungli amazońskiej. No jak tak ma wyglądać ekologizm[*] to ja dziękuję. Nie mamy aż takiego nadmiaru żywności i ziem uprawnych żeby pokryć nasze zapotrzebowanie na energię z samej biomasy.

 

Prawdziwie czystą energię aż po górne bezpieczniki w nosie mogła by dać tylko synteza jądrowa. No ale już tak od dobrych 50 lat jest mowa o tym, że już za 10 lat to będzie działać. I nie działa, a ostatnio przepowiadane terminy się odsuwają. Czyli tak w zasadzie to zostaje tylko się pociąć.

 

[*] Odmawiam używania słów ekologia, ekolog oznaczających naukę i naukowca na określenie tego, co proponują różni Zieloni. Konsekwentnie używam zamiast tego słów ekologizm i ekologista, te końcówki wydają mi się zgodne z regułami polskiego słowotwórstwa w odniesieniu do ideologii.

-----------------------------------------------------------------------------------------------------------------------

Dotyczy: , ,

Kategorie:Pomyślmy

Komentarze: (43)

Pomyślmy: Ośmiornica Paul to symbol upadku Zachodu

Jak doniosła prasa (EDIT 2015-02-06: Link już zniknął):

"Irański prezydent Mahmud Ahmadineżad oświadczył, że niemiecka ośmiornica Paul, która wsławiła się, prawidłowo typując zwycięzców piłkarskich mistrzostw świata w RPA, symbolizuje całe zło zachodniego świata"

"(...)Powiedział m.in., że słynny głowonóg to symbol dekadencji i upadku "wrogów" Iranu. Jego zdaniem ośmiornica "szerzy zachodnią propagandę i przesądy". "

Jakby się na to nie patrzeć, to on ma rację. Przynajmniej co do meritum. Domaganie się zrobienia z Paula sałatki, bo coś przypadkiem się sprawdziło, to podstawowe niezrozumienie zależności przyczynowo skutkowych i myślenie magiczne. Dekadencja, upadek i przesądy. Kto by pomyślał, że zgodzę się w czymś akurat z Ahmadineżadem.

Jest jednak różnica w naszych poglądach: on krytykuje z pozycji religijnych - Nie wolno wierzyć w takie rzeczy, bo one nie są od naszego Boga, ja z racjonalnych.

-----------------------------------------------------------------------------------------------------------------------

Dotyczy: ,

Kategorie:Pomyślmy

Komentarze: (2)

Pomyślmy: Drzymała i jego wóz

Nie wiem jak jest teraz, ale za moich czasów opowiadano dzieciom w szkołach historię Michała Drzymały i jego wozu. Szło to mniej więcej tak:

Michał Drzymała kupił w 1904 roku działkę budowlaną na wsi w zaborze pruskim i chciał zbudować na niej dom. Nie dostał jednak pozwolenia na budowę. Ponieważ musiał jednak gdzieś mieszkać, kupił sobie wóz cyrkowy, postawił go na swojej działce i wprowadził się. Urzędnicy stwierdzili jednak, że stojący więcej niż 24 godziny w jednym miejscu wóz to nieruchomość, która jako samowola budowlana musi zostać usunięta (prawie jak w Löwenzahnie, w pierwszym odcinku aktualnej serii nadzór budowlany też robi Fritzowi Fuchsowi podobne problemy). Drzymała znalazł jednak lukę prawną - co dzień przesuwał trochę wóz i argumentował że w związku z tym nie podlega on wymogowi uzyskania pozwolenia na budowę. Konflikt ciągnął się przez ponad 4 lata, Drzymała był nękany z tytułu różnych, zazwyczaj drobnych uchybień prawnych i w końcu jego wóz został usunięty. Potem próbował na parceli zbudować sobie lepiankę, ale to była już ewidentna samowola budowlana, prawnie nie do obrony. Historia skończyła się tym, że Drzymała sprzedał swoją działkę i kupił inną, z domem do remontu nie wymagającym pozwolenia na budowę.

Pierwszy wóz Drzymały

Pierwszy wóz Drzymały Źródło: Gdzieś z sieci

 

Drugi wóz Drzymały

Drugi wóz Drzymały, zrobiony dla niego po nagłośnieniu sprawy przez media Źródło: Gdzieś z sieci

Celowo opowiedziałem tę historię nie takim językiem jakim opowiadano ją nam, tylko współczesnym. Wtedy przedstawiano tę akcję jako przejaw strasznego ucisku Polaków na terenach zaboru pruskiego. Ale pomyślmy:

Po pierwsze jest to historia o państwie prawa. Nawet źle nastawieni urzędnicy (nieważne czy realizowali zleconą z góry politykę, czy też po prostu Polaka nie lubili) nie byli w stanie nic Drzymale zrobić, dopóki trzymał się on litery prawa. Wyobraźmy sobie podobną sytuację w zaborze rosyjskim - tam sprawa zostałaby załatwiona najdalej w kilka dni - Drzymała dostałby parę razy po mordzie, wóz by usunięto i tyle.

Po drugie: Przypomnijmy sobie różne sytuacje z ostatnich dwudziestu lat naszej Niepodległej RP. W porównaniu z tym, co nierzadko wyprawiają nasze ojczyste Urzędy Skarbowe to te straszliwe prześladowania Drzymały przez okropnych Niemców to pryszcz! Niemcy musieli szukać faktycznych niedociągnięć prawnych Drzymały i wóz usunęli dopiero po ustaleniu jego winy (pozostaje oczywiście dyskusyjna kwestia współmierności winy i kary). Natomiast polski urzędnik skarbowy przywala karę za wymyślone przewinienie i egzekwuje ją od razu (znaczy w terminie 30-dniowym), dopiero potem można iść do sądu. A sąd wyda wyrok po jakichś 2-3 latach - musztarda po obiedzie. I tak to się ciągnie już przez ponad 20 lat. I co, któryś rząd w ogóle się tą sprawą poważnie zajął?

I proszę tu mi nie imputować że to nieprawda - przez 10 lat byłem w Polsce wspólnikiem w pewnej firmie i niejedno widziałem. Na przykład kontrole przeglądające faktury w poszukiwaniu brakujących kodów pocztowych odbiorcy (no po prostu straszne przestępstwo skarbowe, dobrze że nas za te dwa rachunki do więzienia nie wsadzili) albo takich, na których nie ma daty sprzedaży i daty faktury. I nam też przywalili niesłuszną karę w znacznej wysokości zwróconą po wyroku po ponad dwóch latach. I ja wiem dlaczego tak jest - urzędnik dostaje prowizję od kar i nie musi jej zwracać nawet jeżeli sąd uznał że kara nie była słuszna.

A potem zdziwienie, że Polacy masowo wybierają emigrację. A czemu się dziwić - skoro ojczyzna traktuje ich gorzej niż zaborcy?

-----------------------------------------------------------------------------------------------------------------------

Dotyczy: , ,

Kategorie:Pomyślmy

Skomentuj

Pomyślmy: Wszystkie nasze nieważne sprawy

Wygrzebałem z piwnicy u rodziców swoje slajdy z NRD i przy ich przeglądaniu naszły mnie takie przemyślenia:

Na tych moich slajdach są różne rzeczy, ale niekoniecznie akurat te które bym dziś chciał tam zobaczyć. Na przykład pamiętam wielki - dziś by się powiedziało - billboard w Halle w 1988, na którym była "prognoza pogody". Zapowiadali "Reagan" (miało się kojarzyć z "Regen" - deszcz) wymalowany w postaci gromady spadających z nieba rakiet z literkami "N" (podpowiedź dla młodzieży: "Bombki mamy w kształcie kuli, grzyba i cygara. A jaki mamy asortyment! Od A do N"). Dalej było słowo "dazu" (na to) i wymalowany duży parasol w kolorze czerwonym, chroniący domy. Pamiętam, że zastanawiałem się czy zrobić zdjęcie. Rzecz była przegięta nawet jak na tamte czasy, ale znowu nie jakaś absolutnie wyjątkowa. Zdjęcia nie znalazłem, więc pewnie go nie zrobiłem. I żałuję. Dziś byłoby ozdobą bloga, dokumentem tamtych czasów. Na innych zdjęciach mam wiele obiektów i sytuacji które wtedy uważałem za niezwykłe, ważne i warte uwiecznienia. Brakuje natomiast tego co wydawało mi się zwyczajne, powszednie i nieciekawe. Tymczasem te pozornie ciekawe obiekty - na przykład zabytki - prawie się nie zmieniły i dziś w tym samym miejscu można by zrobić prawie takie samo zdjęcie, tymczasem tego zwykłego życia tamtych czasów już nie ma! Dlaczego nie zrobiłem żadnego zdjęcia katastrofalnej drogi gruntowej zaznaczonej w atlasie samochodowym jako droga dla samochodów? Dlaczego nie zrobiłem żadnego zdjęcia fasady podpartej kijem? (no, tu są jeszcze jakieś szanse że zdjęcie znajdę). Dlaczego nie zrobiłem zdjęcia tego placu z dworcem autobusowym w Erfurcie? Intershopu? I tak dalej, i tak dalej.

Nie robienie pewnych zdjęć było wtedy w pewien sposób uzasadnione. Każde zdjęcie w tamtych czasach kosztowało. Ale teraz mamy cyfrówki, możemy robić dowolną ilość zdjęć praktycznie za darmo. Do gromadzenia zrobionych fotografii nie potrzebujemy albumów, pojemników szaf - wystarczy dysk twardy (Czy masz backup swoich zdjęć? Więcej niż jeden? Ten starszy się jeszcze czyta? Kiedy ostatnio sprawdzałeś?) Zastanówmy się, co chcielibyśmy pokazać kiedyś, za 20, 30, 40 lat swoim dzieciom czy wnukom. Najciekawszy dla nich nie będzie słynny zabytek widziany na wycieczce do Włoch. To będą mogli zobaczyć albo sami, albo w sieci, albo w książce. Dla nich ciekawe będzie to, co mamy na co dzień. Odrapany budynek, dziura w ulicy, sklep, biuro w którym pracujemy, nasze mieszkanie, śmietnik przed domem, butelka ketchupu... O, właśnie, butelka. Kto ma jeszcze PRL-owską butelkę po mleku albo jej zdjęcie - ręka do góry! Tak mało? No właśnie.

Podobnie jest z różnymi starymi rzeczami. Te bardzo stare, przedwojenne i starsze przechowuje się pieczołowicie. Ale te dwudziesto- i trzydziestoletnie są zbyt nowe, wyrzucamy je najczęściej bez żalu, nawet gdy są w dobrym stanie. Wszyscy tak robią, więc niedługo wcale ich nie będzie! Zwłaszcza gdy była to masówka niskiej jakości - prawie nikt tego nie zachowa!

Nie chcę namawiać tu do zapełniania piwnic starym badziewiem. Rozwiązanie jest to samo co wyżej - mamy aparaty cyfrowe - zróbmy tym rzeczom zdjęcia przed wyrzuceniem! Nasze wnuki będą je oglądać z wypiekami na policzkach! Wszystko, co pochodzi sprzed większych zmian - wszystko co PRL-owskie, NRD-owskie, radzieckie, polskie z wczesnych lat 90-tych itd. warte jest uwiecznienia. Nawet gdy jest zepsute, połamane, zniszczone i nadaje się na śmietnik!

 

A tak swoją drogą, gdy patrzę na to jakie ceny uzyskują NRD-owskie rzeczy na różnych aukcjach to aż mnie skręca, że takie same powyrzucałem.

-----------------------------------------------------------------------------------------------------------------------

Dotyczy: , , ,

Kategorie:Pomyślmy

Skomentuj

Pomyślmy (2): Krem do opalania

Krem do opalania

Krem do opalania Źródło: www.rossmannversand.de

Grudzień, za oknem zimno i mokro (Niemcy mają na określenie takiej pogody ładne słowo naßkalt), a mi się zebrało na wspominanie lata i słońca. No ale żeby pomyśleć to każdy moment jest dobry.

Już od wielu lat producenci kosmetyków straszą nas słońcem. Rak! Rak! Rak! Ratuj się kto może! Obowiązkowo posmaruj się kremem/mleczkiem/sprayem do opalania! Im wyższy współczynnik ochrony - tym lepiej!

No właśnie. Pamiętam, że jeszcze kilka lat temu typowy współczynnik ochrony wynosił 8-10, bez problemu można było kupić środki ze współczynnikiem 5, a nawet bywało 2-3 (dla już dobrze opalonych). Gdy pojawił się pierwszy środek ze współczynnikiem 20, w reklamie wampir wysmarowany tą dwudziestką leżał sobie na plaży.

A dziś? Piątki są w ogóle jeszcze w produkcji? Jeszcze trochę i nie będzie można kupić niczego poniżej 20, za to są środki 50+. A czy to dobrze? Pomyślmy.

Ludzie chcą w lecie być opaleni - przecież to symbol statusu. Nie musimy przez cały czas siedzieć w pracy, stać nas na urlop. Więc - na plażę. I tam, zgodnie z zaleceniami, smarujemy się mleczkiem do opalania, dwudziestką. No i siedzimy tam aż się przynajmniej trochę opalimy. Nie ma sprawy, że parę godzin - mamy przecież mleczko dwudziestkę.

No i wieczorem się okazuje. Mleczko oczywiście działa świetnie, ale tu, na ramieniu nam się parę centymetrów kwadrat przy smarowaniu pominęło. O, i tu tuż nad kąpielówkami - przy smarowaniu były podciągnięte wyżej, potem się trochę zsunęły. A, i tu na plecach. Gdybyśmy mieli mleczko piątkę, to na plaży bylibyśmy krótko i miejsca te byłyby tylko zaczerwienione, no najwyżej skóra by zeszła. Ale mieliśmy dwudziestkę, siedzieliśmy tam długo, w tych miejscach mamy regularne poparzenia!

No i właśnie. Mleczko miało nas chronić przed oparzeniami, a stało się ich przyczyną. Dało nam złudne poczucie bezpieczeństwa i osłabiło naszą czujność. Pomyślmy dalej: Czy to jedyny taki przypadek? Z pewnością nie. Wrócę do tego wkrótce.

-----------------------------------------------------------------------------------------------------------------------

Dotyczy:

Kategorie:Pomyślmy

Skomentuj

Pomyślmy (1): Może azotu w oponki?

Byłem właśnie zmienić opony na zimowe - to coroczna trauma. Zwłaszcza na jesieni - jak się spóźnić to wszędzie kolejki i robi się problem. Ale nie o tym chciałem.

Przy tej wymianie opon namawiają na jeden z większych szwindli jakie znam: A może napełnić gazem? Ten gaz to azot.

Pomyślmy: Jeżeli napełnimy opony zwykłym powietrzem atmosferycznym, to mamy tam już jakieś 78 procent azotu. Czyli napełniając azotem z butli zastępujemy zaledwie niecałe 22% innych gazów tym azotem. To taka duża różnica?

A co nam właściwie miałby ten azot dać? Oponiarze twierdzą że mniej go z opony ubywa itp. Jedna wielka ściema. Azot zastąpiłby przede wszystkim cięższy od niego tlen - a lżejszy gaz ucieka szybciej. Wszystkie inne argumenty za azotem też są wymyślone i nieprawdziwe.

Wniosek z tego taki, że ten azot w oponki to typowy podatek od głupoty. Ludzie, nie dajcie się ogłupić!

-----------------------------------------------------------------------------------------------------------------------

Dotyczy:

Kategorie:Pomyślmy

Komentarze: (2)