Diaspora. Facebook killer? Rozproszona społecznościówka open source dla control freaków.

10:55, 17 września 2010 roku

| Ciekawe strony, Opinie, Technologia

Wczoraj pojawiła się pierwsza odsłona Diaspory. Nie jest to wersja dla użytkowników końcowych, lecz dla developerów. Aby zainstalować ją na swoim komputerze trzeba się trochę namęczyć. Ale może najpierw odpowiedź na pytanie

Co to jest Diaspora?

Projekt powstał na uniwersytecie w Nowym Yorku. Idea jest właściwie identyczna do tej z Appleseed. Lepszy jest marketing. Łatwiejsza ma być instalacja.

Diaspora, w zamyśle twórców, jest rozproszoną siecią społeczną, pozwalającą na kompletną kontrolę nad danymi w niej udostępnianymi. Dostarczana na zasadach Open Source ( aczkolwiek widać, że autorzy chcą mieć kasę z innych źródeł – czemu się nie dziwię, bo jednak cos ze swojej pracy mieć muszą ), rozbudowywalna przez API i napisana w Ruby. Rozproszona – oznacza działająca na zasadach peer-to-peer. Chroniona jest przez protokół SSL oraz enkrypcje PGP – żadna wiadomość nie może przemieszczać się między instancjami “otwartym tekstem”.

Każdy użytkownik Diaspory ma mieć swoją kopię/instancję aplikacji uruchomioną na swoim serwerze (komputerze) i wystawioną na świat.

Dla nie posiadających własnego miejsca hostingowego twórcy oferować mają konta na zasadach podobnych do WordPress.com – gdzie dany węzeł ( w terminologii Diaspory “seed” – yep, p2p ) będzie dostępny pod daną subdomeną ( i przechowywany na serwerach twórców projektu – co, tak z deczka tyci tyci, kłóci się z kontrolą użytkownika nad danymi, nie? ).

No, ale generalnie każdy użytkownik musi mieć jak wystawić na świat swoją instancję Diaspory – a do tego potrzebny jest hosting z Ruby 1.8.7 na pokładzie. Co jest oczywiste, żeby seed był widoczny dla innych, i aby mógł odbierać dane od znajomych, musi być stale włączony. Dla większości ludzi domowy PC odpada. A już szczególnie biorąc pod uwagę, że łącza w domach mogą do tego nie wystarczyć.

Jak wymieniać się danymi?

Gdy już mamy naszą Diasporę – czyli taki nasz profil, wypełniony danymi i wystawiony w sieć na “naszym” serwerze – musimy mieć możliwość udostępniania tego w internecie ( oczywiście decydując czy zdjęcia ze srogiej imprezy na której dużo się działo a nawet więcej się lało mają widzieć wszyscy, czy może tylko osoby które w niej uczestniczyły? ).

Dane oczywiście mogą być publiczne, ale mogą być też dostępne tylko dla jednej konkretnej osoby. Czyli gdy wiemy, że Łysy i Młody z którymi się na imprezie bawiliśmy mają swoje seedy w necie pod adresami http://mlody.joindiaspora.com i http://lysy.joindiaspora.com to możemy wpisać te adresy w “dodaj znajomego”, wysłać zaproszenie, i zdecydować co który ma widzieć. Gdy już węzły Młodego i Łysego zapoznały się z naszym węzłem, to gdy tylko napiszemy jakiś nowy status, to i oni go zobaczą. A gdy któryś z nich postanowi go skomentować, to ten komentarz wysłany zostanie do wszystkich trzech osób ( tak, to jest Facebook ).

Idea jest piękna, prosta i.. powiedzmy, że zrealizowana ( choć dalej nie udało mi się odpalić Diaspory na moim komputerze – trzy godziny męczenia się starczą póki co – to widziałem kilkoro uradowanych ludzików wysyłających sobie nawzajem wiadomości o tym jak to fajnie mieć coś, czego prawie nikt oprócz nich nie ma ;-) ).

Tak, bo póki co to ta aplikacja nie ma w ogóle dokumentacji. Tutoriale “jak zainstalować” powstają na blogach różnych niezrzeszonych w projekcie ludzi. Diaspora oparta jest o Ruby, z którego ja nie miałem okazji dużo korzystać, więc trudno mi samemu debugować błędy. Natomiast jeszcze żaden poradnik nie przeprowadził mnie przez proces instalacji aplikacji tak, żeby wszystko działało ( na mojej developerskiej Fedorze, bo nie chce zaśmiecać sobie Windowsa). No i niestety nie wszędzie dostępne są paczki z odpowiednią wersją Ruby. Udało mi się natomiast dowiedzieć, niejako przy okazji, o ciekawej bazie danych MongoDB – zorientowanej w okół zapisu dokumentu, a nie w modelu relacyjnym czy hierarchicznym. Ale to temat na osobny wpis.

Przyszłość Diaspory

Chłopaki z NYU zdobyli rekordowe 170k$ na rozwój projektu przy pomocy Kickstarter. W ich ideę uwierzyło 6479 ludzi. Wielu ludzi z miejsca ich nie cierpi. Ciekawe kto będzie miał rację?

Ja, mimo wszystko, wróżę projektowi ciekawą przyszłość. Ale mogącą się zdarzyć tylko przy spełnieniu kilku warunków. Musi powstać dokumentacja – zarówno dla developerów jak i prostych szaraczków – która wyjaśni dokładnie proces instalacji i jak to wszystko działa. Muszą powstać miejsca hostingowe dla Diaspory na których ludzie będą mogli odpalać swoje seedy ( i powierzać tym firmom swoje dane ;-) ). Twórcy aplikacji nie mogą być łasi na kasę – a niestety takie zapędy można u nich zaobserwować ( a może się mylę? ). Jedyny powód dla którego to może się przyjąć to skala – czyli odpowiednia liczba ludzi korzystająca z tego rozwiązania, aby i inni chcieli z niego korzystać. No i.. musi być to lepsze niż Facebook do którego wszyscy zdołali już przywyknąć ;-)

Coś jeszcze?


Napisane przez Zenobius | Komentarzy (0) | Permalink

Co przeczytać by zostać programistą WWW piszącym w PHP?

20:07, 15 września 2010 roku

| Notka, Opinie

Po wpisie o tym jak zostałem programistą kilka osób zapytało się mnie o więcej konkretów – jako, że konkretami są książki to poniżej krótka lista tych które stanowią zupełne podstawy PHP, SQL, Linuxa i Apache’a ( tzw. LAMP ). Po ich przeczytaniu powinniście znać słownictwo i programowanie w PHP na tyle, żeby móc umieć: napisać aplikacje rozwiązujące konkretne problemy, umieć przeczytać czyjś kod ( ze zrozumieniem! ), móc użyć gotowych frameworków i zrozumieć jak działają, no i mieć podstawy pozwalające na dalsze dokształcanie się w internecie.

Ja sam przerabiałem różne książki, z różnych serii wydawniczych i pisane przez wiele różnych osób. Do samego PHP4 miałem około trzech książek podstawowych i dwie lub trzy dotyczące bardziej zaawansowanych zagadnień. Potem nadszedł PHP5, ale wtedy już wiedziałem które książki kupować.

Najfajniej mi się czytało książki z serii Wrox, wydawane w Polsce przez Heliona.

Co programista powinien wiedzieć?

Według mnie samo PHP nie wystarczy. I mimo, że PHP uważane jest przez wielu za prosty i prostacki język ( głównie dlatego, ze “próg wejścia” jest niski – czyli wystarczy trochę wiedzy, by mój pisać skrypty PHP, które są wątpliwej jakości ), to jednak pozwala on na wiele konstrukcji używanych w językach bardziej zaawansowanych, takich jak C++, Java czy C# . Ale wojny językowe to osobny temat. Skupmy się na tym co programista wiedzieć powinien, aby umieć pisać kod dojrzały i profesjonalny. Tak, co by “zaawansowani programiści” mieli mniej powodów do naśmiewania się z developerów PHP ;-) Oto lista zagadnień:

Podstawy programowania ogólnie ( czyli znajomość mechanizmów, które każdy język programowania musi mieć, aby móc się nazywać językiem programowania ). Z definicji językiem programowania nazywa się taki, w którym można zapisać każdy algorytm. Matematycznie rzecz ujmując musi on być kompletny w sensie Turinga – czyli zgodny z modelem maszyny Turinga. Ale znów, ja nie o tym tu miałem.

W bardzo dużym uproszczeniu znaczy to, że trzeba znać instrukcje warunkowe, rekurencyjność i zapis/zmianę danych w pamięci. HTML, XML, CSS to nie są języki programowania, gdyż nie mają takich mechanizmów. Podstawy programowania opisują książki takie jak PHP5, Apache i MySQL. Od podstaw ( to specyficznie dla PHP – ale bardzo dobrze napisane ) oraz Programowanie. Od podstaw – trochę bardziej ogólna i oderwana od PHP, ale daje sporo jeżeli chodzi o wejście w “całe to programowanie”. Zajmuje się środowiskiem pracy, tym jakie problemy można napotkać po drodze i czemu jest to normalne ;-)

Często dużym problemem jest instalacja Apache’a i PHP tak, żeby wszystko działało jak należy – książki o podstawach PHP zawierają taką wiedzę. Aczkolwiek planuję na łamach tego bloga napisać poradnik o instalacji PHP i Apache’a pod Windowsem, jak również używając Linuxa lub jakiejś maszyny wirtualnej.

Algorytmy i struktury danych. Każdy program to algorytm – czyli zestaw działań które trzeba wykonać, aby stało się coś konkretnego i zdefiniowanego – czyli żeby otrzymać określony wynik. Tu również miałem kilka książek, ale i w tym przypadku Wrox wygrał Algorytmy. Od podstaw .

Podstawy PHP. Ten temat obejmuje książka o której wspomniałem wyżej – PHP5, Apache i MySQL. Od podstaw . W tym temacie znajduje się opis składni PHP, łączenia go z HTMLem, wywoływania przez Apache’a ( lub inny serwer WWW ). Poznanie podstawowych funkcji, pętli (for, foreach, while ) i instrukcji kontrolnych ( if, switch ). Komunikacji z użytkownikiem, pobierania od niego danych, itp. itd.

Programowanie obiektowe. Aby znać obiektowość w pełni radzę wziąć w ręce książkę o zaawansowanym programowaniu w Java lub C++, natomiast aby opanować podstawy zawarte w PHP5, polecam PHP5. Zaawansowane programowanie . Aktualnie pisanie kodu strukturalnie, to strzelanie sobie w stopę. I chociaż każdy od tego zaczyna, to lepiej, po opanowaniu podstaw, przejść do programowania obiektowego. Tutaj dowiedzieć się można co to są klasy, interfejsy, klasy abstrakcyjne, metody, hermetyzacja, dziedziczenie, implementacja i cała masa innych ciekawych słów, których definicję i sposób użycia znać trzeba.

xHTML i CSS. W idealnej sytuacji programista zajmuje się programowaniem, grafik tworzeniem grafiki, a webmaster/webdeveloper czy jak to się teraz nazywa, zajmuje się przygotowaniem grafiki dla programisty – czyli “pocięciem” jej i stworzeniem szablonu HTML, kawałków grafiki i plików CSS, a czasem nawet dołączeniem do tego AJAXa. Natomiast na początku, i aby własna twórczość nas nie odrzucała, przydaje się znać HTML i CSS ( zresztą podstawy CSS i HTMLa nikomu nie zaszkodzą ). Aby się tego nauczyć polecam tutoriale na w3schools lub CSS. Projektowanie profesjonalnych stron WWW .

JavaScript i AJAX. Na dokładkę zostaje “całe to Web2.0″ – czyli jak zrobić, żeby strona była bardziej jak aplikacja desktopowa. Do tego mogę polecić Head First JavaScript. Edycja polska (Rusz głową!) oraz Head First Ajax. Edycja polska (Rusz głową!) .

Head First to też ciekawa seria, chociaż dość specyficzna – nie wiem czy do wszystkich głów trafi jej forma przekazu. Co nie zmienia faktu, że są kompletne i, przynajmniej mi, dobrze się je czyta.

Oczywiście nie trzeba kupować wszystkich tych książek na raz. Dobrą zasadą jest wypróbować nowo nabytą wiedzę w trakcie czytania, a potem popisać trochę kodu używając nowo nabytych technik.

Miłego czytania, mam nadzieję, że ta lista pomoże komuś w zostaniu programistą aplikacji internetowych.

Powyższe linki mają w sobie mój kod z programu partnerskiego Heliona. Gdy kupicie książkę na ich stronie, to na moje konto zostanie zaliczona prowizja. Jeżeli komuś to nie odpowiada, niech przed zakupem skasuje ciasteczka w przeglądarce.


Napisane przez Zenobius | Komentarzy (3) | Permalink

Refactoring. Trudne do okiełznania, lecz przydatne bydle.

13:44, 13 września 2010 roku

| Notka, Tutorial

Ostatnimi czasy zabraliśmy się w Zeno.pl za refactoring kodu którego używamy do pisania naszych aplikacji – ZenoFuel i ZenoApp.

Staramy się to robić raz na kilka projektów, bo nic tak nie pokazuje ewentualnych pól do poprawy jak używanie kodu w praktyce. Tym razem postanowiliśmy jednak zrobić kilka sporych zmian – co oznacza również przegląd kodu od początku do końca.

W skrócie: nasz framework oparty jest luźno na Zend Framework ( podobny jest podział na pliki, wykorzystujemy kilka z jego modułów  – np. do wysyłki poczty czy łączenia się z bazą danych ), napisany jest zgodnie z duchem MVC, wykorzystuje OPT do generowania HTMLa.

Składa się z kilku modułów: zestawu kilku Routerów ( do wyboru do koloru ), które decydują o tym jakie tworzyć Kontrolery, które to mają hooki pozwalające np. przed wykonaniem akcji na sprawdzenie uprawnień użytkownika. Zestawu klas do tworzenia Formularzy opisanych za pomocą XMLa. Abstrakcyjnych Modeli pozwalających na łatwy i uniwersalny dostęp do bazy. Prosty Cache oparty na APC ( który ma być wbudowany w PHP od wersji 6.0 ). Obsługę Sesji w bazie danych i plikach. No i całej masy klas pomocniczych do różnych zadań specjalnych.

Część tego kodu nie zmieniała się od kilku lat. Stał się on swoistym ‘blackboxem’ który po prostu działa. A skoro działa, to nie ma co w nim grzebać.  Zmiany natomiast wprowadzamy gdy w jakiś sposób kod nas ogranicza lub widać miejsce które mogło działać by szybciej, lepiej, zgrabniej. Na bieżąco staramy się też dodawać komentarze lub uwagi na przyszłość.

Tyle słowem wstępu a propos materiału na którym oparte są te przemyślenia.

Czym jest refactoring ( tudzież refaktoring tak z polskiego ;-) )?

Refaktoryzacja to zmiania kodu programu, nie zmieniając jednocześnie zbytnio jego funkcjonalności. Oznacza to, że nie wprowadza się przy tym nowych featuresów, tylko dba się o to, aby nazwy metod, parametrów, funkcji itp. itd. były odpowiednie. Dodaje się komentarze tam, gdzie jest to wymagane. Rozbija się kod na mniejsze porcje – dzieląc na nowe metody i funkcje. W niektórych przypadkach można nawet w ogóle wydzielić część funkcjonalności do osobnej klasy.

Co oznacza “odpowiednie”?

Samo opisujące się. Idea jest taka, żeby przeczytanie nazwy metody dało nam już pełen ogląd na to, co owa robi i co zwraca. W praktyce trudno się operuje potem metodami które złożone są z siedmiu słów, nawet mimo podpowiadaczy we współczesnych edytorach.

Czyli tak naprawdę sprowadza się to do połączenia ze sobą komentowania i odpowiednich nazw – szczególnie, że taki Eclipse potrafi pokazać co metoda robi poprzez pokazanie nam,oprócz nazwy, również jej dokumentacji w auto-uzupełniaczu.

Umiejętność odpowiedniego wypoziomowania tych dwóch podejść przychodzi z praktyką.

Refaktoryzacja jest fajna i przydatna z kilku względów. I można robić ją na wielu poziomach.

Po pierwsze ułatwia zrozumienie kodu po dłuższej rozłące. Nie oszukujmy się, gdy wracamy do kodu po dwóch trzech miesiącach trochę czasu zajmuje nam połapanie się o co w nim w ogóle chodzi i czemu robi to co robi i jakim prawem to w ogóle działa?! :O Dobry podział plików, nazwy klas, metod, funkcji, odpowiednie zależności klas od siebie, hermetyzacja i odpowiednie komentarze/dokumentacja pozwalają skrócić czas ponownego zrozumienia.

Po drugie dobrze podzielonym kodem łatwiej zarządzać. Jeżeli w kodzie panuje chaos, to nie wiemy czy zmiana działania danej metody sprawi, że w innym miejscu nie pojawią się błędy. Porządek pozwala utrzymać panowanie.. nad kodem i nas swoimi nerwami ;-)

Po trzecie zmiana kodu na lepszy często wiąże się ze wzrostem wydajności. I tak, mimo, że komputery są coraz potężniejsze – oszczędzanie wydajności bardzo się przydaje. Podobna zasada tyczy się generacji HTMLa i CSSów – należy oszczędzać transfer.

Po czwarte jest to niezły ubaw. Z dwóch względów – widzimy jak się rozwinęliśmy, gdy coś co kiedyś potrzebowało kilku ifów i dziwnych funkcji teraz potrafimy zrobić połową ilości poprzedniego kodu. Niektóre nasze stare komentarze dla potomnych również potrafią rozbawić do łez ;-)

Jak pisać kod by potem dużo nie refaktorować?

To jest pytanie na zupełnie osobny wpis, ale odpowiedź może być prosta: pisać dużo kodu. Wracać do starego kodu, myśleć co by się w nim zmieniło i robić to :-)

Ja, gdy mam pomysł na rozwiązanie jakiegoś problemu, to najpierw sprawdzam go w praktyce, później dopiero, ale chwilę po sprawdzeniu czy działa, porządkuje go. Jeżeli może okazać się, że pomysł jest zły, to nie ma sensu poświęcać czasu na napisanie go od razu poprawnie. Jeżeli kod rzeczywiście działa, to trzeba sprawdzić, czy nasza pisanina nie ma zbyt rozciągłych czy zduplikowanych zmiennych, za dużo pętli i czy coś do poprawy nie rzuca się od razu w oczy. Nie ma co szukać na siłę, jeżeli wszystko wydaje się ok i spełnia swoją rolę, to nich tak zostanie.

Lepiej wrócić do takiego kodu za jakiś czas, gdy już osiądzie w swoim kontekście i będzie kilka razy wykorzystany – wtedy łatwiej zobaczyć co mógłby robić lepiej lub inaczej. Czy nie lepiej go podzielić, wydelegować niektóre czynności na zewnątrz. Czy część z tego co robi nie mogła by być wykorzystana w innym miejscu – czyli czy nie lepiej jej wydzielić obok. A może należy coś dopisać?

Może tablica z czynnościami do wykonania na porcji danych powinna zostać wydzielona do osobnej kolekcji, może trzeba dodać dodatkową parametryzacje, zrobić kod bardziej ogólny? W niektórych przypadkach kod jest na tyle samodzielny, że powinien stać się osobną klasą.

Co zmieniliśmy?

W Zeno, po przejrzeniu kodu ZenoFuel, liczącego sobie około 600 plików i 400 klas, interfejsów i abstrakcji, do zmiany poszło około 40% ( licząc również drobne poprawki kosmetyczne, w stylu ładniejsze ułożenie kodu, wywalenie nadmiarowych białych linii itp. itd. ).

Zmieniło się nazewnictwo kilkudziesięciu klas, niektóre zostały wyodrębnione w osobne miejsca – np. filtry danych z klas do formularzy uzyskały samodzielność, można je teraz bez obaw wykorzystywać zupełnie obok. Oznacza to również, że poszły z drzewa katalogów Formularzy do swojego własnego osobnego ( wyprowadziły się z domu ). Kontrolery straciły pewną część nadmiarowych metod i składowych ( pól ) – z kilku rozwiązań tych samych problemów wybraliśmy najlepsze. Niektóre klasy trzymają w sobie więcej danych aby zmniejszyć obciążenie bazy danych dodatkowymi zapytaniami – okazało się, że i te dane są często wykorzystywane w praktyce w naszych aplikacjach. Zmieniły się też odpowiedzialności klas, np. teraz to Kontrolery zajmują się przetwarzaniem parametrów które dostały od Routera – wcześniej to on nimi zarządzał. Niektóre metody skróciły się o dobre 70%, w kilku miejscach doszła rekurencja – jako jednak lepszy wybór.

Po tym etapie wszystko działa dokładnie tak samo jak działało wcześniej, jednak w ten nowy fajniejszy i lepszy sposób niż kiedyś – i to jest właśnie refaktoryzacja.

Klasy zostały też uporządkowane tak, aby móc przyjąć na siebie nowe funkcjonalności które dla nich planujemy, np. eventy ( zależności ) w Formularzach, bardziej rozbudowany Cache, elastyczniejszą Konfigurację, generowanie HTMLa Formularzy zdefiniowanych w XMLu, itp. itd. A wszystko w duchu wzajemnej nauki.

Oczywiście i te nowe featuresy dostąpią zaszczytu refaktoringu za kilka miesięcy, gdy w praktyce okaże się, czy spełniają dokładnie swoją rolę ;-)


Napisane przez Zenobius | Komentarzy (6) | Permalink

Brukselkowo-brokulowo-fasolkowo-szpinakowo-groszkowa zupa krem z mini klopsikami, grzankami i serem – mniam.

09:40, 07 września 2010 roku

| Jedzonko

Dziś jedzeniowo.

Chodziła ostatnio za mną zielona zupa krem, więc postanowiłem takową wczoraj zrobić. Jak zwykle wyszło mi na pułk wojska – czyli lunch przez najbliższe trzy dni mam załatwiony ;-)

Składniki na zupę: brukselka, brokuły, fasolka szparagowa, groszek, szpinak ( czyli generalnie wszystko co zielone i co kto lubi – najlepiej świeże, ale fasolkę na ten przykład kupiłem mrożoną ), czosnek, grzanki, ser który dobrze się topi. Do tego bulion rosołowy, jako, że na czymś zupę trzeba oprzeć – ja zrobiłem sobie rosół na indyku, ale każdy sobie zrobić może na czym chce :-)

Bulion powinien być mocno esencjonalny. Szczególnie, że powyższe zielone warzywa są dość słodkie. Trzeba to wziąć pod uwagę podczas dobierania przypraw.

Zupę robi się prosto – wrzuca się wszystko co zielone do garnka, zalewa się bulionem i powoli gotuje często mieszając. Można tez zielone ugotować na parze, co by sobie witaminki nie poszły za bardzo. Z bulionem przesadzić nie można bo będzie za rzadko. Gdy wszystko się ładnie ugotuje bierze się blender, lub mikser z ostrzami i długo i namiętnie młóci się zupę tak, aby nie było drobinek – no, żeby kremowa była ;-)

Składniki na klopsiki: mięso mielone ( tak z 500g ), jedno jajko, parę łyżek tartej bułki, oliwa z oliwek, cebula.

Klopsiki to osobna historia. Cebulę trzeba drobniutko posiekać, zeszklić na oliwie z oliwek na patelni. Wrzucić mięso do miski, dorzucić cebulkę, jajko, dwie łyżki bułki tartej, przyprawy do smaku i mieszać. Potem uformować z tej masy kulki. Najlepiej wielkości jednego kęsa. Tak, żeby wygodniej było. Wrzucić je na patelnie i podsmażyć z każdej strony. No, jako, że to kulki, to trochę potrwać może ;-)

Gorącą zupę wlewa się do talerza, miski, kubka czy czego się tam chce. Do takiej porcji garść klopsików, garść grzanek, garść sera i można spożywać. W taką pogodę gorąca zawiesista zupa dobrze syci i mocno grzeje.

Smacznego :-)


Napisane przez Zenobius | Komentarzy (3) | Permalink

BumpTop + Nintendo Wii + trochę elektroniki + drivery + soft == leżenie na kanapie i bawienie się w “Minority Report”

09:54, 06 września 2010 roku

| Ciekawe strony, Projekty, Sprzęt, Technologia, TED.com

Dziś trochę technikaliów. Kto oglądał Minority Report ( Raport Mniejszości ) , ten z pewnością zachwycał się tym jak Tom Cruise przeglądał zdjęcia z “precogów”. Aktualnie nie robi to aż takiego wrażenia, co nie zmienia faktu, że jeżeli oglądało się film w czasie gdy wszedł do kin, to każdy chciał móc przeglądać dane gestami dłoni. Ok, pisząc “każdy” mam na myśli ja, ale mam nadzieję, że nie jestem w tym odosobniony ;-)

Nie uważam się za estetę. Doceniam ładny design. Ale u mnie lista priorytetów nie zaczyna się od “ładny” tylko od “szybki” oraz “użyteczny” – dlatego dalej używam Windowsa z ‘theme’ z Windows 98. Nie będę się teraz zajmował pisaniem czemu Win a nie MacOS lub któryś Linux. Jasne, napędziłbym sobie ruch na blogu, ale jakoś nie kręci mnie robienie flame’ów.

Tak, używam Windowsa do developerki i mam VirtualBox‘a z Linuxem na którym stoi system zbliżony do mojego firmowego produkcyjnego. Linux podmontowany jest Sambą do Windowsa i tak sobie pracuję na Win na którym odpalony jest Eclipse.

Natomiast niedawno nastąpiła u mnie rewolucja. Piszę “rewolucja” dlatego, że mój pulpit przeszedł z 2D do 3D za sprawą BumpTop‘a, którego to instalke od dawien dawna trzymałem na dysku – ewidentnie ściągnąłem i zapomniałem. Dzięki temu mój syf na pulpicie został uporządkowany. Nie mam też plików bezpośrednio na pulpicie – czyli partycji Windowsowej. A rzucałem mięsem długo gdy padł mi dysk i zawartość pulpitu padła razem z nim.

Jako, że robię wiele rzeczy na raz, odpalam sporo programów i sporo plików mi do tego potrzeba. Lubię móc przeciągnąć plik na program i go w nim otworzyć. Wiec przydaje się mieć wszystko na pulpicie.

BumpTop potrafi układać pliki w sterty, robić z nich katalogi, można mieć kilka pulpitów, rzucać plikami o ścianę jeżeli się ich nie potrzebuje, łatwo wyszukiwać wszystkiego czego się szuka, i całą masę innych rzeczy które mi się rzeczywiście przydają.

Tak czy siak.

Pilot do Wii łączy się z konsolą po Sinozębym. Wystarczy jakiś dong lub obsługi Sinozębego w kompie lub lapie, aby móc skomunikować pilota od Wii z owym. Sterowników, różnie zaawansowanych, do pada Wiijowego w necie jest sporo. Implementują różne jego możliwości. Ale mnie najbardziej interesuje to, żeby móc wykorzystać jego kamerkę łapiącą podczerwień. Postanowiłem użyć tego prezentowanego na.. TED.com.

Normalnie Wii łapie podczerwień z kilku diod z tzw. sensor bara, którego stawia się pod telewizorem. Trzymając pilota w ręce łapie on podczerwień i dzięki temu konsola kalkuluje gdzie jest kursor. Ale takie machanie pilotem nie jest wystarczająco dokładnie ani wygodne, żeby zastąpić myszkę.

Można natomiast stworzyć “IR array” – czyli zestaw wielu diod podczerwonych z dziurą na pilota pośrodku. Wtedy pilot może łapać światło odbite od.. naszych dłoni. Oczywiście po założeniu na nich rękawiczek z odpowiednimi lusterkami.

Gdy ma się IR array, pilota do Wii, blutootha i takie rękawiczki wystarczy jeszcze soft i gotowe jest kompletne rozwiązanie pozwalające na sterowanie komputera gestami dłoni.

Problemy jakie muszę rozwiązać to to, że punków może być wiele i nie da się rozróżnić który z nich jest który. Można przyjąć, że kursor podąża za punktem, ale trzeba jeszcze zdefiniować jaki gest oznacza kliknięcie, jaki podwójne kliknięcie a jaki “prawy klawisz myszy”.

Druga rzecz to klawiatura – pisanie na standardowej klawiaturze ekranowej raczej będzie niewykonalne. Muszę więc wykombinować czym i jak zastąpić klawiaturę.

Nie zmienia to w żaden sposób faktu, że, dla czystej przyjemności, gdzieś w ciągu miesiąca, sobie to wszystko skompletuje i wytestuje.

BumpTop


Napisane przez Zenobius | Komentarzy (0) | Permalink

Nasz mózg. Fajny w sumie jest taki, czyli czemu czas zlewa się w jedność? I tak łatwo/trudno nam pamiętać?

08:53, 05 września 2010 roku

| Notka, Opinie

Nie znam się na neurologii. O mózgu czasem sobie myślę, bo lubię wiedzieć jak działamy i my i świat w okół. W głowie rodzą mi się teorie, napędzane tym, że dużo o tym temacie myślę tak sam z siebie lub przez jakąś obserwację. I przez to łatwiej mi o tym myśleć. Błędne koło, ale z tych fajnych a nie złych.

Wczoraj mnie olśniło, że gdy dni są jednakowe – np. jak codziennie rano się budzimy, idziemy do pracy, wracamy – ot, rutyna, to te dni mają tendencję do łączenia się w jedność. Żadne odkrycie, prawda? Wiele wiele osób mówi, że “zupełnie tracę poczucie czasu”, “nie pamiętam co wczoraj jadłem na obiad”. Dla mnie wczoraj był śnieg i zimno i plucha. Wszystko od stycznia do teraz praktycznie zlane jest w mojej pamięci w całość. A wszystko dlatego, że tymi dniami, w większości, rządzi rutyna. Czy jestem w stanie teraz przypomnieć sobie co robiłem dokładnie 14 lipca? Nie. Mogę sobie przypomnieć, że w czasie tych ostatnich ośmiu miesięcy zdarzyło się to i tamto, może uda mi się to uszczegółowić co do miesiąca, a raczej okresu – np. “kiedy widziałem tą śliczną dziewczynę w metrze? no jak było ciepło, bo miała na sobie sukienkę”.

Mózg oszczędza w ten sposób miejsce. I mimo, że tak naprawdę każdy z tych dni był zupełnie inny. Mimo, że robiłem różne rzeczy, jadłem różne jedzenie, godziny były inne, ludzie na ulicy inni – to jednak mózg odrzuca drobne szczegóły różniące te dni i zapamiętuje ogólniki. Że wstałem, poszedłem do pracy,wróciłem z pracy i poszedłem spać.

Żeby zapamiętać cokolwiek musimy myśleć o szczegółach. Musimy łączyć to co chcemy zapamiętać z innymi rzeczami – jeżeli jakaś, nazwijmy to, komórka, pamięta gdzie położyliśmy klucze, to żeby zapamiętać gdzie je położyliśmy – żeby móc szybko przypomnieć sobie to miejsce, ta komórka musi łączyć się z innymi komórkami przez skojarzenia. Jak wiele łatwiej jest nam pamiętać gdzie są klucze, gdy kładziemy i znajdujemy je w tym samym miejscu po raz setny? A co, gdy ten sto pierwszy raz położymy je w innym miejscu? Nie ma ich nigdzie. A zauważyliście ile razy instynktownie wracamy do miejsca gdzie były “zawsze”? A zauważacie jak trudno potem to miejsce zmienić?

Na kursach szkolących pamięć jest technika układania tego co chcemy zapamiętać w jakąś historyjkę – stworzenie z ciągu danych historii ułatwia tworzenie połączeń z innymi rzeczami które są tej historii częścią. Więcej połączeń oznacza więcej dróg pozwalających wejść nam na ścieżkę zawierającą to co chcieliśmy zapamiętać.

Dlatego też sprawdzają się takie techniki jak “mapa myśli” – bo gdy zdamy sobie sprawę z tego z czym powiązane jest to co chcemy zapamiętać, to łatwiej znów wywołać w sobie te same skojarzenia. Wtedy myśli same płyną, tym samym torem, naturalnym dla nas – bo wykształconym. Bo droga owym utwardzana była już wiele razy – właśnie dlatego, że myśleliśmy o tym wiele razy, umacniając połączenia między komórkami.

Co ciekawe nasz mózg pamięta nie tylko co należy do zbioru skojarzeń z inna rzeczą, ale pamięta też często kolejność występowania tych rzeczy. Nasza pamięć jest chronologiczna. Dzięki temu możemy przywołać z pamięci zdarzenia po kolei i opowiedzieć historię. W końcu żyjemy w czasie, więc musimy go pamiętać. Choćby ogólnikowo.

Natomiast ta właściwość, że mózg odrzuca szczegóły, żeby móc uogólniać wspomnienia, dzięki czemu oszczędza miejsce, rodzi też inny problem/właściwość. Często zapominamy o małych rzeczach, pamiętamy ogół, ale nie pamiętamy szczegółu. Pamiętamy fajną randkę, ale nie pamiętamy czy niebo było zachmurzone, chyba, że to, że było lub nie odróżnia tą randkę od innych, i że było to silne przeżycie. Na tyle silne, by od razu móc utrwalić połączenie między komórkami tworzącymi w naszej głowie obraz danego spotkania. Jasne, nasz mózg zdaje sobie sprawę z tego, że na jakiejś randce, niebo było zachmurzone lub nie. Ale to czy potrafimy sobie przypomnieć która to randka była, to już kwestia tego, jak ważne to zachmurzenie na niej było – jaką rolę odgrywało.

Wspomnienie konkretnej randki, jako komórka o nazwie “randka z Ewą w grudniu 2007″ łączy się z komórkami które zawierają czynności/słowa “randka”, “kobieta”, “Ewa”, “wieczór”, “zimno”, itp. itd. Taka komórka nie musi mieć treści sama w sobie, ona jest zbiorem połączonych ze sobą innych treści, które ją tworzą. Gdy ktoś powie “pamiętasz tą Twoją randkę w zimie?” wpadną Ci na myśl wszystkie randki podczas których było zimno i będziesz chciał to doszczególnić pytając “masz na myśli tą z Ewą?”. Gdy ktoś odpowie “tak”, to od razu przypomną Ci się wszystkie rzeczy powiązane z tą randką, tym zbiorem ‘komórek’ definiującym to konkretne spotkanie.

Gdy pozwolimy myślom płynąć czy myślimy tylko o jednej rzeczy? Nie. Biegamy po skojarzeniach. Wszystko wydaje się chaotyczne, ale tak naprawdę kolejność rzeczy o których myślimy jest taka a nie inna właśnie dlatego, że w ten sposób układają się nasze skojarzenia. Czerwona podwiązka naszej dziewczyny ze studniówki kojarzy się z czerwonym samochodem który widzieliśmy kilka dni temu, który kojarzy się z wakacjami z rodziną, które kojarzą się z morzem, które kojarzy się z naszym pierwszym rejsem statkiem, który kojarzy się z burzą, która kojarzy się z kubkiem gorącej herbaty gdy wróciliśmy zmoczeni deszczem po spacerze z naszą trzecią dziewczyną, która to kojarzy się z zapachem poziomek, które kojarzą się ze spacerami w lesie, który kojarzy się z dziadkiem, który był leśnikiem.. itd. itp. Wszystko się ze sobą kojarzy, choć może nie w tak oczywisty sposób jak powyżej, to jednak gdy uświadomimy sobie ten fakt, o wiele łatwiej będzie nam znaleźć powiązania w tym jak płyną nasze myśli.

Zauważ, że między podwiązką a samochodem jest tylko jedna część wspólna – czerwień. Między wakacjami a samochodem częścią wspólną jest samochód. Wakacje, mimo, że odbywały się i w górach i nad morzem, to właśnie morze/woda jest aktualnie silniejsze/a i prowadzi do rejsu. Czemu akurat wybieramy jedno wspomnienie a nie drugie? Wg mnie właśnie dlatego, że przez ostatni czas używane było częściej. Gdyby to góry były aktualnie “silniejsze” to może przypomniały by o nartach, śniegu i ostatniej wigilii. Czyli liczy się i częstość i natężenie i rozłożenie w czasie tego o czym i jak myślimy.

Nasz mózg to taki system tagów łączących się z tagami, które łączą się z tagami, a one z kolejnymi itd. A każdy z tych tagów, oprócz tego, że jest słowem, ma też swoje znaczenie. Zapewne przez to, że łączy się z innymi tagami, które mu to znaczenie nadają. W naszej głowie jest worek słów, które łączone są innymi słowami. Gdy o czymś myślimy, to łączą się jeszcze mocniej. I im więcej myślimy, tym mocniej. Jeżeli nie używamy, to z czasem, zanikają i sprawiają, że o wiele trudniej przywołać pamięć. W końcu, gdy coś straci wszystkie inne połączenia, zanika. Odrywa się od systemu pamięci i.. czeka na nadpisanie czymś innym. Nie wiem tylko, czy po takich połączeniach zostaje jakiś ślad i czy można je odtworzyć. Czy może gdy wiedza wypadnie poza obieg i jedyne co ją czeka to nadpisanie inną?

Nasza pamięć nie jest idealna. Godzimy się z tym, choć nie łatwo jest z tym żyć. Ciekawe jest to, że wymagamy pamięci idealnej od komputerów. Pewnie dlatego, że są one szansą na stworzenie protezy naszej własnej pamięci.

Teraz, coraz łatwiej i więcej informacji możemy gromadzić. A przez jej natłok coraz trudniej jest nam w niej szukać. Zresztą takie szukanie nie jest idealne, bo nie jest naturalne. Czemu więc nie stworzyć, przy pomocy technologii, kopii tego, jak działa nasza pamięć? W końcu nie może to być aż tak trudne, skoro mamy to w głowach. A używanie powinno być wręcz naturalne.

Widać po nas, że mózg przekłada moc obliczeniową ponad przestrzeń dyskową. Wiele rzeczy sobie dopowiadamy. Skąd wiem, że było ciepło gdy widziałem tamtą śliczną dziewczynę w metrze? Ano nie dlatego, że pamiętam, tylko dlatego, że miała na sobie sukienkę – więc musiało być ciepło, inaczej odmroziła by sobie to i owo. Z tego też wychodzi wiele problemów – bo często dopowiadamy sobie źle. Czyli tworzymy kłamstwa w które mocno wierzymy – bo przecież “pamiętamy”.

A czy Ty pamiętasz, że parę akapitów wyżej pisałem o ślicznej dziewczynie którą widziałem w metrze?


Napisane przez Zenobius | Komentarzy (0) | Permalink

Pogoda rowerowi nie straszna. Czyli jak to jest jeździć w basenie.

08:22, 02 września 2010 roku

| Notka

Dziś historia z życia wzięta, oparta na faktach wręcz nadto autentycznych. A właściwie.. to “wczoraj”, bo zdarzyło się to wczoraj.

Pracuję trzy kilometry od miejsca w którym mieszkam. Przejście tego dystansu zajmuje mi od 24 do 32 minut. W zależności od nastroju, pogody, siły, chęci i innych pierdół które składają się na dany dzień. Na wczorajszy dzień składał się głównie deszcz. Zresztą, szum wody spadającej z nieba towarzyszy nam ostatnio odkąd obudzimy się rano, do późnych godzin wieczorno-nocnych gdy w końcu zasypiamy. To, że leje, każdy widzi. A to, że niweluje to naszą chęć na wyściubianie nosa za drzwi chyba każdy czuje.

Tak więc wczorajszego poranka otworzyłem oczy, podniosłem się z wyra i zobaczyłem za oknem.. Szaro, Buro i Ponuro w gościnnych występach. Innymi trzema słowy “siąpi jak cholera”. You know the drill.

Rozleniwiony tym cudownym widokiem stwierdziłem, że pojadę do pracy taksówką. Tak, w takie dni mogę robić za “burżuja”.

Zadzwoniłem po taksówkę, oporządziłem się, wsiadłem do taksówki.. po 20 minutach i 300 przejechanych metrach podziękowałem taksówkarzowi i wróciłem do domu. Co tu robić, co tu robić. Pora była już późna, już się spóźniłem, dokładać do tego pól godziny na dojście do pracy – ouch. Stwierdziłem więc, że, aby nie przedłużać spóźnienia niebotycznie, zaoszczędzę czas pedałując na rowerze. Póki słońce świeciło póty na owym popylałem prawię codziennie, bo jednak wolę jechać 8-10 minut – zawsze można pospać sobie kwadrans dłużej. A kwadrans to dużo czasu. Szczególnie rano.

Tak czy siak, wszedłem do mieszkania, patrze za okno – objawienie! Nie pada. No to szybko kurtka na plecy, szalik, rękawiczki, rower, winda, schody, drzwi.. leje. Stwierdziłem “pierdziele”, uzbroiłem się, opatuliłem, włączyłem oświetlenie rowerowe, odblaski założyłem i długa. Czy pisałem już, że rower nie ma błotników? Ale nie takie rzeczy się robiło. Co prawda czułem się, jak bym jechał w basenie – ciekawe uczucie muszę powiedzieć – ale co tam, w pracy kurtka na wieszak, bluza na wieszak, gorąca herbatka, zmienić spodnie.. zaraz.. czy ja wziąłem spodnie? Nope. Super. Za późno było, by wracać się i po nie. Gdybym wrócił to bym już nie wyszedł, nie ma bata. W końcu co za dużo to niezdrowo – uznałbym to za znak z góry ( albo skądś ) i podziękował za dalsze namaczanie się. Jak już wolę to robić w wannie – gdzie jest _CIEPŁO_.

Dojechałem do biura. Kurtka na wieszak, bluza na wieszak, gorąca herbatka, włosy wysuszyć. No, i tia.. fajnie się pracowało w mokrych spodniach.. ;-)

Nie zmienia to faktu, że mam silne postanowienie dalej jeździć do pracy na rowerze. Nawet mimo tego, że tylko wczoraj próbowało zabić mnie koło trzech osób. Na drodze. Bo na rowerzyście łatwo pierwszeństwo wymusić.

Ba, zamierzam jeździć na rowerze w zimie. A jako, że aktualnie kończy się rowerowy sezon to zamierzam również zakupić sobie rower, bo póki co jeżdżę na pożyczonym. Taki będę.

Morał z tego taki, żeby nie dawać się przyrodzie i pogodzie. Że kwadrans to dużo czasu, szczególnie rano. Że jeżdżenie w deszczu nie jest takie złe na jakie wygląda ( gdy ma się spodnie na zmianę ). No i te całe błotniki – słyszałem, że całkiem spoko wynalazek.

No i ok, wracałem z rowerem w bagażniku samochodu kumpla.. ale to to ciiiiiii.. ;-)


Napisane przez Zenobius | Komentarzy (0) | Permalink

Sterować komputer umysłem? Proszę bardzo.. Urządzenia czytające fale mózgowe są za rogiem

10:24, 01 września 2010 roku

| Opinie, Sprzęt, Technologia

.. i za $500 – 2500$.

Z tą TEDową prezentacją spotkałem się już ponad miesiąc temu, ale czekałem aż temat się rozwinie i pojawią się jakieś opinie. Wszystko brzmi dość prosto – możliwość sterowania różnymi technicznymi rzeczami za pomocą fal mózgowych lub wspomagając się falami mózgowymi.
Ale zanim zacznę się nad tym rozwodzić – najpierw film. Trwa 10min 37s, ale mnie wbił w fotel, jednym słowem – warto.

Spotkałem się z opiniami, że ten film to fake -  ktoś zza kulis odpala odpowiednie skrypty ku uciesze gawiedzi – co tylko świadczy o tym, że technologia jest innowacyjna i zaskakująca.

Po pierwsze nie sądzę żeby TED pozwolił sobie na takie mistyfikacje. Po drugie czytając forum Emotiv i oglądając filmiki ludzi którzy to urządzenie kupili i się nim bawili nie mam wątpliwości, że jest jak najbardziej prawdziwe i sprawne. Z pewnością daleko mu do perfekcji ( jest trochę uwag o tym, że niektórzy nie są w stanie go uruchomić – bo styki są wadliwe lub za mało przylegają – ale generalnie są to jakiegoś rodzaju pojemniczki/gąbki napełniane wodą która przewodzi impulsy – więc trzeba zadbać o odpowiednie umiejscowienie, przyleganie i wilgotność ). Ale Emotiv EPOC Headset działa na pewno.

Napisałem wcześniej “bawić” – patrząc na aplikacje aktualnie dostępne na stronie producenta widać, że skupiają się głównie na rozrywce – gry, aplikacje do przeglądania zdjęć, itp. Nie dziwię się.

Wcześniejsze tego typu urządzenia zostały stworzone przez firmy robiące na co dzień sprzęt dla graczy. Rynek gier komputerowych i kontrolerów do gier jest olbrzymi ( 10,3 mld $ w 2004 roku z samych gier ). Sprzedaż  właśnie do tej branży to łatwy sposób na zdobycie środków do rozwijania technologii i, gdy osiągnie się stabilność finansową, stosowania jej w poważniejszych projektach ( co oczywiście nie zmienia faktu, że z chęcią bym pograł w BFBC2 mogąc strzelać do przeciwnika poprzez samo myślenie o oddaniu strzału – o wiele szybciej niż wcisnąć przycisk myszy ). Gdy prowadzono wojny to armia inwestowała w technologię aby uzyskać przewagę. Teraz też się kilka wojen toczy, ale chyba gry są bezpieczniejszą lokacją kapitału ;-)

Inne urządzenia mające działać na podobnej zasadzie, stworzone przez producentów sprzętu komputerowego trudno nazwać konkurencją. Miały tylko kilka sensorów lub korzystały bardziej z napięcia mięśni twarzy niż odczytu fal mózgowych ( kto ogląda “Lie to me” wie o co chodzi ). Można więc powiedzieć, że jest to pierwsze, dostępne na rynku konsumenckim, urządzenie, które zasadę swojego działania opiera na czytaniu tego co dzieje się w naszych głowach.

Kilkukrotnie stykałem się z ludźmi zajmującymi się problemami dzieci cierpiących na autyzm. Sam miałem okazję pomagać jednemu chłopakowi w wyborze odpowiedniego joysticka który on potrafiłby obsługiwać, oraz dać mu możliwość sterowania kursorem za jego pomocą – bo nie był w stanie używać myszki. Podobny problem z komunikacja z komputerem próbowałem rozwiązać rozwijając możliwości odpowiednio przystosowanej klawiatury – wyposażonej w duże klawisze, odpowiednio rozłożone, itp. itd.

Po obejrzeniu prezentacji zacząłem myśleć czy i jeśli tak, to jakie możliwości dała by tego typu technologia. Niestety nie mogę znaleźć teraz rzetelnych informacji na temat biofeedbacku i jego pomocy w leczeniu autyzmu. Natomiast sama terapia tego typu pozwala na lepsze panowanie nad sobą, poznanie siebie i naukę kontroli swojego organizmu. Stymuluje różne obszary mózgu poprawiając ich działanie.

Ale tu nie mamy do czynienia z biofeedbackiem, tylko interfejsem pozwalającym kontrolować technologię za pomocą myśli. Gdy ciało nie chce się słuchać, gdy nie można kierować urządzeniami przy pomocy odmawiających posłuszeństwa kończyn może to jest właśnie “next best thing” lub wręcz “the best thing”?

I aby mózg wytrenować i aby mieć możliwość bogatszej interakcji ze światem? Wszystko jedno czy jest się zdrowym czy chorym..

Ja nie mogę się doczekać, aż cena tego bajeru będzie przystępniejsza i będę mógł wypróbować oprogramowanie go dla różnych potrzeb.


Napisane przez Zenobius | Komentarzy (0) | Permalink