poniedziałek, maja 30, 2016

Folderowicze vs tagerzy - Przemkowa teoria podziału ludzi ;-)

Ludzie dzielą się ogólnie na 2 obozy.

Folderowiczów i tagerów.

Folderowicze to ludzie, którzy układają rzeczy w folderach, w mailu mają foldery w stylu "projekty" w nich podfoldery w stylu "in progress" i tak dalej.
Projekt nad którym aktualnie pracują mają w podkatalogu "currentProject" albo podobnym w katalogu domowym.
Jeśli zdarzy im się pracować z większą ilością projektów trzymają je jako podkatalogi jakiegoś master folderu.
Lubią Outlooka i ogólnie potrafią kategoryzować rzeczy....
Nie jestem jednym z nich....

Tegerowcy to ludzie chaosu. Ich głównym narzędziem pracy jest wyszukiwarka. Do maila trafiają przypominając sobie słowa, które w nim powinny się pojawić.
Dokumenty rozrzucają gdzie popadnie.
Jedną rzecz mogą zkategoryzować do kilku kategorii, które opisują tagami.... co ciekawe ta sama rzecz 2 razy kategoryzowana może wylądować w różnych miejscach.... chociaż część tagów powinna się zgadzać.
Projekty tworzą zwykle w katalogu głównym, albo mają kilka miejsc, raz katalog projects, innym razem projects w dokumetnach, a jeszcze innym razem katalog X....
Wolą GMAILa z jego wyszukiwarką.
Jestem jednym z nich.....

I stoi przede mną trudne zadanie zrobienia porządku w moim Google Drive ;-)
Momentami zastanawiam się po co, skoro i tak do dokumentów trafiam prawie zawsze przez wyszukiwarkę...
Ale jakaś tam przyzwoitość każe mi jednak zrobić porządki. I to jest trudne ;-)


Podobne postybeta
Gdybym miał okulary Google.... (znaczy, kiedyś będę miał ;-))
Skąd się biorą źli i dobrzy nauczyciele? - Przemkowa teoria ;-)
Raport z boju z Androidem ;-)
Piszemy serwis społecznościowy w Google App Engine
GZIPem w plika z pomocą ChatGPT ;-)

czwartek, maja 19, 2016

Google I/O 2016 - subiektywnie o keynote

Obejrzałem keynote i to nie była ta gwiazdka na którą czekałem ;-)

Google Home i Google Assitent nie zostały w ogóle pokazane w działaniu. Zobaczyliśmy je tylko na filmach, a na tych Google Glass też wyglądało fajnie.
Wygląda jakby zapomniano o Google Now, Google Now on Tap i trybie konwersacyjnym, który był już od roku dostępny.
Możliwości integrowania swoich aplikacji nadal nie widać...
Był klasyczny przykład z zamawianiem biletów do kina (w Polsce i większości świata raczej nie zadziała...) oraz rezerwacji w restauracji. Rzeczywiście są to rzeczy, które robimy tak często, że potrzebujemy by maszyny nas w tym wyręczyły ;-)
To coś podobnego jak aplikacja na zegarek do wzywania Ubera. Sama apka odpala się dłużej niż trwałoby wyjęcie telefonu i zamówienie, do tego na tyle często by na tym coś zyskać robi to znikoma liczba userów.

Allo i Duo wyglądały lepiej (szczególnie Duo jeśli działało po WiFi gdzie były miliony urządzeń (chociaż pewnie w innej sieci na innym kanale ;-)).
Ale to produkty dla ekstrawertyków, taki introwertyk jak ja nie skorzysta zbytnio ;-)
Coś się we mnie buntuje, że do wysyłania emotek zaprzęgnięto sztuczną inteligencję ;-)
Jak do niedawna najmądrzejsi ludzie spędzali czas nad tym jak pokazać nam lepsze reklamy, to teraz wygląda jakby zajmowali się wymyślaniem emotek ;-)
Reagowanie podpowiedziami na obrazki robi wrażenie, ale jest chyba rozwinięciem tego co wprowadzono kilka lat temu, czyli rozpoznawania tego co jest na obrazku. Teraz ma to przyjemniejszy interfejs.

Nowości w Android N są fajne, ale nie są znów takimi nowościami bo o wielu już słyszeliśmy.
JIT i 2 obrazy systemu są ciekawe.
Wsparcie dla ficzerów Java 8 w Androidzie też jest fajne, szkoda, że dopiero w N.

TPU (TensorFlow Processor Unit) mogą namieszać, jeśli Google udostępni do nich dostęp w swojej chmurze.
Chociaż z drugiej strony, nadal nie wiem czy bardziej będą używane do "klasycznego" machine learningu z regresją liniową czy logistyczną, albo bayesem, czy może do deep learningu?

Mam wrażenie, że wszelkie boty i asystenci cierpią na przypadłość znajdowania się w złym miejscu w uncanny valley. Kontakty z nimi są w wielu przypadkach bardzo dobre i ma się wrażenie, że rozumieją co się do nich mówi....... i w pewnym momencie jest amba i czar pryska.

Firebase fajnie rośnie.

Nadal nie wiemy co z Chrome OS.

Mnie brakuje nadal prostego uruchamiania aplikacji HTML/JavaScript na Androidzie.
Najfajniej by było jakby można było w systemie uruchamiać aplikacje dla Chrome...

Nadal nie ma nowego języka dla Androida. Mimo sprawy z Oraclem.
Podobno gdzieś tam z tyłu, robią coś z Dartem, ale czy coś z tego wyjdzie?

To nie była ta gwiazdka na którą czekałem ;-)


Podobne postybeta
Po Google I/O - TensorFlow, App Maker, Kotlin i Firebase ;-)
Google I/O 2015 spojrzenie drugie
Social media to nie jest świat dla introwertyków/ambiwertyków ;-)
Gwiazdka tuż, tuż ;-)
100 dni z Linuksem ;-)

niedziela, maja 15, 2016

ToDo od Trello jako "oddzielna aplikacja"

Byłem na GeeCON 2016.
Było całkiem miło, ale zdarzały się nudniejsze wykłady...

Na jednym z nich, poświęconym Self-Healing Systems zakodziłem sobie małe "narzędzie".

Wygląda tak:


Środek to Trello, ale "obudowa" jest moja ;-)

To prosta Aplikacja Chrome.

Jak powstała?

Najpierw trzeba było stworzyć manifest, czyli plik manifest.json.


{
"name": "Trello display",
"description": "Trello display",
"version": "0.1",
"manifest_version": 2,
"app": {
"background": {
"scripts": ["background.js"]
}
},
"permissions": [
"https://trello.com/","webview","storage"
]
}

W tym pliku opisujemy naszą aplikację.
Najważniejsze to to co widać w "app" i "permissions".
"manifest_version" jest konieczne ;-)
Co do reszty nie mam zdania.

W "app" opisujemy skrypty, które będą służyły do uruchomienia naszej aplikacji.
"background" w "app" wskazuje skrypt, który będzie uruchamiany wraz z naszą aplikacją.

Tu warto poczytać o samych aplikacjach i rozszerzeniach dla Chrome.

Nasz background.js wygląda tak:


chrome.app.runtime.onLaunched.addListener(function() {
chrome.app.window.create('wrapper.html', {
'bounds': {
'width': 1200,
'height': 480
}
});
});

Każemy tutaj Chrome by w reakcji na uruchomienie aplikacji (w listenerze dla zdarzenia onLaunch) Chrome otwarło okienko z plikiem wrapper.html o rozmiarach 1200 na 480 pikseli.

wrapper.html to UI naszej "aplikacji".



<html>
<body>
<webview id="webview" style="width: 100%; height: 100%;" src="data:text/html, <html><h1>Loading...</h1></html>" partition="persist:przemelekTrelloApp"></webview>
<script src="wrapper.js">
</script≶
</body>
</html>

Tu najważniejsze to tag "webview".
Osadza on na stronie nową przeglądarkę (z własnymi ciasteczkami, które będą teoretycznie trzymane w oddzielnym "magazynie" w naszym Chrome, który tutaj zowie się "persist:przemelekTrelloApp"), która jest odizolowana od skryptu. Dzięki temu nawet jeśli autor strony zablokował jej umieszczanie w ramce to możliwe jest osadzenie takiej strony w naszej.... z tym, że nie mamy takich możliwości jak z ramką.
To by było prawie wszystko, ale tutaj zamiast załadowania Trello mielibyśmy tylko napis Loading... ;-)
Można by było tam po prostu wstawić https://trello.com, ale przy każdym uruchomieniu aplikacji lądowalibyśmy na stronie logowania... Po co?

Żeby pamiętać ostatni adres na którym byliśmy mamy skrypt w wrapper.js

chrome.storage.local.get(function(items) {
var url = items["url"];
if (!url) url="https://trello.com";
console.log(url);
webview.src=url;
console.log("toster");
console.log(webview.src);
});
webview.addEventListener('loadcommit', function(event) {
var url = event.url;
chrome.storage.local.set({url:url});
});

Rejestrujemy się na zdarzenie "loadcommit", które występuje zawsze po tym jak zawartość strony (bez obrazków i innych podobnych) została załadowana, czyli wtedy gdy adres strony jest już znany. Pobieramy url ze zdarzenia i wrzucamy je do lokalnego storage'a (coś podobnego do localStorage, z tym że apki Chrome nie mają prawa dostępu do localStorage).
Dodatkowo w momencie uruchamiania skryptu próbujemy odczytać to co jest zapisane w lokalnym storage'u. Jeśli jest tam coś pod właściwością url to wstawiamy to jako src do webview i już wszystko działa :-)

I to by było na tyle ;-)

Źródła są na GitHub'ie.

Jakby to kogoś interesowało i chciałby użyć to można pobrać, po zapisaniu na dysku idziemy do strony z Rozszerzeniami (menu hamburger w prawym górnym rogu Chrome -> Więcej narzędzi (aka More Tools) -> Rozszerzenia (Extensions) i przeciągamy pobrany plik do rozszerzeń. Chrome powinien go zainstalować)


Podobne postybeta
Robimy widget do Windows 7 :-)
Jak "okradłem" Google Readera ;-)
Chrome2ChromeV2 na GitHub :-)
"Kodowanie" na Chrome OS ;-)
Trudniej jest lepiej.... czyli AccountManager w Androidzie...

wtorek, maja 03, 2016

Ucieczka z Evernote - wersja 0.0.1 ;-)

Kilka dni temu dopadła mnie myśl by stworzyć #cookbook'a, czyli miejsce gdzie będę wrzucał wszelkie przydatne/ciekawe rzeczy.

Rzeczy w stylu tego jak zrobić tunel po SSH, albo listę rzeczy, które trzeba mieć przed podróżą ;-)

Wybrałem Evernote, bo z tych rzeczy, których próbowałem (Google Drive, Google Sites, pliki na dysku, Google Keep) było najbardziej wygodne.

Opłaciłem sobie nawet roczną subskrypcję Premium.
Ale ponieważ mam tam zamiar wrzucać naprawdę wszystko co jest przydatne, to chcę mieć drogę ucieczki.

I ostatnie parę godzin właśnie pracowałem nad tą drogą ucieczki ;-)

Źródła są na GitHub'ie.

Nie jest to narzędzie skończone, bo to wynik ostatnich paru godzin pracy.
Ale działa w wielu przypadkach ;-)

Coś co w Evernote wygląda tak:
 W ZIM Wiki  po konwersji wygląda tak:


Konwersja jest tylko w 1 stronę.

Formatowanie działa jakby nie chciało, bo niestety, albo stety, zależy jak na to patrzeć ;-), Evernote używa XMLa i HTMLowych tagów, a ZIM korzysta tylko i wyłącznie z tekstu i wiki-syntax.


Podobne postybeta
Pracowite Google
[SOLVED :-)] Google kłamie ;-) co do tego jak często odświeża subskrypcję kalendarzy
Zmierzch Webu?
Fix na problem, który męczył Bloggeroida od lat.....
Przydatne narzędzia ;-)