Secretul testelor cu “numai 2% din populația lumii…”

De când mă știu am avut o problemă cu chain mail-urile secretarelor. Știți voi, alea cu scrisoarea lui Marquez după ce a aflat că are cancer (și care nu e a lui Marquez…) sau alea cu figura lui Iisus pe pâine prăjită. Azi vreau să vă povestesc despre asta. Hai, faceți-l că dedesubt e spoilerul. Folositi cuvintele în engleză, apropo (adică pentru țară, dacă pică țara cu fonfăniți rârâiți, ziceți-i France nu Franța.

Read the rest of this entry »

Literatura ratată în liceu #2: Metanie de Radu Gyr

De ce nu se studiază în liceu: Poezia din închisori nu era în manuale pe vremea când cei care le scriu astăzi erau la şcoală.
De ce se întâmplă să fie specială: Singura rugăciune sinceră pe care o ştiu.
Când trebuia studiată: Clasa a X-a, când încă îți mai vine să te rogi.

Doamne, fa din umilinta
pod de aur, pod inalt.
Si din lacrima, velinta,
ca pe-un pat adanc si cald.

Din lovirile nedrepte,
faguri faca-se si vin.
Din infrangeri, scari si trepte;
din caderi, urcus alpin.

Din otrava pusa’n cana,
fa miresme ce nu pier.
Si din fiecare rana,
o cadelnita spre cer.

Si din orisice dezastru
sau crepuscul stins in piept,
Doamne, fa lastun albastru
si da zambet intelept.

Scriituri

Pentru că după închiderea ediției autohtone a PC Magazine începuseră să mă cam mănânce degetele, o să vă chinui retina aici, pentru început cu seria asta.

Lisp-uitori din toata tara, uniti-va

Ce faci când rămâi fără idoli

Mă uitam din îmtâmplare pe la statusurile celor din lista mea, şi am găsit unul interesant: Doi ani fără el.. Psihedelice, sunt cu ochii pe tine :-D . El-ul în cauză, care se vedea în avatar, era Florian Pittiş.

O să trec succint peste faptul că sunt doi ani de când a murit Florian Pittiş, din două motive. Unul, pentru că dacă aş vrea să vorbesc despre Florian Pittiş, aş avea mult mai multe de spus decât când şi cum a murit. Al doilea, pentru că chiar dacă aş vrea, au fost alții care au spus-o mult mai bine şi în mult mai multe cuvinte decât mine, cu siguranță mai avizate. Despre altceva vreau să vorbesc.

Problema cu care mă confrunt în momentul de față este că idolii (sau mai bine zis oamenii care m-au inspirat, pentru că până şi când eram copil aveam probleme cu a avea idoli)… încep să dispară, sau oricum, nu mai au prea mult de trăit. Ceea ce e deprimant, pentru că asta înseamnă nu numai că e destul de greu să-i mai întâlnesc acuma, dar şi că trebuie să mă învăț cu ideea că sunt oameni care au murit.

Cum vine asta? Păi vine aşa: unul ar fi Ian Gillan. Am o voce între execrabil şi mediocru, ceea ce nu m-a scutit de la a-i aprecia din plin show-urile. La aproape 64 de ani ai lui o duce bine (deşi vocea a început să se cam ducă) şi l-am văzut la Bucureşti. Deci măcar ăsta e ok :-D . De văzut, i-am văzut şi pe Tudor Gheorghe, şi pe Johnny Răducanu, în suficiente concerte. Rezonabil.

Cine mai urmează? Doi profesori de-ai mei, unul în prag de pensie, unul deja în prelungire. Profesorul meu (informal) de muzică? Gone for seven years now. Steve Wozniak a scăpat dintr-un accident de avion pe vremea când nu ştiam cine e, dar Steve Jobs a avut cunoscutele probleme de sănătate acum, când ştiu cine e şi de ce îl apreciez.

Asta mă pune în situația relativ proastă ca, zece ani de acum încolo, să mă trezesc că toți cei de la care am luat (sau mi-ar fi plăcut măcar sa iau câte ceva) nu mai sunt prin preajmă. Now that sucks a bit.

M-am mutat (pe jumătate)

Întrucât detaliile despre Palm Pre, newLisp şi Haskell nu stăteau bine între o poezie şi Catedrala Mântuirii Neamului, jumătatea respectivă se va muta aici. Defun nu vine de la De Fun, care mi se pare un nume imbecil.

Ne întâlnim în continuare aici, până când o să mai deschid un blog ca să am trei în pula mea.

iPhone şi Palm Pre din perspectiva maimuței programatoare

Tocmai am apucat să arunc primul ochi succint peste documentația SDK-ului Palm Pre. Bine, ştiu că Palm Pre pierde din start. Nu e cool. Dacă ai tricou cu De puta madre 69 şi ai Palm Pre, nu eşti cool, ai doar un gadget de care toată lumea pare să mai fi văzut. Dacă ai iPhone eşti cel mai tare de la tine de la bloc. Dar totuşi am câteva gânduri de scris pe tastatură despre asta.

Mai întâi, lucrul extrem de plăcut la SDK-ul Palm Pre este că e uşor de învățat şi de început. Objective-C e scârbos. Arată ca o rață cu testicule legate de guşă şi picioare de hipopotam. Nu-i nici chiar C, nici chiar Smalltalk, şi în consecință te simți ca şi când IDE-ul C face mişto de tine şi te pune să scrii cod Smalltalk şi iners. CocoaTouch e un framework monstruos. Până scrii un HelloWorld trebuie să treci prin vreo 100 de pagini de documentație, din care jumătate numai ca să pricepi cum se foloseşte InterfaceBuilder şi de ce.

Palm Pre foloseşte HTML, CSS şi JavaScript. Pentru mine asta e destul de naşpa, fiindcă nu pot nicicum să înghit programarea web la nivelul ăsta, nu cu instrumentele de dezvoltare de la ora actuală. Parcă am revenit la a scrie aplicații Motif, doar că arată mai frumos şi nu trebuie să fiu atent la managementul memoriei — în rest e la fel de incomod şi de enervant. Avantajul e că pot să reciclez cunoştințele pe care le am deja, ceea ce în cazul CocoaTouch nu e cazul. Practic, e ca să înveți sa foloseşti eficient Palm Pre, trebuie doar să absorbi câteva convenții, să te uiți câteva ore pe exemple şi sa parcurgi succint documentația. Asta înseamnă să foloseşti tehnologii standard, iar ideea este, din punctul meu de vedere, salutară. Ca să înveți CocoaTouch trebuie s-o iei de la Adam (cu coastele deținute integral), pe când în cazul Palm Pre, majoritatea viitorilor dezvoltatori ştiu inclusiv cum să o învețe pe Eva să facă sex anal.

Al doilea lucru care mi se pare eminamente superb la Palm Pre este că platforma de dezvoltare nu este exclusiv OS X pe procesoare Intel şi ultima versiune punct. Adică, dacă ai un PowerMac G5 dual care încă se ține excelent, şi vrei să scrii programe IpodTouch, poți să-l vinzi şi să iei juma’ de iMac pentru că nu se poate — instrumentele respective nu există. Nu pentru că ar fi imposibil per se, ci pentru că nu vrea Apple (la fel ca majoritatea lucrurilor pe care nu le poți face cu produsele lor). Nu mai vorbesc de oropsiții care vor să facă asta şi n-au decât calculatoare cu Windows.

Ba mai mult, mi se pare foarte util şi faptul că platforma respectivă nu e legată de un anume IDE. Mă calcă pe nervi când cineva face asta. XCode e un IDE foarte bun, nimic de zis, dar sunt mai productiv cu Emacs. Nu pentru că Emacs e mai tare, pentru că e extensibil sau pentru că are o jumătate de chiuvetă în plus, ci pentru că îl folosesc dinainte ca Xcode măcar să apară. Blow me, Apple.

Singura chestie prohibitivă pentru mine e că, momentan, Palm n-a pus la dispoziție un SDK nativ. Nu e vorba numai de faptul că ideea de a scrie aplicații web prefăcându-te că ai la dispoziție tehnologie desktop mi se pare abjectă, ci de performanță în sine. De exemplu, visez de mai multă vreme să scriu un emulator (ca lumea) pentru, să zicem, C64, pe care să-l am cu mine pe un dispozitiv portabil. Pe iPod nu se poate pentru ca Apple nu vrea (şi evident respinge aplicațiile respective, deci it’s a no go). Folosind JavaScript presupun că se poate, dar ideea e că nu vreau să ruleze chiar ca C64 şi sa încarce un joc în cinci minute.

Oricum, vroiam să spun doar atâta: în stilul tipic pentru ultimii doi-trei ani de evoluție a celor de la Apple, Palm le-au dat o lecție excelentă despre cum se tratează dezvoltatorii. Desigur că pe băieții din Cupertino îi interesează foarte puțin asta, fiindcă piața lor e atât de mare încât, în calitate de code monkey, suport cu stoicism faptul că, la fiecare release al programelor lor, urinează pe mine de undeva din stratosferă (din păcate asta e o atmosferă întreținută de restul audienței Apple, care nu numai că suportă cu stoicism, dar aplaudă entuziasm când respectivii se pişă pe ei, cam ca adolescenții cu aere intelectuale la concertele lui Tudor Chirilă). Dar pe mine mă interesează asta, fiindcă SDK-ul Palm Pre chiar îmi face viața de primată mai uşoară.

Când user-friendly e prea user-friendly

Post-ul de față este între altele un exercițiu de diplomație, pentru că am alergat după problema asta vreo oră şi ceva. Nu sunt enervat, doar respir ceva mai repede :-) .

Treaba e cam aşa: am zis să iau taurul de coarne şi să învăț să lucrez cu CocoaTouch, adică SDK-ul folosit la dezvoltarea aplicațiilor pentru iPhone şi iPod Touch. Seamănă leit cu Cocoa, doar că e adaptat unei platforme ceva mai limitate. Taurul are nişte coarne destul de insipide pentru mine din punct de vedere “istoric”: am lucrat cu OpenStep înainte ca Apple să schimbe instrumentele de dezvoltare, şi nici atunci prea mult. Ceea ce a ajuns Cocoa acum seamănă cu ce țineam eu minte, dar numai cât să mă înşele, fiindcă de fapt s-au schimbat cam toate detaliile. Dacă NeXT pusese la dispoziție un Developer’s Guide absolut excelent, Apple are o documentație pe care, după ce o lecturezi o zi întreagă, vii acasă şi-ți bați nevasta, copiii şi mai ales soacra, pentru că e foarte multă, foarte detaliată, foarte prost organizată şi foarte prost indexată.. Ceea ce înseamnă că poți găsi orice dacă ai timp să cauți. De asemenea, până nu demult, nu exista cam nicio carte decentă. Rezultatul e că eu învăț să folosesc CocoaTouch cu toate că n-am reuşit niciodată să folosesc Cocoa cum trebuie şi am uitat cam tot ce ştiam despre Openstep. Pentru mine, standardul în domeniu este Qt, care mi se pare un framework excelent în ciuda faptului că stă călare pe C++.

Unul dintre instrumentele cu care NeXT a rupt gura târgului atunci când a lansat NeXTStep este ceea ce astăzi a ajuns la Apple ca Interface Builder (Cocoa este de fapt fostul NeXTStep — în caz că se întreabă cineva ce-i cu NS-ul din fața tuturor claselor). Interface Builder-ul ăsta este, după cum îi spune şi numele, un program cu care poți desena interfețele — numai că face ceva mai mult de-atât, după cum o să explic imediat.

În cazul Qt, “traseul” uzual pentru realizarea interfeței este (sau ultima oară când am lucrat cu Qt, acum câteva luni, era), în mare, cam aşa: se porneşte prin a plasa butoanele, meniurile şi toate celelalte în Qt Designer. Qt Designer generează apoi (automat) o clasă care reprezintă interfața, clasa respectivă fiind însă “chioară” (constructorul ei nu inițializează conexiunile evenimentelor din interfață cu acțiunile din cod — fiindcă n-are de unde să ştie care-s alea). Pentru a realiza conexiunile respective, maimuța din fața tastaturii trebuie să scrie o clasă care o moşteneşte pe cea generată, în care să realizeze conexiunile necesare, să “numească” delegații ş.a.m.d.. Conexiunile se pot realiza şi automat, via nişte constrângeri legate de denumire a funcțiilor, dar când am folosit Qt prima dată (asta fiind, ce-i drept, acum vreo cinci ani) trebuiau făcute manual.

Prin comparație, treaba în cazul Xcode şi IB e mult mai simplă: obiectele din interfață care trebuie accesate prin cod sunt declarate punându-li-se IBOutlet în față, iar acțiunile la care evenimentele din interfață sunt conectate se declară punându-li-se IBAction în față; scrii clasa obiectului care joacă rol de controller (outlet-urile fiind între variabilele instanțelor respective, acțiunile aparținând controller-ului ca metode, strunjite evident în bunul spirit al MVC), după care IB “se prinde” automagic şi faci conexiunile respective prin cel mai tineresc drag’n'drop posibil.

Avantajul e că toată treaba durează puțin şi că metoda e fantastic de flexibilă. Practic, numai pe seama sus-pusei integrări, se sare peste o grămadă de etape (ceea ce am schițat mai sus e numai în linii mari şi am sărit peste câteva amănunte).

Dezavantajul vine pe urmă, dacă ai făcut vreo trăznaie. În cazul meu, trăznaia în cauză a fost aceea de a greşi clasa unui view controller. Mai exact, conectasem un view la un controller care nu era al lui (era vorba de acelaşi tip de view — un picker — doar că unul avea două “roți” şi celălalt — una singură). Inutil de spus că nu mergea. Mesajul de eroare?

*** Terminating app due to uncaught exception ‘NSUnknownKeyException’, reason: ‘[<DatePickerViewController 0x525a60> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key doublePicker.’

Din păcate, tot ce am înțeles din mesajul ăsta era că încercam să accesez valorile afisate de un DatePicker folosind cheia “doublePicker”, ceea ce mi se părea extrem de improbabil pentru că nu obişnuiesc să scriu programe când sunt beat mangă. Ok, să zicem că o exegeză mai atentă a textului m-ar fi convins că e vorba de altceva, dar tot nu e destul.

Problema cu care mă confrunt în momentul ăsta e că nu “văd” tot codul din spatele aplicației. E foarte tare faptul că o bună parte din cod e generată de IB şi de Xcode, dar eu nu sunt învățat să depanez altceva decât cod din ăla bătrânesc, cu text. Sursa problemei am găsit-o până la urmă, dar cu foarte mare greutate fiindcă era într-o fereastră din InterfaceBuilder.

Bineînțeles, vina e în principiu a mea, cu atât mai mult cu cât trecerea de la C şi ASM e foarte zgrunțuroasă pentru mine. Însă e interesant cum o parte din zgrunțul trecerii ăsteia vine din faptul că instrumentele cu care am de-a face au o paradigmă atât de diferită. Dacă aş fi făcut o greşeală de genul ăsta lucrând cu Qt, reflexul meu imediat ar fi fost să mă uit pe codul generat de Qt Designer şi moc, şi probabil că mi-ar fi luat cinci minute să mă prind de unde vine. Nu pentru că Qt e mai tare şi nici pentru că Apple sunt nişte capitalişti infecți, ci pentru că mintea mea e mai învățată cu liniile de cod decât cu imaginile. Pentru mine, nivelul ăsta de user-friendly e prea… user-friendly, şi trebuie să mă învăț :-) .

Demmers Teehaus — way to go!

Am fost zilele trecute la Demmers Teehaus după nişte ceai. Absolut excelent. Prețurile sunt ceva mai piperate decât la alți distribuitori de ceai din Bucureşti, dar calitatea nici nu are loc de comparație. Am dat dealtfel peste primul ceai negru care chiar are cofeină. Se cheamă Black Jack, e amar al dracu, dar dimineața poate ține loc de cafea. Mărturia vine din partea subsemnatului, care altfel bea ceai negru înainte de culcare şi n-are nimica. Deci e potent.

Magazinul e micuț şi e chiar pe Academiei colț cu Edgar Quinet, vis-a-vis de Facultatea de Arhitectură. Au şi câteva mostre pentru nehotărâți.

http://www.demmer.ro/

Trei în pula mea — variante

Deşi cred că am mai spus şi cu altă ocazie că Adrian Despot mi se pare că are mult mai multe aere decât talent (ceea ce reprezintă o problemă, fiindcă deşi nu îmi place în mod special Vița de Vie, Despot nu mi se pare neapărat unul din soliştii slabi), nu pot să nu recunosc că mă gâdilă un pic pe substratul meu de mahala faza cu “trei în pula mea”, aşa de prost-gust cum este. Şi nici că, deşi îmi pare sincer rău pentru fătuca cu microfon, treaba e reprezentativă pentru genul de întrebări şi profesionalismul afişat de jurnaliştii de pe la noi. Prin urmare, câteva variante.

- Ia spune Ionică, ce poveste ai citit tu în vacanță?
- Eu am citit povestea Capra cu trei iezi, scrisă de Ion Creangă
- Aşa. Şi despre ce e vorba în poveste?
- În poveste este vorba de o capră care îşi lasă singuri acasă iezii — pe iedul cel mic, iedul cel mare şi cel mijlociu. Lupul vine şi îi mănâncă pe cei doi iezi mai mari, dar cel mai mic reuşeşte să se ascundă şi la sfârşit capra îl pedepseşte pe lup lăsându-l să cadă într-o groapă.
- Foarte bine Ionică…. şi… câți iezi avea capra?
- Poftim?
- Da, câte… câți copii?
- Da’ cum v-au angajat?
- …
- Nu nu, ați vrut să mă ascultați, acum mă ascultați. Tocmai v-am enumerat acum cinci secunde că capra avea un ied mic, unul mijlociu, şi unul mare. Următoare întrebare este câți iezi avea capra?
- Da…
- TREI ÎN PULA MEA

- Bun, deci domnule student, nu prea ați învățat. Aveți un punct la primul subiect, un punct la subiectul doi şi un punct din timpul anului.
- Am înțeles… şi ce notă am?
- Poftim?
- Da, ce… câte puncte am?
- <Către asistent> Da cum l-ai băgat în examen? <Către studentul care deja dădea să plece> Nu dom’le, ai vrut să te lămuresc, acum stai să te lămuresc. Tocmai ți-am enumerat acum cinci secunde că ai un punct la primul subiect, un punct la subiectul doi, şi un punct din timpul anului. Următoarea ta întrebare este câte puncte ai?
- Da…
- TREI ÎN PULA MEA!

Interviu la Radio Trinitas
- Bun, acum spuneți-ne, părinte Arsenie, care sunt persoanele lui Dumnezeu?
- Deci fiule, după cum ne spun Sfintele Scripturi, Dumnezeu e unul în ființă şi întreit în persoană. De aceea, noi spunem că sunt trei persoane ale lui Dumnezeu, Dumnezeu-tatăl, Dumnezeu-fiul şi Duhul Sfânt.
- Aha… şi câte persoane are Dumnezeu?
- Poftim?
- Da, câți… câte persoane sunt?
- <Către cameră> Da’ cum l-ați angajat? Nu nu, ai vrut să faci întrevederea, acuma faci întrevedere. Tocmai ți-am istorisit acum cinci clipe că persoanele lui Dumnezeu sunt Dumnezeu-tatăl, Dumnezeu-fiul şi Duhul Sfânt. Următoarea ta întrebare este câte persoane sunt?
- Da…
- TREI ÎN MĂDULARUL MEU NECURAT!

Arhimede îi explică unui inginer cum să construiască o maşină de război.
- Şi aici?
- Bun, şi aici va trebui să vină un cerc cu diametrul de doi metri, înțelegi?
- Da da, înțeleg. Şi… ce arie să aibă cercul?
- Poftim?
- Da, ce… cât de larg să fie?
- <Se uită către şeful de şantier> Da’ cum l-ați angajat? Nu nu, ai vrut să-ți explic, acum stai să-ți explic. Tocmai ți-am explicat acum cinci secunde că aici trebuie să vină un cerc cu diametrul de doi metri. Următoarea ta întrebare este “Care e aria cercului?”
- Da…
- 3.14 IN PULA MEA!

Fostul meu profesor de matematică din liceu îmi explică o problemă.

Eu: Am înțeles, şi aici dacă înlocuim expresia (1)…
El: Exact. Dacă înlocuim expresia (1), obținem 1+1.
- Aha… şi asta cât dă?
- Poftim?
- Da, care e rezultatul…
- Da’ tu cum ai ajuns clasa a doişpea? Nu nu, ai vrut să-ți explic, acum îți explic. Tocmai ți-am explicat acum cinci secunde că dacă înlocuim expresia (1), găsim E=1+1. Următoarea ta întrebare este “Cât este E?”.
- Da…
- TREI ÎN PULA MEA!

« Articole mai vechi