M-am mutat. Noul meu site este grep.ro, unde scriu ce scriam şi aici, doar că în engleză :)

Transport Tycoon

25 iunie 2006, 20:44

Mai ştie cineva, în ziua de azi, numele "Transport Tycoon"? La vremea lui era un joc grozav. Încăpea pe câteva dischete şi petreceam ore şi ore jucând-ul. Ideea seamăna puţin cu LEGO - îţî dă câteva elemente de bază şi te lasă să construieşti cu ele. În cazul ăsta, elementele erau şine de cale ferată, drumuri, staţii, oraşe, fabrici, etc. Cu puţină imaginaţie puteai să faci o reţea super-sofisticată şi eficientă de trenuri (jocul mai conţine maşini, avioane şi vapoare, dar trenurile sunt marea distracţie). Jocul îţi oferea satisfacţia de a construi un lucru şi a-l vedea funcţionând, şi pentru mintea mea de 10 ani era fantastic. Engine-ul jocului era o minune a programării: simula sute de vehicule în mişcare, zeci şi zeci de staţii, oraşe, industrii, pasageri, şi în acelaşi timp avea o grafică incredibilă pentru un joc de DOS. AI-ul era tâmp de tot, dar pentru asta îl iert. :)

Aşa arăta jocul Transport Tycoon (Deluxe) al lui Chris Sawyer. Screenshot-ul însă e făcut pe mac, şi e din OpenTTD - un proiect opensource care şi-a propus să recreeze jocul şi să-l îmbunătăţească. OpenTTD este o copie aproape perfectă a originalului, cu multe îmbunătăţiri (hartă mai mare, multiplayer, multe probleme mici şi enervante rezolvate, etc.) şi care rulează pe windows, linux şi macos. Just like the old days, doar că în widescreen şi de vreo 4 ori mai mulţi pixeli pe ecran, şi nu mai e limitat numărul de trenuri, şi merge pe internet... wow.

Javascript

22 iunie 2006, 00:26

Într-o vreme eram convins că Javascript este bun numai pentru meniuri animate şi efecte vizuale inutile în pagini. Boy, was I wrong. De câteva luni lucrez pentru un site care foloseşte Javascript la greu; cu ocazia asta mi-a crescut mult resprectul pentru acest limbaj de programare.

Javascript este un limbaj puternic. Orice browser modern ştie de CSS şi DOM, deci interfaţa grafică e rezolvată uşor. Toate variabilele, funcţiile şi obiectele sunt accesibile prin string-uri. Poţi să construieşti funcţii şi clase în mod dinamic (în timpul execuţiei). Poţi să modifici conţinutul unei pagini fără să o reîncarci. Poţi să modifici şi programul în sine. Poţi să modifici şi stylesheet-urile. Poţi să faci cam orice, în afară de cartofi prăjiţi. Mai greu cu documentaţia - trebuie să o vânezi cu google, dar cu răbdare se găseşte.

JS este un limbaj unic: rulează în orice browser (decent), pe orice platformă; nu necesită instalare sau upgrade-uri; nu costă nimic. Cu el şi numai cu el se pot face pagini web dinamice, aşa că, de bine de rău, trebuie să-l folosim. Mai mult de bine decât de rău - cu nici un alt limbaj de programare nu m-am distrat atât de mult. [Edit: Ana mi-a atras atenţia că "pagini dimanice" se pot face şi cu php, asp, şi altele. Trebiua să scriu "client-side scripting" acolo.]

Apropo de browsere decente: marea, imensa, uriaşa problemă a Javascript-ului e faptul că diverse browsere (*cough* Explorer) suportă diverse părţi ale limbajului. Scrii codul pentru Firefox, merge, eşti fericit; deschizi pagina în Explorer, nu mai merge nimic. Vrei să vezi de ce? Exploreru' spune doar că ai o eroare, nici măcar nu zice bine unde e eroarea. Ca să nu mai spun că are mari probleme cu CSS. În fine, subiectul este fumat, orice web designer/developer ştie că Explorer sucks, dar trebuie să te înţelegi şi cu el, că deh, asta foloseşte lumea. În curând o să ne apucăm şi noi să ne facem situl compatibil cu Explorer (şi diverse alte browsere - nu sunt două la fel). Deabia aştept.

S-ar putea spune că Javascript nu e un limbaj "serios", ca C sau Java. Foarte bine, să nu fie, it gets the job done, şi se poate scrie cod elegant. I-ar prinde bine nişte unelte de dezvoltare (debugger, profiler, etc). Există, dar nu-s foarte răspândite/uşor de folosit. Şi ce dacă? De când lucrez la firma asta, pe măsură ce am învăţat Javascript, mi-am făcut un toolkit de componente - unele pentru debugging, altele pentru funcţionalitatea site-ului. Ultima jucărie unealtă pentru debugging este un panou, în pagina web, în care scriu cod şi îl execut, făra să reîncarc pagina (cum trebuia să fac pe când modificam un fişier-sursă ca să aflu valoarea vreunei variabile). Mulţumită posibilităţilor de introspecţie ale limbajului, pot să văd şi să modific variabile, să apelez sau să înlocuiesc funcţii, şi multe altele. Altă unealtă este un log de evenimente - apelez o anume funcţie de oriunde din cod şi pun un mesaj (colorat!) în log. Înlocuieşte cu succes pe printf (sunt un mare fan al tehnicii cunoscută sub numele de "printf debugging").

Încerc să vorbesc cu ze boss, să mă lase să opensource-uiesc câte ceva din uneltele ăstea - pentru mine sunt extraordinar de utile; poate o să fie şi pentru alţii. Se pare că e de-acord.

Poze cu mobilul 2

19 iunie 2006, 14:16

Încă două poze care aşteaptă de mult în mormanul de fişiere de pe desktop. Dacă tot am vorbit despre Overheard, să le public şi pe ăstea:

Un magazin de piese auto, pe Lizeanu, specializat în faruri şi stopuri. Barosanii cu merţane mai agaţă câte un stâlp, câte o altă maşină, şi îşi sparg farurile?

Cumpăraţi Fornetti, copiii dumneavoastră vor creşte frumoşi şi armonioşi. Ca fetiţa din poză care, apropos, mă sperie. Are ceva demonic în privire. Poate că nu trebuia să mă uit la "The Omen" aseară.

Overheard

19 iunie 2006, 14:01

Overheard in Bucharest este un blog cu frânturi de conversaţie auzite "din greşeală" în Bucureşti. Am auzit de el de două ori până acum, dar a trebuit să-mi dea cineva un link în messenger ca să mă duc efectiv pe site să văd ce e acolo. La început am crezut că e o colecţie de bancuri - ca multe site-uri româneşti dedicate acestui domeniu. Probabil că aşa apar multe bancuri - din frânturi de conversaţie, scoase din context. Creatorii site-ului (căci este vorba de o echipă), văzând că blogul prosperă, au extins "afacerea" şi au deschis de curând Overheard in .ro - versiunea "naţională" a site-ului. Majoritatea post-urilor sunt tot cele din Bucureşti, dar este de-abia la început.

Ideea blog-ului - de a aduna bucăţele din mozaicul care formează oraşul nostru - mi se pare foarte interesantă, şi cam asta încerc şi eu să fac, cu imagini (poze făcute cu mobilul). Mă întreb dacă Overheard acceptă contribuţii, văd că au o categorie de imagini ("Seen in Bucharest"). Hmmm. :)