niedziela, grudnia 31, 2017

Trudno hackować sprzęt....

Przyznam, że elektronikę i elektrotechnikę znam tyle ile miałem tego na studiach.
Ostatni raz lutownicę trzymałem pod koniec V roku studiów, gdy musiałem coś lutować w moim urządzeniu pomiarowym (w końcu kolega lutował, ja za to mu soft pomagałem pisać ;-)).

Ale zawsze mnie to tak trochę pociągało...

Mój najbardziej "wypasiony" projekt to czujnik, który sprawdza czy siedzę czy stoję przy biurku.

Chciałbym na jego bazie zrobić kolejną rzecz.
Chciałbym móc powiedzieć do Google Home* "Hey Google, lift desk" albo "Hey Google, set desk for sitting" i by biurko się podniosło, albo opuściło do zadanej wysokości...
Chciałbym też sprawić by mój oczyszczacz powietrza sam się włączał i wyłączał** na podstawie danych z Airly.

Ale na przeszkodzie stają mi trudności techniczne ;-) i ogólna profesjonalizacja....

Z biurkiem teoretycznie to powinno być proste. Mam już coś co wie jak wysoko jest biurko, więc wystarczyłoby żeby mówiło "pilotowi" do biurka up albo down aż osiągnęłoby odpowiednią wysokość....

No to sprawdzałem w sieci jakby to zrobić. Moje biurko to Bekant z Ikea'i....
No i sieć pokazuje, że ten pilot to mój problem.

Ja bym się spodziewał prostego rozwiązania, jakichś stykowych guziczków.
Najprościej 2 guziczki i jak przyciskamy pierwszy to prąd płynie jednym kabelkiem, jak przyciskamy drugi to płynie drugim... jak płynie oboma to ignorujemy...

Ale nie, tu jest to o wiele bardziej skomplikowane. Tam jest jakiś mikrokontroler (w pilocie!), który gada z siłownikiem po LIN...

Jest tak pewnie przez to, że tak jest taniej.... Pewnie gdyby chciano zrobić to tak jak ja sobie to wyobrażam to trzeba by użyć droższych komponentów.
A tak pewnie użyli jakichś standardowych....

Tylko, że te standardy są dużo bardziej skomplikowane niż taka najprostsza wersja.
To samo widać w IT, teraz im bibliotek czy framework obiecują prostsze rozwiązanie tym bardziej są skomplikowane...***
O wiele trudniej coś takiego shackować...

Podobny problem mam z oczyszczaczem powietrza. Wystarczyłoby móc przyciskać guziczki, ale żeby je przycisnąć trzeba albo czegoś co je fizycznie przyciśnie, albo trzeba hackować panel...

Gdzie te czasy, że od urządzenia podpinaliśmy się przez żarówkę? ;-) (chcieliśmy by nasz kontroler mógł przesyłać informację o tym czy pług w pługu do odśnieżania jest opuszczony do pozycji w której płuży czy też nie... kombinowaliśmy straszliwie, pojawiły się w końcu nawet pomysły z siecią tensorów i kawałkiem elektronicznej sieci neuronowej, która rozpoznawałaby na podstawie sygnału z sensorów czy pług odpycha śnieg czy też nie... a okazało się, że wystarczyło podpiąć się do żaróweczki, która się zapalała gdy pług był w pozycji opuszczonej ;-))

Teraz przez to jesteśmy w takim miejscu, że jesteśmy za daleko we wciskaniu elektroniki do wszystkiego by móc przerabiać urządzenia, a za blisko w robieniu ich wzajemnie kompatybilnymi..
Taki urok bycia gdzieś między ;-)

Może jednak czas by się było przeprosić z lutownicą? ;-)
Jakieś rady jaką kupić? :-)

*  - albo do Alexy... ale szczerze jednak Google Assistant mi na dziś lepiej leży...
** - wyłączanie to pikuś, jest podpięty do TP Link HS-100, więc spokojnie mogę go wyłączać przez komórkę.. włączać nie, bo jeśli odświeżacz jest bez prądu dłużej niż jakieś 20 sekund to po ponownym włączeniu do kontaktu jest wyłączony...
*** - taki ReactJS nie pójdzie bez NodeJS, Webpacka i Babela i jeszcze czegoś... coś co w dHTMLu można było napisać w 20-30 liniach w ReactJS zajmie to łącznie jakieś 12 MB (spakowane do ~0.5 MB).


Podobne postybeta
Tydzień z Google Home
Czy się stoi czy się siedzi... Rasbperry Pi z czujnikami ultradźwiękowymi to stwierdzi ;-)
Biurko
"Skoro ludzie wyewoluowali z małp to czemu małpy nadal istnieją?"
Najkrótsza droga do przyszłości - Polymer ;-)

piątek, grudnia 29, 2017

Książki, które mi się spodobały w 2017

Mój prywatny ranking książek, które przeczytałem w tym roku (nie wszystkich, a tylko tych które pamiętam i coś z nich we mnie zostało, albo chociaż mi się spodobały).

  • Sapiens: A Brief History of Humankind by Yuval Noah Harari - genialna książka o wszystkim, jest tam historia ludzkości przedstawiona od pewnego momentu jako historia pewnych idei w które odpowiednio wielu ludzi wierzy i tego jak ta wiara w te idee sprawia, że ludzkość włazi ciągle na ciut wyższe poziomy organizacji i świadomości, to co mi się tu spodobało to prócz tego, że ta książka ogólnie wciąga to to, że na wiele rzeczy zaczyna się patrzeć trochę z innej perspektywy,
  • Homo Deus: A Brief History of Tomorrow by Yuval Noah Harari - kontynuacja Sapiens, bardziej o przyszłości, chyba głównie dzięki tej książce stałem się 90% wegetarianinem*,
  • The Dictator's Handbook: Why Bad Behavior is Almost Always Good Politics by Bruce Bueno de Mesquita i Alastair Smith - (nie dam głowy, że to 2017, bo możliwe, że jednak 2016 ;-)), do tej książki przekonało mnie wideo CGP Grey'a The Rules for Rulers, a jej lektura sprawiła, że zacząłem rozumieć czemu politycy i ludzie, którzy rządzą robią większość rzeczy w taki, a nie inny sposób... to co dzieje się teraz w Polsce stało się dla mnie o wiele bardziej zrozumiałe, chociaż nadal przerażająco smutne...,
  • Tools of Titans: The Tactics, Routines, and Habits of Billionaires, Icons, and World-Class Performers by Timothy Ferriss - to self help, więc taki trochę tricky rodzaj książki, ale kilka pomysłów tam było i jest bardzo ciekawych, do tego książka utwierdziła mnie w mojej teorii ;-) że chociaż wszyscy jesteśmy różni i nie ma rad/sposobów, które działają na wszystkich (no poza "oddychaj", "jedz zdrowo" i innych podstawowych), to jednak pewne sposoby mogą działać akurat dla mnie :-), do tego z pewną taką fascynacją, ale też niesmakiem (nie wiem czy to dobre słowo) czytałem fragment o tym jak Tim używał różnych narkotyków do "hackowania" własnego umysłu... brzmi to dość strasznie**, ale intrygująco,
  • Superinteligencja. Scenariusze, strategie, zagrożenia by Nick Bostrom - z jednej strony wydaje mi się, że autor przecenia zagrożenie, ale z drugiej o wiele bardziej rozumiem obawy przed AI. Jednak muszę przyznać, że to nie jest łatwa i przyjemna książka do czytania ;-),
  • The Checklist Manifesto: How to Get Things Right by Atul Gawande - nigdy nie lubiłem checklist, ale ta książka pokazała mi, że problem nie jest w idei checklist, a raczej w jej wykonaniu w większości przypadków. Nawet zacząłem sobie jakieś mniejsze lub większe checklisty przygotowywać,
  • Krótka historia wszystkich ludzi, którzy kiedykolwiek żyli. Opowieści zapisane w naszych genach -w końcu rozumiem skąd te twierdzenia, że X lat temu żył wspólny przodek wszystkich ludzi,
  • Epigenetics Revolution: How Modern Biology Is Rewriting Our Understanding of Genetics, Disease and Inheritance - teraz gdy czytam o ekspresji genów to mam chociaż blade pojęcie co to znaczy. Głównym jednak przekonaniem, które wyniosłem z tej książki jest to, że same zasady ekspresji genów są zapisane gdzieś "w genach" (DNA) i nie ma tam żadnych czarów, po prostu jeszcze nie mamy pojęcia jak to działa, ale staramy się dowiedzieć,
  • Nie mamy pojęcia. Przewodnik po nieznanym wszechświecie by Cham Jorge, Whiteson Daniel - właśnie ją czytam i widzę, że jednak od momentu gdy skończyłem studia w fizyce, astronomii i astrofizyce "trochę" się zmieniło.
Jest jeszcze kilka książek, które zasłużyły na wymienienie, a nie trafiły do listy powyżej, bo np. znałem już ich główne przesłanie, albo po prostu jakoś szczególnie nie zmieniły mojego sposobu patrzenia na świat.
Największe zniechęcenia/zniesmaczenia 2017 w książkach była książka:
Dla ciekawych wychodzi, że z takich popularnonaukowych czy podobnych przeczytałem jakieś 20 książek w tym roku. Nie wydaje się to być dużą liczbą, z drugiej strony to jakieś 200+ godzin, czyli przeciętnie trochę ponad 30 minut dziennie. 

* - znaczy, że mięso jem praktycznie tylko raz w tygodniu gdy mamy w firmie Thirsty Thursday :-)
** - może przez to, że chciałbym być na tyle pewny mojej osobowości, że wiedziałbym, że jak spróbuję czegoś z tego co opisał autor to nadal będę sobą. Nie jestem tego tak pewien, więc wolę nie próbować :-)
*** - jestem wyznawcą pomysłu osobliwości, ale raczej takim "mam nadzieję", niż "wierzę". Raczej nie tak szybko i prawie na 100% nie tak jak to sobie Kurzweil wyobraża.



Podobne postybeta
O książkach
Czytelnictwo ;-)
Zarodek to nie dziecko
Generał Jaruzelski wg. Kuklińskiego
Checklista ofertowa ;-)

wtorek, grudnia 19, 2017

if i co po nim...

Nie wiem czemu, ale wydaje mi się, że gdy pisze się kod z if'em to po if'ie powinno wystąpić to co jest bardziej prawdopodobne.... tzn. kiedyś tak należało robić bo taki if miał teoretycznie opisywać domyślną ścieżkę... był też szybszy.

Z drugiej strony czasem po prostu łatwiej zrobić to tak, że najpierw idzie zdarzenie mniej prawdopodobne....

Skoro metoda zwykle jest wołana dla argumentów innych niż null, to bardziej wypadałoby zrobić:

if (val!=null) {
  // do smth with value
} else {
  return null;
}

Ale jednak:

if (val==null) return null;
// do smth with value

wydaje się czytelniejsze.
Najpierw odrzucamy niewygodny przypadek, a później nie idziemy w zagnieżdżenia.

Co prawda złożoność cyklomatyczna tego kodu jest w obu przypadkach taka sama, ale ten drugi jest jakby prostszy do czytania.

Dostrzegam tu mądrość słów kolegi, który był wielkim przeciwnikiem pisania kodu z if'ami ;-)

Ja zauważam, że jak piszę kod w IDE to zwykle idę jednak pierwszym tropem i po if'ie jest najbardziej prawdopodobna ścieżka.
Jak piszę na tablicy to idę drugim śladem bo mniej muszę napisać i mam więcej miejsca ;-)


Podobne postybeta
Google App Engine i DatastoreTimeoutException
Na przekór
Ateizm to nie nihilizm i jak sprawić by prymas był apostatą ;-)
Potfór ;-) czyli generator z yield w Java'ie
Niecne wykorzystanie refleksji... czyli jak poszukać tekstu w drzewie obiektów? ;-)

sobota, grudnia 16, 2017

Liczenie Pi ;-)

Okazuje się, że mam już tyle Rasbperry Pi, że muszę je liczyć ;-)

Trzy robią za "serwery".
Jedno jest częścią mojego czujnika sit/stand.
Jedno jest wbudowane w robota i jest off-line.
Jeszcze jedno w AIY Voice Kit i też jest off-line.
Najstarsze oryginalne Raspberry Pi B+ zaś leży w mojej kartonowej obudowie i też jest off-line.


Podobne postybeta
Dwa spostrzeżenia na dziś ;-)
Raport z planety Z ;-)
Moje centrum superkomputerowe ;-)
Czy się stoi czy się siedzi... Rasbperry Pi z czujnikami ultradźwiękowymi to stwierdzi ;-)
Majel vs. Siri

środa, grudnia 13, 2017

Ważne kto i jak liczy głosy....

Gdy była mowa o zmianie ordynacji wyborczej do samorządu pojawiło się info o zmianie, która sprawi, że znikną duże okręgi z powiedzmy 7 mandatami i będą góra takie z 3.
Czy to w końcu przeszło nie wiem, bo trudno znaleźć jakieś info o tym (bo nie ma kontroli wersji ;-)).

Ale taka zmiana wydaje się bardzo techniczna i mało znacząca.... jednak taka nie jest.

Bo istotne jest to jak się dzieli mandaty.
W wyborach samorządowych stosuje się metodę D’Hondta.

Czyli bierze się liczbę głosów na każdą liczbę. Później zapisuje dla każdej listy tą liczbę i tą liczbę podzieloną przez 2, podzieloną przez 3, podzieloną przez 4 i tak dalej, aż dzielnikiem będzie liczba mandatów.

Teraz bierze się szuka największej liczby. Ta lista dostaje mandat.
Skreśla się tą liczbę.

Szuka się znów największej liczby. Ta lista dostaje mandat numer 2.
Skreśla się tą liczbę.

I znów szuka największej i tak dalej i tak dalej, zależnie od tego ile jest mandatów.

Jeśli jest dokładnie 1 mandat, jest najgorzej, bo mamy jednomandatowy okręg wyborczy.
Jeśli jest 9 kandydatów i każdy dostał 9.9% głosów i jeden kandydat, który dostał 10.1% to on dostanie mandat.
Czyli tylko 10.1% wyborców będzie miało reprezentację w swoim okręgu.

Jeśli są 2 mandaty to na 100% jeden dostanie lista, która miała najwięcej głosów. Drugi też może dostać (wystarczy, że dostała trochę ponad 2 razy więcej głosów niż kolejna lista).
Nadal słabo z reprezentatywnością. Lepiej niż przy JOWach, ale nadal słabo.

Przy 3 jest lepiej, ale nadal źle.

Im więcej mandatów tym są one bliższe preferencji wyborców....

Jednak w pewnym momencie jest problem bo chcielibyśmy jednak by liczba mandatów ogólnie nie była za duża, i chcemy by ludzie mogli głosować na znanych sobie kandydatów.
Przez to najlepiej celować w taką liczbę mandatów która może być rozdzielona na stosunkowo małym obszarze, ale tak by był ten podział w miarę reprezentatywny.

To co teraz chce zrobić PiS, czyli zmniejszyć liczbę mandatów prowadzi do tego, że największa partia dostanie ekstra bonus, bo jeśli będzie miała powiedzmy 31% głosów, druga będzie miała 20%, a trzecia 15% (resztę pomijamy). To pierwszy mandat pójdzie do pierwszej partii, drugi do drugiej, a trzeci do... pierwszej. Czyli mając 31% poparcia partia ta zbierze 66.6% mandatów.

A teraz jest tak, że PiS jest najsilniejszą partią.... Która nadal nie ma 50% poparcia, ale spokojnie może dostać w sejmikach ponad 50% dzięki szacher macher z liczbą mandatów.

Jak się do tego doda powołanie komisarzy politycznych (bo wskazywanych przez polityków), którzy będą wyznaczali granice okręgów to może być i lepiej niż 50%...
Bo tu znów wystarczy zrobić tak by np. osiedle gdzie wygrywa zwykle PO podzielić na 3 mniejsze okręgi i do każdego z nich dodać 3 inne osiedla gdzie wygrywa PiS tak by dostać mandaty z wszystkich 4 osiedli..

Tak na "pocieszenie", ale będzie "heca" jak się okaże, że ostatnie wolne wybory mieliśmy te 2 lata temu, nie?


Podobne postybeta
Jak można przegrać wybory gdy się je wygrywa?
I po wyborach :-)
A co gdyby głosy z wyborów samorządowych potraktować jako głosy w wyborach do Sejmu? ;-)
1 na 9 głosów
Dołożę się do budżetu Rybnika ;-)

wtorek, grudnia 12, 2017

Czemu Sejm i Senat nie korzystają z żadnego systemu kontroli wersji?

Takie pytanie...

Czemu jak się tworzy prawo to nie stosuje się żadnego systemu kontroli wersji?

Biznes zajmujący się produkcją oprogramowania zna to od lat.

Każdej linii można zawsze przypisać autora, można zobaczyć jak się wszystko zmieniało..

Co by szkodziło pracując nad prawem robić tak, że każde głosowanie nad poprawkami na komisji tworzy nową wersję projektu ustawy w repozytorium?

Później Sejm głosuje i jak w końcu przegłosuje to dostaje to taga - release candidate.
Senat głosuje, jak dodaje poprawki to są one robione na nowym branchu.

Ustawa wraca do Sejmu, Sejm zatwierdza lub odrzuca push requesty, głosuje w końcu nad ostateczną wersją i wypuszcza RC2 z informacją kiedy w razie przejścia przez bramkę jakości (Prezydenta) wchodzi w życie.

Prezydent jeśli podpisze to robi się tag - release. Jak następuje data gdy ustawa wchodzi w życie robi się tag - in_place.

Przecież to by wszystko ułatwiło.
Zawsze by było wiadomo gdzie i jakie poprawki wprowadzono.
Zawsze można by było mieć pewność, że nigdzie się nic nie "domergowało" bez zgody uprawnionych do tego ludzi.

Do tego można by było taką wersję ustawy ciągle mieć dostępną przez WWW...

Chociaż my chyba idziemy w układ gdzie jeden człowiek = jeden głos, a tym człowiekiem jest pierwszy sekretarz.....


Podobne postybeta
Skrócona wersja zmian w ustroju Polski po wyborach w 2015 roku
Atlas zbuntowany, ale na odwrót ;-)
"Czy uważasz, że powinien zarabiać tyle co Ty?" ;-)
O tym czemu branche są złe...
Wernyhora mode - wieszcze, że następną usługą w Google Play będą Filmy ;-) i że będzie to w ciągu 12 miesięcy ;-)

sobota, grudnia 09, 2017

Metryka do mierzenia jak interesujący są ludzie ;-)

Nowa (przynajmniej dla mnie ;-)) metryka do pomiaru ludzi mi się dziś pojawiła.
Jak często ktoś powoduje, że zmieniam zdanie, albo podaje mi argumenty których nie znam, a które pozwalają mi choć przez chwilę popatrzeć na problem z innej strony?

Tak sobie to przyłożyłem do kilku osób i chyba zaczynam widzieć common pattern u osób, które mi się wydają interesujące.

Zaczynam też rozumieć, że sam dla niektórych taki jestem, a dla innych nie. Oraz to, że czasem znajomość zaczyna się od takiego układu, ale później to gdzieś znika i jest takie utrzymywanie jej z grzeczności, czy przyzwyczajenia ale bez tego co ją na początku napędziło.

De facto stwierdzam, że ja szanuję właśnie takich ludzi.

Mam nawet chyba lepsze uogólnienie, ci ludzie muszą wykazać głębię myślenia o swoich poglądach.

Wiara w to, że się ma rację i opieranie się na tym to trochę za mało.

[Dodane po chwili, choć krótkiej ;-)]
W skrócie interesujący ludzie to ci, którzy sprawiają że myślę o różnych ideach, a nie tylko o nich ;-)


Podobne postybeta
6:22 czyli środek nocy
Szaleństwo kolorów - kolorujemy Google+ ;-)
Moja własna akcja w Google Home ;-)
Czemu strony only for IE są złe.
"Semisubiektywna" klasyfikacja dokumentów ;-)

niedziela, grudnia 03, 2017

O wyższości Mavena nad Gradlem ;-)

Szczerze obu tak samo nie lubię, ale Maven ma jedną przewagę nad Gradlem.

Przez to, że Maven to konfiguracja przed kodem, a nie kod przed konfiguracją to pliki pom.xml Maven'a są proste do parsowania.
Wystarczy parser XML i jak chcemy wszystkie zależności projektu to robimy getElementsByTagName("dependency") i je mamy.
Zbudowanie z tego drzewa to pikuś.

Z Gradlem tak łatwo nie jest...
Bo niby zwykle w bloku dependencies { } mamy szereg compile... ale czasem nie mamy, albo mamy inaczej bo akurat w danym miejscu możemy używać innej wtyczki...

Zaczynam myśleć, że będę musiał wstrzyknąć się gdzieś w Groovy'iego...
Albo jeszcze lepiej założyć hooka na file system i czekać aż mi Gradle pobierze bibliotekę, i wtedy sprawdzić jaki task się wykonuje...
Nie, też to nie jest pomysł....

A wszystko żeby znaleźć KTO importuje pewną bibliotekę... (a dokładniej parę ;-))
Hmmm... a jakby ją skasować i zobaczyć kto się wywali? Albo po kolei odpalać każdego oddzielnego build.gradle i tak namierzyć drania?


Podobne postybeta
Tak Maven'ie, zbłądziłem ;-)
Trzy wielkie tajemnice Androida (od strony programisty)
Jak walczyć z gigantycznym kodem w Java'ie, część 1 ;-)
Umiejętność programowania pomaga :-)
Komputer bez sieci nie ma już sensu