Thursday, March 31, 2005

Poveste corporatista cu morala (partiala)

Poate ca fara legatura directa cu topicul "Creativitatea", dar cu stranse legaturi subterane :) :

Se da firma X, ce are un departament IT Y. Firma X considera ca ar fi bine daca ar reusi sa creasca gradul de automatizare al muncii prestate de catre angajatii sai si prin urmare apeleaza la Y. Acestora din urma le sunt necesare sase luni pentru a produce prima implementare (bazata pe o instalatie externa Z in care firma X a investit o suma importanta), si inca patru luni de teste (fara comunicare directa intre "palmasii" firmei X si "softistii" de la Y asupra sistemului testat, ci intermediata prin seful de la X), urmate de doua luni de productie bazate pe aplicatia produsa (sa o botezam W). Unul din "palmasii" X, sa-l numim x_mic, (ce nu are nici o legatura cu departamentul Y, directa ori indirecta) se apuca sa scrie in timpul liber o aplicatie bazata pe sistemul W. Gaseste o dupa-amiaza libera in care scrie un mic softulet care verifica munca colegilor lui (astfel incat sa-si dea seama daca o "freaca" sau nu :)). Desi departe de a fi perfect si fara a fi "promovat", softuletul se raspandeste "subversiv" pe la majoritatea celorlalti "palmasi". Trece o saptamana si softuletul pare a da erori. x_mic isi cere scuze, se duce acasa cu coada intre picioare si se apuca sa faca verificari. In urma carora realizeaza cu mirare (sau poate nu) ca nu era vina softuletului ci a sistemului W, ce dadea rateuri la greu (in sensul ca un "palmas" a_mic poate fi penalizat (financiar) pentru eroarea comisa de fapt de un alt palmas b_mic). Probabil ca x_mic se va duce la seful lui, X_mare, pentru a-i comunica buba. Acesta la randul lui le va comunica celor de la Y despre eroarea aparuta. Probabil va trece cel putin o luna si va aparea un patch. Speram, noi "palmasii" :)
(Pariu: nici un membru al Y nu va veni la x_mic sa-l intrebe de sanatate. De fapt, x_mic s-a dus odata la seful lor, acesta la randul lui a parut interesat, dar din nefericire x_mic a avut proasta inspiratie sa-i prezinte proiectul la care se gandea si a fost total incostient cand i-a prezentat cateva din sursele scrise in Python - Acesta a fost sfarsitul discutiei - ca fapt divers, acel cod sta la baza MogNews)

Morala: Nu sunt sigur, dar sper ca atunci cand voi ajunge sa programez "pe bani" ("pentru a-mi plati facturile") sa-mi pastrez entuziasmul si creativitatea (atata cata este). Poate acesta este unul din motivele pentru care am tot amanat sa ma angajez ca programator pana acum.

Wednesday, March 30, 2005

Despre creativitate

Tudor Galos scria la inceputul anului despre creativitatea programatorilor romani:

Traim într-un paradox. Noi românii avem programatori buni, foarte buni, cotati bine pe piata internationala a muncii, multi programatori români au ajuns în Microsoft, Cisco si alte companii importante. Totusi pâna acum în România nu am auzit decât de foarte putine proiecte noi, care sa solutioneze o problema clara de business. În afara de succese cum ar fi programul e-Guvernare, e-Licitatie, portalurile Siveco (toate cu suportul Guvernului) si alte câteva, în rest aud doar ERP-uri, aplicatii financiare, baze de date si web design (celebrele insertii în CV-uri: PHP/MySQL).


Trecand peste unele mici neintelegeri ("Cine scrie PHP si MySQL nu e programator. E designer." - am scris si scriu php si cod SQL si nu sunt in stare sa umblu cu un Photoshop, desi mi-as dori sa pot), in esenta are dreptate. Si din pacate, din punctul meu de vedere iesirea din aceasta situatie este destul de departe. E greu sa lasi deoparte un job php-mysql de 300-400 US$ si sa iti dedici timpul implementarii "marii idei" pe care toti dintre noi o avem, atunci cand majoritatea programatorilor romani de 24-30 ani (varsta la care se presupune ca ai energia si entuziasmul sa investesti intr-unul din visele tale) stau impreuna cu prietena sau nevasta intr-o garsoniera sau un apartament de doua camere (120-170 US$ chirie pe luna + 150 - 250 US$ reprezetand lumina+gaze+telefon+intretinere+internet + ~100$ pusi deoparte in fiecare luna pentru a indrazni sa aplice pentru un credit ipotecar), in general ceea ce vad in jurul lor nu se apropie nici pe departe de meritocratie, si prin urmare slabe sanse ca o idee, oricat de brilianta, sa le confere acel "competitive edge" din moment ce adversarii pot umbla oricand la arbitru (a se vedea "faimoasele" licitatii in urma carora au fost assignate proiectele enumerate de Tudor), si le va fi cu atat mai greu sa devina "creativi" si sa lase la o parte "cantitatea" din moment ce sistemul de invatamant ce i-a produs tocmai pe asta pune accentul.

Monday, March 28, 2005

Programare web si Python

Foarte interesant postul lui Ian Bicking: Why Web Programming Matters Most.

But then I'm a web programmer because I think it's the most important and empowering development environment of our time -- it has been for at least the last five years, and I'd be surprised if that didn't stay true for at least the next five years.


And Python could have been PHP. We could have seen that kind of growth. But we didn't, because there has been and continues to be a bunch of little things that make Python annoying to use and get started with for web programming. But it's not all over -- PHP 5 is barely catching up to Python's features from 10 years ago. There's a lot of room for a better language to take its place.


Stiu ca "web-ul nu e totul", dar la ora actuala reprezinta entry point-ul pentru din in ce mai multa lume care se apuca "sa scrie cod" pentru prima oara. Si sunt sigur ca daca s-ar apuca sa scrie primele trei pagini dinamice in Python si nu in PHP, cu timpul si pe masura ce evolueaza le va fi din in ce mai greu sa nu foloseasca Python chiar si pentru programele ce nu au legatura cu web-ul.

Friday, March 25, 2005

Closures si Lisp

Citesc Programare in LISP, de Stefan Trausan-Matu.
Nu mi s-a mai intamplat de mult ca ceea ce citesc sa mi se para "frumos" (stiu, e un cuvant mare :)), si nici pe departe nu m-as fi asteptat ca acest lucru sa mi se intample in cazul unei carti IT.
Insa trebuie sa admiri "frumusetea" LISP-ului din moment ce e capabil de asa ceva:

> (setq m (let ((x 1)) #'(lambda()(setq (1+ x)))))
> (funcall m)
2
> (funcall m)
3

Nu ma intrebati de ce mi se pare ca e "frumoasa" constructia de mai sus, n-as putea spune, insa incep sa cred din ce in ce mai mult in "the quality without a name", cum o numea Christopher Alexander (via Richard Gabriel - Patterns of Software (PDF))

Wednesday, March 23, 2005

Croquet

Via Titus Brown am ajuns la Croquet. De acord partial cu remarca "The site is vague and general to the point of drooling idiocy" (facuta de Titus), dar dupa ce am citit asta am inceput sa ma simt ca unul dintre tipii aceia ce stau inlantuiti in pestera si se minuneaza de umbrele de pe pereti, in timp ce afara sub lumina soarelui "iluminatii" se ocupa de lucruri serioase ("Julian and his team weren’t building some nameless data-mining or e-business dotcom; they were building a world that would parallel our own.")

Tuesday, March 22, 2005

Feed-uri RSS pentru rezultatele cautarii pe MogNews

Am adaugat si feed-uri RSS pentru rezultatele cautarii pe MogNews.

Rezultatele cautarii pentru Basescu de exemplu se pot obtine si prin urmatorul feed: http://maglina.no-ip.org/news/rss.py/rss?query=basescu

Rezultatele cautarii pentru Basescu Tariceanu (toate articolele in care sunt mentionati Basescu si Tariceanu) pot fi obtinute si prin feedul http://maglina.no-ip.org/news/rss.py/rss?query=basescu+tariceanu

In general, daca doresc sa caut ceva, feedul corespunzator se obtine adaugand dupa 'http://maglina.no-ip.org/news/rss.py/rss?query=' acel 'ceva', deci http://maglina.no-ip.org/news/rss.py/rss?query=ceva

Daca vreau sa caut dupa doi sau mai multi termeni (pana in cinci), sa zicem "ceva1", "ceva2" si "ceva3", feedul rss se obtine adaugand la 'http://maglina.no-ip.org/news/rss.py/rss?query=' sirul de caractere 'ceva1+ceva2+ceva3', obtinandu-se
http://maglina.no-ip.org/news/rss.py/rss?query=ceva1+cev2+ceva3

Sper sa fie de folos.

Feed-uri RSS pentru categoriile de pe MogNews

Asa cum am promis, am inceput sa mai adaug diferite feed-uri pentru MogNews. Pentru moment am mai adaugat feed-uri pentru fiecare categorie, astfel:

International : http://maglina.no-ip.org/news/rss.py/rss?categorie=1
Politica : http://maglina.no-ip.org/news/rss.py/rss?categorie=2
Economie : http://maglina.no-ip.org/news/rss.py/rss?categorie=3
Stiinta/Tehnica : http://maglina.no-ip.org/news/rss.py/rss?categorie=4
Sport : http://maglina.no-ip.org/news/rss.py/rss?categorie=5
Cultura : http://maglina.no-ip.org/news/rss.py/rss?categorie=6

Mentionez ca impartirea pe categorii se face automat, in urma unui "proces de invatare". Multi dintre voi s-ar putea intreba de ce sunt atat de putine articole la Stiinta/Tehnica. Raspunsul este ca la inceput a trebuit sa furnizez pentru fiecare categorie cate un numar de articolele de invatare ("baza de cunostinte"), de preferat cat mai mare. Atunci cand un articol nou intra in sistem si se pune problema carei categorii ii apartine, fiecare categorie compara elementele definitorii ale articolului in cauza cu articolele din baza sa de cunostinte, si daca rezultatul compararii e mai mare decat o anumita valoare prag atunci articolul are sanse mari sa apartina acestei categorii. Problema este ca pentru majoritatea categoriilor am reusit sa formez o baza de cunostinte de cate 150-200 de articole, insa pentru Cultura si mai ales pentru Stiinta/Tehnica mi-a fost mai greu la inceput si de atunci am tot amanat-o.

Maine dimineata (miercuri) sper sa adaug feed-uri rss si penru rezultatele cautarii.

PS: Problema impartirii pe categorii (text categorization) este in realitate putin mai complexa, gasiti o colectie de titluri aici

recomand mai ales Fabrizio Sebastiani: A Tutorial on Automated Text Categorisation

si Improving text categorization methods for event tracking

Monday, March 21, 2005

RSS pentru MogNews

Am adaugat si feed RSS pentru MogNews, accesibil aici.

Deocamdata am adaugat RSS pentru prima pagina, ce prezinta cele mai importante 15 subiecte ale zilei. Sper ca in maxim doua-trei zile sa adaug cate un feed RSS si pentru fiecare categorie (Economie, Sport, Politic, etc), ca si pentru rezultatele cautarii, la fel cum face MSN Search de exemplu.


Inca nu am apucat sa vorbesc pe larg despre MogNews, cand o sa am mai mult timp liber o sa scriu o serie de posturi despre cum l-am construit si cam ce sta in spatele lui. Pe scurt, toata ideea a plecat de la un parser ce colecta articolele de pe paginele principalelor cotidiene, dupa care a urmat impartirea articolelor in clustere in functie de gradul de asemanare dintre ele si pasul urmator a fost impartirea in categorii (bazata in principal pe k nearest neighbor)

Saturday, March 19, 2005

14% dintre programatori folosesc Python

Stephan Deibe (omul din spatele pythonology.org):
InfoWorld tells us that 14% of all programmers use Python, up 6% from the previous year. This almost doubles the number of Python programmers world-wide. Microsoft and Google are providing two out of three keynotes at the upcoming PyCon conference.


Sunt foarte curios (si interesat :) ) cate povesti de succes Python exista in .ro. Am colegi de facultate (A&C, Bucuresti) care nu stiu nici macar sa spell-uiasca "python", dar in schimb la servici cunosc un absolvent de "umanioare" ce s-a jucat cu python si a produs acest site

Friday, March 18, 2005

Mea culpa, dupa indelungi peregrinari am ajuns si aici: rss-ul gecad, care desigur ca sarea in ochi de pe prima pagina, problema e ca eu intrasem direct aici urmarind un link de pe un site extern.
Altadata am sa fiu mai atent. Asta nu face mai putin adevarat citatul de la A9 OpenSearch.
In continuarea ultimului post, via jeremy zawodny am ajuns la A9 OpenSearch si la acest paragraf:
Many sites today return search results as a tightly integrated part of the website itself. Unfortunately, those search results can't be easily reused or made available elsewhere, as they are usually wrapped in HTML and don't follow any one convention. OpenSearch offers an alternative: an open format that will enable those search results to be displayed anywhere, anytime. Rather than introduce yet another proprietary or closed protocol, OpenSearch is a straightforward and backward-compatible extension of RSS 2.0, the widely adopted XML-based format for content syndication.

Cam acelasi lucru ma chinuiam si eu sa-l spun, si in parte incerc sa-l fac in ceea ce priveste stirile prin MogNews.

Thursday, March 17, 2005

I'm sick de atata "Codul pe care trebuie sa il utilizati este"

Uneori stau si ma intreb cum se face ca in era xml-ului, rss-ului etc. pe site-ul unei companii al carui produs de top a fost cumparat cu mare tam-tam de catre baietii din redmond pot gasi celebra expresie "Codul pe care trebuie sa il utilizati este", urmat de un snippet de JavaScript ce ma trimite la un script PHP cu o droaie de parametri specificati in URL (a se vedea aici)
Asta inseamna ca sunt fortat sa folosesc culorile si numerele de rezultate pe care sunt lasat "sa le aleg". Dar sa zicem ca eu nu vreau sa afisez linkurile unul sub altul, sau poate nici chiar unul dupa altul, sau poate vreau ca fiecare link sa aiba o culoare diferita. De ce ar trebui sa-mi ordonez site-ul in functie de deciziile de design impuse de un alt website? De ce odata cu informatia ce imi este furnizata si pe care am cerut-o in prealabil trebuie sa "inghit" si junk-ul aditional? Ma opresc aici deocamdata, caci despre subiecte de genul asta o sa mai tot vorbesc.
In blogul asta se va vorbi cel mai probabil despre python, information retrieval, xml, php, AI.