Adios muchaches

Posted in Stand-up philosophy on January 8th, 2016 by jos8cal

Garbage At The Deonar Landfill Site As Trash Mountain Rising in Mumbai Swamps Modi 21st Century Vision...Boys play as cows graze through garbage at the Deonar landfill site in Mumbai, India, on Wednesday, March 11, 2015. Mumbai is running out of space for its waste, and Deonar, Asia's oldest and largest dumpsite, is bursting. Each day, more than 500 trucks line up along a two-lane dirt road in an eastern suburb, waiting to add to a mountain of refuse tall enough to submerge the White House twice over. Photographer: Dhiraj Singh/BloombergInceput trist de an. Ca si cum pierderea lui George Pruteanu nu ar fi fost indeajuns, unul dintre cei mai importanti duhovnici ai miscarii in principal spirituale despre C++ si-a incetat activitatea subit, lasind in urma sa un munte de pliante, ghiduri si vouchere despre limba C++. Mirosul greu de carte a patruns rapid prin galeriile miniere dorind parca sa dezmierde pentru ultima oara nasul bine lucrat a lui Silviu.

Mirosul l-a luat prin surprindere cu asa o forta incit ultimele vorbe ale maistrului Scott si-au gasit drumul spre libertate printr-un ragnet lung indreptat spre cerul galeriei. Batrinii spun ca echo-ul inca mai poate fi auzit prin galerie sau daca asculti atent o floare de mina.

Am reusit sa aflam si noi mesajul prin chiar insusi Silviu: “Magnificent CPU Chaches Presentation. https://www.youtube.com/watch?v=WDIkqP4JbkE … We will miss you @Scott__Meyers!”

Magnificent intr-adevar! Chiar si Urban Dictionary este in complet acord cu Silviu: “Chach: Definition: Noun-A person (usually male)who attempts to exhibit a cool and popular look but generally comes across as either an asshole and/or a total loser.”

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

What would you be if you were attached to another object by an inclined plane, wrapped helically around an axis?

Posted in Codare cu premeditare, Slagare internationale on January 23rd, 2013 by Mihnea

Tovarasi, am infrint. Minerul ex-multinational emblematic Silviu Virgula Ardelean pare sa se fi vindecat de tutorialita, militianul Ovidiu a demisionat de la Radio Erevan, iar singurul semn de viata din directia ograzii cu experti este sunetul mocirlos pe care il face pulanul flasc al cite unui fondator cind mai usuie un elev de liceu care are nevoie urgent sa-i faca cineva tema. Cred ca este timpul sa gasim noi mineri, dar jugul capitalist ne-a cam impiedicat sa dedicam timpul cuvenit activitatii de largire a orizonturilor si abatajelor.

Pina una-alta, o sa va delectez cu doua slagare internationale. In deschidere ne cinta formatia NewTek, care in SDK-ul de Lightwave ne ofera o viziune lirica alternativa asupra puterilor lui 2:

#define IQ_CTRL         1
#define IQ_SHIFT        2
#define IQ_ALT          4
#define IQ_CONSTRAIN    8
#define IQ_ADJUST       16
#define MOUSE_LEFT      32
#define MOUSE_MID       64
#define MOUSE_RIGHT     96
#define MOUSE_DOWN      128

Aceste constante sint combinate intr-un bit field care-ti zice starea butoanelor cind iti vine un eveniment de mouse. Cind bitii 5 si 6 sint setati, nu inseamna ca userul tine apasat pe left si middle, ci ca tine apasat pe right. Era absolut vital sa se faca economie de un bit, chiar daca asta inseamna ca “sistemul” nu poate sa-ti spuna cind userul tine apasat pe mai multe butoane in acelasi timp. In caz ca va intrebati, variabila care tine bit field-ul e int, deci masura de austeritate n-a izvorit din utilizarea unui char, ci pur si simplu din spirit civic si responsabilitate sociala.

Lasind aritmetica in sant cu botul umflat, este timpul sa ne ocupam un pic si de algebra. Pentru neinitiati, un quaternion este un hack matematic care-ti permite sa encodezi o rotatie in 3D folosind 4 numere. In practica, cel mai des construiesti un quaternion dintr-un vector care reprezinta axa de rotatie si unghiul de rotatie in jurul axei respective. Primele 3 numere din quaternion sint componentele vectorului inmultite cu sinusul jumatatii unghiului, iar al 4-lea numar este cosinusul jumatatii unghiului. Orice implementare de quaternion dintr-o biblioteca de algebra contine un constructor sau o functie care ia un vector si un unghi si face manevra asta cu sin si cos. 3D Studio Max are si el asa ceva:

/*! \remarks Constructor. The quaternion is initialized from the
 vector <b>V</b> and angle <b>W</b> passed. The quaternion is
 then normalized.\n\n
*/
GEOMEXPORT Quat(const Point3& V, float W);

In caz ca aveam dubii, autorul remarca clar (ma rog, cit de clar se poate intr-un comentariu minjit cu puroi de doxygen) ca acest constructor face un quaternion dintr-un vector si un unghi. Asa ca te pui linistit pe scris cod si rotit obiecte si cind rulezi observi ca ele nu prea se rotesc cum ai dori tu. Si te uiti peste cod, si pare bun, si totusi nu merge. Si intr-un final te paleste inspiratia sa privesti in interiorul quaternionilor si vezi ca nu contin deloc ce ar trebui. Codul constructorului, fiind foarte complicat, nu putea fi pus in header, ci sta intr-un cpp (care ajunge sa fie un DLL, ca sa treci printr-un import table de fiecare data cind vrei sa initializezi 4 floati). Din fericire insa, Autodesk ofera apropiatilor bucati din sursele de Max, astfel incit putem lectura quat.cpp si vedea urmatoarea grozavie (cu tot cu indentarea de oligofreni):

Quat::Quat(const Point3& V, float W) {
    x = V.x; y = V.y; z = V.z; w = W;
    Normalize();
    }

Cum ba pula? Cum este W un unghi, daca tu il asignezi direct in a 4-a componenta, fara sa faci muismul cu sin si cos de juma din el? Cum cacat ti s-a parut mai util sa faci asta intr-un constructor care ia vector si scalar, decit sa faci ce face tot restul lumii?

Citeva linii mai jos intilnim si urmatoarea gema:

Quat Quat::operator+(const Quat &q) const {
   //return(Quat(x + q.x,y + q.y,z + q.z,w + q.w));
   return *this * q;
   }

Deci dragii mei, in algebra autodesciana, inmultirea si adunarea sint una si aceeasi operatie, caci unui mintos i s-a parut ca “+” este un simbol potrivit pentru compozitia quaternionilor (care, apropo, nu e comutativa ca + ala pe care-l stim cu totii, daca e sa ne legam de detalii). Lucru documentat de altfel si-n header, daca ignori comentariul de la sfirsitul liniei. Cred ca comentariul ala e comentat, deci n-are nici un efect:

/*! \remarks This operator is the same as the <b>*</b> operator. */
GEOMEXPORT Quat operator+(const Quat&) const; // sum of two quaternions

Tirnacop + tirnacop = tirnacop * tirnacop pentru valori foarte mari ale lui 2.

Tags: , , , , , , , , ,

Vorbitor in numele prostilor

Posted in Slagare internationale, Stand-up philosophy on March 9th, 2012 by Mihnea

Microsoft organizeaza anual cu 47% mai multe chiolhanuri decit un primar pesedist in campanie, dar in afara de serbarea emvepeilor (care tocmai s-a terminat, apropo), aceste evenimente nu ofera prea multe motive de amuzament sau oripilare. In 2012 insa, deschizatorii de drumuri din Redmond s-au gindit sa rectifice situatia, oferindu-ne un generos subiect de bancuri si in acelasi timp confirmind raspicat faptul ca-s decisi sa se duca pulii, ca firma, cu totul.

Majoritatea reuniunilor au teme tehnice, fiind deci populate de dorci imbracati in tricouri cu zicatori despre C# sau convertit cafea in cod. Neamuzament total. Exista insa citeva care au ca subiect group hugging-ul, iar cea aleasa de Microsoft pentru declaratia de anul asta este printre ele: Worldwide Partner Conference. Aici nu se poarta tricouri, ci costume, iar participantii au siluete si postúri de fosti directori de CAP (si chiar experienta practica in aceasta ramura de activitate, in cazul celor care provin din popoare ce s-au bucurat de binecuvintarile colectivizarii si economiei centralizate).

O adunatura de umflati si decrepiti care fac “networking” nu este o priveliste amuzanta in sine, nici macar cind networking-ul continua in baruri de striptease dupa incheierea programului impus. Totusi, Microsoft au reusit sa dea o noua dimensiune evenimentului de anul acesta printr-o singura atingere de geniu. Mail-ul prin care se anunta WPC 2012 poarta urmatorul subiect:

Inspiring. Influential. Iconic. Hear him speak at WPC 2012!

Sper ca daca nu v-as fi zis ca-i vorba de Microsoft, ati fi presupus ca WPC asta e ceva circ cu agili si ca “him” e vreun Bruce Lee care vine sa le spuna cum sa fie fluizi ca apa. Eu unul asa am crezut si am dat click sa citesc, pregatindu-ma sa rid. In schimb, m-am umplut de oroare, caci iata ce scria mai departe:

COME HEAR INTERNATIONALLY ACCLAIMED DEEPAK CHOPRA SPEAK AT WPC!
Don’t miss this inspirational opportunity to hear one of the foremost leaders in the field of mind-body medicine.

Deepak Chopra

In caz ca nu sinteti la curent cu arborele genealogic al Mamei Omida si n-ati auzit de domnul Chopra, va pot spune ca “mind-body medicine” este exact ceea ce pare: un gunoi new age despre vindecare prin ginduri pozitive din aceeasi categorie cu reiki si medicina germanica. Sa fii “foremost leader” in asa ceva e ca si cum ai fi foremost leader in crestinism, barbut sau stat pe scaun. Cel mai bun mod de a deveni foremost leader intr-un domeniu de genul asta este sa inventezi respectivul domeniu si sa te proclami foremost leader, dupa cum a procedat subiectul nostru de azi. Deepak a invatat despre fizica cuantica de pe Discovery si prompt a inventat medicina cuantica si nutritia cuantica. In timpul liber sustine Intelligent Design cu argumente stiintifice preluate de la Muzeul Creationismului. El isi are locul asigurat in constelatia marilor filosofi si profeti ai timpurilor moderne, alaturi de Ryke Hamer, Rael, Osho, David Icke si, sa nu-i uitam pe-ai nostri, Lorin Fortuna si Bivo.

WPC 2012

Si ma rog, chiar daca ar exista vreo diferenta intre invataturile domnului guru si descintecele Clarvazatoarei Vanessa din Chitila, tot trebuie sa ne intrebam de ce vine el sa vorbeasca la o conferinta de IT. Sa fi acceptat oare Microsoft ca toata industria de software e de cacat, si sa incerce sa-si invete partenerii ca singurul mod de a face bani e sa gasesti niste prosti si sa le vinzi vrajeala?

Teoria mea este ca Aurelian a facut pasul cel mare peste ocean si acum e responsabil cu evenimentele micromoi. Astept cu infrigurare filmarea de pe un balcon din Toronto care sa-mi confirme suspiciunea. Sper ca la WPC 2013 va fi invitat ex-Dr. Hamer sa continue educatia CAP-istilor in domeniul medicinei moderne explicind cum microbii sint de fapt agentii de vindecare, nu problema, iar medicina “mainstream” este de fapt o conspiratie prin care evreii vor sa dea cancer civilizatiei vestice (in Israel neexistind cancer, evident). Toate aceste noi informatii ii vor ajuta cu siguranta pe directorasi sa-si creasca mai cu spor culturile de soft din ograzile proprii.

Aurelian Popa

C-o fi Aurel de vina sau ca n-o fi, macar ne-am lamurit de ce e VS 11 alb-negru si are viewer de FBX si tool-uri pentru SCRUM: daca aia din conducere o ard in spirala cu personaje ca Deepak, ce pretentii sa ai de la restul angajatilor?

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

Purely Fabricated Interview Expert Pattern

Posted in Slagare internationale, Stand-up philosophy on February 21st, 2011 by Mihnea

Am aflat de la Andrei Ignat ca Scott Hanselman a publicat o noua lista de intrebari de interviu pentru programatori. Cred ca Hanselman asta e un fel de Ovidiu Cucu international, ca vad ca tot publica liste d-astea. Ca orice programator care se respecta, si eu sint constient ca pot deveni somer peste noapte, deci fac eforturi mari sa ma tin la curent cu ultimele evolutii in domeniul intrebarilor de interviu. Atasez mai jos raspunsurile mele la intrebarile lui, pentru cei 3 cititori din totalul nostru de 5 care nu sint membri pe programare.org. Scuzati limba lu’ Shakespeares, am zis sa nu break character.

What is SOLID?

YABA.

Why are patterns important?

Patterns are important because people who cannot program must be able to project importance by wielding pompous words.

Who are the Gang of Four? Why should you care?

The Gang of Four, also known as The Alpha Wankers, are four non-programmers who understood what power words are and applied the concept to programming. I care because Aurelian Popa told me that today it is more important to be “social” than to know how to program, and using pretentious jargon like “singleton” instead of “global variable” is a guaranteed way of improving one’s social status. They are not to be confused with the Wang-Zhang-Jiang-Yao group, whose name they borrowed in a spectacularly ill-advised stab at self-irony.

Explain the concept of Separation of Concerns and it’s pros and cons.

Separation of Concerns means that when you concern yourself too much with design patterns, you can stop being concerned about grammar. No man can understand the singleton pattern AND remember the basic rules of languages with immensely complex grammars such as English, so once you embrace the teachings of the Gang of Four, grammar becomes Somebody Else’s Concern. The first sign of this transcendence is putting an apostrophe in the possessive pronoun “its”.

Discuss the concept of YAGNI and explain something you did recently that adhered to this practice.

YAGNI is something YAGN, as it’s related to XP.

Are you still writing code? Do you love it?

No, I’m too busy calling my global variables singletons and speaking at conferences about it.

What do you do to stay abreast of the latest technologies and tools?

Hahaha you said breast!

How do you react to people criticizing your code/documents?

I punch them, fire them and/or write inflammatory posts about them on forums or blogs.

Whose blogs or podcasts do you follow? Do you blog or podcast?

Are blogs and podcasts design patterns? Never heard of them. Anyway, I like the color fuchsia, I am an open-minded person focused on self-improvement and my hobbies include hiking, music, reading and taxidermy. I hope this helps you determine if I’m a good programmer or not.

What is the last programming book you read?

I only ever read one, “Design Patterns”. I memorized every word. I don’t need to know anything else.

What’s so great about <cool web technology of the day>?

<generic answer>

How can you stop your DBA from making off with a list of your users’ passwords?

I didn’t know such sexual deviationism is so common among DBAs and anyway, why is that my problem instead of HR’s? Oh wait, you said “making off”, not “making out”. My bad.

What do you do when you get stuck with a problem you can’t solve?

The Design Patterns book is a complete list of solutions which are just waiting for problems. Unenlightened people approach programming the wrong way: they see problems and look for solutions. I use the sure-fire method of picking solutions from The Book and inventing problems for them. That way, I’m never stuck. Any feature or system which cannot be implemented in this way is ill-defined and not worth my concern in the first place. See also the “Separation of Concern” principle.

What’s the difference between a web server, web farm and web garden?

Wait, what? Web garden?

When do you know your code is ready for production?

When I have at least 157 design patterns in it.

What’s YAGNI? Is this list of questions an example?

Didn’t you ask this already?

Noile mele cuvinte favorite: Information Expert (a nu se confunda cu Code Expert), Pure Fabrication, Protected Variations.

LE (adica Later Edit, Ovidiu): hahahaha am aflat ce-i ala web garden. Redefinirea cuvintelor limbii engleze, in pula mea.

LLE: GoF au incercat sa si cinte la un moment dat. Punk, pentru ca si la muzica se pricep la fel de bine ca la programare. Iata-i aici prezentind pattern-ul “Old Grey Whistle Test”:

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