Thursday, October 16, 2008

Amice, recunosc, imi place Dilbert :(

Da, recunosc, ramas sub impresia benzilor desenate decupate si lipte pe peretii cubical-urilor din state, multi ani am considerat Dilbert ca fiind o chestie tipic americana, care nu merita a fi luata in seama. Asta in ciuda faptului ca amicul Cristian imi trimitea consecvent linkuri si nu intelegea cum se poate sa nu-mi placa.
Cu timpul mi-am dat seama ca e foarte tare si am inceput sa gust bashcalia facuta pe seama muncii corporatiste. Amice, mea culpa, Dilbert e belea! O mostra de umor dilbertian:
http://www.dilbert.com/2008-10-10/
http://www.dilbert.com/2008-10-19/

Quotes4all

In timp ce lucram la un gadget pt iGoogle, am dat de un altul care m-a indrumat la un site pe care il cautam de ceva timp: http://quotes4all.net/ citate celebre ( http://www.google.com/ig/directory?type=gadgets&url=quotes4all.net/quotes.xml
)
Printre multe altele, un citat genial:
"Inside of a ring or out, ain't nothing wrong with going down. It's staying down that's wrong."Muhammad Ali

Thursday, October 9, 2008

Ce inseamna o comunitate open source....

Citez din nenea Rod: "We are amending our maintenance policy in the light of community feedback."
http://blog.springsource.com/2008/10/07/a-question-of-balance-tuning-the-maintenance-policy/

Thursday, October 2, 2008

Sailcat

Acum ceva ani, cand eram inca student, am avut o sesiune de invatat cu Bo, Ciuc, Croco, Vivi si am vazut desenele astea care ne-au marcat existenta:
http://www.youtube.com/watch?v=AaOkPzLY_u4

Tapestry rulz

In proiectul de care am amintit am avut un feature mai ciudatel de facut: pornind de la codul open source, dar fara a-l schimba, sa adaug un UI de licensing. Ceva de genul: ai un war pe care nu poti sa-l modifici dar trebuie sa mai apara si alte pagini in aplicatie prin simpla adaugare a unui jar. La inceput mi s-a parut putin bizar, dar citind mai multe despre Tapestry4 si HiveMind (folosite in proiect) am reusit sa fac asta. Treaba sta asa:

Tapestry4.0 foloseste containerul IoC HiveMind1.1 pentru a-si defini infrastructura - serviciile sunt create prin parsarea tuturor fisierelor META-INF/hivemodule.xml gasite in classpath. De asemenea, un astfel de serviciu poate fi suprascris in alt modul. Si in plus, in modulul tapestry.page mai exista definit serviciul tapestry.page.PageSpecificationResolver care, dupa cum ii zice si numele, are rolul de a "rezolva" specificatiile paginilor Tapestry (toate modulele sunt descrise aici).

Bun, deci taskul de care vorbeam se poate realiza prin crearea unui nou jar care sa fie pus in classpath-ul aplicatiei si care sa contina in META-INF un fisier hivemodule.xml in care se redefineste serviciul tapestry.page.PageSpecificationResolver, ceva de genul:

<implementation service-id="tapestry.page.PageSpecificationResolver">
<invoke-factory model="threaded">
<construct class="application.resolver.MyCustomPageSpecificationResolver">
...
</construct>
</invoke-factory>
</implementation>

unde clasa MyCustomPageSpecificationResolver extinde PageSpecificationResolverImpl si suprascrie metoda resolve.

Acceasi treaba se poate face si pentru componente, prin suprascrierea serviciului tapestry.page.ComponentSpecificationResolver si extinderea ComponentSpecificationResolverImpl.

Wednesday, October 1, 2008

And the Oscar goes to.....

De departe cel mai tare proiect la care am lucrat vreodata este un proiect open source - sipX (http://www.sipfoundry.org/). Un server VoIP open source, facut atat de bine incat a trezit interesul Nortel (care pana la urma l-a si cumparat - nu stiu daca asta e bine sau nu pentru comunitatea open source, tind sa cred ca nu, dar asta e o alta poveste...).
Bun, si uite asa, avand sansa sa interactionez cu o comunitate open source, am realizat nivelul mult mai slab al proiectelor din multinationalele pentru care am lucrat.
Facand o comparatie, sipX foloseste (pe parte de config) exact tehnologiile de ale caror feature-uri are nevoie: Tapestry, Spring (IoC, AOP, ORM), Hibernate. In comparatie, un proiect dezvoltat de o firma mare folosea nejustificat EJB3.0 (nici vorba de tranzactii distribuite sau ceva care sa justifice).
Un alt aspect care m-a frapat este calitatea excelenta a codului open source (scris dupa reguli foarte bine puse la punct) si a review-urilor facute de catre project owneri.
Alt punct forte ar fi metodologia Agile adoptata in sipX, total diferita de Waterfall-ul sau RUP-ul cu care am avut de-a face (ca o mica paranteza, zmeura de aur la capitolul cel-mai-slab-ins-care-se-vroia-manager merge la un nene cu care am lucrat si care nu intelegea Agile dar incerca din rasputeri sa puna in practica ceva de genul asta, rezultand o mare varza)
Si nu in ultimul rand, entuziasmul si profesionalismul cu care cei din open source isi fac treaba, in comparatie cu superficialitatea si suficienta pe care am intalnit-o in alte proiecte.

Nu o sa ma mai angajez niciodata la multinationale mamut, Nu o sa ....

Nu o sa ma mai angajez niciodata la multinationale mamut, Nu o sa ma mai angajez niciodata la multinationale mamut, Nu o sa ma mai angajez niciodata la multinationale mamut, Nu o sa ma mai angajez niciodata la multinationale mamut, Nu o sa ma mai angajez niciodata la multinationale mamut, Nu o sa ma mai angajez niciodata la multinationale mamut, Nu o sa ma mai angajez niciodata la multinationale mamut, Nu o sa ma mai angajez niciodata la multinationale mamut, Nu o sa ma mai angajez niciodata la multinationale mamut, Nu o sa ma mai angajez niciodata la multinationale mamut, Nu o sa ma mai angajez niciodata la multinationale mamut, Nu o sa ma mai angajez niciodata la multinationale mamut, Nu o sa ma mai angajez niciodata la multinationale mamut, Nu o sa ma mai angajez niciodata la multinationale mamut .......

Python, special pt Picu


Cu ceva timp in urma m-am apucat sa studiez Python - pare foarte cool, si cu learning curve mic pentru cineva care a lucrat Java. Anyway, cea mai tare chestie de pana acum la el, pe langa mostenirea multipla, mi s-a parut asta (luat din tutorial): By the way, the language is named after the BBC show "Monty Python's Flying Circus'' and has nothing to do with nasty reptiles. Making references to Monty Python skits in documentation is not only allowed, it is encouraged!

Pentru Picu, unul dintre cei mai mari fani Monty Python (prestand la narghilea)....

Spring AOP in real life


Am constatat ca fiul meu, Vlad (1 an si 9 luni in prezent) se comporta cateodata ca un interceptor AOP. In urma cu ceva timp aveam o discutie foarte civilizata cu Lucia, sotia (in varsta de ... in prezent) in care ea mi-a zis ceva de genul: "N-ai minte nici cat o gaina ametita". Dupa cateva secunde, in timp ce noi continuam discutia si nici nu sesizasem ca Vlad e in aceeasi camera cu noi, ma trezesc cu el ca ma trage de picior si imi intinde gaina lui de jucarie, Emma (mai multe detalii despre Emma aici).

Dpdv al Spring AOP as zice asa:
Vlad - interceptor/advice insarcinat cu aducerea gainii
in capshorul lui - pointcut static bazat pe expresii regulate, pattern .*gaina.*
discutia noastra - target object

Weaving la runtime...