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: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Optimizing QuickSort and staff

Posted in Premiul n00bel, Slagare internationale, Stand-up philosophy on February 3rd, 2011 by jos8cal

Frunzaream recent revista celor de la codexpert.ro. Cum ce revista? Pai si-au lansat revista! E scrisa de un bot. In fine!

Evenimentul lansarii a fost unul sters, ca sa nu mai zic de lipsa totala a fundamentului ideologic. Dat fiind ca sintem familiari cu curentul codexpertian, ne-am zis sa incropim noi doua trei rinduri despre necesitatea si misiunea acestui ziar in lume, si nu numai. Asadar:

Pentru noi, cei care am supravietuit prigoanei, raspunderea pentru idealurile miscarii codexpertiste este atit de mare incit de multe ori simtim ca este o povara care ne copleseste si, daca n-ar fi legatura tainica cu C++-ul, poate demult s-ar fi stins nadejdea in sufletele noastre.

Profesorii Ardelean, Cucu si Bancila ne-au invatat sa gindim. Dupa cum Capitanul Bjarne a despartit hotarele lumii vechi de lumea noua, cei trei au despartit lumea formelor sterpe de lumea cugetarii realiste.

Dar cugetatorii si-au sacrificat darul mintii pentru adincul omenesc.

De cind au luat la cunostinta de C++, limbaj atit de apropiat de conceptia lor de viata, nu s-au putut desparti de drumul lui. Si si-au inceput viata intr-o apoteoza de neinchipuita frumusete morala. Ziarul trebuie sa pastreze nealterat spiritul miscarii si sa-l exprime in linia de cugetare a celor trei.

Un ziar de lupta si de idei, dar fara verbalism si entuziasm usor!
Fiecare cuvint trebuie sa se nasca din adincurile sufletului si sa fie insotit de intreaga raspundere a celui care il scrie.

“Ziarul Codexpert” este o batalie si pornim la ea cu aceeasi incredere in Victorie!

Acum ca avem si sprijinul ideologic, putem porni la drum sa ne scaldam printre titlurile care ne sint supuse atentiei in ziar.

Gasim o optimizare de quicksort. Gasim la autor si justificarea ideologica pentru batutul din taste:

“The idea for doing this is that instead of each new recursion copying the same code and using up more memory, it reuses the same code.”

Deja vu. Zbucium. Silviu Ardelean nu este un om, este o modalitate de a vedea lumea.

Ridicam bezmetici capul si privim codul in ochi. 10 numere sint torturate si fortate sa se alinieze de la mic la mare, in numele unei noi ideologii optime, acest pleonasm minier. Luam codul si-l virim sub nas, linie cu linie. Tragem incet si simtim cum ne ia cu ameteala. Trebuie sa gasim o modalitate de a salva numerele din mina ideologiei mirsave! Pregatim siringa pe care sta scris Array.sort() si batem incet vena. Milioane de numere ne trec prin fata ochilor. Eminescu. Truda. Pierdem vena. Intepam de 10 ori si ne intindem pe spate cu ochii tintiti la tavan. Senzatia de timp dispare. Ceasul numara de la kilometrul zero, over and over:

Optimized QuickSort: 00:00:01.2692034
Array sort: 00:00:01.1664805
Optimized QuickSort: 00:00:01.2490031
Array sort: 00:00:01.1632019
Optimized QuickSort: 00:00:01.2463744
Array sort: 00:00:01.1634480
Optimized QuickSort: 00:00:01.2695249
Array sort: 00:00:01.1568251
Optimized QuickSort: 00:00:01.2440373
Array sort: 00:00:01.2517662
Optimized QuickSort: 00:00:01.2694608
Array sort: 00:00:01.1581570
Optimized QuickSort: 00:00:01.2646042
Array sort: 00:00:01.1657108
Optimized QuickSort: 00:00:01.2499172
Array sort: 00:00:01.1557011
Optimized QuickSort: 00:00:01.2406120
Array sort: 00:00:01.1544470
Optimized QuickSort: 00:00:01.2434693
Array sort: 00:00:01.1576033

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

Dezamagire

Posted in Regula 0 on February 1st, 2011 by Mihnea

Din pacate teoria conspirationista despre disparitia FAQ-urilor lui mesajflaviu pe care o expusesem in PS-ul post-ului anterior (adica post scriptum-ul, Ovidiu) s-a dovedit a fi nefondata. Probabil contributia lui mesajflaviu era intr-un fel de purgatoriu al ograzii cu experti, caci unul din cele 2 link-uri suspecte tocmai s-a schimbat la fata si a inceput sa mearga. Si mai atroce decit nedreapta acuzatie de cenzura este faptul ca aparent nu e nimic amuzant in ce-a zis mesajflaviu. Voi incerca sa compensez dezamagirea pe care v-am produs-o cu urmatoarea fila din cartea “Kōan-uri Ilustrate”:

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

Inevitabil

Posted in Regula 0 on November 13th, 2010 by Mihnea

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

Instantanee din viata de ortac

Posted in 112, Premiul n00bel on November 8th, 2010 by Mihnea

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

Programul FUL. Balada epica in versuri.

Posted in Codare cu premeditare, Premiul n00bel, Stand-up philosophy on September 13th, 2010 by jos8cal

Probabil cu totii am fost traumatizati cindva pe parcursul vietii. Eu stiu un caz concret cu un hunedorean. Provocarea de a se fi nascut in Hunedoara s-a materializat intr-un blog in care el explica la pertu despre Basescu, demagogie, lehamite, incredibil, prost gust, atitudine, lipsa respect, teape, realitate si tristete. Incordarea maxima dintre el si realitate se poate vedea chiar din titlul blogului unde forta si maturitatea gindirii l-au proiectat sa traiasca prin Romania nu in Romania.

Intr-un alt registru traumatic se afla Fulga Marian. Acest personaj epic* s-a hotarit sa faca un program cu care sa rezolve probleme la orice nivel imaginabil sau inimaginabil, dupa caz. Cu aceasta mutare doreste rezolvarea ecuatiei Utilizator-Programator-Limbaj de programare-Produs prin eliminarea definitiva a programatorului. Rezultatul final va fi: Utilizatorul de FUL-Propriul produs. Practic el doreste sa faca un program cu care toate lumea va putea face orice si asta fara interventia vreunui programator pe viitor.

Dar sa-i dam cuvintul:

Nici simplu nici usor nici imposibil FUL nu este numai o idee elitist intelectuala. FUL este o realitate palpabila concreta materializata intr-un material cu toate cele 80 de notiuni operante ale sale, multe dintre ele de o simplitate totala si de o accesibilitate uluitoare chiar si pentru copii.

Si ca tot veni vorba de fail (ca sa nu zicem FUL):

In alti termeni FUL este un MEDIU DE CONFIGURARE ( ca sa nu zicem de programare) care da posibilitatea utilizatorului sa CONFIGUREZE (ca sa nu zicem programeze) propriul program FOLOSIND O SINGURA MACHETA UNIVERSALA DE CONFUGURARE (ca sa nu zicem de programare)

Sufletul sau tinde dupa libertatea pustnicului hitru care s-a decis sa invinga prin a sta cu spatele si a minca de pe jos:

Totul se face citind si scriind, ce scriem aia apare, ce scriem aia ramine. Decizia , conceptia, realizarea ne apartine si o materializam exact cum o gindim noi insine cu propria noastra minte – nu a altcuiva- Nu mai depindem de de nimeni .

Iata si motivele pentru care FUL trebuie sa existe:

  • FUL – Programarea accesibila oricui ( cu ceva minte )
  • FUL – Programezi de cind inveti sa citesti si sa scrii
  • FUL – Circa 80 de notiuni CONCRETE (fata de sute ABSTRACTE din limbajele de programare).
  • FUL – Rezolva probleme la orice nivel imaginabil
  • FUL – Exista matematic si logic reprezentat grafic explicit pe 4 pagini scrise.

si motivele pentru care programatorii nu trebuie sa priveasca cu ochi hunedoreni demersul sau demiurgic:

  • FUL – Nu exista ca soft si trebuie facut de programator
  • FUL – Elimina programatorul.
  • FUL – Adus la perfectiune si ajuns la utilizatori scoate de pe piata prin suficienta propriul producator.
  • FUL – Va fi realizat

(*)

Am folosit cuvintul epic cu scopul de a demonstra ca programul FUL face parte dintr-o trauma a copilariei mele si anume opera epica in versuri cu rima alba. Pentru demonstratie am sa folosesc metoda analogiei cu o alta opera epica in versuri si de sorginte anonima: Toma Alimos. Ca si cadru de sustinere pentru demersul meu ma voi folosi de o deja existenta demostratie. De asemenea voi imprumuta limba si obiceiurile demonstrandului, deoarece dupa cum veti vedea, poseda o tulburatoare capacitate de a templetiza epicul ca specie literara. Asadar sa trecem la copy/paste din demonstratie:

Programul “FULL” este o creatie epica in versuri, o balada populara pentru ca prezinta momente importante din viata unui personaj inzestrat cu calitati deosebite, elementele reale impletindu-se cu cele fabuloase. Titlul programului reprezinta numele personajului principal (FUL de la Fulga Marian).

Poetul anonim evoca haiducia ca forma a luptei sociale, alegand episoade semnificative din viata unui programator (MFCist in cazul nostru).

In expozitiune, se prezinta locul actiunii, un forum de programare si limbajele cu care va fi executat macelul: “.NET(C#, VB.Net…)”, si personajele baladei: Programatorul (Ovidiu Cucu ca si bidder in josul paginii)  si Fulga Marian Manea.

Prin descrierea din cadrul expozitiunii se realizeaza o sinteza a peisajului IT romanesc: ideologia naiva de tip Scoala Ardeleana, aberatii a la SuperDarie si 30 de minute de tortura cu Ovidiu Cucu. In acest cadru natural, specific romanesc, Ovidiu Cucu zaboveste impreuna cu codul sau. Se odihneste si se ospateaza. El este singuratic, ducandu-si viata in singuratatea biroului, si de aceea, nici armele, nici codul nu pot suplini tovarasia omului. Gandurile si sentimentele lui se indreapta asupra codului cu care se simte infratit: “inchinari-oi codului, int-ilor si float-ilor…“. Ovidiu, personificat fiind, simte apropierea primejdiei, se infioara, , codul necheza, iar armele ies din teci. Incordarea creste cand apare Fulga Marian zis si Manea. Naratiunea este intrerupta aici de descrierea insusirilor fizice ale celor doi, descriere care prezinta in antiteza portretul lor fizic.

In intriga, dialogul dezvaluie motivele supararii lui Fulga Manea: faptul ca i-a inselat asteptarile, i-a tulburat gindurile, depinde de el, si pretinde “codul vama”.

Ovidiu Cucu, demn si cu simtul raspunderii va da seama pentru faptele sale, dar il roaga sa nu fie acesta un motiv de dusmanie intre ei.

In desfasurarea actiunii, sunt urmarite cu ajutorul naratiunii si al descrierii, atitudinile si reactiile opuse ale celor doua persoane si apoi injunghierea miseleasca a lui Ovidiu Cucu, programatorul.

Poetul anonim povesteste cum Ovidiu, cu inima deschisa, intinde boierului codul si banul, indemnandu-l sa se cinsteasca, sa lepede mania, si sa-I vorbeasca ca unui frate. Viclean si las, Fulga Manea i-a cu mana stanga codul, iar cu dreapta il injunghie miseleste, apoi fuge ca un las. Prin repetitia verbului “a fugi” si prin versul “Nu mai depindem de de nimeni” poetul anonim isi exprima dispretul pentru lipsa de demnitate a lui Fulga Manea.

Ovidiu nu-si pierde cumpatul intr-un moment atat de greu pentru el, si nu se lasa invins de durere. Astfel, il atentioneaza pe Fulga Manea ca trebuie sa raspunda pentru fapta sa, apoi isi aduna ultimele puteri si pune un bid de 29 de milioane de lei.

Incepand cu acest episod, balada capata un caracter dramatic si fantastic. De domeniul fabulosului este si felul in care programatorul isi strange mijlocelul cu braul si vorbeste codului cu caldura, ca unui frate. El ii cere sa ii fie de ajutor in acest ceas de cumpana cum I-a fost si in tinerete, sa-l poata pedepsi pe Fulga Manea pentru lasitatea lui. Un alt element fantastic este personificarea codului, care ii asculta dorinta si zboara ca vantul, ajungand dusmanul intr-o clipa: “lasa mouse-ul, sai pe mine, \ si de IDE te tine, \ ca s-arat la batranete, \ ce-am platit la tinerete!”

Printr-un pasaj narativ, poetul anonim surprinde incordarea maxima dintre a conflictului dintre cei doi, cand Programatorul Cucu isi rapune vrajmasul cerindu-i o suma imensa pentru realizarea programului. Acest moment constituie punctul culminant al baladei. Verbul “trimite-mi” sugereaza repeziciunea cu care Ovidiu Cucu l-a pedepsit pe dusman.

Deznodamantul baladei este pe masura faptelor deosebite narate in desfasurarea actiunii baladei. Continuand naratiunea, autoul prezinta fiorii mortii care-l cuprind pe Ovidiu Cucu: “foicica micsunea, \ vreme multa nu trecea \ si pe Cucu-l ajungea \ MFC-ul, moartea grea”.

Monologul lui Cucu exprima dragostea si recunostinta pentru codul care l-a ajutat: “d-alelei , codutule, \ d-alelei dragutule, \ ce-am gandit \ am izbandit, \ vremea MVP-a sosit”.

Eroul ii incredinteaza codului ultimele sale dorinte printr-un adevarat testament spiritual: el ii cere codului sa fie ingropat in mijlocul proiectului, si sa-I puna la cap floare de bujor iar la picioare busuioc, considerand ca acestea sunt un element de legatura intre el si iubitul lui MFC. Desprinde de-aici, ca si din intreaga balada, sentimentul comuniunii depline a omului cu natura sa de epic. El doreste sa fie inmormantat in mijlocul codului, ca sa se simta aproape de fiintele drage: codul si expertii, si spune acela ce-i va pune fraiele codului va continua lupta impotriva nedreptatii, pe care a dus-o si el pe codexpert.ro.

Natura participa la trasaturile sufletesti ale lui Ovidiu Cucu: incearca sa-i aline suferinta, si-l plange atunci cand trece in lumea umbrelor: “codul se cutremura, \ STL se cletina

Credincios stapanului, codul ii sapa groapa in mijlocul projectului in care el a trait bucuria vietii, ii asterne fanisor in mormant, ii sadeste floati, apoi pleaca in codru la noul sau stapan, “fratior de vitejie, tovaras de MFCie”. Durerea sfasietoare a codului la pierderea stapanului, se deduce din folosirea verbelor la imperfect: coda, se exprima, rezolva quiz-uri…

Prin expresivitatea orala, realizata printr-o multitudine de interjectii, substantive in vocativ, formulele de adresare a personajelor baladei populare FUL, demonstreaza ca literatura, in general literatura populara constituie o forma superioara , forma artistica a comunicarii.

QED (Pentru Marius Bancila: inseamna quod erat demonstrandum).

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