środa, lutego 10, 2016

Pożytki z niedosypiania?

Ciekaw jestem czy niedosypianiem można sobie poprawić zdrowie?

Niby bez sensu pytania, bo oczywistą odpowiedzią wydaje się "nie".

Ale czy na pewno?

Podobno przeciwutleniacze zaczynają dobrze działać gdy komórka jest w lekkim stresie.
Może go wywołać pewnymi owocami, a dokładniej truciznami w tych owocach (truciznami dla owadów, dla nas nie), albo u szczurów głodówką co drugi dzień (to może działać też u czlowieków).
Stąd pytanie, czy brak snu co jakiś czas, albo częste niedosypianie może powodować stresu w komórkach i przez to aktywować ich mechanizmy naprawcze?
Może więc nie dosypiając zyskujemy 2 razy? ;-)
Raz na tym, że zyskujemy czas, który zużylibyśmy na "nadmiarowy" sen, drugi na tym, że przez lepsze działanie mechanizmów obronnych w komórkach, wywołany przez lekki stres związany z brakami w śnie, zyskujemy potencjalnie dłuższe życie...


posted from Bloggeroid




Podobne postybeta
Nadmiarowy dylemat ;-)
Drugi numer telefonu
Kupić bilet czy nie kupić? Oto jest pytanie....
... i "we wte" ;-)
396 m2 ekranu

poniedziałek, lutego 01, 2016

Wolne komputery nie pozwalają się skupić....

Muszę mieć szybkie komputery, telefony i ogólnie urządzenia elektroniczne*.

Piszę jakiś kod, kompiluję i chwilę to trwa....
Jeśli chwila jest odpowiednio długa jest duża szansa, że zajrzę na jakąś stronę WWW....

Straszne przy tym są albo duże projekty, albo projekty dla Androida... szczególnie gdy używa się emulatora.
Fajne są projekty webowe, bo nawet jak pracuje się z czymś większym to zwykle IDE daje możliwość podmienienia tylko plików, bez przeładowywania całego serwera, co oznacza zwykle wejście na stronę i zrobienie CTRL-R**.

To samo tyczy się przeglądarki. Przeglądarka musi być szybka.

Jeśli jakaś strona dłużej się ładuje, to zwykle otworzę nową tabkę i wpiszę tam jakiś "typowy" adres, czyli wyborcza.pl albo facebook.com, tudzież przejdę na jedną ze stale otwartych tabek.

Komputer powinien dawać jak najmniej szans na wystąpienie przejścia z działania do czekania.

Z przykrością stwierdzam, że i7 z 16 GB RAM, dyskiem SSD i szybką siecią przestaje mi wystarczać do szybkiego kompilowania i testowania....
Znaczy trzeba zacząć trening Jedi ;-) i trenować cierpliwość.

* - dokładniej zaś, szybkie musi być wszystko w przypadku czego istnieje łatwy sposób zmiany kontekstu pracy z danym urządzeniem.
** - od czasu gdy używam OS X jako systemu w pracy w Chrome przerzuciłem się na uniwersalne skróty, czyli CTRL-R zamiast F5 (które działa na Windows i Linuksie) oraz na CTRL-W (zamiast CLTR czy ALT-F4), duży plus tych uniwersalnych skrótów jest taki, że działają też na Chrome OS, stąd jest jeden zestaw, który trzeba pamiętać dla dowolnego urządzenia ;-)


Podobne postybeta
Android nie taki zły ;-)
Chromebook vs netbook z Windows 8 ;-) - pierwsze wrażenia
Ha! Ochidna Echidna potrafi updatować pliki :-)
Chyba w końcu przejdę na ciemną stronę - otworzę sobie linię kredytową ;-)
Cywilizacja migających diod i lampeczek ;-)

niedziela, stycznia 31, 2016

A ja wybrałem Xbox One ;-)

Kupiłem ostatnio konsolę.
Przez jakiś czas rozważałem jaką kupić.
Byłem niemal pewien, że kupię PS4. Jest ładniejsza, mniejsza, ma mocniejszą grafikę i nie jest Microsoftu. Do tego prawie wszyscy, których znam i mają konsole mają PS4.
Jednak w końcu kupiłem Xbox One ;-)

Czemu?

Głównie przez to, że z tego co czytałem ktoś kupujący Xbox One teraz kupuje całkiem nową konsolę w porównaniu do tej sprzed roku. Znaczy to, że konsola się rozwija.

Nie zmienia to faktu, że wygląda niezbyt ładnie i zgrabnie, jest wolniejsza, a i z tego co widziałem w sklepie gry są droższe.
Do tego ma Microsoft w środku (co momentami boli, bo MS i interfejsy użytkownika, albo inaczej, interfejsy użytkownika od MS i ja nie możemy się odnaleźć).

Nie kryję, że powodem było też Halo ;-)

Chociaż ostatnio gram głównie w Fallout 4, ale muszę uważać bo zdecydowanie daję się porwać grze.

Nikogo nie zachęcam do pójścia w me ślady, ani do wyboru Xbox One.

Po prostu dzielę się swoim zdaniem w wojnie konsol ;-)

Jestem też już na 3 głównych platformach, w pracy na sprzęcie i sofcie od Apple, w domu na Linuksie i Androidzie, a w rozrywce na platformie Microsoftu ;-)


Podobne postybeta
Zaczął się nowy rok
A jednak Pythona warto ;-)
Mniej wredne Google Docs ;-) - zabawy z OCRem część 2
Reset
PRISMochoza....

niedziela, stycznia 24, 2016

Jak walczyć z gigantycznym kodem w Java'ie, część 1.5 ;-) - czyli jak je się słonie ;-)

Poprzednio było o tym jak zacząć zabawę z kilkoma milionami linii kodu i jak zacząć je przygotowywać do analizy, o analizie jeszcze nie było, dziś będzie o organizacji.

Najpierw trzeba te parę milionów linii pociąć i dać im właścicieli.
Można zaproponować by zainteresowani sami powiedzieli czym się chcą zajmować (i rozwiązać ewentualne konflikty, tudzież przypisać komuś to czego nikt nie chciał), można też po prostu wylosować kto co weźmie.
Ale TRZEBA komuś dać własność kodu.
Czemu?
Bo jeśli kod ma właściciela, to ma kogoś kto ma bardziej długoterminową perspektywę dla tego kodu. Częściej w nim grzebie, widzi to co jest w tym kodzie najbardziej problematyczne i to co sprawia największe problemy w trakcie utrzymania.
Widzi też problemy w systemach na których ten kod działa.
Może wtedy zacząć zarządzać długiem technicznym. Może podejmować decyzje w dłuższej perspektywie czasowej.

Jeśli gdzieś w kodzie są "biblioteki" to trzeba się im przyjrzeć i stwierdzić czy są w ogóle bibliotekami.
Biblioteka to kod, który jest czyjąś własnością, do którego nowe ficzery wprowadzane są przez właściciela (nie musi być on autorem kodu, ten może przyjść od kogoś innego przez np. mechanizm pull request) i który to kod ma swój własny backlog zmian i własne priorytety (które są ustalane w odpowiedzi na requesty od klientów).
Biblioteką nie jest kod, którego używa N projektów w którym to kodzie grzebie kto chce z tych projektów gdy mu jest wygodnie.
Biblioteka nie istnieje po to "by nie robić copy & paste".

Co robić gdy masz "biblioteki", które istnieją "by nie robić copy & paste"?
Wydaje mi się, że trzeba wybrać jedną z czterech opcji.
Split - jeśli widać w "bibliotece" i projektach, które jej używają jakiś porządek, polegający na tym, że projekty będące własnością jednego zespołu/osoby używają tylko poszczególnych klas, a inne klasy są używane przez projekty używane przez kogoś innego, to najzdrowiej wydzielić z tej "biblioteki" kilka i oddać je zainteresowanym (obecnie próbuję stworzyć narzędzie do tego)
"Libarise" - ;-) ubibliotecz ;-) jeśli, kod jest używany przez wiele projektów ale jest niezbyt często zmieniany i ma ściśle określony zakres działań (to może wymagać najpierw zrobienia split) to może warto z niego uczynić prawdziwą bibliotekę, która będzie miała właściciela i zmiany do niej będą wprowadzane przez tego właściciela. Tutaj sugeruję dodanie całej masy UT, które pozwolą na załatwianie dodawania nowego kodu przez pull requesty. Wydaje mi się, że na początku UT powinny niemal betonować zastany kod.
Fork - jeśli wszyscy czegoś używają, ale nie da się tego ubibliotecznić to wydaje się, że zdrowsze będzie zrobienie forków kodu. Niech każda zainteresowana strona zmienia go sobie jak chce.
Można tu spróbować zrobić coś a'la Spotify'iowe chaptery (czyli każdy zespół który zrobił swojego forka będzie miał kogoś w chapterze i ten chapter będzie starał się by taki zforkowany kod szedł w kierunku biblioteki, albo by chociaż ciekawe zmiany, które będą przydatne dla innych się propagowały (z czasem będzie coraz trudniej)).
Forget - pewnie gdzieś jest kod, którego NIKT nie używa (tutaj przydatne będzie coś co podziała na wynikach z "lekcji 1" ;-)), wtedy najlepsze co z nim można zrobić to go SKASOWAĆ (usunąć pliki, zrobić commit).

Walka z wielkim codebasem to ćwiczenie w jedzeniu słoni.
Jeśli masz stado 100 słoni, i z każdego zjesz po 10% (bo będziesz zjadać tylko kawałki które wystają ze stada), to zjesz 10 słoni, ale nadal będzie ich 100.
Jeśli jednak podzielisz stado na 10 mniejszych stad to jest szansa, że w każdym z nich uda Ci się zjeść po 1 słoniu i będziesz mieć tych słoni 90 sztuk.
[analogia może być chybiona i bez sensu, ale mi się podoba ;-)]


Podobne postybeta
Notka miraż
Twitter
Jak się topologicznie wprowadzać ;-)
A różne takie...... czyli Fork-Join w JDK7, Azule i podobne :-)
11. Nie będziesz używał komunikatorów innych...

sobota, stycznia 09, 2016

2016 będzie rokiem "nietypowym"

W odróżnieniu do swoich sąsiadów nie pozwala na stworzenie równania:
10_9_8_7_6_5_4_3_2_1=2016
Za to już taki rok poprzedni, pozwala na powstanie równania:
10*9*8*7/6/5*4*3-2+1=2015
Także, kolejny rok na to pozwoli:
10*9*8*7/6/5*4*3+2-1=2017

Okazuje się, że od 1970 roku do 2100 będzie łącznie 12 lat, które pozwolą na zapisanie się równaniami (takimi na liczbach całkowitych).

Oto one:
10*9*8+7*6*5*4*3/2-1=1979
10*9*8+7*6*5*4*3/2*1=1980
10*9*8+7*6*5*4*3/2+1=1981
10*9*8*7/6/5*4*3-2-1=2013
10*9*8*7/6/5*4*3-2*1=2014
10*9*8*7/6/5*4*3-2+1=2015
10*9*8*7/6/5*4*3+2-1=2017
10*9*8*7/6/5*4*3+2*1=2018
10*9*8*7/6/5*4*3+2+1=2019
10*9*8/7/6*5*4*3*2-1=2039
10*9*8/7/6*5*4*3*2*1=2040
10*9*8/7/6*5*4*3*2+1=2041

2016 jest tutaj jeszcze o tyle nietypowy, że jest jedynym rokiem w tym okresie, który jest otoczony z obu stron blokami lat równaniowalnych ;-)

A skąd to wiem?
Bo policzyłem* tym oto programikiem w Scala'i ;-)

package pl.przemelek.equation

import scala.annotation.tailrec

object ResolveFor2016 {

  def increase(operators: Array[Int]) {
    @tailrec    
    def inc(idx:Int, operators:Array[Int]) {
      operators(idx)=operators(idx)+1      if (operators(idx) > 3) {
        operators(idx) = 0        inc(idx + 1, operators)
      }
    }
    inc(0,operators)
  }

  def testFor(year:Int,operators: Array[Int]): Boolean = {
    val numbers = Array(10,9,8,7,6,5,4,3,2,1)

    def mul(list:List[Int]):List[Int] = list match {
      case h :: Nil => h::Nil      
      case a :: 2 :: b :: tail => mul((a*b)::tail)
      case a :: 3 :: b :: tail => mul((a/b)::tail)
      case a :: 0 :: b :: tail => a::0::mul(b::tail)
      case a :: 1 :: b :: tail => a::1::mul(b::tail)
    }

    @tailrec
    def sum(list:List[Int]):Int = list match {
      case a :: Nil => a
      case a :: 0 :: b :: tail => sum(a+b::tail)
      case a :: 1 :: b :: tail => sum(a-b::tail)
    }

    var list = List[Int]()
    for (i <- 0 to 18) {
      list=list++List(if (i%2==1) operators(i/2) else numbers(i/2))
    }
    list = mul(list)
    val s = sum(list)
    s==year
  }

  def check(year:Int) {
    def show(operators:Array[Int]): Unit = {
      val numbers = Array(10,9,8,7,6,5,4,3,2,1)
      val opers = "+,-,*,/".split(",")
      for (i <- 0 to 18) {
        print(if (i%2==1) opers(operators(i/2)) else numbers(i/2))
      }
    }
    val operators = Array.fill(10){0};

    var finish = false;

    while (!finish && operators(9)==0) {
      finish = testFor(year,operators)
      if (finish) {
        show(operators)
        println("="+year)
      }
      increase(operators)
    }
  }

  def main(args: Array[String]) {
    // 10 _ 9 _ 8 _ 7 _ 6 _ 5 _ 4 _ 3 _ 2 _ 1 = 2016    
    for (year <- 1970 to 2100) {
      check(year)
    }
  }
}

Całkiem miła zabawka na "po chorobie" ;-)
Pozwoliła mi na przetestowanie pewnych mechanizmów ze Scala'i.

Ten program nie jest napisany po bożemu, bo używam var'ów i side-efectów, nie wszędzie robię tail recursion, ale już coś robi.
Chętnie przyjmę krytykę :-)

Podoba mi się możliwość zrobienia takich strasznych rzeczy jak to co robią mul i sum z pattern matchingiem.

Program też poważny problem algorytmiczny ;-) bo zamiast w testFor sprawdzać wszystkie lata od razu, dla każdego układu operatorów, to ja sprawdzam każdy układ operatorów dla każdego roku. Głównie przez to, że najpierw sprawdzałem czy da się takie równanie zbudować dla 2016, a później zaciekawiły mnie lata w około ;-)

Chytrze uniknąłem zabawy w budowanie drzewa przez ohydny manewr z budowaniem równania jako listy.... 

Scala to nadal nie jest mój język, ale nauczę się go, bo wroga trzeba poznać ;-)

Inspiracją do całego programu był tytuł postu Petera Norviga.


* - komputer policzył.



Podobne postybeta
Potworność ;-) czyli mnożenie w 90 liniach ;-)
Motanie kodu - czyli co wynika z chęci zarządzania zadaniami
Plus dla Scala, minus dla Groovy ;-)
SleepAdvisor - komórka pomaga w wyspaniu się ;-)
Go dla Java'owca ;-) odcinek 2 "kontenery dwa ;-)"

poniedziałek, stycznia 04, 2016

Zaczął się nowy rok

Zaczął się nowy rok.

Zacząłem go od stworzenia (przy pomocy Pythona i kilku godzin kodowania ;-)) playlisty z piosenkami z Buffy the Vampire Slayer dla Spotify (link http i Spotify).

Obejrzałem film "Barany. Islandzka opowieść" - inny, ale jakoś do mnie nie trafił, głównie przez to, że najważniejsza intryga bazuje na tym, że scenarzyści chyba nie do końca rozumieli jak działa system ewidencji zwierząt hodowlanych (OK, jeden hint możliwe, że film dzieje się przed jego wprowadzeniem, bo jest gdzieś kalendarz z 1978 roku, ale za to samochody i quady wyglądają na współczesne). Ciekawe było za to to, że w jednej z pierwszych scen jest tak, że jeden z bohaterów, chyba Gummi jedzie quadem i wiezie barana, przejeżdża drogą i po obu stronach drogi są owce, które najwyraźniej boją się quada. Zaczynają uciekać i tu jest ciekawe, z jednej strony są 4 owce i te uciekają tak dosyć wolno, bez pośpiechy, z drugiej strony jest tylko 1 owca i ta ucieka tak na oko z 2 razy szybciej. Przypadek? Pewnie tak, ale chciałbym przetestować czy tak nie jest czasem zawsze, bo może to coś co wytworzyła u owiec ewolucja? W końcu jak uciekasz stadem, to musisz być szybszy tylko od najwolniejszego, ale jak uciekasz sam to musisz uciekać jak najszybciej bo goniący nie może wybrać innego celu.
Chociaż ten film może też wskazywać na to, że mam deficyt w odbiorze. W filmach lubię historię i szczególnie gdy jest opowiadana z dwóch stron, tutaj gdzieś na dole tkwią pewnie ciekawe konflikty, a my widzimy tylko z boku ich skutki. Czyli film może być naprawdę dobry, ale ja jako odbiorca mogę być zbyt autyczny czy jako to nazwać by do mnie dotarł.
Bardzo fajnie wygląda też pies pasterski i to jak prowadzi owce, ta postawa, taka napięta i gotowa do skoku.

Zapowiada nam się smutna przyszłość.
Państwo PiS oznacza w mojej ocenie stagnację i brak rozwoju. Będziemy stać w miejscu, a może i się cofać gdy reszta świata biegnie do przodu.
Nie jesteśmy idealni, wiele rzeczy zrobiono w Polsce źle, ale chociaż w mniejszym lub większym stopniu goniliśmy zachód czy świat jako taki. Nauka nadal nam kulała, ale sztuka zaczynała powoli coś znaczyć.
Teraz będziemy mieli jedną wykładnię tego co dobre i słuszne. Trudno będzie proponować rewolucyjne pomysły, albo próbować prowadzić badania w kierunkach niepopularnych wśród rządzących.
I nie chodzi tu o gender, a o np. genetykę, neuronaukę czy kognitywistykę, że o embriologii nie wspomnę.
To będzie znaczyło, że najzdolniejsi będą wyjeżdżać. Już to robią, ale to przyśpieszy.

Chodzi za mną konsola. Zaczynałem od tego, że chcę kupić PS4, teraz coraz częściej myślę, że jednak XBOX One. PS4 wydaje mi się ładniejsza, szybsza, ale jednak za XBOX One stoi Microsoft i chociaż już nigdzie nie używam Windowsa, to z tego co się czyta, ludzie zauważają, że XBOX One teraz to inna konsola niż rok temu, a PS4 to ciągle to samo co rok temu.
No i na XBOX One jest Halo, a jak pooglądałem na YouTube to fajnie wygląda.
Jest jeszcze szansa, że się wyleczę ;-)

Scala.... fajny język, którym można zrobić dużo złego, ale pozwala sobie połechtać ego jak człowiek napisze jakąś fikuśną rzecz bazującą na tail recursion ;-)
Niestety jak na razie nie udało mi się w IntelliJ Idea włączyć testów dla Scali.... co mi przeszkadza i mnie smuci.


Podobne postybeta
A ja wybrałem Xbox One ;-)
PRISMochoza....
Buffy dobra, brak chęci do działania zły ;-)
2016 będzie rokiem "nietypowym"
Tresura owiec ;-)

środa, grudnia 30, 2015

Wyrzuć 1 rzecz dziennie

Mam problem z tym, że trzymam masę rzeczy "na przyszłość", "bo się kiedyś może przydać", "bo szkoda wyrzucać".

Ostatnio zacząłem z tym walczyć.

Motorem był kolega z pracy, który pozbywał się książek, które przeczytał i stwierdził, że nie będzie już ich więcej czytać.

Nie umiałbym się na coś takiego zdecydować, zbyt lubię mieć książki, ale zrobiło to na mnie wrażenie, bo jest to ze wszech miar racjonalna postawa*.

Stąd sam zacząłem dzień w dzień wyrzucać po jednej (najmniej rzeczy).

Doszedłem teraz do momentu gdy skończyły mi się low hanging fruits ;-) większość karteczek, karteluszek, wyciągów z kart, pudełek, popsutych urządzeń i podobnych już mi się skończyła...
Pozbyłem się już nawet 1 laptopa, ale oszukiwałem bo zawiozłem nieużywanego, acz w pełni sprawnego i używalnego Chromebooka do własnej matki :-)

Teraz będzie trudno.

Ale będę próbował.

Ideałem byłoby posiadać tylko rzeczy, które są mi niezbędne i kilku które sprawiają mi przyjemność (książki liczę jako 1 rzecz ;-)).



* - patrząc na wielkość mieszkań, można powiedzieć, że posiadając jakąś rzecz ponosimy też koszty jej składowania, trudno je wyrazić w złotówkach, ale można je szacować np. zastanawiając się o ile dłużej musimy sprzątać omijając daną rzecz i porównać koszt czasu, który zużywamy z kosztem samej rzeczy, do tego dochodzi też koszt "zabałaganienia" i czasem może nam wyjść, że bardziej się opłaca w razie potrzeby daną rzecz kupić, albo wypożyczyć, niż ją trzymać przez lata.


Podobne postybeta
Telefon lepszym aparatem niż prawdziwy aparat ;-)
A Pi ciągle działa....
Miałem dziś sen, a w nim...
Piszemy rozszerzenie dla Chrome ;-)
Jak wybrać urządzenie z Androidem żeby nie narzekać na brak updatowania systemu

wtorek, grudnia 22, 2015

Jak walczyć z gigantycznym kodem w Java'ie, część 1 ;-)

Bawiąc się kilkoma milionami linii kodu, które mamy w repo stwierdzam, że nic nie pobije grep'a w poszukiwaniu kodu po różnych projektach ;-)
Najpierw miałem skrypt, który leciał po liście projektów w repo, robił dla każdego z nich checkout,
później go buildował używając Mavena, a w końcu analizował przy pomocy javap.
Skrypt, który to robi wygląda tak:

import os

f = file("java_poms.txt")
lines = f.readlines()

out = open("decompiled.txt","w+")

def removeDir():
os.popen("rm -rf asources")

def choeckout(repo):
os.popen("hg clone "+repo+" asources")
print("Checkouted "+repo)

def make(repo):
os.chdir("asources")
os.popen("mvn clean compile -DskipTests=true")
res = os.path.isdir("target")
os.chdir("..")
print("Made "+repo)
return res

def analyze(repo):
f = os.popen("""javap -c $(find asources/target/classes/. | grep ".class$")""")
lines = f.readlines()
out.write("REPO:"+repo+"\n")
for line in lines:
out.write(line)
out.flush()
print("Analyzed "+repo)


for line in lines:
line = line.strip()
print(line)
choeckout(line)
buildSomething = make(line)
print buildSomething
if buildSomething:
analyze(line)
removeDir()

out.close()


Po paru godzinach biegania na jednym z serwerów zrobił mi gigantyczny plik, w którym mam zdekomplikowany do "assemblera" JVM kod naszych wszystkich aplikacji ;-)

Do tego mam jeszcze inne skrypty w Pythonie, które lecą po zdekompilowanym kodzie i np. budują mapę wszystkich miejsc gdzie są tworzone i wszystkich miejsc gdzie są używane message JMS, które dziedziczą po odpowiedniej klasie ;-)
W końcu jak szukam repo w którym jest dana klasa, to na razie po prostu szukam w tym wielkim pliku tekstowym nazwy klasy i sprawdzam jakie to repo ;-) [po to jest linia REPO: ;-)]

Sam plik java_poms.txt powstał przez puszczenie na serwerze gdzie jest zainstalowany Mercurial komendy:

find repos/ | grep ".hg" | grep "pom.xml"

i późniejszym wyrzuceniu nadmiarowych informacji.

W kolejnym odcinku, krótka opowieść o tym jak śledzić zależności między kilkuset repozytoriami ;-)


Podobne postybeta
SSD a programowanie
Migracja z blog.pl do blogger.com
OS X po 1.5 miesiąca... chyba wolę Ubuntu ;-)
Jak się dowiedziałem o tym, że w Polsce rusza Google Play Movies ;-)
Polowanie na Nexus 4 - wersja automagiczna ;-)

sobota, grudnia 19, 2015

Moto 360 v2 - to jest to :-)

Moto 360 v2 ma killer ficzer.... cały czas pokazuje godzinę ;-)
Oto on:

(jeden komentarz o owłosionej łapie, albo pytanie czemu założyłem zegarek na nogę i zabiję ;-) [nie wiem czy nudę, czy trochę czasu, ale zabiję ;-)])

Rozmiarami wersja 46 mm jest porównywalna ze starą Moto 360:

(po lewej Moto 360 v1, po prawej v2, jak ktoś ciekawy to po lewej stronie u góry to ręczny czytnik kodów paskowych... chyba)

Przy włączonym ambient mode, który pozwala na to by ciągle była widziana godzina na zegarku, po jakichś 18-19 godzinach zostaje nadal ~40% baterii.

Wydaje się też, że przekonstruowany czujnik do pomiaru tętna działa lepiej.

Wbrew temu co mówią plotki ładowarka z nowej Moto 360 v2 jest zgodna z tą z wcześniejszej wersji. Tak Moto 360 v2 może ładować się na ładowarce pierwszej Moto 360, jak i pierwsza Moto 360 na ładowarce wersji drugiej.

Stąd jeśli szukacie prezentu to Moto 360 v2 może być całkiem dobrym pomysłem.


Podobne postybeta
Pierwszy wpis v2.0 ;-)
Moto 360 i Android Wear po 3 dniach - zaczynam dostrzegać zalety ;-)
Wartość...
Moto 360 i Lollipop na Nexusach
Piszę sobie...

wtorek, grudnia 01, 2015

Pierwsza zasada wyboru pracodawcy - rozumieć co robi jego firma ;-)

Dostaję różne oferty pracy (czy bardziej starania się o pracę) i zauważam, że wielu rekruterów próbuje mnie wabić technologiami, albo tekstami o prężnym zespole, czy łamaniu standardów.

Ja bym wolał opis tego co robi firma, tak bym mógł zrozumieć biznes i bym mógł stwierdzić czy to jest coś co chciałbym robić.

Mogę się zgodzić na głupie technologie, walnięty proces i chaotyczne zarządzanie, jak to wszystko wiąże się z ciekawym modelem biznesowym, czy ogólnie ciekawą materią.
W końcu każdą z tych rzeczy (technologie, procesy i metody zarządzania) można zmienić, ba podobno tego się od nas inżynierów oczekuje, ale clue biznesu musi być od początku w miarę czytelne i zrozumiałe... OK, no chyba, że to startup. Wtedy powinno być jak najbardziej nowatorskie i dziwne.

Ale nawet najfajniejsze technologie w służbie pisania np. spam toola? Nie, jednak nie.
Nie warto.


Podobne postybeta
Dream job? ;-)
Szybkoholizm ;-)
Wyznania programoholika ;-)
Atak kreacjonistów
Jak się profesjonalnie kłamie