Zmysly

O tym jak dawno niczego tutaj nie dopisywalem, przekonalem sie dopiero, gdy sprobowalem cos wrzucic na ftp i serwer nie pozwolil mi sie zalogowac, bo lacze sie z innej dzielnicy. Minelo pol roku od kad wyprowadzilem sie i wiode dorosly zywot, z praniem, kupowaniem jedzenia, praca, wykladaniem i kobieta u boku.

Brak wpisow nie oznacza jednak, ze nic przez ten czas nie wymyslilem. Teraz jednak wiekszosc moich pomyslow ma komercyjne zastosowania i publikuje je w inny sposob. Jest jednak wiszacy nade mna jak wyrzut sumienia olbrzymi worek z niezrealizowanymi pomyslami. Brak czasu.

Jest taka madra przypowiesc, ze jak sie do pojemnika najpierw wsypie piasek, to potem ciezko upchnac kamyki. Przekonuje sie na codzien, ze zeby miec na cos czas, to trzeba go sobie po prostu zarezerwowac. Staram sie jak moge, zachowac elementarna higiene : we wtorki i czwarki mysle o teori informatyki, w poniedzialki, srody i piatki o praktyce, w soboty i niedziele mysle o wlasnych projektach.

Ostatnio kupuje domeny. To taka moja lista todo. Ilekroc mam jakis fajny pomysl, to kupuje dla niego domene. Opowiem wiec o tych paru pomyslach (niestety nie zrealizowanych).

diff.com.pl

Zaczelo sie od tego, ze chcialem na /wymyslach umiescic cos co mnie rozbawilo. Mianowicie w Starym Testamencie sa dwie wersje dekalogu, nieznacznie sie rozniace. Chcialem wiec zamiescic diff'a tych dwu wersji. Okazalo sie jednak, ze w sieci nie ma (ciezko bylo znalezc) fajnego narzedzia on-line do porownywania kawalkow tekstow. Z rozwiazan jakie znalazlem, najpocieszniejszym bylo : stworz dokument google, zapisz go, zmodyfikuj, zapisz, sprawdz historie zmian. Mniej fajne byly po prostu posrednikiem miedzy www a linuxowym diffem. Problem z linuxowym diffem jest taki, ze on porownuje tekst calymi linijkami. Jesli wiec dwie linijki roznia sie tylko jedna litera, to z jego punktu widzenia tak jakby byly zupelnie rozne. Nie dziwota wiec, ze uznal dwie wersje dekalogu za zupelnie rozne. Robi tak, gdyz najszybsze algorytmy analizujace roznice literka po literce, sa zbyt powolne, a po za tym tego typu informacja o roznicach miedzy dwoma plikami jest mniej podatna na bledy i nieprzydatna do glownego zastosowania diffa jakim jest patchowanie kodu.

Czesto, by znalezc odpowiednie rozwiazanie problemu, trzeba najpierw dobrze zrozumiec i postawic problem. Zastanawiajac sie nad tym, czego dokladnie chce, doszedlem do wniosku, ze czlowiek gdy porownuje dwa dokumenty, wcale nie jest zainteresowany znalezieniem najdluzszego wspolnego podciagu, co czyni wiekszosc znanych mi algorytmow. Nie jest tez dla nas istotne, aby znalezione dopasowania wystepowaly w tej samej kolejnosci w starym i nowym tekscie. Wazne jest tylko, aby w mozliwie zwiezly sposob pokazane zostalo jak jeden tekst powstal z drugiego - gdzie sa wspolne kawalki, a gdzie roznice. Obrazowo mowiac, chcemy traktujac starszy tekst jak gazete, wyciac z niej nozyczkami potrzebne nam fragmenty i nalepic na nowa pusta kartke, byc moze dopisujac cos nowego i nie wykorzystujac calej gazety. Powstanie patchwork przypominajacy anonimowy szantaz. Tego wlasnie chcemy: szybko znalezc fragmenty starego tekstu potrzebne nam do zredagowania nowego. A to, mozna prosto zrobic w czasie liniowym uzywajac drzew sufiksowych, a nawet prosciej uzywajac tablic sufiksowych. Szybciej niz liniowo sie juz chyba nie da, a liniowy algorytm napisany nawet w PHP powinien dzialac wystarczajaco szybko.

Niestety projekt jak na razie umarl, bo niestety nie dawal zadawalajacych efektow wizualnych a i znajdowane dopasowania choc optymalne z punktu widzenia informatyki nie do konca pokrywaly sie z semantyka -- wydawaly sie dosc zaskakujace dla czlowieka.

fraktal.net.pl

Zafascynowany bezmyslnym potencjalem olbrzymich mas ludzi, ktorzy bezproduktywnie spedzaja czas na www, wymyslilem idee laczaca sztuke, web 2.0 i kawalek informatyki. Inspiracji bylo wiele, ale glowna pochodzi z fraktalnej kompresji obrazu. Polega ona na tym, ze na zdjeciu wyszukuje sie pary podobnych do siebie prostokatnych obszarow. Wymog jest taki, by jeden z nich byl wiekszy, bardziej nasycony i kontrastowy niz drugi. Gdy uda nam sie juz pokryc caly obraz takimi zachodzacymi na siebie prostokatami, to zyskujemy dwie zaskakujace mozliwosci.

Pierwsza, to przeslac koledze same wspolrzedne tych prostokatow (wraz z pewnymi macierzami transformacji opisujacymi na czym polega ich podobienstwo), co w zupelnosci wystarcza, aby odtworzyl oryginalny obraz zaczynajac od pustej kartki i powtarzajac w nieskonczonosc operacje kopiowania duzego prostokata w miejsce malego.

Druga, to kontynuowac wspomniany proces kopiowania, ale na powiekszonym plotnie, co niechybnie prowadzi do wyostrzenia obrazu w oparciu o nowe szczegoly. Obraz mozna powiekszac w nieskonczonosc, a nowe szczegoly w istocie sa stare tylko przekopiowane z innego miejsca obrazu -- jako ze jeden z prostokatow jest wiekszy, zawiera on juz szczegoly, ktore sa nam potrzebne. Rzecz jasna jest to swego rodzaju oszustwo ze strony komputera, nie mniej, bardzo kreatywne.

Pozwolilem sobie podkrasc te druga idee i oddac ja w rece uzytkownikow. Kazdy kto ma odpowiednio szybka przegladarke, moze dorysowac jakies szczegoly na obrazku przedstawiajacym Ziemie. Wystarczy sobie powiekszac obrazek, az znajdziemy na nim jakies miejsce, w ktorym brakuje szczegolow i pixele staja sie wielgachne, by przy pomocy myszki dodac brakujace pixele. Pojawia sie one jednoczesnie we wszystkich miejscach, ktore byly identyczne do tego, ktore poprawialismy, dzieki czemu ma sie poczucie ze jedna klikniecie ma potencjalnie nieskonczenie wielki wplyw na powstajace dzielo.

karty.pl

Pomysl z gra w karty przez internet zrodzil sie we mnie gdy jeszcze pisalem w Visual Basicu, czyli co najmniej 7 lat temu. Mowiac gra w karty nie mam na mysli brydza, czy planowanka. Mam na mysli po prostu stol, karty i kryptograficzny protokol pozwalajacy graczom tasowac, rozdawac, zakrywac, odkrywac, przekazywac sobie i przeliczac karty. Wolna amerykanka -- gracie w co chcecie i jak chcecie. Jak chcecie miec tabele wynikow - uzyjcie sobie google spreadsheets. Jak chcecie sobie pogawedzic czy policytowac - wlaczcie sobie komunikator, albo irca. Ale stol i karty, jest jeden niezaleznie w co chcecie grac i iloma taliami.

Mialem tez w planie sprobowac dogadac sie z jakims mastercardem czy inna visa, zeby talia miala koszulki z logiem jakiejs karty kredytowej, coby to jakos na siebie zarabialo.

Wszystko mialo byc napisane w javascript (a raczej: nie we flashu i nie w javie) i nie uzywac bazy danych, tylko leciutkich sesji. Na razie projekt zamarl, bo mialem pare zagwozdek podczas tworzenia frameworku php.

crime-story.pl

Zastanawiajac sie nad tym w jaka gre bylbym sklonny marnowac czas przez internet, doszedlem do wniosku, ze chcialbym pograc w gre, w ktorej duzo zalezy od fantazji samych graczy. Zastanawiajac sie nad tym jaka gre chcialoby mi sie implementowac, doszedlem do wniosku, ze powinna byc Web 2.0, czyli : programista robi leciutki framework, a gracze dopisuja reszte.

Jak widac oba te cele bardzo ladnie ze soba wspolgraja. Zaczalem wiec myslec jak niby gracze mogliby sie przyczynic do tworzenia gry. Zapewne programistow jest za malo na swiecie by gra mogla wymagac umiejetnosci programowania. Gracze mogliby jednak dostarczac kontent -- rysowac obrazki, wymyslac misje, pisac scenariusze, projektowac mapy. Zaczalem wiec zastanawiac sie jak skonstruowac zasady gry, by motywowaly czy wrecz zmuszaly graczy do aktywnego jej tworzenia. Doszedlem do wniosku, ze musi stworzyc sie swego rodzaju piramidka: aby jeden gracz mogl ukonczyc swoj quest, musi wymslec/doprecyzowac/zlecic dwa questy innym graczom. Uznalem ze to jednak za skomplikowane, a po za tym nie umialem znalezc zadnej sensownej konwencji w jakiej taka gra moglaby byc utrzymana i co wiecej mialaby mechanizmy utrzymujace ja wciaz w tej konwencji nawet pod naporem duzej liczby kreatywnych inaczej uzytkownikow.

Ach, gdyby wszyscy umieli programowac po lekcjach informatyki w podstawowce, moznaby przypomniec ludziom takie piekne i proste gry... Wojny rdzeniowe -- gracze pisza programy uruchomione w tej samej maszynie ram i probuja sie nadpisac. Podaj najmniejsza liczbe inna niz podali inni -- to moja ulubiona gra dla progamow walczacych. Programista musi sie w niej wykazac znajomoscia psychologii, bo gra sie milion partii i mozna sie co nieco nauczyc o programach przeciwnikow z poprzednich partii.

Zaczalem wiec szukac od drugiej, leniwej strony : jaka gra, ktora znam wymaga najmniej zasobow. Mafia. Nie cierpie tej gry, nie mniej chyba kazdy choc raz gral w nia na jakiejs wycieczce klasowej. Nie potrzeba do niej niczego oprocz ludzi, ktorzy maja ochote poobrzucac sie blotem, poobserwowac swoje reakcje i wykazac umiejetnosciami aktorskimi. Role play w czystej formie. Czemu nie lubie tej gry? Bo nigdy nikt nie ma w niej zadnych sensownych argumentow.

Tak oto powstal moj najnowszy pomysl na gre. Glownym elementem gry jest czat. Mozna rozmawiac na osobnosci lub w grupie. Mozna rozmawiac anonimowo lub jawnie. Mozna rozmowe rejestrowac lub sprawdzic czy rozmowca nie ma podsluchu. Jesli rozmowa jest rejestrowana, fragmenty rozmowy mozna skopiowac i wkleic do innej rozmowy w sposob wykluczajacy falszerstwo.

Cala gra odbywac sie bedzie w jednodobowych turach. Codziennie do 22 kazdy gracz musi ustalic tylko pare rzeczy. Po pierwsze, czy chce sie byc ochroniarzem czy zabojca (mozna wybierac w plynny sposob, preferujacy jednak ekstrema, czyli do wyboru mamy 150/0 , 50/50, 0/150 i jakies stopnie posrednie). Po drugie, kogo sie chce chronic a kogo atakowac. Miedzy 22:00 a 22:15 miasto idzie spac, by o 22:15 przeczytac nekrologi.

Preferowanie ekstremalnych postaw, ma na celu promowanie wspolpracy miedzy ludzmi. Jeden zabojca i jeden ochroniarz dzialaja lepiej, niz dwa mieszance, ale byc zabojca jest ryzykownie jesli nikt Cie nie ochroni. I tutaj wlasnie wkracza mafia, ktora chetnie przyjmie Cie w swoje struktury, oferujac ochrone, wsparcie w sadzie i lojalnosc. Oczywiscie oferta zlozona Ci zostanie przez anonimowego posrednika, ktory upewni sie ze nie masz podsluchu itd.

W tym swiecie kazdy gracz, na samym poczatku okresla czy chce byc dobry czy zly (policjantem czy zlodziejem). Wybor ten nijak nie jest widoczny dla innych graczy, chociaz policjant moze udowodnic drugiej osobie ze jest policjantem, wklejajac do rozmowy odpowiedni dokument. Bycie dobrym nijak nie wplywa na to co wolno a co nie wolno nam robic -- policjant moze na przyklad infiltrowac mafie, a prawa reka mafioza moze na niego donosic policji (oczywiscie nie osobiscie, tylko przez jakas plotke).

Wybor charakteru ma znaczenie tylko przy ustalaniu rankingu i punktacji. Policjanci ciesza sie gdy gina mafiozi, mafiozi, gdy gina policjanci. Jest w tym pewna symetria, ale policja nie jest po prostu kolejna mafia. Policja ma bowiem dodatkowa metode zwalczania przestepczosci -- wymiar prawa. Kazdy trup ogloszony o 22:15 jest dobrym powodem by wszczac postepowanie. Policjant ktory sie ujawni, moze powolac 12 przysieglych (tak, wybrac! jakiez pole do korupcji), ktorzy maja wydac werdykt kto zabil. Od kreatywnosci graczy zalezy w jaki sposob beda prowadzic to postepowanie, ale zakonczyc sie ono musi do 22 dnia nastepnego. Kazdy powolany przysiegly, wie przez jakiego sedziego zostal powolany, a sedzia poznaje wyniki glosowania. Jak tylko dostanie wyniki od wszystkich przysieglych zapada wyrok ze skutkiem natychmiastowym. Policjanci dostaja punkty za kazda zwienczona sukcesem rozprawe.

Popularne posty z tego bloga

Szczęście jako problem inżynieryjny

Kilka rzeczy, o których żałuję, że nie powiedziano mi, gdy byłem młody

Produkt: Ojciec*