Franjo srušio prvog Švabu!

Što ima novoga u Franjinom svijetu?! Sredio sam site tako da sad https://www.binarni.net/projects/franjo/ na nešto i liči (osobno nisam zadovoljan s njim ali bolje i ovako nego nikako. kombiniram.). Stavio video na youtube (malo je scale videa u banani), stavio neke screenshotove, stavio par linkova okolo.

Što se tiče samog Franje sad sam stavio i dodatne objekte u igru. Za sad su to Messerschmitt, Panzer tenk i oblak. Razmještaj objekata je random i poprilično imbecilan (ali to je nebitno, jer to neće Franjo ni razmještati u budućnosti). Zanimalo me kako će se ponašati Canvas kad bude bilo više objekata koji se scrolaju. Za sad liči kao da malo šteka.

Franjo se napokon skrola kao pošten čovjek

Kao što možete i provjeriti na https://www.binarni.net/projects/franjo/ Franjo se više ne skrola sa 2fps! Sad to već izgleda kao neki pošteni soon to be scrolling shooter!

Skužio sam da mi je bolje živote (koji su predstavljeni sa zvjezdicama) i bombe (predstavljeni sa bombom) staviti u panel skupa sa brzinom, visinom i drugim komandama. Double buffering sam postigao sa skrivenim Canvasom (koji ima visibility hidden). Pokušao sam sa dva buffera, jedan za teren, drugi na kojem sve crtam i onda blitam na ovaj prvi. Tja… djeluje mi znatno sporije ali budem još eksperimentirao s time jer ovako se baš vidi kako aviončić flickera u određenim situacijama. Anywho, sad slijedi malo eksperimentiranja sa terenom te sređivanja organizacije codea.

Ono što mi je super sa skrivenim Canvasom što mogu da ga stavim na visibility i vidim što mi se iscrtava tamo. Super korisno jer sam tako skužio jedan sitni bug.

Reakcije su za sad ok. Čak sam dobio i pohvalu za komande (postepeno podizanje, spuštanje te ubrzavanje).

Franjo Kluz je poletio sa svojim Potezom XXV


Moja jedina želja otkako sam nabavio svoje prvo računalo je bilo da radim igrice. Druga želja (što sam inače 2 godine kao i studirao) mi je bila da projektiram avione.
To da ću ja raditi jednog dana u Sierri nisam nikad ni dovodio u pitanje. Svuda oko sebe sam ostavljao stotine malih igrica i uvijek je tu bila neka malo kompleksnija avanturica, neke akcione zezalice itd. Nakon pušione sa Multivitaminom, a tome ima valjda 6-7 godina, nisam osjećao više potrebu za tim. Jednostavno mi se to sve zgadilo.

Ali eto, nakom svake kiše dođe sunce pa se i kod mene pojavila opet želje za malo opuštanja kad sam u stresu. Daklem, evo ga…. “Franjo Kluz” prototip moje prve igrice nakon pun kufer vremena. Već sam i zaboravio programirati, sve neka formatiranja teksta u zadnje vrijeme tako da mi je drago da se malo počnem baviti i time. Ovo je više neki prototip da vidim kako se ponaša Canvas, koliko je to sve brzo itd.. itd… Source će biti objavljen pod nekom poštenom licencom i sve što s time dolazi (iako je već sad objavljen, ali dobro). Neću pisati što sve ne radi, čega nema i što će doći jer pametnjakovići to nikad ne čitaju a oni sa malo mozga će znati što verzija 0.01 znači. Zato šaljite mail u svakom slučaju kad skužite da ne radi u Exploreru… šaljite.

Zove se “Franjo Kluz” jer mi je to super ime, imam super priču i akciju koju ću složiti iza svega ovoga. Inače, za one koji ne znaju Franjo je bio oficir kraljevine jugoslavije koji je početkom drugog svjetskog rata završio u ustaškoj avijaciji. Priča kaže da je zbog kockarskih dugova pobjegao sa avionom Potez XXV (inače u igrici ja koristim Breguet 19 s kojim je pobjegao Rudi Čajevec) i svojim strijelcem u partizane.
Dosta davno o svemu tome je snimljen i film Partizanska eskadrila a krajem 2008. započeta i igrica.

Ako želite vidjeti na što to trenutno liči odite ovdje: https://www.binarni.net/projects/franjo/

Više o projektu na:
* https://www.binarni.net/projects/franjo/
* http://lab.binarni.net/wiki/FranjoKluz

Nakupina bitova znana kao “Pornodrom”

Jedna od zadnjih epizoda “30 Rock“-a me podsjeti na nešto što sam radio u ona davna vremena dok sam još imao živaca kodirati 24 sata u komadu. Ne vjerujem ali možda se ipak potrudim i pokušam osposobiti prastaru 386-icu da na njoj pronađem sve te zaboravljene bitova.

Kao velik broj mojih projekata i ovome je na kraju trebalo onih zadnjih 20% ne bi li se finalizirao. Ono što ga ipak razlikuje od ostalih je što sam na ovome prestao raditi jer se projekat u jednom trenutku transformirao u nešto drugo. Vjerovali ili ne ali Pornodrom kao gnutella based server za razmjenu pornjave (sa web front i back endom) se transformirao u ništa drugo doli web kolaboracijski alat za web publishing pod nazivom TamTam. Znam, znam.. TamTam nisam napisao ja već Guru® Neno. Svi mladi haktivisti kiber festivala od Baltika pa do Crnog mora to odavno znaju… Ah, ah.. ali ajmo taj dio priče za sad ostaviti za neki drugi post.

Pretpostavljam da ne treba spominjati da je samo ime “Pornodrom” referenca na Cronenbergov film “Videodrome“?! Uglavnom, Gnutella se tek pojavila i bilo je očito da se radi o nečem vrućem. Postojeći clienti nisu zadovoljavali moje potrebe i osjetio sam potrebu da sebi kao konzumentu olakšam upotrebu cijele te mreže. Koji bolji razlog za pisanje softwarea nego izrada nečega što koristim svakodnevno. Tko će mi bolje napisati software nego ja sam?! Tko zna bolje moje potrebe od mene samoga ?!

Pisati svoj pear-to-peer nema smisla i zato je cijeli sustav bio zamišljen kao nadogradnja nad arhitekturom već postojećeg i raširenog protokola. Nadogradnja u smislu metapodataka za same sadržaje koji se razmjenjuju, naprednijeg pretraživanja, mogućnosti previewa (slike i videa), lakšeg pregleda sadržaja koji drugi ljudi shareaju, komunikacija s ljudima, “agenti” koji pamte preference i konstantno pretražuju mrežu u potrazi za zanimljivim sadržajem itd. Da..da.. dosta toga su imale svakojake mreže i clienti koji su se pojavili poslije, ali u tom trenutku oni nisu bili na tržištu. Uglavno, ta “nadogradnja” je značila da se Pornodrom ponaša kao tipičan Gnutella node koji je bio u stanju slati neke dodatne sadržaje koje su neki napredniji clienti znali interpretirati. Onima koji nisu ti dodatni sadržaji nisu smetali i normalno su komunicirali sa Pornodromom.

Meni je osobno killer dio cijele priče bila mogućnost pristupu serveru preko weba. Zašto? Pa zato što sam imao pristup unixoidnim serverima koji su na brzim Carnetovim linkovima. Pornodrom na njima visi 24/7 te skuplja i sharea s drugima podatke koji se arhiviraju na njemu. U određenom trenutku spojim se preko ultra spore modemske veze na jedan od tih nodova te u browse modu (nešto kao web image gallery sa thumbnailovima) pregledam raspoloživ sadržaj i obrišem nepotrebno. Možda zvuči smješno ali skidati 300Kb sliku preko modema (ili ne do bog gnutelle) da bih rekao “ahhhh….” mi nije bila neka velika sreća. Bolje je pogledati mali animirani GIF-ić koji barem otprilike dočarava što se dešava u videu pa se tek onda odlučiti na download od par desetaka minuta ili sati. Anywho, ako ustreba jedan rcp i fileovi su nakon dosta vremena lokalno na disku.

Sramim se i priznati ali eto, napravio sam cijeli “application server” sa svojim gnutella bibliotekama za sve to. U pozadini python, ZODB kao objektna baza podataka i neki moj template (je*eš python programera koji nije napravio svoj template engine) engine u pozadini. Nikad ja nisam ništa napisao ako mu nisam prvo dao ime. Ovo čudo se zvalo “Thunder” i imalo je čak male munjice za logo. Uglavno, različiti aplikacije unutar Thundera koje međusobno komuniciraju. Web sučelje sa public dijelom kojem pristupaju drugi korisnici (za browse i skidanje sadržaja) te posebno administrativni dio za managiranje Pornodroma i gnutella servera.

U jednom trenutku cijela ta ideja i arhitektura se samo transferirala u nešto drugo i negdje po putu izgubila gnutella server i moje autorstvo 🙂 Čudni su putovi bitova…. čudni…. sad ga imaš a sad ga nemaš ali uvijek dobiješ neko smeće od BLOB-a za kraj.

Jeste li vidjeli moga sina Janka?!

Jedna od neprocjenjivih stvari koju imam od komunikacije sa ljudima koji imaju background u društvenim znanostima, ekonomiji i željezničkom prometu je što se uvijek potrude da mi objasne “što ja to u biti radim”. Svačićev trg 1 i Preradovićevu 18 kao mjesto mog prosvjetljenja zamjenio je u zadnje vrijeme Friendfeed. Tako nekako ispada s obzirom na ovaj drugi ulet u zadnjih par dana. Za razliku od Milatovog kopiranja klasičnog njih2 uleta ovaj zadnji je bio ipak ok i izvukao je osmjeh iz mene.

“Netko ovdje sigurno poznaje programera kulturpunkt.hr – molim vas recite mu/joj da odjebe s tim javascipit linkovima, izluđuju me.” Napisao je “netko” na friendfeedu. Taj “netko” ima dosta slobodnog vremena pa prekriženih nogu i s rukama u krilu radije voli postati ovakve zahtjeve na friendfeed nego kliknuti na impressum link. Oni su power google reader useri zasigurno pa i ne vide taj link. RSS 2.0 feed direktno u korteks mozga. Matrix spika.

Ako zanemarimu ovu nebulozu da postoji šansa da je žena isprogramirala kulturpunkt.hr ostaje ovaj kriptični dio oko javascript linkova i “odjebavanja”. Uključen sam u taj projekat od samog početka i naslušao sam se svakojakih priča o tom projektu, mojoj ulozi unutra i načinima nagrađivanja mog rada ali moram priznati da je ovo jedna od rjetkih situacija koja je izmamila iz mene osmjeh. Pa pobogu, zar sam uza cijelu listu mojih odgovornosti (a vjerujte mi da je to bila zanimljiva lista) u tom projektu sad postao odgovoran i za sadržaj koji unose članovi redakcije. Linkovi u članku su pogrešno uneseni, nisu dodatno provjereni i članak je kao takav bio objavljen. Da li sam ja kao “programer” odgovoran jer se radilo o nepostojećim URL-ovima? Da li bi postojala odgovornost mene kao “programera” u tom projektu da se radilo o nekoj klasičnoj gramatičkoj grešci ili greška mora nužno biti povezana sa nekim tehničkim terminom? Npr. ako je autor članka napisao da je na izborima 45% glasača glasalo za opciju A a 72% za opciju B da li bi se i ovdje povlačila moja odgovornost kao “programera” ili njega kao autora članka. Da mi ljudi na ulici (ili friendfeedu) viču “odjebi sa svojim izračunima programeru/ko”!




To nas sve dovodi do klasičnog pitanja koje si svaki brucoš filozofije (a možda i komparativne književnosti) pita dok ispija par piva u Krivom putu sa svojim istomišljenicima:”Da li je LAMP (Linux, Apache, MySQL, PHP) kao tehnologija napredniji i bolji od ASP.NET-a”. Kažem to jer je index.hr (news portal pogonjen ASP.NET-om ili čime već) prepun gramatičkih grešaka te nebuloznih rečeničnih konstukcija (to name a few). Pitam se pitam što to njihovi programeri rade….
Ah ti Windowsi….

Kad se perliše potuku iliti kad community ode kvragu


U maniri scenarija Jelene Veljače i produkcije Romana Majetića nakon dosta mjeseci porođajne muke desio se i taj TWiki fork! Za one koji ne znaju fork u ovom kontekstu znači da je jedan dio TWiki zajednice uzeo izvorni kod i započeo zaseban projekat koji je neovisan od starog TWiki projekta. Zašto je to nekome uopće zanimljivo, zašto bi se uopće netko trebao brinuti a i sto mu gromova, gdje je tu uopće drama?!

TWiki projekat je prije nekih 10etak godina kao klon JosWikija započeo lik koji se zove Peter Thoeny. Bio je to jedan simpatičan strukturiran wiki specifičan po svojoj ideji “Web” -ova koji omogućuju da se site podjeli na manje cjeline. Od samog početka projekat je bio izdan pod GPL licencom ali Peter je bio jedina osoba koja je imala pravo na TWiki trademark. To se kasnije ispostavilo kao uzrok dosta problema i trzavica koje su u konačnici i dovele to podjele.

Kod free software projekata TWikijeve veličine dobar i kvalitetan community sa dobrim leaderom ili dobro posloženom organizacijom je izrazito bitan za uspjeh. Počela se tu s vremenom oko TWikija okupljati neka ekipa ali sve je to nekako kilavo ispalo. Peter je ispao nekomunikativan lik. Ekipa je ispala previše u banani i ta agonija je trajala par godina. Nekih 5-6 godina Peter se i nije bavio nekim razvojem TWikija i sve je bilo na tom nesretnom communitiju. Jedan dio ekipe je samo gunđao i odbijao išta raditi, jer Peter je eto kriv za sve. Drugi dio ekipe je nešto i razvijao ali krajnji korisnici su znali dosta puta biti nakon pritužbi tipa “na Safariju ova forma ne radi” biti otpiljeni sa tipičnim programerskim elitističkim odjebima “tko uopće i koristi Apple”. Naravno uvijek je tu i jedan Debianovac koji ima svoje ideje kako bi to sve trebalo posložiti.


Negdje prošle godine Peter je došao do nekih novaca od VC-ovaca, odlučio je osnovati TWiki.net kao konzultantsku firmu i predlagao je da trademark sa njega pređe na twiki.net. Community programera koji je zadnjih nekoliko godina radio na razvoju nije želio ni čuti za takvu ideju. Malo se pregovaralo, malo su se neki modeli governancea predlagali da bi na kraju sve završilo prošli tjedan na dan objavljivanja nove verzije. Na dan objave cijeli community se nađe na Chatu (#twiki kanal točnije), dogovore se “dnevni red”, odrade se stvari i nova verzija se stavlja za download. Ovaj put je Peter došao i kao točku stavio relaunch twiki.org.

Bez najave je svima koji su do tada bili uključeni u projekat onemogućio pristup do servera i na web site je stavljeno novo pravilo korištenja (na koje se trebalo pristati prilikom ulogiravanja) koje kaže da sav materijal napisan na web siteu pripada firmi twiki.net. Naravno trademark TWiki je prebačen na firmu, dosadašnjim developerima je rečeno “ako vam se ne sviđaju nova pravila slobodno forkajte, imate pravo na to, ali ako budete koristili naziv TWiki bilo gdje budemo vas tužili”.

Onda je počelo kukanje “ne možeš se tako ponašati, mi smo napisali sav code, propast će ti firma bez nas!”. Pa su malo emocije proradile i kilalo se Petera sa fork kanala itd. itd… Za sad fork projekat ima privremeno ime “Next Wiki” iliti nextwiki. Šaljivi njemački developeri. Source je baziran na zadnjoj objavljenoj verziji i isto tako kao i twiki.net planiraju neke veće promjene na projektu. Naravno, svi su sad oduševljeni što više nema tog Petera da koči stvari i blah blah napokon su ostali sami i sad će se vidjeti koliko je community kao takav u biti trul i kako velik broj problema nije bio rezultat Peterovih loših odluka već odraz njihove nesposobnosti.

Sve u svemu meni ostaje da čekam par mjeseci i vidim koja će frakcija pobjediti, to više zbog održavanja trenutne instalacija. Onako među nama mogu reći da smo mi već odlučili napraviti naš poseban “fork” 🙂 Ali pssstttt o tome. Mislim da nam je TWiki super poslužio kod projektiranja nekog prototipa onoga što želimo, kod poslagivanja stvari kad nismo ni sami znali što točno želimo. Wikiji super dođu za tako nešto. Ali sad smo već u situaciji da možemo posložiti stvari znatno kvalitetnije a i pomaknuti stvari u neke komercijalnije smjerove.

Što se tiče samog TWikija mislim da je ovo najbolja stvar koja mu se mogla dogoditi. Svi smo mi nekad bili u situaciji kad je jednostavno najbolje reći “doviđenja”. Šteta što je sve ispalo ovako jadno ali barem su forkaši sad nabrijani pa se možda stvari malo i pomaknu. Predugo je TWiki bio težak za instalirati, pun security rupa, nedovršen API, spor, spor, nevjerovatno spor itd…

* http://www.twiki.org/
* http://www.nextwiki.org/

mount /Sljeme prvi put!

Nešto je kilavo bilo krenulo ali se na kraju desio i prvi “mount /Sljeme”. Odaziv autističnih razmjenjivača je bio kao i obično nikakav. Više im se dalo protraćiti subotu u mami ne radeći ništa nego biti vani na svježem zraku i grahu sa kobasicama. Anywho, njihov gubitak. Za koji tjedan idemo ponovo.

Još jedan video iz produkcije binarnog. Ruka se trese kao nikad do sada ali nošenje stativa a i samo snimanje videa mi nije bila primarna zadaća. U svakom slučaju, bio je to jedan super provod.

Moja mala Pišekica


Pisao sam prije o nezgodana koje mi se dešavaju kad sam ljudima prvi u imeniku. Katkada se to čak i isplati…

Evo attachirao sam jednu normalniju i usput ju malo deformisao da se ne prepozna o kome se radi. Moja mala Pišekica mi u zadnje vrijeme šalje MMS-ove iz kreveta. Ne znam kome su orginalno trebale ići ali meni uredno na kraju dođu. Honey, samo ti šalji i dalje!

Kako Aco bira prijatelje

Na oglas o novim prijateljima je bilo različitih reakcija. Od uvrijeđenih poznanika do ideja da je moj stan javna igraonica. U svakom slučaju, kao i svaki majstor i ja volim iskoristiti alate koje svakodnevno koristim da mi olakšaju život. Stvar je dosta modularna tako da se može lako proširivati sa novim Acinim uslovima. Podrška za Profile (Aco je veseo, Aco je depresivan, Snjeg pada vani i Aci je milo) bi svakako dobro došla.

Kroz ovaj priority queue prođu svi.


from heapq import heappush, heappop
import datetime

DOBRO, VALJA, JEBENO  = 0, 1, 2
NECE, HOCE = False, True
MUSKO, ZENSKO = False, True

ACINE_GODINE  = datetime.date.today().year-1976
FAKTOR_GODINA = -20

acin_um = {"vrckast":  lambda val: -2,
           "stan":     lambda val: val == True and -10 or 1,
           "auto":     lambda val: val == True and -5 or 0,
           "star":     lambda val: round(abs(ACINE_GODINE-val)/100.0*FAKTOR_GODINA),
           "wii":      lambda val: val == True and -5 or 0,
           "udan":     lambda val: val == True and 10 or 0,
           "zauzet":   lambda val: 2,
           "spol":     lambda val: val == True and -10 or 0,
           "ima_maca": lambda val: 0,
           "sise":     lambda val: (-2,-5,-10)[val],
           "guza":     lambda val: (-2,-5,-10)[val]
           }

def create_prijatelj(name, **kw):
    return (reduce(lambda a, b: a+b, map(lambda opc: acin_um[opc](kw[opc]) , kw.keys())), name)

potencijalni = []

heappush(potencijalni, create_prijatelj("osoba jedan",
                                        sise    = JEBENO,
                                        guza    = VALJA,
                                        stan    = False,
                                        vrckast = True)
         )

# itd.. itd... itd..

heappush(potencijalni, create_prijatelj("osoba n",
                                        wii     = HOCE,
                                        udan    = True
                                        )
         )

print "* drum roll *"
print "Najbolji kandidat za acinog novog prijatelja je: ", heappop(potencijalni)[1]

Rezultat u pozitivi


Zadnja dva mjeseca na poslu testiramo sustav za evidenciju radnog vremena. Ništa specijalno, kontrola ulaska i izlaska (sa par razlicitih funkcija) i online provjera evidencije i izrada reportova.

Do sada je sustav funkcionirao tako da rano ujutro nabije osam sati minusa (pazeći na standardnu pauzu i poslovne izlaske) i onda lagano odbija vrijeme od toga. Problem je bio što se sustav nije najbolje ponašao a i u bazu nisu redoviti upisivani godišnji odmori i slične stvari. Rezultat toga je bio da bi neki od nas bili i po 40 sati u minusu. Nije to baš najbolji osjećaj kad provučeš karticu i vidiš “-36 sati”. Tako da je zbog poljuljanog morala i negodovanja promjenjena taktika. Od ranog jutra krećeš sa nulom i lagano nabijaš provedene sate u plus. Iz osobnog iskustva moram priznati da je puno bolji osjećaj ispunjenja kad ideš kući i vidiš “+07:30” a ne “-36:21” 🙂