środa, marca 29, 2017

Pensje programistów

Wczoraj Wyborcza pisała o zarobkach programistów i o tym, że zarabiają oni więcej od lekarzy (przynajmniej młodych).

Jestem programistą i też mnie to bulwersuje, zyskuję na tym, ale nadal mnie to jednak bulwersuje.

Wydaje mi się jednak, że rozumiem mechanizm, który za tym stoi.

To, że lekarz czy policjant w Polsce zarabiają mniej niż programista wynika z tego, że pensja lekarza czy policjanta jest w jakimś związku z pensjami reszty mieszkańców kraju.
To dotyczy też większości innych zawodów. Bo klientami są ludzie mieszkający w tym samym kraju.

W przypadku programistów tak nie jest.

Klienci żyją często nie tylko w innym kraju, ale i na innym kontynencie, albo żyją na całym świecie.

Liczba ludzi, którzy są w stanie skończyć medycynę jest ograniczona, co powinno podnosić pensję, ale swoje usługi lekarze wykonują lokalnie i z góry cena za ich pracę jest ograniczona tym co będą w stanie zapłacić klienci na miejscu.

Liczba ludzi, którzy są w stanie pracować jako programiści też jest ograniczona, jest pewnie kilkukrotnie większa od liczby potencjalnych lekarzy, ale nadal jest ograniczona.
Ich praca czy efekty ich pracy nie są dostępne jednak tylko lokalnie, ale i globalnie. Stąd lokalne warunki tak bardzo nie ograniczają pensji.

Niby tutaj powinna działać zasada, że drogich programistów powinni zastępować tańsi z tańszych krajów... ale ogólnie programistów brakuje na całym świecie.

To co tworzą programiści, czyli oprogramowanie w ogólności służy do "zabierania ludziom pracy albo czasu".
Może 100 USD miesięcznie za aplikację do księgowania to dużo, ale z drugiej strony jeśli dzięki temu nie trzeba zatrudniać kogoś do fakturowania to i tak oszczędza się całkiem sporo kasy.

Czyli firmy/klienci bardzo chcą oprogramowania, bo to pozwala im na oszczędzanie pieniędzy, są więc w stanie płacić duże pieniądze za to oprogramowanie.
A ktoś je musi tworzyć.  Stąd jest duże ssanie na programistów i ceny ich pracy rosną.
Jak firma nie jest w stanie znaleźć programistów to zaczyna szukać po świecie i w końcu otwiera biuro gdzieś zagranicą, gdzie na dodatek może płacić mniej niż u siebie (co nie jest AŻ tak istotne).
Żeby ściągnąć szybko ludzi daje wyższe stawki niż okolica... ale w okolicy też potrzeba programistów bo przecież ta firma nie jest jedyną, która wpadła na pomysł otworzenia biura zagranicą.... czyli wkrótce wszyscy w koło podnoszą pensje programistów bo wszystkim to się opłaca.

Górną granicą jest tak naprawdę albo to ile płaci się programiście "w domu", albo zysk jaki z softu się czerpie.

Stąd wnoszę, że pensje w IT będą jeszcze rosły.... a że jak na razie nie widać końca zapotrzebowania na oprogramowanie to pewnie potrwa to jeszcze długo.
No chyba, że ktoś osiągnie sukces budując oprogramowanie, które zastąpi programistów.
Do tego jednak jeszcze sporo brakuje.


Podobne postybeta
Średnia vs. mediana
Czemu mniej miejsc parkingowych to mniejsze korki w mieści?
MS Nieszczęście 8 - psujemy...
Dobrze być programistą w Polsce ;-)
Android i lokalizacja. Czego używać zagranicą?

wtorek, marca 28, 2017

Referencje w Java'ie

Wychodzi na to, że wiele osób daje się zwieść temu, że w Java'ie część rzeczy jest przekazywana przez referencję, a część przez wartość.

Zacznijmy od tego co jest przez co przekazywane, później powiemy co to znaczy, że jest przekazywane i w końcu jak to sobie można wyobrazić.

W Java'ie wszystkie obiekty są przekazywane przez referencję, a wszystkie wartości proste aka prymitywy przez wartość*.

Co to znaczy?

Gdy mamy kod:
1. void doSth(MyType obj) {
2.   obj.field=7;
3.   obj = new MyType();
4. }
/.../
5. MyType obj = new MyType();
6. doSth(obj);
7. MyType obj2 = obj;
8. print(obj2.field);

w linii 5 zostaje stworzony nowy obiekt, a referencja do niego zostaje zapisana do zmiennej obj.
W linii 6 referencja ta zostaje przekazana do metody doSth().

Obiekt w linii 5 jest tworzony gdzieś** w pamięci.
Operator new zwraca referencję do obiektu.
Referencja jest liczbą, która mówi o który obiekt chodzi.
W najprostszym przypadku jest to adres obiektu w pamięci, chociaż w Java'ie lepiej myśleć o tym jako o indeksie w tablicy w której trzymamy fizyczne adresy obiektów (tak to kiedyś było zaimplementowane i robiło GC prostszym).

Najprościej wyobrazić to sobie można następująco (to nie działa w taki sposób bo JVM jest maszyną stosową, a nie rejestrową, ale model mentalny można taki mieć ;-)).

Gdy tworzony jest nowy obiekt to JVM decyduje gdzie się on znajdzie i adres tego nowo utworzonego obiektu zwraca i zapisuje w zmiennej obj.
Zapisanie w zmiennej oznacza w JVM albo zapisane tego "adresu" gdzieś w "rejestrze" albo na stosie.
Gdy w linii 6 przekazujemy obj do metody doSth() to przekazujemy "adres" do obiektu, nie sam obiekt. Nie robimy kopi obiektu, obiekt jest nadal w tym samym miejscu pamięci gdzie był po wykonaniu linii 5.
Metoda doSth() coś sobie robi na tym obiekcie w linii 2. Zapisuje w obiekcie wskazanym przez adres z "obj" bity które są identyfikowane jako liczba 7***.
W linii 3 robi się coś dziwnego, tworzony jest nowy obiekt, który zostaje stworzony w jakimś nowym miejscu niż nasz pierwszy obiekt. Do zmiennej lokalnej obj zostaje zapisany ten nowy adres.
Tu warto się zatrzymać i wrócić ;-) Do tej linii w obj był "adres" obiektu stworzonego w linii 5. Jednak w linii 3 przypisujemy do tej zmiennej adres nowego obiektu. Java robi tu trick, w linii 2 obj.field mówi "pole o nazwie field obiektu, który znajduje się pod adresem zapisanym w obj", w linii 3 samo obj to po prostu zmienna lokalna (rejestr, miejsce w pamięci) w której zapisujemy adres nowego obiektu.
Kończymy metodę doSth(). Zmienna obj w metodzie doSth() przestaje istnieć. Nie ma więc nikogo kto trzyma "adres" obiektu z linii 3. Obiekt ten może zostać poddany działaniu GC.
Jesteśmy w linii 7. Do nowej zmiennej lokalnej zapisujemy "adres" obiektu z linii 5.
W linii 8 chcemy wypisać wartość pola o nazwie field spod adresu przechowywanego w obj2.
Jest to pole o nazwie field obiektu stworzonego w linii 5, a jego wartość to 7 co jest wynikiem linii 2.

Tu dygresja do assemblera i fizycznego komputera ;-)

Pamięć komputera to w uproszczeniu 1 linia komórek pamięci.
Pierwsza komórka ma numer 0, druga 1 i tak dalej.

Adres to numer komórki. Adres pod którym znajdują się jakieś dane to numer komórki w pamięci od której te dane się zaczynają.

Referencja to właśnie taki adres pierwszej komórki pamięci gdzie znajduje się obiekt......

OK, tak to sobie można wyobrazić i tak to wygląda w wielu JVM, ale w naszym modelu mogłoby powstać pytanie, że jeśli to tak działa to jak działa GC, który może przenosić obiekty. Przecież wtedy adresy też się powinny zmieniać.
Stąd u nas referencja to tak naprawdę indeks w tablicy z adresami.

Jeśli mamy 5 obiektów to ta tablica wygląda jakoś tak:
{0x0000,0x00FA,0x1100,0x11FE,0xEE07}
Gdzie te liczby to adresy pamięci gdzie jest obiekt.
Wtedy referencja do obiektu pod adresem 0x00FA będzie miała wartość 1 i będzie wskazywała na element z indeksem 1****...

To referencje z grubsza mamy.
Widzimy, że "przekazywane obiektu przez referencję" to po prostu przekazane "adresu" do obiektu.

W przypadku typów prostych mamy przekazywanie przez wartość.

Znaczy to tylko tyle, że JVM trzyma w pamięci bajty, które dla danego typu oznaczają jakąś tam wartość. Gdy przekazujemy taki typ to JVM po prostu kopiuje bajty.

Gdy kod wygląda tak:
1. void doSth(int i) {
2.   print(i);
3.   i++;
4.  print(i);
5. }
/.../
6. int number = 7;
7. doSth(number);
8. print(number);

To w linii 7 JVM wkłada do zmiennej bajty, które są równe liczbie 7. To wkładanie do zmiennej to zapisanie tej liczby 7 do "rejestru" albo na stosie.
W linii 7 JVM kopiuje te bajty i przekazuje je do metody doSth. Tutaj zwykle przez zapisanie na stosie, a metoda doSth sobie je ze stosu pobierze.
W linii 2 JVM kopiuje te bajty i przekazuje do metody print, która je sobie wypisuje. (znów przez stos).
W linii 3 JVM zmienia "i" na zmienianą wartość... Wartość w rejestrze jest zwiększana o 1, albo ta ze stosu zdejmowana, zwiększana o jeden i znów zapisywana.
W linii 4 JVM znów zapisuje wartość ze zmiennej (rejestru) na stos i przekazuje tak do metody print...
Jesteśmy znów w linii 8.
Nasza wartość 7 z linii 6 jest przechowywana w "rejestrze" i nie została zmieniona w doSth (tam pracowaliśmy na kopi). Ta wartość jest zapisywana na stosie i przekazywana tak do print, które wypisze 7....

Jeśli to nie jest jeszcze jasne to popatrzmy na to jak to działa w normalnym komputerze.
Mamy procesor, który to procesor ma rejestry, w rejestrach może trzymać liczby.
Liczba ta może być wartością i wtedy np. chcąc dodać 1 do 2, ładujemy do jednego rejestru 1, do drugiego 2 i później w pierwszym umieszczamy wynik dodawania wartości rejestrów.
Możemy jednak też trzymać w rejestrze adres miejsca w pamięci gdzie jest wartość 1, a w drugim rejestrze adres miejsca pamięci gdzie jest liczba 2.
Teraz dodając dwie liczby zrobimy inaczej, najpierw do jeszcze jednego rejestru procesor wciągnie to co jest w pamięci pod adresem zapisanym w pierwszym rejestrze, do kolejnego rejestru wciągnie to na co wskazuje 2 rejestr, zrobi dodawanie i w końcu zapisze wynik pod adres zapisany w pierwszym rejestrze.... tak z grubsza ;-)

W przypadku referencji od strony bebechów JVM kod wygląda tak:

       0: new           #2                  // class MyType
       3: dup
       4: invokespecial #3                  // Method "<init>":()V
       7: astore_1
       8: aload_1
       9: aload_1
      10: invokevirtual #4                  // Method doSth:(LMyType;)V
      13: return

W linii 0 JVM tworzy nowy obiekt, czyli rezerwuje gdzieś pamięć, tworzy tam struktury takie jak pola i im podobne. Po stworzeniu obiektu umieszcza jego "adres" na stosie.
W linii 3 wartość "adresu" ze stosu jest kopiowana i zapisywana ponownie na stosie (mamy tam więc 2 razy tą samą wartość "jedna nad drugą").
Teraz w linii 4 wywoływana jest metoda <init> z naszego nowego obiektu. Invokespecial odczytuje wartość "adresu" obiektu ze stosu, sprawdza jaki to jest obiekt, wpisuje tą wartość do "this", zapisuje na stosie adres następnego rozkazu i skacze pod adres gdzie znajduje się metoda <init>.
Metoda <init> korzystając z adresu w referencji (czyli w this) wypełnia przygotowane w linii 0 pola wartościami. Gdy skończy pobiera wartość ze stosu z adresem następnego rozkazu (został tam odłożony w momencie wołania invokespecial), i wraca do linii 7.
W linii 7 składuje wartość referencji (która jest na stosie nadal, dzięki linii 3) w zmiennej lokalnej 1. To jest odpowiednik przypisania do zmiennej obj.
W linii 8 wartość zmiennej 1 (takiego "rejestru") jest zapisywana na stosie (który to już raz...).
W linii 8 robimy to samo.
W 10 wykonujemy invokevirtual, które to invokevirtual zdejmuje wartość ze stosu, zagląda do obiektu, ustala jego typ, teraz w tabeli metod wirtualnych szuka najbardziej szczegółowej metody doSth, zapisuje na stosie miejsce do którego ma wrócić, skacze do kodu metody wirtualnej, jeszcze przed tym w this zapisuje adres obiektu stworzonego w 0......
Po zakończeniu metody doSth ze stosu odczytywany jest adres miejsca gdzie trzeba wrócić, i skaczemy do linii 13.....

Reasumując (jak ktoś aż tutaj dotarł ;-)).
W Java'ie można sobie wyobrazić, że zmienna trzyma bajty. Powiedzmy dla uproszczenia, że jest to zawsze 8 bajtów.
Jeżeli w kodzie używamy typu prostego to bajty te to wartość tego typu prostego.
Jeżeli w kodzie używamy obiektu, to bajty "trzymane w zmiennej" to wartość referencji, czyli "adres" obiektu w pamięci.
Jeżeli przekazujemy taką zmienną do innej metody to te bajty są kopiowane i metoda dostaje swoją własną kopię tych bajtów. A kod metody wie czy opisują one wartość typu prostego, czy "adres" obiektu.
Gdy przypisujemy coś do zmiennej to kopiujemy bajty z prawej strony na lewą, jeśli to jest typ prosty to kopiujemy w tych bajtach wartość, jeśli to obiekt to kopiujemy wartość "adresu".

Przez to przekazywanie obiektów przez referencję (czyli kopiowanie dla metody bajtów z "adresem") może w JVM dochodzić do wycieków pamięci. Bo JVM liczy ile jest referencji do danego obiektu i póki ta liczba jest większa niż 0 to obiekt będzie trzymany w pamięci. Przez to wystarczy gdzieś zakitrać sobie referencję do obiektu i może ona nam siedzieć w pamięci po wsze czasy, chociaż jest nam nie potrzebna.
Możemy np. wrzucić taką referencję do HashMap'y z jakimś cache'm, wszystkie inne referencja poza tą z mapy mogą już dawno nie żyć, obiekt może nie być potrzebny, ale nadal będzie w pamięci siedział bo HashMap'a trzyma doń referencję (czyli bajty z "adresem").

I to by było na tyle ;-)

[Disclaimer: to wszystko wyżej są pewne uproszczenia by można sobie to było wyobrazić, wiele z tych rzeczy zależy od implementacji JVMa]

* - tak naprawdę naprawdę ;-) ZAWSZE kopiowane są bajty, z tym że w przypadku typów prostych, jak int, long, byte, short, etc JVM interpretuje te bajty jako wartość. Np. bajty 0x0007 (czyli 2 bajty, pierwszy o wartości 0, a drugi 7) dla typu char zostaną zinterpretowane przez JVM jako znak 7.
Jeżeli jest to referencja to JVM kopiuje bajty z "adresem" obiektu. Jeśli te bajty to 0x0007 (naprawdę mamy tutaj zwykle 4 albo 8 bajtów, nie dwa) to tym razem zostanie to zinterpretowane przez JVM jako adres 0x0007, co może oznaczać komórki pamięci od adresy 7, albo 7 indeks w tablicy, albo jeszcze 7*8 bajtów, to już zależy od JVMa, ale to coś pozwala znaleźć miejsce w pamięci gdzie jest nasz obiekt.
** - najpewniej w Edenie, ale to nie jest tak istotne, ważne że prawie zawsze gdzieś na stercie
*** - i niepostrzeżenie zrobiliśmy tutaj kopiowanie wartości, bo to typ prosty jest.
**** - może to być też wartość 5, jako numer bajtu od którego zaczyna się adres. To są już szczegóły implementacji danej JVM.


Podobne postybeta
Refleksje i serializacja w Java'ie - podstawy i obalanie mitów ;-)
Java 8 nadchodzi....
clone() i Cloneable się mszczą ;-)
finalize() - do czego służy, a do czego nie i z czym to się je.
Celeron M353 900MHz vs. Intel Atom 1.6GHz, czyli o tym czemu jest remis? ;-)

niedziela, marca 26, 2017

Java, JavaScript, Python, C++, C#? co ma przyszłość? 7 lat później ;-)

Ponad 7 lat temu napisałem posta o tym jakie języki programowania mają wg. mnie przyszłość.
Od lat nie czytam tam komentarzy, ale z tego co wiem w niektórych miejscach sieci zyskałem przydomek idioty ;-)

Dziś spojrzymy na problem inaczej :-)
Spojrzymy na problem tego, które języki mają przyszłość patrząc na to jak długo jeszcze mogą istnieć wg. efektu Lindy (albo Lindy's) i tego jak są teraz popularne i na kilka innych sposobów.

Bazować będziemy na założeniu, że jeżeli teraz język jest popularny, a istnieje już X lat to napisano w nim na tyle dużo kodu by jeszcze przez kolejne X lat z niego korzystać (to jest właśnie Lindy effect).

Przyjrzymy się językom, które wg TIOBE odpowiadają za 50% popularnych języków teraz. Czyli pierwszej 10 języków wg indeksu TIOBE ;-)

Z efektu Lindy's mamy tak, że oczekiwany czas życia danej rzeczy jest mniej więcej taki sam jak czas w jakim to coś do teraz istnieje.

Stąd mamy:
1) C do 2062 roku,
2) C++ do 2054 roku,
3) Python i VisualBasic do 2043 roku,
4) Java, PHP, JavaScript, Delphi do 2039 roku,
5) C# do 2033 roku,
6) Swift do 2020 roku.

Ale w końcu niby Java i Delphi są w tym samym wieku, ale jednak w Java'ie napisano dużo więcej kodu...

Można by przypuszczać, że jeśli 2 języki istnieją podobną ilość czasu i pierwszy jest popularniejszy od drugiego to ten popularniejszy dłużej będzie żył.

W takim przypadku mamy:
1) C,
2) C++,
3) Java,
4) Python,
5) VisualBasic,
6) C#,
7) PHP,
8) JavaScript,
9) Delphi,
10) Swift

[docieramy do takiej listy biorąc iloczyn wysokości na liście języku wg popularności (czyli dla Java'y to 10, a dla Swifta 1) i wysokość na liście wg wieku języka]

To wygląda sensowniej, jednak Java powinna być mimo wszystko wyżej niż VisualBasic, bo choć VB jest starszy to napisano w nim najpewniej mniej kodu.

Dobrze by było znać ilość linii kodu, które istnieją, ich wiek i to jak często się zmieniają... Tego nie znamy.
Znamy za to orientacyjne pensje dla programistów używających danego języka, wtedy ranking wygląda tak:
Java,
Python,
C#,
JavaScript,
C++,
C,
PHP

Niestety dla Swifta, Delphi i VisualBasica trudno o te liczby... ale można założyć, że chociaż Swift z nich jest najmłodszy, to najłatwiej o pracę w nim... z tym, że to jest oprogramowanie głównie dla konsumentów. Bez dowodu założę, że programiści Swifta zarabiają podobnie jak ci od C#, a ci od VisualBasica i Delphi tyle co ci od C.

Tutaj dygresja, rynek próbuje wyceniać pracę programistów bazując na tym ile jest kodu w danym języku, w końcu jeśli jest więcej kodu w języku X, a za mało programistów w stosunku do ilości kodu który istnieje i który trzeba napisać to pensje będą rosły bo wszyscy będą konkurowali o ograniczoną ilość programistów, a z drugiej strony programiści będą do tego języka przybywać by mieć więcej pieniędzy.

Stąd ostateczny ranking języków w które warto inwestować to:
Java,
Python,
C,
C++,
C#,
JavaScript,
PHP,
Delphi,
Swift.

Języki swoją pozycję zawdzięczają tutaj temu jak długo istnieją i jak najpewniej będą jeszcze istniały, temu jak dużo można w nich zarobić i temu jak są teraz popularne.

Dlatego młody programisto lub młoda programistko :-)
Jeśli chcesz mieć pracę za rok, 10 lat i 20 lat to Twoimi językami powinny być:
Java,
Python,
C,
C++,
C#,
JavaScript,
PHP,
Delphi,
Swift.

Z tym, że Java i PHP prawie zawsze oznaczają wcześniej lub później kontakt z JavaScriptem, a C i C++ nie płacą już tak dobrze (najlepsi dev'owie mogą tu zarobić olbrzymie pieniądze, ale to trzeba być wtedy najlepszym).

Stąd polecam Java'ę, Pythona, JavaScript.
Java to język softu enterprise, nawet przeciętny developer może tu nieźle zarobić.
Python jest ostro używany w machine learningu, a do tego szybko się w nim pisze aplikacje webowe.
JavaScript jest po prostu assemblerem dzisiejszej sieci.

Nie odradzam C, C++, C#, Swifta.
C i C++ pozwalają dobrze zarobić, ale trzeba tu być w top 10% albo i to 1% programistów, cała reszta pisze coś w małych firmach jako kod do sterowników i podobnych rzeczy.
Swift staje się popularny, ale jednak w nim tworzy się tylko oprogramowanie dla iOS, a tam jest coraz mniej pieniędzy bo web zżera natywne aplikacje.
C# to enterprise i aplikacje dla Windows, w enterprise oznacza jednak preferencję dla rozwiązań MS.

Odradzam Delphi i PHP.
PHP jest świetne do pisania "małych" aplikacji webowych (można i duże, ale to jest trudniejsze), praca jest, ale raczej w firmach krzakach które nie płacą najlepiej.
Delphi to Windows, okienka. Mało takich aplikacji już powstaje i raczej będzie ich jeszcze mniej. W biznesie aplikacje webowe zjadają aplikacje natywne, rynek konsumencki jest trudny.

Ten "ranking" nie ma nic wspólnego z tym jak język jest fajny, bardziej z tym jak łatwo o pracę teraz i w przyszłości.
Metoda jest całkowicie nienaukowa :-) acz nie bazuje aż tak bardzo na moim widzimisię sprzed 7 lat.

Podobne postybeta
Teraz jest trudniej zacząć z programowaniem niż te 25-30 lat temu
Java, JavaScript, Python, C++, C#? co ma przyszłość?
Wyważanie otwartych drzwi
A jednak Pythona warto ;-)
Czemu strony only for IE są złe.

sobota, marca 25, 2017

Kocham Cię, Europo

To taka deklaracja :-)

Pamiętam jak Polska jeszcze nie była w Unii Europejskiej.
Mało się wtedy działo, mało się budowało.
Polska była praktycznie nieznana w świecie. Gdyby przeciętny Niemiec czy Brytyjczyk miał wtedy coś powiedzieć o Polsce, to pewnie byłoby to, że jest to jakiś kraj, który był związany z ZSRR i że tam wyjeżdżają kradzione samochody.

W 2003 roku byłem w Niemczech i widziałem jak tam powstają drogi, jak buduje się nowe budynki.
W Polce tego nie było.

Ale minął 2004, wstąpiliśmy do Unii i na timelapsie poniżej widać jakie kawałki do Krakowa dołączyły:



Na kolejnym widać budowanie autostrad:

Fakt A4 powstała jeszcze z PRLu i przed wstąpieniem do UE, ale A1 to już dziecko Polski w UE.

W Krakowie przed przystąpieniem do UE w IT była Motorola, Sabre i Comarch, po przystąpieniu pojawiły się setki innych firm.

Bezrobocie w Polsce na rok przed przystąpieniem do UE wynosiło 20%, później zaczęło spadać. Nawet kryzys w 2008 roku dzięki temu, że polskie firmy miały zbyt w UE spowodował, że choć bezrobocie wzrosło to nigdy nie wróciło do poziomów sprzed bytności w UE.

Ja studia kończyłem jeszcze poza UE, wtedy Erasmus był rarytasem, trzeba się było strasznie nabiegać by móc się starać o udział.
Teraz nie jest to aż tak trudne, dzięki czemu wielu ludzi może wyjechać i sprawdzić jak się studiuje za granicą.
Teraz zdolniejsi mogą starać się o studiowanie na najlepszych uniwersytetach Europy.

Do tego w razie konfliktów gospodarczych z taką Rosją nie jesteśmy sami. Rosja może bezpiecznie ignorować 38.5 mln Polaków, ale 500 mln mieszkańców UE nie może.

Pamiętam, że przed przystąpieniem do UE wiele osób twierdziło, że "wykupią na Niemcy", albo, że "cała dobra żywność pojedzie do Europy, w Polsce nic nie będzie", "Rolnicy zbankrutują", "Polskie fabryki będą zamykać" i inne podobne.
Nie sprawdziły się te obawy.

Poziom życia w Polsce wzrósł i w ciągu ostatnich 13 lat przynależności do UE wzrastał najszybciej w naszej historii.

Dziś były marsze wyrażające radość z bycia w UE, niektórzy komentatorzy zauważali, że mało było tam młodych ludzi... czemu się dziwić? Gdyby były dziś marsze ku chwale wodociągów też pewnie mało by było młodych ludzi, przecież wodociągi tak jak bytność UE są dla nich tak normalne, że nie widzą różnicy między wtedy, a teraz.

Ja tam młody jestem, ale różnicę widzę :-)

Na plus.

Podobne postybeta
Strach się bać
Chcę sankcji UE
Niepewność wielostopniowa ;-)
Szukanie wroga
Zaszumienie....

piątek, marca 24, 2017

Netflix w służbie nauki - nauki języka ;-)

Na studiach odkryłem Buffy the Vampire Slayer.
TVN pokazywał, pokochałem ten serial bo to było naprawdę nietypowe, że mała, drobniutka blondynka, która w każdym innym horrorze czy thrillerze byłaby ofiarą tutaj była Obrońcą Ludzkości.
Niestety po pokazaniu 2 niepełnych serii TVN przestał pokazywać Buffy...
Ja już wtedy wsiąkłem na tyle, że mi Buffy brakowało.

I jakoś wtedy zacząłem oglądać Buffy na szwedzkiej stacji TV4.
Szwedzi to na tyle miły naród, że serial pokazywali w oryginale ze szwedzkimi napisami :-)

To zacząłem tak oglądać Buffy... dłuższego czasu spędzonego na oglądaniu Buffy potrzebowałem by zauważyć, że moja znajomość angielskiego podskoczyła.

Póżniej odkryłem jeszcze, że do oryginalnej anglojęzycznej ścieżki dobrze mieć angielskie napisy!

Wtedy większość łapie się z tego co mówią aktorzy, a jak jest jakiś problem ze zrozumieniem, to napisy pomagają...
Przykład gdzie można mieć problem ze zrozumieniem z samej mowy poniżej ;-)


Od momentu gdy odkryłem, że oglądanie wersji oryginalnej + napisy po angielsku świetnie działa oglądam tak prawie każdy film.

Na Netfliksie mam skonfigurowane to tak, że domyślnie filmy i seriale lecą mi po angielsku z angielskimi napisami.
Wyłamuję się z tych ustawień tylko wtedy gdy jest to kreskówka z dobrym polskim dubbingiem (np. Shrek), film nie jest po angielsku w oryginale, albo oglądam z kimś kto nie zna angielskiego.

Co dziwne wiele osób które znam tak nie robi! Mam kolegów, którzy robili CAE czy inne certyfikaty językowe, a nadal filmy oglądają z polskimi napisami albo z lektorem.

To jest dziwne. Toż Netflix, czy większość płyt DVD daje nam darmowe narzędzie do nauki języka i nie korzystanie z niego to jakaś forma marnotrawstwa...

No i jak Wy oglądacie po polsku serial, to marnujecie czas, jak ja oglądam ten sam serial po angielsku z napisami po angielsku to szlifuję angielski ;-)


Podobne postybeta
Czemu oglądam filmy i seriale po angielsku z napisami po angielsku
Jak oni to dowiozą? ;-)
Szczęśliwe nieszczęścia ;-)
Dziwna konkurencja
Łatwo pisać, trudniej robić ;-)

wtorek, marca 21, 2017

Zakaz handlu w niedzielę jest głupi

Rząd poparł pomysł zakazu handlu w niedzielę.

Uważam, że źle robi.

Tak, to że rodziny chciałyby być razem do mnie trafia, ale wydaje mi się, że o wiele lepiej niż zakaz podziałałaby zachęta finansowa.

Niech sklepy mogą działać w niedziele i święta, z zastrzeżeniem, że wszystkie osoby pracujące w tych dniach dostawać będą stawkę godzinową x2 w niedzielę i x3 w święta (wyższy mnożnik wygrywa).

Wydaje mi się, że przy takim układzie wiele osób chętnie pracowałoby w niedziele i święta i zniknąłby problem ludzi, którzy woleliby mieć niedziele wolną, a teraz są zmuszani by iść do pracy.
Do to sklepy miałyby zachętę by prowadzić sprzedaż w niedziele i święta tylko gdyby im się to naprawdę opłacało.
Skończyłoby się trzymanie sklepów otwartych tylko przez to, że "może ktoś przyjdzie".

Tak wilk byłby syty i owca cała.

Z drugiej jednak strony, gdyby ten rząd chciał stosować rozwiązania sensowne i pomocne dla ludzi i gospodarki to by się po prostu rozwiązał....


Podobne postybeta
Google App Inventor for Android - co to będzie? ;-)
Traf to za userem... ;-)
Spóźnialskie Google Latitude ;-)
I po wyborach :-)
Okrutniki ;-)

Wegetarianizm kaizen - czyli ja bywać wegetarianinem bez zbytniego wysiłku ;-)

Od bardzo dawna jednym z moich pragnień jest to by zostać wegetarianinem1.

Jedynym powodem dla którego chciałbym przestać jeść mięso jest to, że wydaje mi się to być uzasadnione moralnie.
Nie czuję się najlepiej myśląc o tym, że co roku ginie wiele zwierząt i to tylko po to bym mógł je zjeść, nie czuję się też najlepiej myśląc w jakich warunkach żyją.
Nie jest to jednak też coś co spędza mi sen z powiem, ani nie spędzam znacznej części czasu myśląc o tym.
Nadal jednak lepiej bym się czuł nie jedząc mięsa i nie mając tych wątpliwości moralnych.

Sęk w tym, że w naszym świecie obfitości, mięso jest jakby opcją defaultową3 i bez silnej motywacji by zostać wegetarianinem trudno wybierać lepszą, ale trudniejszą drogę.

Stąd stwierdziłem, że wybiorę drogę kaizen ;-) będę wegetarianinem w wersji kaizen.
Nie porzucę mięsa od razu, jest "za proste"5, ale będę jadł go mniej i wybierał opcje bezmięsne gdy to będzie możliwe bez zbytniego wysiłku.

Tak, moralnie to coś podobnego do odczuwania dumy z tego, że się jest lepszym bo rzadziej się kopie szczeniaczki... ale cóż, od czegoś trzeba zacząć...

A i uważam, że w cenie mleka i jajek powinny być wliczone kwoty a emerytury dla krów i kur.



1 - mimo tego, że ubóstwiam dowcip: "Co znaczy wegetarianin po indiańsku? Za głupi by polować!"2
2 - po usłyszeniu którego to dowcipu znajoma wegetarianka zapytała w bardzo fajny sposób "chwila, a nie czasem 'za miły by polować'?".
3 - btw słowa defaultowa (czyli połączenia angielskiego default z polską odmianą), genialnie to brzmi gdy mówi to ktoś dla kogo polski nie jest językiem ojczystym ;-) [słyszałem Ukrainkę która tak mówiła i zabrzmiało genialnie :-)]. Nawet nie chodzi o brzmienie, a o sam fakt, że używa tej formy ktoś dla kogo to nie jest język ojczysty, wydaje im się, że świadczy to o tym, że to słowo wynikło z potrzeby/wygody, a nie z tego, że "zapominamy, że jesteśmy Polakami".4
4 - dygresje są złe.... ja ogólnie cierpię na chroniczną dygresję...
5 - tak, zdaję sobie sprawę z tego, że to nie świadczy najlepiej o mojej postawie moralnej, bo z jednej strony nie podoba mi się to, że zabijamy zwierzęta6 by je jeść, a z drugiej strony "tak jest łatwiej"...
6 - pod żadnym pozorem nie piszcie mi komentarzy w stylu "jak jesz marchew to też ją zabijasz, morderco roślin!".


Podobne postybeta
Journaling
"Promocja homoseksualizmu" co to niby ma być?
Zegarek trudny
Wyrzuć codziennie jedną rzecz - reedycja ;-)
A gdyby tak....

środa, marca 15, 2017

Walka z null&amp;amp;#39;em ;-)

Jak człowiek panikuje pisząc kod to zaczyna robić dziwne rzeczy, np. idzie po linii najmniejszego oporu i bawi się w użycie null'a i robienie null checków....
Sam tak zrobiłem kiedyś i usłyszałem później w feedbacku z rozmowy, że zajefajnie się rozmawiało, super struktury danych, nieźle design, ale kod brzydki jak noc - dziękujemy ;-)

I tak dziś sobie w pracy gadaliśmy i wpadłem na pomysł ;-)

Wtyczka do IntelliJ'a która w momencie użycia null'a robiła by jakieś głośne beep! albo pokazywała jakiś straszny film z YouTube.
Wszystko po to by powstało w mózgu sprzężenie - użycie null'a = zło, ból i ogólny smutek ;-)

Od razu zaznaczam, że wszystkie code style check'i i podobne są fajne, ale są za późno.
Chodzi o to by w developerze zbudować niechęć do użycia null'a przez sprawienie, że będzie się to mu lub niej, kojarzyło z czymś nieprzyjemnym*.
A nic tak dobrze nie działa na budowanie takich skojarzeń jak natychmiastowość kary ;-)

Teraz tylko się zastanawiam czy poczekać z tym na kolejny hackathon czy może popełnić sobie ot tak, przy okazji ;-)


* - hardcore'owcy mogą np. wyświetlać sobie zdjęcie nielubianego polityka czy polityczki ;-)

Podobne postybeta
Walka z null&#39;em - pozwólmy działać IntelliJ&#39;owi ;-)
O rośliny, zwierzęta, urządzenia i relacje z innymi ludźmi trzeba dbać ;-)
Eventual consistency....
SCRUM i ogólnie Agile to często taka zakamuflowana forma premature optimization
"Użyszkodnik" to zło

niedziela, marca 12, 2017

9 miesięcy bez on-call&amp;#39;a - to jest super :-)

Dotarło do mnie, że już od ponad 9 miesięcy nie mam on-call'a.
To jest świetne.
Móc iść do łazienki bez telefonu, wiedzieć że jak idziesz spać to zaraz nie zadzwoni telefon, nie musieć słuchać pokrętnych tłumaczeń managementu, że przecież tak jest wszędzie.
Gdy miałem on-call'a to w trakcie brania prysznica zdarzało mi się przerywać mycie Przemka by sprawdzić czy czasem telefon leżący na pralce nie dzwoni.
A teraz nie muszę się tym przejmować :-)
To jest piękne!!!
posted from Bloggeroid


Podobne postybeta
Czemu prysznic jest bardziej eco(nomiczny) i eco(logiczny) ;-)
Jajx.........
No i jest problem natury logistyczno-temporalnej....
3 miesiąc bez on-call&amp;#39;a :-)
A może by tak nosić drugi telefon specjalnie do on-call&#39;a?

piątek, marca 10, 2017

Dobrze, że Tusk wygrał

Nigdy nie głosowałem na Donalda Tuska, czy nawet na jego partię.
Najbliżej chyba byłem głosując na Komorowskiego, a i tak pewny nie jestem.

Ale cieszę się, że Donald Tusk został ponownie Przewodniczącym Rady Europejskiej.

To jest jedyna szansa na to żeby Polska nie stoczyła się na margines.

Wielu wyborców PiS autentycznie wierzy, że siła państwa to potrząsanie szabelką i krzyk. Ale tak nie jest.
Popatrzcie na świat zwierząt. To małe, nieszkodliwe pieski ciągle szczekają i próbują gryźć po kostkach, duże psy, które są w ułamku sekundy spacyfikować takiego małego pieska siedzą cicho i nie szczekają.
Ktoś kto ma wpływy nie musi krzyczeć, lekkie podniesienie głosu, czy ostrzejszy ton są sygnałem dla wszystkich w koło, że żarty się skończyły.
Ktoś kto ciągle krzyczy, a nie ma środków by coś poza krzyczeniem zrobić się nie liczy.
Rząd PiSu sprawia, że Polska postrzegana jest na świecie tak jak taki mały piesek, jak ktoś kto ciągle krzyczy, ale nie ma żadnej mocy sprawczej.
Przez co nikt na nią nie zwraca zbytniej uwagi.

Tusk na pozycji Przewodniczącego Rady Europejskiej daje nadzieję, że świat nie będzie postrzegał Polski przez pryzmat krzykaczy z PiSu. Bo przez kolejne 2.5 roku będzie tam Polak, którego szefowie rządów 27* państw UE znają, a może i lubią.

Jarosław Kaczyński oczywiście nie weźmie sobie do serca nauki, że czasem trzeba patrzeć na realia i mierzyć siły na zamiary. To źle dla Polski, a najszybciej to odczują ludzie, którzy popierają PiS.
Bo teraz UE może być trochę bardziej wymagająca i może zacząć stosować sankcje za to, że PiS nie przestrzega polskiej konstytucji.



* - OK, 27 państw przez 2 lata, później 26


Podobne postybeta
Chcę sankcji UE
Rycerz na białym koniu? ;-)
Dawać sankcje!
Paranoja i Strach
Czemu po szczepieniu miejsce gdzie nas szczepiono może boleć?

poniedziałek, marca 06, 2017

Czy się stoi czy się siedzi.... kamerka w laptopie jako detektor tego czy biurko jest w trybie stand czy sit ;-)

W czwartek i piątek mieliśmy Hackhaton.
Wiele osób zrobiło rzeczy przydatne, wiele ciekawe, jeszcze inni zrobili ambitne.

Ja zrobiłem dziwną ;-)

Najpierw zamierzałem połączyć funkcjonalność timera z Google z Toggl i Keep by móc bawić się Pomodoro.
Tak powstało Pomodororororo, ale było nudne i nieciekawe.
Tzn. ciekawa była zabawa z Polymerem, ale jakoś nie umiałem wymyślić dobrego sposobu na to jak ugryźć wygodne połączenie timera z rejestrowaniem aktywności....

Wtedy zaczęło za mną łazić, że przecież mam certyfikat z Machine Learningu to mógłbym spróbować niedawno zdobytej wiedzy...
Pierwszy pomysł był by zrobić rozpoznawanie twarzy, ale upadł bo dużo próbek bym potrzebował.
Z drugiej strony od dłuższego czasu zabieram się za realizację czujnika wykrywającego stanie/siedzenie przy biurku w domu by móc je rejestrować i wiedzieć ile stoję.

Pierwsza szalona wersja pomysłu była by zrobić trochę zdjęć kamerką gdy stoję i gdy siedzę i użyć ich do nauki... Ale po chwili stwierdziłem, że może najpierw sprawdzę co widać na kamerce ;-) wiedząc co widać na kamerce uznałem, że wiem czego nauczy się Machine Learning.
Stąd zakodowałem to co wg. mnie machine learning by znalazł ;-)

Efekt widać poniżej ;-)

To działa :-)

Gdy stoję mam śliczny obrazek:
 A gdy siedzę taki:

(oba są kradzione z Internetu)

Działanie widać na filmiku :-)

Jednak cały "system" oszukuje ;-)

Tak się po prostu składa, że gdy wszystko jest w pozycji siedzącej to pole widzenia kamerki jest dość mocno ograniczone przez jeden z monitorów... a monitor jest czarny....
Stąd okazuje się, że porównanie średniego koloru prawego górnego rogu obrazu z kamerki ze średnią reszty obrazu pozwala stwierdzić, że ten róg jest ciemny i uznać, że wszystko jest w pozycji siedzącej ;-)

Wszystko jest napisane w JavaScript'cie i HTMLu z użyciem Polymera, ale Polymer jest tu najmniej istotny ;-)

To jak z poziomu HTML/JavaScript dobrać się do obrazu z kamerki wiem z tego tutoriala.

Później co sekundę skanuję obraz z kamerki licząc średni kolor górnego prawego roku i reszty obrazu i wszystko działa ;-)

Jak ktoś ciekaw to tu są źródła ;-)


Podobne postybeta
Czy się stoi czy się siedzi... Rasbperry Pi z czujnikami ultradźwiękowymi to stwierdzi ;-)
Budujemy czujnik sit/stand do biurka :-)
AppInventor - tego się da używać :-)
3 Home w jednym domu ;-)
Data binding w Polymerze jest oszukany ;-)

niedziela, marca 05, 2017

Język programowania na Apokalipsę ;-)

Zacząłem zastanawiać jakie języki programowania miałyby sens w czasach Apokalipsy*, czyli wtedy gdy cywilizacja techniczna doznałaby poważnego uszczerbku.
Jakaś flara słoneczna, może EMI, czy coś innego.

Nie byłoby raczej Internetu, zostałoby trochę komputerów, które akurat w trakcie EMI byłby wyłączone i tak dalej...

Takie języki na czas apokalipsy musiałyby być lekkie w wykonywaniu (mało zasobów zjadać) i łatwe w pisaniu, tak by można ich było używać bez skomplikowanych IDE i Internetu.
Do tego najpewniej musiałoby już być na komputerach, które przeżyłyby zagładę cywilizacji.

I wychodzi mi, że byłby to pewnie Python i JavaScript**...
Teoretycznie mogłoby to być też C, choć wydaje mi się, że na początek mogłoby być zbyt skomplikowane. Trudno uczyć się C bez dokumentacji.

Za Python przemawia to, że przychodzi z dołączonymi bateriami, przez co większość rzeczy można zrobić bez dodawania specjalnych bibliotek, do tego ma wbudowaną dokumentację.
Jest też na tyle prosty, że można by się go szybko było uczyć przeglądając inne programy.
Nadaje się do pisania skryptów i prostych narzędzi, a jak ktoś się postara to i prosty serwer WWW bez dodatkowych bibliotek napisze.

Za JavaScriptem przemawia to, że też jest prosty w pisaniu i obsługuje go każda przeglądarka Internetowa. To drugie pewnie dawałoby mu szansę na bycie kluczem do UI.
W końcu jak ktoś już oprogramuje swój ciągnik na baterie słoneczne w Pythonie to pewnie chciałby używając jakiegoś WiFi (które może działać bez Internetu :-)) móc monitorować jego pracę w domu (tak, moja wizja końca świata jest poważnie skażona przez Interstelar).
JavaScript też jest prosty w obsłudze*** i nauce.

A i jeszcze pewnie Excel/Calc z OpenOffice.org by były istotnymi elementami odbudowy cywilizacji technicznej.
Może nawet w rządzie czy jego odpowiedniku stanowiłby najważniejszą część programowania.
W końcu od razu mamy język programowania, UI i dość potężne narzędzie do obliczeń....
Jak znalazł do liczenia kiedy i ile siać, albo ile jajek zmienić w kurczaki.
Ba, z Excelem**** można nawet robić proste symulacje....

Zaczynając pisać myślałem, że takim językiem programowania na Apokalipsę będzie Python... ale teraz dochodzę do tego, że chyba jednak będzie to Excel... nie powiem żeby mi się to zbyt podobało ;-) acz wydaje mi się, że Apokalipsa chociaż na jakiś czas zakończyłaby problem tego "który język programowania jest najlepszy" ;-)



* - wzięło mi się to stąd, że czytam 7ew Neal Stephenson'a, która dzieje się w trakcie jak Ziemia ulega zniszczeniu. Bohaterowie mieszkają w skleconej na szybko Arce w Chmurze, która jest zbudowana w oparciu o ISS i już parę razy zdarzyło im się pisać skrypty w Pythonie ;-)
** - pewnie jeszcze Bash, Ruby i C# bo jednak pewne komputery z Windows by przeżyły, a chyba jeszcze do teraz jak się ma Windows to ma się .NET'a, a jak się ma .NET'a to się ma i kompilator do niego, stąd skrypty by były możliwe.
*** - ale nie NodeJS, nie ten nie jest tak prosty jak JavaScript dla przeglądarki ;-)
**** - mimo tego, że źle liczy! 



Podobne postybeta
Jak apokalipsa to nie w Warszawie ;-)
Java wygrała ;-)
Świat The Three Body... też się nie domyka....
Dajcie mi język marzeń ;-)
Niechciejśpizm

Kopernik i zasada kopernikańska, później Darwin i Teoria Ewolucji... co będzie kolejne? Silne AI czy synetyczne życie?

Co łączy Kopernika* i Darwina?
Że dzieła obu były tępione przez religię w Europie.

Głównie przez to, że kwestionowały pewne teologiczne założenia chrześcijaństwa**.
Heliocentryzm Kopernika kwestionował podział świata, wcześniej obowiązywał model, który ładnie wpisywał się w opis Wszechświata promowany przez kościół, Ziemia była w centrum Wszechświata, otaczały ją niebiosa, a pod nią było piekło.
Był jeden Bóg, który stworzył Ziemię i wszystko na Ziemi.

Idea promowana przez Kopernika sprawiała, że ludzie mieli głupie pomysły. Taki Giordano Bruno pytał np. o to jacy ludzie żyją na Wenus, a jacy na Marsie... co prowadzić mogło do bardzo niemiłych pytań o to czy tamci też mieli swojego zbawiciela... a to do kwestionowania dogmatu o trójcy i tak dalej....

Religia po wojnie z heliocentryzmem wyszła poobijana.

Cofnęła się do twierdzenia, że może te wszystkie latające kamulce latają sobie tak jak to sugerował Kopernik i Galileusz, że może opisuje ten cały mechanizm matematyka zaproponowana przez Newtona. Ale to tylko dowód na moc Boga. Który kamulcom dał piękne matematyczne równania, które sterują ich ruchem. Ale tutaj na dole WSZYSTKO jest boskim dziełem i Bóg osobiście stworzył człowieka na swój obraz i podobieństwo.

Ludzie już od dłuższego czasu widzieli podobieństwa między różnymi organizmami, wiedzieli, że organizmy się najpewniej zmieniają w czasie. Ale to się jeszcze jakoś szczególnie nie kłóciło z religią. Ogólnie akceptowano, że ludzi, zwierzęta i rośliny stworzył Bóg i że niektóre z nich może się trochę później zmieniały...
I wtedy przyszedł Darwin z doborem naturalnym.

Nagle ktoś zaczął twierdzić, że człowiek pochodzi od przodka, którego dzieli z małpami, ba że wszystkie organizmy na Ziemi są spokrewnione...
To nie Bóg stworzył człowieka na swój obraz i podobieństwo, to dobór naturalny stworzył człowieka...

Znów był problem. Religie próbowały tępić Teorię Ewolucji, niektóre nadal to robią (Islam jest tu bardzo aktywny, chociaż wielu chrześcijan też).

Kościół katolicki szybko wykazał się sprytem i jakoś szczególnie z ewolucją nie wojował. Głównie przez to, że już od dłuższego czasu twierdził, że zapisy Biblii są natchnione, ale że trzeba je czytać symbolicznie, nie literalnie.
Doszło do tego, że papież stwierdził, że ewolucja nie jest sprzeczna ze Stworzeniem.

Religia wycofała się do Boga jako kogoś kto stworzył życie i rozum.

I teraz pojawia się pytanie ;-)

Czy wcześniej kolejnym ciosem w religię będzie silna AI, czyli stworzenie rozumu, czy może syntetyczne życie - komórki zbudowane całkowicie przez człowieka?

Wydaje mi się, że syntetyczne życie jest bliżej. Już powoli udaje się produkować niektóre kawałki komórek i pewnie tu technologia będzie się szybciej rozwijała.
W silnym AI najpewniej pomogą nam szybsze komputery, a tutaj się na razie nie zapowiada by miały powstać jakieś dużo szybsze.
Chociaż ciągle czekam na Singularity*** ;-)

I syntetyczne życie zaatakuje bardziej fundamentalne podstawy religii. Trudno będzie mówić o jakimś cudownym akcie tchnięcia życia w zarodek, czy podobnych...

Pytanie tylko kiedy się ten kolejny krok wykona.

20 lat? ;-)

* - i Galileusza i Giordano Bruno i paru innych, ale Kopernik był pierwszy,
** - nie czarujmy się, de facto w sprawach naukowych inne religie się w ogóle nie liczyły przez ostatnie ~500-1000 lat. To unikatowa mieszanka antyku, chrześcijaństwa i germańskich zwyczajów w Europie sprawiła, że powstał ferment, który pozwolił na rozwój nauki i powstanie nowoczesnego społeczeństwa,
*** - ale im więcej czytam Kurzweila tym częściej mam wrażenie, że niestety się myli

Podobne postybeta
Teoria ewolucji vs hipoteza kosmicznych siewców życia vs hipoteza kreatora vs hipoteza kreatora na młodej Ziemi - mecz przy pomocy Bayesa :-)
"Skoro ludzie wyewoluowali z małp to czemu małpy nadal istnieją?"
Iluminacja... czyli "Oświeciło mnie"...
O książkach
Patriotyzm

&amp;quot;Dziennikarze&amp;quot; to debile

Żeby wyczuć co myśli przeciętny zjadacz schabowego zaglądam czasem na Fakt24 i Super Express.

Dziś zobaczyłem tam tytuł "Afera podsłuchowa w USA! Trump: 'Obama mnie podsłuchiwał!'. Obama: 'Nigdy cię nie podsłuchiwałem!'"...

To teraz aferą podsłuchową jest sytuacja gdy jeden gościu, znany z miotania w kierunku każdej osoby, która go skrytykuje lub której nie lubi, twierdzi, że drugi go podsłuchiwał?

To jak Trump zacznie krzyczeć, że X gwałci małe kotki to będzie "afera zoofilska"? IMHO to będzie bardziej "Trump ponownie bez dowodów oskarża Y".

OK, rozumiem, że w portalozie panuje konkurencja i wszyscy chcą przyciągnąć jak najwięcej klików. A ponieważ duża część odbiorców i tak nie czyta treści i wyrabia sobie zdanie na podstawie tytułów to rośnie im odporność na tytuły i trzeba używać jeszcze bardziej jednoznacznych i oskarżających...

Ale żeby aż tak?


Podobne postybeta
&amp;quot;Dziennikarze&amp;quot;
Z pamiętnika developera... Do czego służy programista?
Debile....
Trudne powroty ;-)
No comment

piątek, marca 03, 2017

Gdzie by się tu przenieść...

Chodzi za mną pomysł zrobienia sobie jakiejś listy wydarzeń, rzeczy, czy postępków władzy których wystąpienie przybliży mnie do decyzji o opuszczeniu kraju.
Trochę mam z tym kłopot bo gdzieś tam we mnie tkwi przeczucie, że rozwalenie TK, deforma edukacji, rozwalanie armii, odbieranie emerytur i inne podobne już dawno wyczerpały przesłanki do wyjazdu i teraz głównie się oszukuję i próbuję tego nie widzieć.
Głównym hamulcem jest chyba to, że mnie osobiście nic się nie dzieje, ale można dodać takie przerażające "jeszcze" do tego nic niedziania... i trzy kropki...

Mam tu mieszkanie, rodzinę, najlepiej mówi mi się po polsku i do końca nie wiem gdzie jest lepiej..

Te prawie 3.5 roku temu rozważałem kierunek emigracji głównie w oparciu o pogodę ale od wtedy trochę się pozmieniało.

Teraz na liście mam (w kolejności przypadkowej):
- Szwecja,
- Kanada,
- Nowa Zelandia,
- Czechy

Co najlepsze jakieś 2 lata temu miałem możliwość wyjazdu do Szwecji to wybrzydzałem.

Chciałbym kraju lewicowego, nowoczesnego i świeckiego.
Takiego gdzie jak ludzie wyznają religię to robią to w domu czy w świątyniach i jest to ich prywatna sprawa, a jak jakiś polityk zaczyna mówić o religii to go przeganiają.
Takiego gdzie o praktykach medycznych decyduje się na podstawie faktów naukowych.
Takiego gdzie dba się o przyrodę.
Takiego gdzie szanuje się prawo i zasady.

Może nie wszystkie z krajów z mojej listy pasują do takiego obrazu, ale co tam.

Z tego co widziałem pensje w IT we wszystkich tych krajach są porównywalne z polskimi, może nawet niższe*.
Pierwszym światem wg Google z tych krajów z mojej listy jest tylko Kanada bo tylko tam dostępna jest większość towarów z Google Play Store.
Najdłuższą średnią życia mają mieszkańcy Szwecji (chociaż tylko Czechy odstają).
We wszystkich poza Czechami ponad 85% populacji mówi po angielsku.
Najcieplej jest na Nowej Zelandii, najbardziej zmienny klimat wydaje się być w Kanadzie.
Nowa Zelandia ma tego plusa, że przez to iż jest tak potwornie daleko od reszty świata to w razie konfliktu jądrowego pewnie nikomu się nie będzie tam chciało posłać żadnej głowicy... chociaż nie wiem po co ktokolwiek miałby atakować też Czechy.

Nie mam pojęcia, który z tych krajów jest najlepszy... a może jest jeszcze jakiś lepszy?
Z drugiej strony, co sobie ponarzekałem to moje ;-)


* - biorąc pod uwagę koszty życia.


Podobne postybeta
Jak apokalipsa to nie w Warszawie ;-)
Kopernik i zasada kopernikańska, później Darwin i Teoria Ewolucji... co będzie kolejne? Silne AI czy synetyczne życie?
O prywatnej i publicznej służbie zdrowia.
Za co JKM kocha Putina?
Chmurka prawdopodobieństwa