czwartek, września 18, 2014

Bloggeroid na Chrome OS - to działa... czasami ;-)

Dzięki narzędziu, które pozwala na wrzucanie na Chrome OS nie do końca oficjalnych wersji aplikacji Androidowych, udało mi się uruchomić na moim Chromebooku Bloggeroida (czyli moją aplikację dla Androida).


Jak widać działa, chociaż korzystanie z aplikacji jest mniej przyjemne niż na urządzeniach dotykowych czy nawet przy pomocy klawiatury na EEE Pad Transformerze.
Głównie chodzi o prawie widoczne opóźnienie między wciśnięciem klawisza, a pojawieniem się znaku na ekranie, słabym wsparciu dla operacji tekstowych w stylu wklej/wytnij i na tym, że jednak aplikacja nie otwiera się na cały ekran.

Nie wszystko działa też dobrze, albo w ogóle ;-)
Próba połączenia się z kontem zarejestrowanym na Chromebooku kończy się problemami ;-)


Ale i tak jest dobrze, skoro już teraz można uruchamiać inne aplikacje niż te wybrane i przygotowane przez Google, to pewnie zbliża się moment, gdy swobodnie będziemy mogli sami decydować której apki używać w wersji webowej, a której w Androidowej.
A w przyszłości może to wszystko zacznie działać też na innych systemach, gdzie jest Chrome? ;-)


Podobne postybeta
Android nie taki zły ;-)
Nowy potworek na tapecie ;-)
Windows 8 - błeee, ciągle błeeee
Programowanie na Chromebooku :-)
Gningerbread 2.3.3 - duży postęp :-)

wtorek, września 16, 2014

Smile Challenge ;-) - takie tam MVP

Uśmiechanie się, nawet jeśli nie jest nam wesoło poprawia humor i samopoczucie.

Ale człowiek zwykle jak mu źle zapomina o uśmiechu.

Wtedy w sukurs przychodzi technologia ;-)

W ciągu ostatniej godziny popełniłem rozszerzenie do Chrome o nazwie Smile Challenge :-)

Działa ono tak, że co jakiś czas (od 30 minut do półtorej godziny) stawia nam wyzwanie (zmienia się liczba przy uśmieszku), jeśli je zaakceptujemy to zaczyna nam rozszerzenie w dół odliczać sekundy.
Jeśli zaakceptujemy więcej wyzwań to czas uśmiechania rośnie ;-)

Jeśli ktoś chce obejrzeć jak to działa to na moim GitHubie są źródła, których można użyć do zabaw w Chrome.

Ktoś chętny do testowania? ;-)


Podobne postybeta
Bad, bad server. No donut for you.
Marznąca mgła
Klauzula samoluba?
Swing i GUI znów "przeszkadzają" ;-)
Android 3.2 na EEE Pad Transformer

piątek, września 12, 2014

Transhumanizm [długo i nudno ;-)]

Maszyny zaczną myśleć.
To pewnik. Pytaniem nie jest "czy?", a "kiedy?".

Powstrzymać je przed tym może tylko wcześniejsza zagłada ludzkości.

Jeśli zaczną myśleć to szybko nabiorą zdolności do samodoskonalenia.
Możliwe, że pierwsza maszyna zdolna do myślenia jak człowiek będzie wielkości stadionu piłkarskiego, ale jak się jej dobuduje drugi taki to będzie miała moc równą dwóm ludzkim mózgom, wtedy będzie w stanie zmniejszyć swoje rozmiary o trochę, np. o połowę, ale będzie mogła przy zachowaniu swojego rozmiaru zwiększyć swoją moc czterokrotnie w porównaniu do początku, takich iteracji będzie możliwe wiele.

W końcu maszyna czy też raczej maszyny będą od nas mądrzejsze.

Mogą dojść do wniosku, że trzeba dbać o ludzi, pomagać im, a samemu zajmować się rzeczami ważnymi.
Poznawać prawa natury, eksplorować kosmos, szukać innej inteligencji we wszechświecie.

Ludzkość zostanie zepchnięta do rezerwatu w którym będzie sobie mogła istnieć, ale każdy jej postęp i wynalazek będzie zacofany w stosunku do tego co wynajdą maszyny.

Stanie się kolonią mrówek stojącą na stole maszyn.

Tego się raczej nie da powstrzymać.
Natura potrzebowała na Ziemi co najwyżej 4.5 mld lat na to by zaistniała na drodze ewolucji inteligencja.

Tylko kwestią czasu jest to kiedy zbudujemy, albo zainicjujemy myślące maszyny. Skoro naturze się to udało w 4.5 mld lat, nam powinno zająć to mniej czasu, może milion razy mniej, może 100 milionów razy mniej.
Nie jesteśmy raczej w stanie powstrzymać prac prowadzących do celu, którym są myślące maszyny.

Mózgi biologiczne mają pewne ograniczenia wielkości wynikłe z ich budowy i są nawet naukowcy sugerujący, że nasze mózgi są bliskie tych ograniczeń.

Maszyny nie powinny mieć tego problemu, przynajmniej tak wcześnie.

Mamy przekichane.

Chyba, że się przyłączymy do maszyn, że będziemy starali się połączyć z nimi w celu zrobienia upgrade'u człowiekowi.

Już to zresztą robimy.

Naprawiamy ludzi, którzy doznali w wypadkach ran prowadzących do utraty kończyn, przywracamy słuch, naprawiamy wzrok.
Sterujemy sercem gdy szwankuje, usuwamy szum w mózgu blokując problemy z ruchem.

Od tego jest krok w kierunku rozszerzania naszych możliwości.

Protezy oczu, które przekazują obraz do mózgu są jeszcze niemożliwe, ale najprawdopodobniej są kiedyś możliwe.
Od nich już krok to oczu z zoomem, albo takich które pozwolą patrzeć w podczerwieni czy w po prostu szerszym spektrum (nawet jeśli dla potrzeb mózgu będzie musiała być ta skala "barw" rzutowana na barwy widzialne).

Już teraz próbuje się zwiększać możliwości mózgu (czasowo) przez traktowanie mózgu słabym prądem.
Krok stąd do implantów, które byłby w stanie zwiększać pewne możliwości mózgu "na żądanie".

Trzeba przyłączyć się do maszyn, użyć ich do zwiększenia naszych możliwości.
Sprawić by "nie opłacało" się budować maszyn, które zachowywałyby się irracjonalnie. Od tego powinniśmy być my.

Taki rozszerzony człowiek powinien być w stanie współpracować z maszynami i chociaż przez dłuższy czas być im równym.

Może wtedy taki rozszerzony człowiek zobaczy coś co dała nam ewolucja co będzie dawało mam nadrzędną rolę w takim węglowo-metalowym układzie?

P. S.
Btw uczuć, które moglibyśmy wnieść do układu... Raczej nie są trudne do powtórzenia, w końcu mają nawet bardziej znaczące uzasadnienie ewolucyjne niż np. zdolność do wymyślenie rachunku różniczkowego ;-) nie przeceniałbym ich wkładu.


Podobne postybeta
Terminatorowa refleksja ;-)
Język a postrzeganie rzeczywistości
Rankingi, to nie takie proste ;-)
Co? Czyli o tym jak człowiekowi chce się coś zrobić... ale nie ma pomysłu "Co?" ;-)
Kryzys użyteczności

środa, września 10, 2014

O wyższości aplikacji natywnych nad tymi w HTML5 - od strony developera

W ramach zabaw z Polymer'em napisałem sobie "aplikację".

"Aplikacja" służy do zapisywania ciekawych punktów na mapie :-)
Nieraz idąc gdzieś coś zauważałem i chciałem móc jakoś zapisać ten punkt by go później sprawdzić w sieci (np. w Wikimapii, albo po prostu obejrzeć jak to wygląda z góry).
Nie miałem jednak żadnego narzędzia do tego (możliwe, że w marketach są ich tysiące, ja nie lubię szukać w marketach bo to jest nudne).
Dlatego sobie napisałem takową "aplikację".

Nie jest to the most needed app w historii ;-)

Ale jest ciekawa na tyle by spróbować ją popełnić w jakiejś formie ucząc się nowej technologii.

Popełniłem ją więc w Polymer'ze.

Prezentuje się dość skromnie:



Działa też tak sobie, bo to taki prof of concept ;-)
Co można sprawdzić tutaj. (btw. here czy tutaj muszą być jednymi z najmniej istotnych słów w linkach ;-))

Ale szczegół jak wygląda i działa "aplikacja".

Ciekawsze jest to, że przez sam fakt bycia HTML5 jest strasznie nieprzyjemna od strony developera gdy chce się ją "wypuścić".

Trzeba mieć serwer web.

Gdyby to była aplikacja natywna zrobiłbym APK, wrzucił na jakiś serwer, albo do Google Play.
W przypadku HTML5 musiałem na serwer wrzucić kilkadziesiąt plików.

To co jest największą zaletą Internetu, czyli podzielenie na pliki co pozwala na pobieranie tylko tego co jest potrzebne i w razie potrzeby na zmianę tylko tego co jest potrzebne, jest też największą wadą bo wymaga posiadania infrastruktury.

Trudno używać ficzerów platformy.

Chciałbym móc jakoś przesłać lub podzielić się ciekawymi punktami.
W Androidzie zrobiłbym Share i by wszystko działało, w HTML5 to nie przejdzie ;-) [bo zabili web intents... do teraz nie wiem czemu].
Na razie dla HTML5 udało mi się wymyślić wrzucenie do schowka, albo użycie mailto (które jest deprecated), ale jeszcze ich nie zaimplementowałem.

Wszystko "pachnie" webem.

Co prawda użyłem tutaj Paper elementów, które wspierają Material Design to nadal cała aplikacja wygląda bardzo webowo.

Ale są i zalety :-)

Zaletą jest to, że taka "aplikacja" działa praktycznie wszędzie ;-)
Do tego takie coś jednak łatwiej napisać, szczególnie używając Polymera.

Jak dla mnie HTML5/JavaScript + Polymer to teraz genialne narzędzie do testowania pomysłów i robienia prototypów.

Stąd następny w kolejce jest Bloggeroid w takiej wersji ;-) acz wątpię w jego sukces bo API dla Bloggera nie dodaje specjalnych nagłówków, które pozwoliłyby realizować AJAXowe odwołania do serwerów z innej domeny.


Podobne postybeta
Data binding w Polymerze jest oszukany ;-)
Dajcie mi język marzeń ;-)
Galileoskop
Śledzimy geolokalizację ;-)
Niech dadzą Darta dla Androida ;-)

sobota, września 06, 2014

Czy Macbook Pro jest wart swojej ceny?

Nie.

Nie jest wart. Gdy patrzymy na pieniądze to za mniejsze możemy mieć sprzęt o lepszych parametrach i podobnym designie.

Ale jeśli zadać pytanie ciut inaczej i spytać "Czy warto za Macbooka Pro zapłacić jego cenę?", to odpowiedzią jest "tak" :-)

Cały dowcip polega na tym, że powoli stajemy się na tyle bogaci, że zakup raz na 3 lata laptopa za ~10k PLN* nie jest tak straszny i "zysk" z bezproblemowości w porównaniu do laptopa za 5k staje się kuszący.

Idąc na spotkanie nie musisz brać ze sobą zasilacza.
W plecaku nie musisz obkładać laptopa ręcznikiem czy czymś podobnym.
Wyjmujesz i działa.

Inne też działają, ale cholerny Macbook Pro jest taki jakiś bardziej bezszwowy. Używanie go jest takie bardziej gładkie....

Jakby było fajnie gdyby taki Linux, albo chociaż Windows stały się takie jakieś mniej kanciaste...

Co nie zmienia faktu, że w domu pracuję na Ubuntu (bo Windows od Asusa nie daje prostego sposobu przeniesienia się na SSD) i jest całkiem fajnie.
Ale w pracy miałbym problemy z powrotem do Linuksa z OS X ;-)



* - od razu zaznaczam, że mówię z perspektywy kogoś kto potrzebuje z racji zawodu/hobby sprzętu który jest wydajny i którego można bez zbytniego trudu używać przez powiedzmy 10 godzin w ciągu dnia. Tzw. normalni ludzie nie potrzebują takiego sprzętu.


Podobne postybeta
Macbook PRO Retina i OS X po 2* tygodniach
Macbook - chyba chcę (prywatnie)
Stare = do zniszczenia?
Konsumpcjonizm - to co tworzy i toczy zachód
Światełko w tunelu :-)

poniedziałek, września 01, 2014

Kilka myśli ;-)

Kilka myśli na dziś ;-)

Pierwsza, że wodoodporny Kindle byłby największym wynalazkiem w dziejach ludzkości ;-)
W końcu można by było bezpiecznie połączyć kąpiel z czytaniem ;-)
Choć może z drugiej strony, odebrałoby to czytaniu w wannie ten dreszczyk emocji? ;-)

Drugie, wyciek fotek gwiazd.
Od dawna wydaje mi się, że Google i Apple powinny dodać do swoich systemów kawałki, które wykrywałyby "nagie fotki" (a umieją to robić, oj umieją) i nie synchronizowałyby ich automatycznie, a pytły usera czy jest na 100% pewien.
Ba, nawet mogłoby to działać podobnie jak rozpoznawanie obiektów w Google Gogle, czyli w momencie zrobienia zdjęcia, które mogłoby podchodzić pod "nagą fotkę" powinno pokazywać notyfikację.
Tak, byłoby to trochę creepy, tak ludzie mogliby zacząć wyłączać synchronizację zdjęć, ale w dłuższej perspektywie panowałoby większe zaufanie.
Bo nagim fotkom mówię zdecydowane, stanowcze "być może" ;-) ale tylko wtedy jeśli ich bohaterki (albo bohaterowie, ale tym mówię "nie, dziękuję" ;-)) same chcą je komuś pokazać.

Trzecie, apartamenty.
Lekko mnie śmieszy, ale też powoli wkurza jak czytam, że miejsce gdzie będę mieszkał to "apartamenty".
Dla mnie to jest blok, nie apartamentowiec.
Chciałbym mieszkać w apartamentowcu, ale to "ciut" wyższa liga.
A tu jest film z moim blokiem ;-)




Podobne postybeta
Lecę do Stanów... i co z tego? ;-)
Jak Chrome Firefoksa ruguje.....
Dwa małe błędy - czyli czemu świat nie jest do końca taki jak powinien być ;-)
Roboty i Android...
[*] najbardziej pusty imotek

niedziela, sierpnia 31, 2014

Data binding w Polymerze jest oszukany ;-)

Bawię się Polymer'em od Google i bardzo mi się podoba, chociaż trochę mnie zawodzi.

Chciałem połączyć tag <google-map> z moim <geo-location>, miało to wyglądać tak:


<geo-location id="loc" lat="{{lat}}" lon="{{lon}}"></geo-location>


<google-map id="map" latitude="{{lat}}" longitude="{{lon}}" minZoom="1" maxZoom="30" fit></google-map>

Gdzie {{lat}} i {{lon}} służyć miały do przekazania wyników z <geo-location> do <google-map>...

Problem w tym, że to działa tylko wewnątrz <template>, czyli musiałem stworzyć swój nowy tag <my-map>:

  <link rel="import" href="bower_components/polymer/polymer.html">

  <link rel="import" href="google-map.html">

  <link rel="import" href="geo-location.html">

  

<polymer-element name="my-map">

<template>

    <geo-location id="loc" lat="{{lat}}" lon="{{lon}}"></geo-location>

    <google-map id="map" latitude="{{lat}}" longitude="{{lon}}" minZoom="1" maxZoom="30" fit>

</google-map>

  </template>

  <script>

    Polymer('my-map',{});

  </script></polymer-element>

Tylko po to by móc przerzucić mapę do lokalizacji w której się znajduje wyświetlający ją komputer.

Przy okazji mój tag <geo-location> wygląda tak:


<link rel="import" href="bower_components/polymer/polymer.html">

<polymer-element name="geo-location" attributes="lat lon">

<template>

    <style>

    :host {

      display: none;

    }

    </style>

  </template>

  <script>

    Polymer('geo-location', {

        lat: 0.0,

        lon: 0.0,

      created: function() {

        var t = this;

        function updatePosition(position) {

            var lat = position.coords.latitude;

            var lon = position.coords.longitude;

            t.lat = lat;

            t.lon = lon;

        }

        navigator.geolocation.getCurrentPosition(updatePosition);

      }

      

    });

  </script>

  

  

</polymer-element>

Działa bardzo prosto.
Najpierw wskazuje, że ma dwa atrybut lat i lon, później zaś w momencie wywołania przez Polymera kodu dla eventu created pobiera lokalizację z navigatora i przerzuca ją do lat i lon obiektu.

Ta konieczność trzymania tego wszystkiego w oddzielnym tagu jest trochę niefajna.
Przyjemniej by było gdyby data binding działał także poza tagami.

[to całe moje zajmowanie się Polymerem wynika stąd, że obiecałem za 2 tygodnie zrobić o nim prezentację w pracy w ramach Technical Friday ;-)]


Podobne postybeta
"Kodowanie" na Chrome OS ;-)
Skróty klawiszowe
Z NMEA do KML (chyba najbardziej kryptyczny tytuł postu jak stworzyłem ;-))
O wyższości aplikacji natywnych nad tymi w HTML5 - od strony developera
Robimy widget do Windows 7 :-)

[Updated] Czytanie Pocketa ;-)

W moim Pocket jest parę tysięcy artykułów do przeczytania....
Szanse na to, że je wszystkie przeczytam są bliskie zeru (musiałbym chyba już teraz czytać z 3-4 miesiące non-stop).
Dlatego czasami słucham artykułów.
Na Androidzie jest to proste, ale czasem potrzebuję tego na PC.

Tutaj pomocny przychodzi skryptozakładka, której kod wygląda tak:

javascript:{function speak(txt) { var u = new SpeechSynthesisUtterance(txt); speechSynthesis.speak(u); }; var elems = document.getElementById("content").innerText.split("."); var idx=0; function s() { if (!speechSynthesis.speaking) speak(elems[idx++]); if (idx<elems.length) setTimeout(s,100);}; s();}

Cała idea jej działania polega na tym, że najpierw pobierana jest treść wpisu (wraz z tytułem i paroma dziwnymi rzeczami), później treść wpisu dzielona jest na zdania i w końcu są one czytane.

Wszystko działa na Chrome.

Czasem może dostać zadyszki i wtedy ratuje nas tylko speechSynthesis.cancel() w konsoli JavaScript.

Należy jej używać będąc w artykule w Pocket.
Kod powyżej należy wkleić do skryptozakładki (jak zakładka tyle, że zamiast adresu strony ma to co wyżej).

Update:
Nowa wersja skryptozakładki:

javascript:{function speak(txt) { var u = new SpeechSynthesisUtterance(txt); speechSynthesis.speak(u); }; var elems1 = document.getElementById("content").innerText.split("\n"); var elems=[]; for (var i=0; i<elems1.length; i++) { var el = elems1[i].split("."); for (var j=0; j<el.length; j++) elems.push(el[j]);}; var idx=0; function s() { if (!speechSynthesis.speaking) speak(elems[idx++]); if (idx<elems.length) setTimeout(s,100);}; s();}

Update2:
Coby mieć pewność, że czytanie będzie po angielsku trzeba dodać jeszcze jedną rzecz do skryptozakładki :-)

javascript:{function speak(txt) { var u = new SpeechSynthesisUtterance(txt); u.lang="en-US"; speechSynthesis.speak(u); }; var elems1 = document.getElementById("content").innerText.split("\n"); var elems=[]; for (var i=0; i<elems1.length; i++) { var el = elems1[i].split("."); for (var j=0; j<el.length; j++) elems.push(el[j]);}; var idx=0; function s() { if (!speechSynthesis.speaking) speak(elems[idx++]); if (idx<elems.length) setTimeout(s,100);}; s();}

Podobne postybeta
localStorage odsłona 2 - zaczynają się kłopoty ;-)
Sekrety klasy String ;-)
Matematyczne podstawy zakupu skarpetek ;-)
Zinwigiluj się sam ;-)
HTML5 goodies - localStorage

czwartek, sierpnia 28, 2014

0:00 - godzina updatów ;-)

Kiedyś to była godzina duchów, dziś, dzięki technologii i planom nocnym północ to czas updatów ;-)

Wtedy właśnie robię apt-get update po czym apt-get upgrade, to wtedy Chromebookowi każę sprawdzić czy nie ma nowej wersji systemu, a na wszystkich urządzeniach Androidowych sprawdzam czy nie ma aktualizacji w sklepie ;-)

Właściwie tylko Android Studio pozwalam szukać updatów wcześniej.

Co też nielimitowany internet komórkowy między 0:00 a 9:00 robi z człowiekiem.... ;-)


Podobne postybeta
Windows Mobile 6 w Asus A636N
Programowanie jako sztuka oszukiwania ;-)
Bloggeroid na Chrome OS - to działa... czasami ;-)
OOo2GD w Ubuntu 9.10 - da się.
Marudzenie nocne ;-)

środa, sierpnia 27, 2014

A może by tak rubber duck debugging stosować do problemów życiowych? ;-)

Zauważyliście, że tym łatwiej dawać rady [albo nie dawać, ale mieć swoje zdanie] im mniejszy związek emocjonalny z tym komu się radzi?
Wtedy człowiek zwykle bardziej racjonalny jest.

Ciekawe czy dałoby się racjonalnie spojrzeć na swoje sprawy?

Taki rubber duck debugging daje jakieś hinty jak można do tego podejść.
Tam przez opowiadanie problemu, czyli przepuszczenie go przez fragment mózgu, który odpowiedzialny jest za mowę odsuwamy trochę problem od siebie i przez to często widzimy go w innym świetle i przyczyna staje się oczywista.

Może więc w razie problemów w życiu osobistym należałoby je spisywać, albo mówić sobie nagrywając się na video? :-)

[OK zrobiłem eksperyment i hmm... może i działa, ale nie wiem czy tędy droga ;-)]

Trzeba próbować dalej ;-)


Podobne postybeta
OO.org i Google Docs bez konwersji są tuż tuż ;-)
Trzy heurystyki developerskie, których wdrożenie uchroni Cię przed zawałem i pozwoli przebić balon zadufania ;-)
Jak oni to dowiozą? ;-)
Długa Ziemia vs Wysokie Megi...
Złe Markety ;-)