Feedback loop

Posted in Regula 0 on December 7th, 2015 by Mihnea

O sa rup un pic tacerea aici ca sa va infrumusetez acest inceput de saptamina cu o noua isprava a tovarasului Ovidiu Cucu. In ultimul timp, vajnicul militian duce o lupta acerba cu botii de spam care au luat cu asalt ograda expertilor. Din pacate insa, cind iti petreci tineretea in comitetul disciplinar al unei uzine comuniste redactind autodenunturi, autocritici si compendii de reguli, iti distrugi iremediabil partea din centrul limbajului care ii ajuta pe oameni sa faca diferenta dintre un postac onest si unul cu intentii capitalist-antisociale.

In fapt: utilizatorul haleema, originar pare-se din Bistrita-Nasaud, cu fix un post la activ, lanseaza o intrebare: “Cum fac o aplicatie similara cu File Explorer-ul din Windows, care eventual sa aiba caracteristici noi ca de exemplu view-uri multiple, taburi, paneluri docabile etc.” Intrebarea zace fara raspuns vreme de 9 luni, pina o vede Ovidiu si o ia personal: Windows, multi-view, docking, MFC, FAQ! Daca nu el, atunci cine? Si unde mai pui ca are si raspunsul potrivit, caci intimplator a scris un articol pe blog despre asta, acum mai bine de un an?

haleema intreaba

 

Din pacate insa, imboldul raspundac pe care l-a simtit Ovidiu nu era izvorit doar din pasiunea pentru MFC. Familiaritatea cu subiectul merge mai adinc, deoarece cu vreo 4 luni inainte, Ovidiu insusi se intrebase pe sine, in aceeasi sectiune a site-ului: “Cum fac o aplicatie similara cu File Explorer-ul din Windows, care eventual sa aiba caracteristici noi ca de exemplu view-uri multiple, taburi, paneluri docabile etc.

cucu raspunde

Observati vreo similitudine? Sa fie haleema un bot care reproduce alte postari de pe forum, ca sa para ca spune ceva coerent, ca sa poata apoi sa bage un link la Viagra in semnatura, sau la homepage? Greu de spus. Nu e ca si cum ar mai exista exemple pe forum. Si in fond, Ovidiu are chiar un protejat care raspunde la intrebari pe care nu le intelege copiind chestii gasite pe internet, si despre el stim ca nu e un bot, nu?

Nea’ Ovidiu, daca auzi un tiuit puternic in urechi de citeva zile, nu-l baga in seama pe doctorul care-ti spune ca e tinitus. Se cheama feedback si e ca atunci cind pui un microfon linga boxa la care e conectat, doar ca la matale s-a inchis circuitul prin intermediul forumului.

Tags: , , , , , , , , , , , , , , ,

Fizica pentru dotnetisti

Posted in 112, Regula 0 on November 18th, 2013 by Mihnea

Multi dintre noi au trecut prin clasa a 6-a. Majoritatea au facut experimentul ala cu rigla de plastic, puloverul si bucatelele de hirtie. Din pacate, elevii din Cisnadie, jud. Sibiu, n-au avut acest privilegiu. Printre ei se regaseste si intiiul dotnetist, evanghelist si bautor de ceai chinezesc al tarii, Aurelian Popa:

Eu Propun™ ca la urmatorul code camp in care Aurel ne invata cum sa facem task-uri de 3 zile intr-o ora, sa organizam si un workshop cu scamatorii d-astea. Sa nu mai bata omul atita amar de drum pina in China, cind partea relevanta din China se gaseste deja in ironic botezatul Complex Europa la pretul de 65 de lei:

Micul Aurel

Bonus video – Aurelian la 60 de ani, in lupta cu haterii:

PS: va dati seama cum ar fi daca pe planeta ronua s-ar prinde Discovery sau Wikipedia si ar afla Aurel despre magicienii profesionisti? Sau macar de Magicianul Rilea…

Tags: , , , , , , , , , , , , , ,

Sa ma fut in politete

Posted in Regula 0 on September 18th, 2013 by Mihnea

retard-baby2Cum pula mea s-a ajuns sa fie mai important sa fii politicos decit sa stii despre ce vorbesti?

Este o chestie pe care o tot vad pe forumuri, liste de discutii etc. Sa-i spunem sindromul Marius Bancila. Vine un prost – sa-i spunem Silviu Ardelean – si emite o timpenie. Ii arati ca-i prost si-l rogi sa nu mai posteze imbecilitati. Apare un moderator – sa-i spunem tot Marius Bancila, ca sa rimeze cu sindromul – si te avertizeaza sa nu-i mai spui lui Silviu Ardelean sa-si tina gura, ca nu-i frumos. CUM SLOBOZ BA? In loc sa-i spuna Silviului ca e inacceptabil sa vorbesti timpenii (sau sa-l baneze direct), Mariusul e preocupat de mentinerea atmosferei de voie buna si cooperare tovaraseasca. Ca si retardatii e oameni, si are si ei inteligenta lor emotionala, nu?

Da, stiu. Daca iti antagonizezi interlocutorul, comunicarea se duce pulii, asa ca daca vrei sa fii constructiv trebuie s-o iei cu frumosul. Problema cu aceasta regula de cacat este ca presupune existenta unui interlocutor. Eu nu vorbeam de cazurile in care cineva greseste pur si simplu si il corectezi, ci de situatiile in care e implicat un Silviu, unde e evident de la inceput ca n-ai cu cine sa discuti. Presupusul interlocutor e atit de prost incit nu numai ca nu poate, dar nici nu vrea sa inteleaga argumentele pe care le aduci. In mod normal, Mariusul ar trebui sa-i stearga aberatiile. Daca n-o face, ceilalti participanti la discutie au obligatia morala de a face misto de retardat, pentru a se asigura ca viitorii cititori ai thread-ului nu sint indusi in eroare. Eu asa vad lucrurile.

Dar sa lasam numele generice si sa trecem la un exemplu practic. Un domn de la Valve a propus ca VC++ sa dea warning-uri cind dai parametri aiurea la functii care accepta format string-uri, asa cum fac deja diverse alte compilatoare. VC++ da si el warning-uri d-astea, dar doar cind ii dai cu /analyze, ceea ce dureaza inacceptabil de mult IRL. Validarea asta nu e costisitoare (dupa cum ne dicteaza atit bunul simt, cit si faptul ca nu incetineste semnificativ compilarea acolo unde e implementata deja), deci ar putea fi mutata din analizorul static in compilator.

In acest moment se amesteca in discutie Silviul de serviciu, cu numele de scena UnitUniverse, care nu vrea ca compilatorul sa faca “special process” pentru printf, care e o functie ordinara. Fiind foarte prost, el este de parere ca problema reala sta in faptul ca printf foloseste “extractie binara” si “masti binare” pentru a extrage parametrii, deci compilatorul n-are ce face. Ca si Silviul real, este preocupat de noile cuceriri ale tehnicii in materie de generat code bloat si incetinit compilatorul, asa ca face si el o Propunere: sa inlocuim printf cu template-uri variadice (sigur, nu inainte de a inlocui enumurile cu vectori).

Imboldit iar de spiritul civic, am considerat ca-i datoria mea sa-i spun boului ca nu e vorba de printf, ci de un mecanism pentru marcat format string-urile ca sa le poata verifica compilatorul. Care mecanism exista deja in VC++ sub forma macro-ului _Printf_format_string_. Ce a inteles retardatul (care stapineste limba lui Shakespeares la fel de bine ca omologul sau din Valea Jiului):

Yes, providen switchers to enable the detecting is an considerable idea. But, as i written previously, the printf extracting tail arguments with binary cutters, I’m doubt if they could implement such kind of checking mechanism.

I-au zis doi oameni ca e facut. I-am zis si cum e facut si i-am dat si link la cum fac alte compilatoare. De aici, el a concluzionat ca nu se poate face din cauza “taietoarelor binare”. In pula mea.

I-am raspuns ca nu stiu ce-s alea binary cutters si ca-s convins ca nici el nu stie, dar ca indiferent de ce crede el, mecanismul exista deja si trebuie doar mutat din analizor in compilator. De asemenea i-am recomandat sa nu-si mai dea cu parerea in probleme pe care nu le stapineste. Nu i-am zis sa nu-si mai dea IN PULA MEA cu parerea. I-am zis fara mui si puli. Rezultatul a fost ca s-a autosesizat Mariusul local si mi-a sters comentariul.

Lasind la o parte faptul ca-i urez cancer militianului care a facut asta, doresc sa insist un pic asupra unui model de comportament (ca nu pot sa-i spun gindire) ce este des intilnit printre Silvii. Cum ajunge imbecilul sa deduca cu mintea lui ca nu se poate face, dupa ce i-am aratat cum e facut, si i-am dat si link-uri?

Raspunsul e simplu si nesurprinzator: prostia. Silviul porneste cu o Opinie. Desi undeva adinc in fiinta lui licare ideea ca de fapt nu prea stie despre ce e vorba, odata ce-si formeaza si exprima Opinia, vocea interioara este sugrumata si Silviul se lanseaza cu toata forta intru sustinerea Opiniei. Nu conteaza daca ii dai argumente, link-uri sau bucati de cod pe care le-ar putea baga intr-un compilator ca sa verifice ca-i prost. Cind parcurge raspunsul tau, Silviul sare pur si simplu peste partile pe care nu le intelege. Nu le vede. Este un mecanism de aparare: faptul ca nu intelege ceva ar insemna ca e prost. El nu vrea sa fie prost, asa ca lucrurile pe care nu le pricepe trebuie sa fie irelevante. De la irelevant la inexistent este un pas foarte mic, pe care intelectul sau de batracian cu trisomie il face fara ezitare.

Pentru a vedea cum percepe un Silviu o discutie, iti poti sterge toate argumentele. Textul ramas pare o simpla Opinie. Aha! Silviul are si el o Opinie. De ce ar fi Opinia ta mai buna decit Opinia lui?

Revenind: e OK ca intr-o discutie despre compilatoare pe MSDN sa spui ca printf foloseste taietoare binare pentru extras argumente, dar nu e OK sa ii recomanzi unui bou sa nu vorbeasca despre lucruri pe care nu le intelege. Idiocracy.

PS: tag-urile pentru acest post s-au scris practic singure. Le-am luat direct de la ultimul post de pe blogul de atitudine al minerului.

PPS (adica post-post-scriptum, Ovidiu): in curind e ziua de nastere a minerului si i-am pregatit o surpriza.

EDIT: multumim Pintea:

yPuhX91

Tags: , , , , , , , , ,

Problemele infrastructurii locale

Posted in Regula 0 on July 19th, 2013 by Mihnea

Desi tot auzim ca romanii sint fruntasi la internet, publicatia noastra a raportat in trecut ca exista zone din unele orase mari ale tarii unde aprovizionarea cu internet se face greu sau chiar deloc. Un exemplu este strada Venus din Timisoara, mai ales la numarul 33. Aceste lacune ale infrastructurii cauzeaza grave probleme in activitatea agentilor economici, impiedicindu-i sa foloseasca motoare de cautare consacrate in procedura de validare a aptitudinilor candidatilor din cadrul procesului de recrutare, ceea ce in cazuri extreme poate duce chiar la angajarea lui Silviu Ardelean.

Cu toate astea, lucrurile se regleaza uneori de la sine, dupa cum ne invata celebrul mistic si autor de citate pentru Facebook Paolo Coelho. Ne face o deosebita placere sa va informam (cu o oarecare intirziere, ce-i drept) ca S.C. Firma Unde HR-ul Nu Are Acces La Google S.R.L. s-a prins in sfirsit ca Silviu nu este asa de avansat pe cum s-ar putea deduce din titlul postului pe care-l ocupa, asa ca minerul nostru preferat trudeste de vreo 3 luni intr-o noua multinationala emblematica: Visma.

Cititorii cu spirit civic se vor grabi sa se intrebe daca pe strada Coriolan Brediceanu, unde muncesc cei aproximativ 128 de programatori de la Visma Timisoara plus Silviu Ardelean, sunt aceleasi probleme de livrare a agentului internetic ca in zona strazii Venus (mai ales ca se intersecteaza cu strada Circumvalatiunii, si clar nu poti avea internet pe o strada care se cheama asa). De data asta insa, angajarea lui Silviu nu s-a produs din vina unor deficiente de infrastructura, ci ca urmare a unei cumetrii. La Visma lucreaza de ceva vreme ingerul pazitor al lui Silviu, Marius Bancila. Ii uram sa culeaga ce-a semanat.

examen_cnh

Bonus story.

 

Tags: , , , , , , , , ,

Asamblorul

Posted in Codare cu premeditare, Regula 0 on September 2nd, 2012 by Mihnea

Bogdan Ontanu este un subiect generos, dar n-am scris pina acum despre el deoarece si-a desfasurat activitatea in neoliticul Internetului romanesc, pe cind Ideile se impreunau cu Eterul prin intermediul conturilor moca de Xnet si doar la ceas de seara, ca atunci era mai ieftin impulsu’ la Romtelecom. Desi forma de protoprostie intrupata in Bogdan este bine studiata in mediul academic, n-am vrut sa va indrept atentia catre trecut, atita timp cit prezentul este intesat de atitia mineri, militieni, profeti si alte subspecii de intelectuali care se zbat pentru a ne atrage atentia. Iata insa ca Viorel, un codexpert cel putin atipic prin faptul ca se preocupa in principal cu raspunsurile la obiect, ignorind aproape total exemplul Cucuscian, a decis sa faca jonctiunea intre trecut si prezent. Cind un incepator pingarit de miinile negre ale minerului a intrebat de unde poate sa-si procure un asamblor pentru a-si pune capat zilelor, Viorel a raspuns:

Încearcă şi acest asamblor interesant:

Bogdan Valentin Ontanu, autorul acestui asamblor interesant si posesorul site-ului oby.ro, este un fel de Aristotel al mileniului 3: prozator, filosof, game designer, virusolog, parinte de sistem de operare dar, mai presus de toate, programator ASM. El si-a asigurat locul in cartile de istorie de la scolile ajutatoare cind, in 2001, a anuntat ca lucreaza la RTS-ul Hostile Encounter, ce va avea urmatoarele caracteristici:

  • cel mai tare RTS 2D
  • Jucabilitate mai buna sau la fel de buna ca Star [adica Starcraft, in caz ca v-ati prins dar nu vreti sa credeti – n.r.]
  • Cel mai tare AI ( cu invatzare, dropuri surprize)
  • Poveste originala, fulminanta (si culmea aproape reala)
  • scris in ASM

Inainte de a studia jucabilitatea, povestea fulminanta sau taria, sa ne intrebam de ce vrea Bogdan sa scrie tot jocul in ASM. Din fericire, FAQ-ul cu reminiscente codexpertice de pe site ne lamureste:

We know ASM well. ASM is also very easy to learn
Argumentul e cladit pe proverbul “drumul cunoscut e cel mai scurt”. Cu alte cuvinte, Bogdan nu e in stare sa invete altceva, asa ca foloseste ce stie, indiferent ce implica asta. Also, “we” adica el.

There will allways be ASM code in a GAME so: Why NOT write all in ASM?
Dupa ce a auzit la Teleenciclopedia ca 57% din corpul uman e apa, Bogdan si-a extras creierul si l-a inlocuit cu apa, devenind astfel al doilea cel mai cunoscut programator hidrocefal din Romania.

Speed is of the essence in GAMES. ASM is 100% up to 300% faster than today “optimized” compiler
Iata ca frica de compilatoare si masini de scris automate facea victime cu mult inainte ca Minerul sa-i dea glas pe codexpert. Sa vedem cum se traduce asta in practica:

Cerinte de sistem pentru Starcraft, scris in C++ de catre fraieri:

  • CPU: 90 MHz Pentium I
  • RAM: 16 MB

Cerinte de sistem pentru Hostile Encounter, scris in ASM de catre Bogdan Ontanu:

  • CPU: 400 MHz Pentium II
  • RAM: 64 MB

Nu rideti. Codul ASM al lui Bogdan chiar este de 3 ori mai rapid decit codul amatorilor ce utilizeaza C++, dar necesita de 4.5 ori mai multi megaherzi d-astia deoarece Hostile Encounter e de 3*4.5 = 13.5 ori mai bun decit Starcraft. Dovada in screenshot-urile alaturate:

Starcraft

13.5 * Starcraft

Sint sigur ca se vor gasi guri rele care vor spune ca screenshot-ul din dreapta arata de maxim 7-8 ori mai bine decit cel din stinga, nicidecum de 13.5 ori. Lor le voi atrage atentia ca ignora faptul ca desi este facut de amatori, Starcraft este, totusi, un joc lansat, pe cind Hostile Encounter este inca in dezvoltare, deci are suficient timp pentru a-si realiza potentialul. In plus, trebuie sa vezi jocul in actiune ca sa-ti dai seama ca performanta de 1350% nu e investita doar in grafica ci si in AI si in modul in care toate elementele se imbina fluid, rezultind intr-o experienta ce atinge dezideratul initial de “cel mai tare RTS 2D”. Din fericire exista un demo care poate convinge pe oricine.

Acum ca am stabilit faptul ca Bogdan este cu adevarat o minte luminata a programarii ASM si nu numai, este timpul sa ne aplecam asupra talentului sau de prozator, de unde izvoraste povestea jocului, “fulminanta si culmea aproape reala”. Fundalul actiunii din Hostile Encounter este un o imbinare magistrala a unor idei de baza din scientologie, crestinism, Lorin Fortuna si practic orice SF de cacat din ultimii 50 de ani, relatata cu maiestria unui elev care n-a trecut de clasa a 3-a desi a incercat de 8 ori. Opera este atit de complexa incit sfideaza orice tentativa de a face un rezumat ce ar putea incapea in acest articol, asa ca va invit sa cititi aici schita realizata de autor. Marturisesc ca eram cu sufletul la gura atunci cind Satana voia ca urmatoarea recolta sa aiba 7 “typo logical DNA code”, in timp ce Dumnezeu insista sa bage 12. Pentru cei care nu dau skip la dialoguri, avem aici inca 3 fragmente scrise in aceeasi limba frumos curgatoare a lui Shakespeares ce imping firul epic cu pulanul in coaste de la Iisus, gheizere sfinte si retele neuronale pina la Zamolxis si hackeri romani.

Printr-o inexplicabila si cruda omisiune a Divinitatii, talentul lui Bogdan cu pixul acopera doar sfera cuvintelor, nu si pe cea a formelor. Acest obstacol a fost insa usor depasit, caci s-a gasit imediat un suflet de artist care sa completeze sufletul de prozator-asamblor al subiectului nostru. Un suflet de artista, mai exact, caci slava pentru grafica de exceptie se cuvine Adinei, care, conform spuselor lui Bogdan, a si cistigat “premiul artistic” la concursul “SF Rom” cu o imagine din joc. Privind in galeria intitulata inexplicabil “Artwork” resimtim un sentiment de goliciune, caci din pacate concursul respectiv s-a pierdut in negura vremurilor si nu putem vedea celelalte lucrari care au participat si n-au cistigat. Imaginati-va doar cum erau alea, daca au fost declarate mai proaste ca asta (intutulata, intr-un act de suprema ironie involuntara, ugly_thing.jpg):

De ajuns insa cu Hostile Encounter. Desi e un capitol important din activitatea lui Bogdan, nu e singurul. Trebuie sa mentionam macar in treacat Solar OS, sistemul de operare scris de Bogdan in – ati ghicit – ASM. Dupa cum putem citi in parabola A Day with Solar OS, acesta este primul sistem de operare care pune o intrebare de ordin filosofic hackerilor:

Yes I know you can break me, but since it is so easy by design, there is also no glory in doing this… so why doing it? Creation and Construction my friend are much more honorable, valuable and harder to achieve than entering a simple house that has no locked doors or “windows”. Besides my core shell is read only, small, simple, fast and does not auto run nothing. How on this Earth are you going to convince me to compile and insert your code into my GUI Kernel?

Sublim. Un nou concept in sfera securitatii aplicatiilor: security by philosophy. OS-ul iti vorbeste de dincolo de “GUI Kernel” si face apel la umanitatea ta, ca o poezie de Elena Farago:

De ce m-ai prins în pumnul tau,
Hacker frumos, tu nu stii oare
Ca-s mic si eu si ca ma doare
De ce ma strangi asa de rau?

Fratii mei ceilalti se joaca
Cu hackerii toti, dar eu
Nu pot alerga ca dansii,
Ca sunt scris in ASM!

Bogdan Ontanu lucreaza in prezent la AVIRA, unde sper ca incearca sa patenteze aceasta manevra filosofica si s-o inglobeze in produsul antivirus al companiei.

Mai sint multe de zis despre acest Om Al Renasterii si din fericire avem unde: Bogdan are un forum dedicat ideilor si proiectelor sale. Recomand cu caldura parcurgerea sectiunii “Evolution of Human Race”, unde vizionarul programator ASM continua discutii de pe alte forumuri sub forma de monolog, atingind subiecte de interes maxim si dind solutii pentru iesirea omenirii din criza morala si materiala in care se afla. De exemplu, aici gasim o aspra critica la adresa CERN, care a construit degeaba LHC-ul. Daca l-ar fi consultat intii pe Bogdan, ar fi aflat in primul rind ca trebuia facut in ASM si in al doilea rind ca “whatever technological advancement we might achieve it does not matter until we do not solve our darkness inside“.

In caz ca n-ati inteles, va traduc eu: pentru Bogdan nu conteaza bosonu’ Higgs si compilatoarele, ca la el in minte e bezna.

Tags: , , , , , , , , , , , , , , , , , , ,

Amintiri din copilarie

Posted in Regula 0 on March 20th, 2012 by Mihnea

De cind minerul Silviu Ardelean a cazut din gratiile multinationalei emblematice si s-a vazut obligat sa-si ia tirnacop cu garbage collection, a lasat-o mai usor si cu “acting into a C++ Romanian programming community called CODEXPERT”. Desi ograda n-a dus lipsa de rataciti a caror retardare ar fi putut rezona cu prostia lui pentru a da nastere unei explozii de bucurie in sufletele cautatorilor de amuzament facil (de exemplu ala suparat pe assert), oportunitatile au venit si au trecut fara ca minerul sa faca vreo propunere. Totusi, nu e totul pierdut: ortacul are si twitter, unde mai scapa din cind in cind cite un link la chestii care-l umplu de mirare (pentru ca nu le intelege) sau un citat care l-a impresionat.

Ciripeala de azi continua o tema inceputa cu mult timp in urma prin celebrul “psychologists say“; o sa vi-l arat imediat si probabil il veti recunoaste, pentru ca este folosit de multi prosti pentru a-si justifica prostia. Ne putem doar inchipui extazul care l-a cuprins pe miner cind a vazut ca insusi marele Albert Einstein i-a lasat peste veacuri un mesaj de imbarbatare care confirma faptul ca nu-i nimic in neregula cu el si ca haterii n-au dreptate:

A person who never made a mistake never tried anything new.

Sigur, ne-am putea lega de faptul ca de la “a mistake” pina la colectia de imbecilitati consemnate de letopisetul nostru este o distanta pe care s-ar putea ca Al sa nu vrea s-o acopere cu remarca lui, sau ca nu poti pretinde ca programarea e “something new” si in acelasi timp sa scrii pe linkedin ca ai 10 ani de experienta. Nu are rost insa sa zabovim mult pe astfel de argumente, pentru ca voi le stiti deja, iar el nu le intelege (mai ales ca acum il are si pe Einstein de partea lui). In schimb, o sa fac ca-n Greuceanu, propunind sa ne duelam in citate. In coltul meu va sta John Holt cu o poveste din copilaria lui Silviu:

One day, in room period, I asked the children to write on paper certain words that I had showed them, and then write what these would look like if seen in a mirror. First I wrote CAT. Silviu wrote CAt. It didn’t trouble him that two letters were capitals and one lowercase – if he noticed it at all. He assumed that seen in a mirror the order of letters would be reversed, so he wrote TaC. The lowercase t became capital; the A became lower case. The next word was BIRD. He completely forgot what he had just done – about reversing the order of the letters. This time he assumed that the trick was to write each letter backwards, while keeping them in the original order. On his paper he had written BIrD. He reversed the B correctly, wrote the I, then looked at the lowercase r, which must have looked to him like an upside down L, decided, “I must turn this right side up,” and wrote L. Then he decided that the letters B and D should not be reversed, so his final answer was BILD.

Sper ca acum intelegeti cum ii vin ideile alea cu inlocuit enum-urile cu vectori. Mai departe ni se explica de ce reactioneaza cum reactioneaza cind ii spui ca a gresit:

This child must be right. He cannot bear to be wrong, or even to imagine that he might be wrong. When he is wrong, as he often is, the only thing to do is to forget it as quickly as possible. Naturally he will not tell himself that he is wrong, it is bad enough when others tell him. When he is told to do something, he does it quickly and fearfully, hands it to some higher authority, and awaits the magic word right or wrong. If the word is right, he does not have to think about that problem anymore; if the word is wrong, he does not want to, cannot bring himself to think about it.

Si acum despre raspunsurile aprobatoare si propunerile suplimentare din thread-urile in care s-a dat deja raspunsul corect:

This fear leads him to other strategies. He knows that in a recitation period the teacher’s attention is divided among twenty students. He also knows the teacher’s strategy of asking questions of students who seem confused, or not paying attention. He therefore feels safe waving his hand in the air, as if he were bursting to tell the answer, whether he really knows it or not. This is his safe way of telling me that he, at least, knows all about whatever is going on in class. When someone else answers correctly, he nods his head in emphatic agreement. Sometimes he even adds a comment, though his expression and tone of voice show that he feels this is risky. It is also interesting to note that he does not raise his hand unless there are at least half a dozen other hands up.

Atit.

 

 

Tags: , , , , , , ,

Concurs SuperEroul Bitdefender

Posted in 112, Regula 0 on January 20th, 2012 by jos8cal

Se pare ca divortul intentat de Silviu Ardelean celor de la Bitdefender i-a adus intr-un an de zile in pragul disperarii. Dupa 3 ani in care s-a luptat cu regula 0 pentru imaginea Bitdefender pe toate forumurile de programare interne si internationale, Silviu s-a retras subit, lasind in urma sa oameni dezorientati si fara reper moral. Contactat telefonic de redactia noastra, Nechifor Trepetnic, angajat Bitdefender, ne-a relatat cu vocea inecata in lacrimi:

Practic nu mai aveam identitate. Am fost decapitati moral si spiritual. Sincer sa va spun, nici nu stiam incotro sa apucam de suparare, asa ca ne-am intors la credinta celor din care ne tragem, adica la daci, mai exact la capul lor de lup.

Firmilian Aristobul, un apropiat al lui Silviu, a completat:

Trebuia sa anticipam plecarea lui Silviu dintre noi, ca nu de nebun isi inalta putin cite putin monitorul spre cer, in fiecare zi. Dar noi, nevrednici, am continuat sa-i exploatam abilitatile de diplomat.

Dorind sa ia atitudine, multinationala a dat zvon in tara, prin gura celor de la Creative Monkeyz, ca va oferi un Wacom Intuos 4 Medium acelui artist care va fi in stare sa conceapa un trup pe masura capului de lup. Iata ce au de spus cei de la CM despre asta:

tot ce trebuie e sa faceti e sa “produceti” o lucrare grafica originala, in care, SuperEroul Bitdefender, imaginat de voi, sa se prezinte in toata gloria. Trebuie sa fie un erou original – poate fi robot, umanoid, animal, leguma, fruct, strutzocangur, rinocerb, etc. (sidekick pentru Bitalau!?). Puteti folosi orice mijloace doriti – fie grafica digitala via Photoshop, Illustrator, etc. ; fie randari din programe 3D, sau desen traditional (also pictura sau fotografie).

Odata realizata imaginea, trimiteti-o pe adresa de email: concurscm@gmail.com. lucrarile selectate apar in concurs, implicit in galerie.

Pozele selectate vor fi expuse in toate galeriile din Valea Jiului, in limita orelor de program.

Noi uram succes tuturor artistilor cu aplecare spre pix.

Tags: , , , , , , , , , , ,

Nevoia cunoasterii lui Dumnezeu.

Posted in Premiul n00bel, Regula 0 on January 7th, 2012 by jos8cal
Asa ai arata tu daca Silviu ar fi portretist.

Asa ai arata tu daca Silviu ar fi portretist.

Aceasta nevoie o simt de fiecare data cind citesc ceva scris de Silviu Ardelean. Si de fiecare data ma imaginez stind in fata lui Dumnezeu in timp ce ma proroceste, iar cind ar ridice ochii sa ma masoare, i-as fute una in coaie sa-l las lat pe jos. Si imobilizat asa de durere, sa-l intreb cum pula mea a reusit sa faca un specimen cu care nu te poti intelege, care se trighereaza pe cuvinte si nu intelege in pula mea nimic, niciodata. Orice subiect i-ar atinge sfecla, el cotrabaie in beciul mintii sa vada daca are ceva stocat din ce au spus altii despre ce se discuta si incepe sa-ti turuie cu o convingere de mai mai sa-i dai omor. Si tot timpul are un prieten care oricind poate garanta pentru spusele lui. Fie el un Assemblerman ori un Javaman, toti in general sint Dumnezei in ce fac si n-au altceva mai bun de facut decit sa faca propedeutica cu Silviu despre absconsa problema a pasarii optime a unui const char* la o functie.

De multe ori m-am intrebat cu Mihnea, cum e sa stai cu Silviu la o bere. Oare cit ai rezista sa vezi cum te izbesti subiect dupa subiect de un munte de ignoranta si prostie etalate cu o nonsalanta rar intilnita?

Am ajuns intimplator pe pagina de facebook a unui fondator Codexpert si observ ca omul empatiza cu durerea utilizatorilor de Eclipse, de Java, de Android si alte mizerii. Vad si poza botului de Silviu si incep sa citesc ce zice, moment in care am vazut negru (iarasi; pentru a cita oara). Iata cursul argumental al dialogului. Nu conteaza ca textul pe care se discuta era scris de Mihnea, ce conteaza e logica de mineriada:

“Nu numai ca pe Android trebuie sa scrii Java, acest limbaj conceput de si pentru copiii cu sindromul Down rezultati din relatiile incestuoase intre pigmei retardati; actul creator se petrece in Eclipse, un fel de editor de text care stie vag ca lucrezi la un proiect compus din mai multe fisiere, dar nu e niciodata sigur care sint fisierele alea, ce sa faca ca sa le compileze si cind.”

Si trinitatea de cuvinte Java, Eclipse, Compilator, au spawnat ortacul:

Silviu-Marius Ardelean Se vede ca autorul nu a ajuns sa lucreze in Eclipse. Daca o facea, ar fi constatat ca in Eclipse exista un mecanism de autocomplile on the fly.

Aici e momentul in care l-as arunca din cer pe Dumnezeu si l-as trimite sa copilareasca in Hateg, sa intre in mina calare pe un vagonet si sa moara pentru mine, sa reinvie si sa o luam de la capat.

Silviu-Marius Ardelean Un alt lucru inedit ce-l poti face in Eclipse cu Java e sa inserezi cod cand esti atasat la un proces (in anumite limite – cateva linii pe care le lasi inainte goale) si sa reevaluezi in mod debug portiunea de cod recent scrisa fara a fi nevoit sa pui noile binare si sa repornesti proiectul.

Pe linga ca nu este nici o legatura intre textul initial si dejectia Ardeleana, Silviu a reusit sa scrijeleasca pe peretii lui facebook o definitie a lui Edit&Continue, a lui HotSwapping, JRebel sau ce neamuri de nume retardate or mai fi in Java pentru Edit&Continue. Practic un FAQ de talie codexperta. Asadar, parafrazind:

Ce este Edit&Continue?

Silviu-Marius Ardelean: Edit&Continue este un alt lucru inedit, dar limitat, in care daca lasi citeva linii goale inainte sa compilezi, poti insera cod cind esti atasat la proces (deci nu pornesti in debug, ci te atasezi mai tirziu) si poti sa reevaluezi in mod debug portiunea de cod recent scrisa fara a fi nevoit sa pui noile binare si sa repornesti proiectul.

Intrebare pusa de interlocutorul sau: Deci au inventat si Eclipse debug and continue, sa inteleg.

Silviu-Marius Ardelean Ceva de genul dar mai transparent datorita autocompilarii si faptului ca nu era nevoie sa pun ultimele binare pe serverul remote la care eram atasat. Javaman ce mi-a aratat feature-ul era foarte incantat… :)

Il observam pe Javaman cum a pus capat zilelor negre in care zilviu impingea la vagonetul cu binare prin galerii.

Si ca sa fiu in ton cu inceputul de an, declar deschisa petrecerea sfirsitului lumii in 2012: Muie Dumnezeu.

Tags: , , , , , , ,

Invatati, Invatati, Invatati

Posted in Premiul n00bel, Regula 0, Slagare internationale on January 5th, 2012 by Mihnea

Sper ca sinteti abonati la lista de lecturi obligatorii a Partidului Codexpert Roman, unde muezinii Bancila si Cucu sufla zilnic in trompeta uzinei pentru a culturaliza masele de codexperti. Daca nu ati aderat inca, voi incerca sa va conving acum s-o faceti, prezentind citeva din recomandarile publicate de catre Primi Inter Pares.

In primul rind, ne este dat un link catre un articol in care Raymond Chen povesteste despre un asa-zis “for-if anti-pattern”. Imi pot inchipui cum formatorii de opinie din Codexpertia au schitat un zimbet condescendent dar incredul citind despre tendintele unora de a lua la rind elementele din directoare sau hash map-uri in cautarea unei valori. Cu certitudine nici cel mai prost aspirant nu ar scrie asemenea cod, nu? NU?

Ma rog, in asteptarea momentului in care Silviu va face apel la Regula 0 si Cucu il va bana pe Raymond Chen de pe codexpert, sa ne indreptam atentia spre o noua propunere din categoria Radio Erevan: [WinAPI] Cum aflu frecventa procesorului? Dupa cum ne-a obisnuit, sectoristul iscoditor nu se multumeste sa-si raspunda la intrebari cu un simplu “nu stiu”, ci insista sa ne demonstreze prin cod ca habar n-are. Prima metoda expusa de dinsul, in legatura cu care avea nedumeriri si acum 9 ani, nu reuseste sa ne dea valoarea exacta, dar se apropie. A doua metoda are avantajul de a fi mai “simpla”, dar din pacate are si un dezavantaj: returneaza tot timpul 0. Unii cititori vor spune ca decit gresit, mai bine deloc, insa altii vor sustine ca dimpotriva, mai bine ceva decit nimic. Gardianul Ovidiu lasa aceasta decizie de ordin filosofic la alegerea ta.

Si cum fara norme de buna purtare n-am putea face nimic pe lumea asta, ultimul imbold muncitoresc ne trimite la un articol in care Danny Kalev ne spune cum putem determina cu usurinta daca stim sa programam. Pe Danny l-am cunoscut intr-un episod anterior, in care ne arata ca nu stie ce face header-ul iosfwd, desi in CV se jura ca a fost baiat de comitet C++. De data asta el isi ia si mai in serios rolul de chibit, spunindu-ne ca n-ai voie sa faci clase cu mai mult de 8 metode publice, dind si exemplul std::string, care in opinia sa este de mare cacat si ar fi trebuit spart in mai multe clase care sa deriveze unele din altele. De asemenea, n-ai voie sa folosesti propriile containere in loc de std::map sau std::vector, deoarece Danny a citit pe Internet ca ce ni-i dat in STL este thread-safe si imbatabil ca performanta. Sigur, nu conteaza ca nu le poti folosi in interfata unui LIB/DLL/SO, ca majoritatea fac o alocare per element si se tiriie ingrozitor din cauza asta, ca poate ai nevoie sa fie lock-free, sau alte astfel de lucruri care ii preocupa doar pe inferiorii care scriu cod. In capul lui Danny conteaza ca au rvalue references, pentru a se comporta optim intr-o serie de cazuri in care oricum n-ar fi trebuit sa ajungi. Danny n-are timp sa scrie cod, e prea ocupat sa scrie pilde. A da, si n-aveti voie cu pointeri; daca ar fi dupa Danny, s-ar scoate de tot pointerii din limbaj si s-ar inlocui cu tipuri clasice, de exemplu vectori sau structuri.

 

Tags: , , , , , , , , , , , , , , , , , ,

De Sezon

Posted in Regula 0, Stand-up philosophy on December 25th, 2011 by Mihnea

A venit iar vremea retrospectivelor. Faptul ca Pamintul a mai dat o tura in jurul Soarelui de la ultima recapitulare transforma fiece cetatean intr-un Captain Hindsight inarmat cu concluzii, rezolutii si linii care se cer trase. Clisma de sfirsit de an pune punct Trecutului si-l pregateste pe om pentru Viitor.

Pai daca-i vorba de catharsis, catharsis sa fie. Oricum, nu pot rupe tacerea stinjenitoare ce se lasase pe-aci cu un articol despre micile scapari ale vreunui miner sau retorica mefecista a vreunui militian. Nu. Voi arunca o privire patrunzatoare asupra evenimentelor din 2011 si voi decerna premiile si calificativele meritate de catre fiecare entitate implicata. Deci:

Muie Silviu Ardelean

Pentru ca merita.

Muie Codexpert

Aceasta muie se confera pentru inca un an de dezinformat incepatorii, raspindit semi-adevaruri despre programare si dezvoltat un mediu dulceag-caldut in care minerii mici sa poata ecloza, iar cei mari sa poata creste si mai mari si improsca internetul cu puroiul lor cranian. Se acorda si premiul special Radio Erevan pentru efortul Gardianului Ovidiu de a-si pune Intrebarile Frecvente pe care nu le intreaba nimeni.

Muie Apple

Anul asta s-a lansat XCode 4, care e si mai abject decit 3. Fanboii l-au laudat pentru ca seamana mult mai bine cu iTunes si iti zice ce face intr-un control ce aduce a LCD. Intr-adevar, de mic imi doream ca IDE-ul meu sa semene cu un casetofon de masina. In continuare nu poti naviga intre surse cu tastele, crapa de 2-3 ori pe zi, refuza ocazional sa vorbeasca cu telefonul si trebuie sa restartezi tot, se sperie daca vede provisioning profiles facute de 3 etc.

Muie Google si Samsung

In programare exista un semn universal recunoscut al esecului absolut: sa incerci sa faci ceva ce au facut Apple si sa-ti iasa mai prost. Acest semn era prezis prin carti, dar pina de curind nimeni nu reusise sa atinga nivelul necesar de prostie. Google au ridicat manusa si au adus pe lume sistemul de operare Android.

Experienta dezvoltarii pentru Android face ca programarea pe iOS sa para un masaj erotic prestat de Scarlett Johansson. Nu numai ca pe Android trebuie sa scrii Java, acest limbaj conceput de si pentru copiii cu sindromul Down rezultati din relatiile incestuoase intre pigmei retardati; actul creator se petrece in Eclipse, un fel de editor de text care stie vag ca lucrezi la un proiect compus din mai multe fisiere, dar nu e niciodata sigur care sint fisierele alea, ce sa faca ca sa le compileze si cind.

Peste Eclipse vine Android SDK care este compus dintr-un emulator inutilizabil de incet si un plugin de Eclipse care la fiecare linie de cod da cu zarul sa vada daca sa crape sau nu, si in majoritatea cazurilor pierde. Au fost zile in care Eclipse a crapat de 20-30 de ori, fara a incerca lucruri avansate gen adaugat fisiere noi in proiect sau debug. Uneori cind il repornesti dupa ce crapa refuza sa compileze proiectul, spunind ca nu mai gaseste SDK-ul, ca unknown type java.lang.Object si alte d-astea. Atunci il mai restartezi de citeva ori, ca pina la urma o ia.

Lasind la o parte micile scapari ale mediului de dezvoltare, API-ul Android e facut de niste imbecili colosali. De exemplu, proprietatile si layout-ul controalelor se definesc in niste XML-uri. Unele chestii se pot seta si din cod, dar majoritatea nu, asa ca daca vrei sa faci chestii la runtime, Google iti recomanda sa sugi pula. Nimic nu e unde te astepti sa fie, dar nu pentru ca ar fi intr-un alt loc, ci pentru ca pur si simplu nu exista. Update-urile minore, de exemplu de la 3.1 la 3.2, iti distrug aplicatia pentru ca nimic nu mai merge ca inainte. Pentru a te ajuta sa suporti versiuni multiple, aplicatia iti crapa daca pui in XML-urle pulii ceva ce nu exista in versiunea pe care rulezi; din cod ai putea detecta versiunea si lua atitudine, dar cum ziceam, de acolo n-ai acces la proprietatile care conteaza, deci sugi.

Android este open source, adica in loc sa faca ceva care sa mearga, au luat de pe net chestii scrise de altii, pe principiul ca daca sint pe net, sigur sint bune. Google, fiind un startup cu banii numarati, nu isi permite sa dezvolte un decoder video, de exemplu. E mult mai bine sa foloseasca la maxim potentialul unui alt produs al lor, care chiar merge, pentru a localiza cu precizie o pagina care contine cuvintele “video decoder” si a downloada ce cod se gaseste pe acolo. Da, mai crapa aplicatia sau tot device-ul cind se termina stream-ul, nu merg chestii de baza gen schimbat aspect ratio in timp ce cinta, iti ia 3 versiuni majore sa adaugi suport pentru stream-uri live etc.; dar ce alternative aveai? Google nu crede in reinventarea rotii, daca se gaseste deja pe net una patrata facuta de un mester faiantar.

La tot acest haos se adauga si producatorii de hardware, care customizeaza jegul in functie de bunul plac si posibilitatile siliconului propriu. Campionii sint Samsung, care par sa-si recruteze programatorii exclusiv din rindurile indienilor care liciteaza 5 dolari la orice proiect pe rentacoder. In momentul in care incerci sa faci un player video pe un device Samsung incepi sa-ti doresti bug-urile simple, cinstite, pe care le vedeai pe alte device-uri, gen butoane care uita ce imagini au cind schimbi orientarea, sau controale care isi uita pozitia cind apare tastatura on-screen.

Google e privit ca un fel de Mecca sau Mensa al tehnologiei, unde procesul de angajare permite accesul doar celor mai stralucite minti, unde lucreaza Knuth (ala care scrie carti pentru inaltat monitorul, ca sa prinda si minerii contextul), unde primesti mincare gratis la prinz si-ti cultivi creativitatea. De la astia te astepti sa inteleaga ca daca vrei un lucru, trebuie sa-l faci. Mi se strepezesc unghiile cind trebuie sa-i recunosc cite un merit lui Apple, dar aia si-au facut singuri software-ul si hardware-ul si merg. Au inteles chiar si ca daca vrei IDE, trebuie sa-ti faci, ca dejectiile open source existente sint inutile; asta nu le-a mai iesit si au ajuns tot la o dejectie, dar macar au incercat. Google au incercat sa faca din Linux, gstreamer si Eclipse bici. Firma de programatori web, ce sa le ceri?

Va dati seama cum era Chrome daca nu le facea Apple engine-ul de HTML?

Muie Microsoft

Acum vreo 9 ani, Microsoft au zis ca C++ nu-i mai satisface intelectual si ca daca totusi vrei din C++ UI mai smecher sau feature-uri gindite pentru aplicatii web (dar nu aplicatii web propriu-zise), trebuie sa folosesti noul si stralucitorul Managed C++. Viitorul fusese trasat.

Vreo 2 ani mai tirziu, putinii oameni care au folosit mizeria au aflat ca e cazul sa se reorienteze, caci Stapinirea a infierat Managed C++ ca “deprecated”. La  schimb a fost oferit C++/CLI, care e net superior. Asta chiar e viitorul, credeti-ne de data asta!

Anul asta, Microsoft a anulat viitorul si a declarat inceputul Renasterii C++. C++/CLI nu mai e bun, aplicatiile se vor scrie de acum incolo nativ, in C++. Nu mai poti sa deschizi o pagina de MSDN fara sa ti se spuna asta. Totusi, cind te uiti prin exemplele de cod, numai C++ nu vezi. De fapt este C++/CX, o noua muie data de Microsoft limbajului. Dar sa vedeti, de data asta nu e ca data trecuta. Nu, nu, nu, asta chiar e viitorul, juram pe rosu. Ce, am mai zis asta? De ce sa privim in trecut, cind avem atita viitor de construit? Voi investiti in scris cod C++/CX si faceti-va aplicatiile sa depinda de el, ca noi sigur nu ne razgindim CEL PUTIN un an de acum incolo. CEL PUTIN!

Pentru a completa jignirea, evanghelistii o tot baga p-aia cu “at the interface” sau “at the border”. Aparent, C++/CX trebuie folosit doar cind vrei sa vorbesti cu OS-ul, si poate fi izolat acolo. Intre 99% si 99.9999% din aplicatie (in functie de evanghelistul cu care vorbesti) poate fi scrisa in C++ normal, si doar foarte, foarte rar vei recurge la un virf de /CX, drept condiment. In realitate, se vor scurge tipuri gen String din C++/CX in restul aplicatiei, sau vei muri de plictiseala facind conversii peste tot. De asemenea, e posibil sa constati ca logica de UI reprezinta, totusi, un pic mai mult de 1% din codul aplicatiei. Aceste lucruri nu-i preocupa pe evanghelisti, pentru ca ei nu scriu cod si probabil nici n-au scris vreodata.

Muie Digital Video

Compresia video nu-i un subiect accesibil minerilor. Conceptual e o chestie simpla, dar in practica sint miliarde de detalii, scenarii, profile si alte mui, astfel incit dureaza ani intregi sa scrii un codec modern. Asta este, evident, o mare timpenie.

Minerii sint perseverenti. Daca nu-i lasi sa scrie codecuri, se vor apuca sa faca containere. In fiecare zi se gaseste cite un bou sa remarce ca toate containerele sint de cacat (ceea ce e adevarat) si sa-si faca propriul container, convins ca va rezolva toate problemele (ceea ce e jenant). Unii din astia capata avint si sustinere, si astfel apar chestii ca MKV.

Rezultatul este ca n-ai nici o sansa sa faci un program de cintat sau procesat video. Inainte de a putea sa decodezi primul frame, trebuie sa ajungi la el, desfacind containere care mai de care mai ridicole, produse de programe imbecile scrise de oameni cu interpretari foarte liberale ale standardelor si specificatiilor. Daca totusi reusesti sa ajungi la frame-uri, problema se repeta, doar ca sint si mai multe variabile si e infinit mai mult loc pentru interpretari, bug-uri si alte inovatii. Sigur, poti incerca sa folosesti o biblioteca, cum ziceam mai sus ca au facut Google, dar nu faci decit sa schimbi un cosmar cu altul.

Uneori, printre aceste cacaturi digitale se mai strecoara cite o relicva analogica, gen frame rate-ul de 29.(970029) din NTSC sau codurile de Widescreen Signaling. Nu v-as dori vreodata sa ajungeti sa cititi specificatii scrise de oameni crescuti printre osciloscoape si condensatori.

Muie C++

Anul asta a fost definitivat in sfirsit noul standard C++, prilej de mare bucurie pentru unele paturi sociale care nu se descurcau prea bine nici cu vechea forma a limbajului, dar care vor putea propune acum inlocuirea enum-urilor si cu lambda-uri, nu doar cu vectori si structuri. Cu tot efortul, limbajul tot nu are un ABI si tipurile din STL tot nu pot fi folosite intr-un lib sau intr-o interfata. E induiosator cum se lauda Bjarne ca C++ este un limbaj excelent pentru construit biblioteci, dar eu cred ca e putin penibil ca nu poti distribui bibliotecile alea in forma binara. Uneori am impresia ca lumea e formata doar din freetarzi si ca e un grav faux pas sa afirmi ca vrei sa cistigi bani programind.

Din cauza ca nu exista ABI, exista COM. Din cauza ca COM este oribil si greoi, se nasc jeguri ca C++/CX.

Muie 2011

Tendintele continua: e din ce in ce mai greu sa programezi ceva, pentru ca OS-urile, bibliotecile, IDE-urile si limbajele ti se opun mai indirjit ca niciodata. De aceea, 2011 merita multa muie.

 

Tags: , , , , , , , , , , , , , , , , , ,