Google Chrome

December 11th, 2009 Alex

Mi-am instalat şi eu Google Chrome că a fost lansată versiunea beta de Linux. Însă sunt utilizator înrăit de Firefox şi nu prea aveam speranţe mari.

În Firefox sunt dependent de …

  • Web developer toolbar
  • Firebug
  • plugin-ul de delicious
  • live http headers
  • la inputul URL-ului se face fulltext search în History pe URL / titlul paginii
  • feature-ul „add keyword for this search” ce-mi permite să fac căutari rapide pe Answer.com, dexonline.ro şi wikipedia.com

Ultimul feature este valabil în Chrome, dar setarea unui search-engine e mai peste mână. Şi pt penultimul feature poţi defini un shortcut în aşa fel încât dacă-i dai „h jquery” să-ţi facă căutarea „chrome://history/#q=jquery” care este fulltext, dar e mai naşpa de folosit. În rest plugin-urile alea nu sunt valabile, deşi s-ar putea să apară alternative.

Şi pentru că este un browser nou, mai are şi probleme de randare la unele pagini.

Dar … Jesus Christ … cât de rapid este faţă de Firefox, îmi place la nebunie interfaţa, şi în Firefox mi se bloca tot browser-ul când se bloca un script dintr-un tab (şi mi se întâmplă des) de trebuia să aştept dialogul „would you like to stop this script?”.

Choice anxiety” în acţiune pt un rahat de browser.

Posted in review, technology | No Comments »

Proces blocat …

December 10th, 2009 Alex

    alex@work:~$ strace -p22936
    Process 22936 attached - interrupt to quit
    futex(0x828c558, FUTEX_WAIT_PRIVATE, 2, NULL

Awesome.

Posted in grownup stuff | 3 Comments »

BestJobs

October 22nd, 2009 Alex

Tot primesc mail-uri de la BestJobs … l-am folosit acum câţiva ani, cu rezultate extrem de proaste.

Mă distrează titlurile la email-uri …

  • Nu contează (doar) ce ştii, ci pe cine ştii
  • Cunoşti puterea gândului?
  • Un zâmbet nu strică niciodată (cu subtitlu’ în pagină … „Ce spun astrele despre cariera ta”)
  • Ce faci pentru a atinge succesul?
  • Ştii să convingi?

Adevărul este că la câţi incompetenţi sunt în România, sunt sigur că au nevoie să-şi concentreze energiile pe pile / aspect / alinierea astrelor.

La un angajator precedent vine odată la un interviu un tip foarte elegant, la costum, cu cravată (câţiva colegi de-ai mei n-au purtat cravată nici la nunta lui Bogdan).Am jucat întâi un biliard mic până se elibera camera, domnul fiind foarte „cocky”, un învingător clar.

Începe interviul (aici doar parafrazez, fiind din amintiri de acum 2 ani, răspunsurile reale erau mult mai funny, iar lista de întrebări este incompletă) …

  • Descrie-mi activitatea ta de până acum
  • EL: am lucrat la shopping-sites în PHP pentru clienţi foarte, foarte importanţi şi practic „agile development”
  • ….
  • Care a fost ultimul tău proiect?
  • EL: ultimul proiect a fost să migrez o aplicaţie mai veche de la PHP4 la PHP5
  • ….
  • Dar sistemul tău nu prea este OOP, ne poţi explica conceptul?
  • EL: clasele sunt o metodă de a grupa funcţii, şi nu mi s-a părut necesar
  • Îmi poţi spune care sunt diferenţele între PHP4 şi PHP5? (că doar migrase o aplicaţie)
  • EL: nu prea mai ţin minte
  • De diferenţe la referenţierea obiectelor, sau de noul sistem de excepţii, n-ai auzit?
  • EL: nu, nu mai ştiu
  • Păi în PHP4 când scrii … $obj = $old_obj … ce se întâmplă? se crează o copie sau o referinţă la obiectul original?
  • EL: nu m-am lovit de problema asta
  • Îmi poţi spune ce este o referinţă?
  • EL: <linişte>
  • ….
  • Descrie-mi şi mie un algoritm la alegere pentru sortarea unui array …
  • EL: nu ştiu nici un algoritm, pentru asta există funcţia array_sort
  • Păi şi dacă structura de date folosită este atipică, adică nu este un array, cu ce o sortezi?
  • EL: până acum m-am descurcat doar cu array_sort şi cu ORDER BY din mysql

Interviul s-a oprit în momentul în care colegul meu începuse să-mi facă semne disperate pe sub masă ca să-l las în pace (eu mă distram de minune). După care cu un zâmbet fals pe faţă colegul meu i-a spus … „Mulţumim, interviul a mers destul de bine, dupe ce deliberăm te vom contacta”.

Zâmbetul încrezător al candidatului din păcate dispăruse de mult, dar cel puţin avea cu ce să se spânzure.

Posted in humor, management, quotes | 6 Comments »

Already broken

August 24th, 2009 Alex

  "You see this goblet?" asks Achaan Chaa, the Thai meditation master.

  "For me this glass is already broken. I enjoy it; I drink out of it.
  It holds my water admirably, sometimes even reflecting the sun in
  beautiful patterns. If I should tap it, it has a lovely ring to it.
  But when I put this glass on the shelf and the wind knocks it over
  or my elbow brushes it off the table and it falls to the ground and
  shatters, I say, ‘Of course.’

  When I understand that the glass is already broken,
  every moment with it is precious."

 

Posted in Uncategorized | 1 Comment »

Update domeniu

May 18th, 2009 Alex

Din păcate domeniul lexoft.eu mi-a expirat şi a stat expirat cam două săptămâni.
Îmi cer scuze pentru inconvenienţe!

Posted in Uncategorized | 1 Comment »

Sinapticode

April 6th, 2009 Alex

N-am mai scris de ceva timp.

Adevărul este că nu prea am timp. Sunt din ce în ce mai ocupat la servici … proiectele zboară, clienţii zbiară :) … fun times.

Sunt aproximativ 6 luni de când sunt angajat Sinapticode. Într-o zi o să trebuiască să povestesc mai pe îndelete despre ritmul nebun în care lucrăm … mi se pare ameţitor faţă ritmul cu care eram obişnuit. Şase luni pentru prima versiune? Două săptămâni de teste per milestone? Hai mai bine să fie gata proiectul azi ;)

Avem şi website: sinapticode.com.

Posted in mylife | 1 Comment »

Emacs - editorul zeilor

March 8th, 2009 Alex

Am fost Joi la Wurbe #18 și am ținut o prezentare despre Emacs.

Nu a fost prea reușită … n-am mai ținut prezentări până acum și m-am cam emoționat :) … încurcându-mă în prezentare am uitat de aspecte importante despre care ar fi trebuit să vorbesc, și am lăsat pe afară alte câteva plugin-uri foarte cool. Plus că am uitat de partea cea mai importantă … resurse de învățare.

Data viitoare o să vin mai bine pregătit :)

Resurse Emacs

Pentru început:

Plugin-urile prezentate:

  • Yasnippets … cu un articol introductiv scris pe celălat blog
  • ISpell și FlySpell (module incluse în distribuție) … integrare cu ispell/aspell ce permite corecția textului în mai multe limbi, inclusiv în română
  • Flymake (modul inclus în distribuție) … ce permite raportarea de erori sintactice în real time, independent de limbajul de programare
  • cperl-mode (inclus în distribuție) … mod editare inteligent de Perl, cu syntax highlighting bine făcut, integrare cu perldoc, și integrare cu Grand Unified Debugger din Emacs
  • python-mode (inclus în distribuție) … modul de Python inteligent, cu debugger integrat cu GUD și interpretor interactiv

Funcționalități care ar fi trebuit să le menționez:

Și bineînțeles … configurația mea de Emacs.

De ce nu Eclipse, Visual Studio, etc…?

Pe vremea când foloseam Eclipse, chiar încercam să-mi placă. Îmi plăcea ideea că este extensibil și că de voie de nevoie are o comunitate, și promite să fie un Visual Studio pentru Linux/Mac OS X.

Dar sunt genul de om ce experimentează cu diverse tehnologii și limbaje de programare destul de „cutting edge”, iar plugin-urile de Eclipse sunt mereu la câteva buguri departe de pragul în care încep a fi funcționale. Și pentru a începe lucrul cu orice limbaj, n-ai nevoie decât de syntax highlighting … atât. Și nici un IDE nu are integrare reală cu alte unelte, fiind monolitice și destul de departe de filozofia Unix.

Și un IDE pe termen lung nu te ajută deoarece din motive greu de prevăzut îți dictează arhitectura aplicației, și influențează întreaga cultură din jurul tehnologiilor suportate, făcând posibile aberații ale naturii, cum ar fi …

BufferedReader in = new BufferedReader(
    new InputStreamReader(
    new FileInputStream("file.txt"), "UTF-8"));

… idee exprimată ceva mai bine în Does Visual Studio Rot the Mind? (Charles Petzold … unul dintre cei mai cunoscuți editori pe tehnologii Microsoft).

Iar pentru o comparație de perspectivă dintre cele două lumi … o diferență între System.Shell.CommandLine și Mono.Options, discuție care n-ar exista dacă System.Shell.CommandLine n-ar fi gândit pentru utilizarea într-un IDE de programatori mediocrii (din fericire se pare că nu vor include totuși System.Shell.CommandLine în următorul preview).

Plus că trebuie să aștepți deschiderea aplicației cam cât îți ia să citești acest articol ;)

De ce Emacs?

Nu cred că pot răspunde prea bine, este mai mult vorba de un sentiment pe care-l simți odată ce reușești să devi familiar cu mediul.

Emacs și Vim sunt două unelte foarte interesante, comparate cu IDE-urile clasice. Nu oferă prea ușor intellisense, n-au interfață de design a interfețelor grafice, și de fapt nu au interfață point&click. Asta nu înseamnă că nu te ajută, departe de asta. Și pentru a lucra eficient, ai nevoie de ceva timp de studiu, și deoarece sunt atât de diferite de mediile tradiționale tranziția este dureroasă.

Munca fizică efectivă a oricărui programator este citirea/generarea/editarea de texte. Cu toate astea instrumentele clasice nu sunt eficiente pentru editare. Este ca diferența între un chirurg ce folosește un bisturiu ascuțit, și un chirurg (al viitorului) ce folosește un roboțel programat din fabrică pentru anumite operații. Esta ca diferența între un set de Lego tematic din care poți construi doar o corabie cu pirați, și unul format doar din cărămizi de diverse forme :)

Lumea a devenit mult prea obsedată de ușurință în folosire, de rezultate rapide, de „instant gratification”. Cu toate astea profesioniștii din alte domenii merg într-o direcție diferită … n-o să auzi de la un chirurg că și-a luat licența fără ani buni de studiu, n-o să auzi de la un pilot de curse că folosește cutie de viteze automată, n-o să auzi de la nici un artist sau sportiv bun că a ajuns unde a ajuns fără o cantitate de efort aproape ireal.

Am exprimat în mare aceeași idee în Obsesie pentru limbaj, de unde și citatul …

The clumsiness of people who have to engage their brain at every step is unbearably painful to watch, at least to me, and that’s what the novice-friendly software makes people do, because there’s no elegance in them, it’s just a mass of features to be learned by rote. However, this suits people a hell of a lot better than setting out at age 6 to become a great ballet dancer and achieving their goal 20 years later after every tendon and muscle and joint has been asked to perform just a little bit more than nature ever intended over and over and over again. To most people, this is insanity. But in reality, it’s art, and it’s the art in what we do that makes us human.

Erik Naggum, Usenet article

Așa că aveți răspunsul … Emacs este pentru artiști. Știu că pare a fi o atitudine arogantă, dar în Emacs simplul fapt că orice acțiune și comportament poate fi controlat din eLisp, simpla idee că-ți poți controla mediul în orice chip imaginabil, și că nu ești limitat de un wizard grafic al cărui rezultat este bătut în cuie … este o idee periculoasă în industria noastră. Asta înseamnă că-ți poți controla mediul, că nu ești o comoditate debarasabilă, că vei putea concura de unul singur cu hale întregi de programatori ieftini ;)

Enjoy ~

Posted in passion, technology, unix | 5 Comments »

O poveste, doi copii

February 26th, 2009 Alex

Avertisment: articol lung, poveste personală !!

Aş vrea să mă întorc în timp pentru a-mi aminti cum a fost cândva, anumite trăiri, anumite sentimente. Nu mă consider un romantic, şi nu cred că pot descrie exact ceea ce s-a întâmplat, mai ales că am început să uit, dar cred că pot găsi câte o melodie pentru fiecare etapă psihică și emoțională a vieții mele de care să mă agăţ. Mult prea mulţi oameni trec prin viaţă fără simţ, ca nişte morţi care încă n-au aflat.

luna Îmi amintesc liceul, și mai ales verile dintre ani, cu aerul cald și răcoritor de noapte ce mirosea a aventură și iarba ce-mi gâdila picioarele în timp ce mă bucuram de emoțiile de dragoste ce le simțeam pentru prima oară. În orașul meu se organizau în August „serbările soarelui” … ocazie bună pentru adolescenți (crema) să se întâlnească pentru o ultimă aventură înainte de începerea școlii, mai ales că aerul de toamnă, atât de specific începutului de an școlar, deja se instala.

Și cum stăteam eu tolănit pe iarbă, gândindu-mă undeva departe, a început să cânte Vama Veche … Vara asta. Eram îndrăgostit mai tot timpul, deși eram genul de introvertit care nu-și prea exterioriza sentimentele. Copil :)

Eram fericit, și cu toate că vacanța era pe sfârșite și trebuia să încep un nou an școlar, era genul de „plăcere vinovată” să sfidezi dorințele părinților, să fii rebel pentru încă o noapte, să nu-ți pese de ce va urma. Și orice s-ar fi întâmplat se putea repara oricum.

Mai târziu am întâlnit-o pe ea, o păpușică dulce cu ochii verzi, pe 20 iulie într-o noapte de vară caracteristică, genul de noapte care-ți dă senzația că visele chiar se pot împlini. Am ieşit la plimbare, iar a doua zi am mers amândoi la plajă. Eram extrem de timid şi sincer să fiu mi-era frică de ea, dar mi-am luat inima-n dinţi, m-am dus după ea în apă şi am sărutat-o, apoi m-am retras un pic să văd ce zice.

Aveam şi un loc preferat în pădure, undeva lângă apă. Obişnuiam să stăm amândoi pe o pătură privind în sus către vârfurile copacilor, şi mai sus spre cer. Avea tendinţa să mă muşte când ne sărutam şi ajungeam cu limba zdrelită acasă. Am trăit o vară romantică, fiind adesea doar noi doi și luna (Vama Veche … da, sunt mare fan).

Am ajuns într-un final la București, la facultate. Deși eram trist că-mi lăsam dragostea în urmă și tot ce mi-era familiar, eram incitat de un nou început, de o lume nouă plină de posibilități, de prietenii noi, de necunoscute … aveam doar 18 ani (bine, 19).

munte 024 Îmi era greu totuşi să fiu departe de ea. Mă îndrăgostisem iremediabil şi chiar nu-mi păsa de ce spuneau ceilalţi, un univers întreg ce părea să fie împotriva nostră. „Nimeni n-o să îţi explice ce e dragostea” (Epilog, Vama Veche) şi când s-a întâmplat am fost lovit cu un ac direct în inimă. Aveam o relaţie de la distanţă, vorbeam ore în şir la telefon, ne certam pe motive stupide fiind amândoi geloşi nevoie mare, şi ne împăcam prin cuvinte dulci, adormind seara cu ele în minte, visând la weekend-ul în care ne vom vedea.

Bere, lipsă de bani, ţigări, alergături prin parc, clanuri de CStrike, chiuluri, emoții, despărțiri, împăcări, responsabilități pe care nu le puteam duce. Ne vedeam rar, cam odată la două săptămâni şi în alea două săptămâni se acumulau suficienţi hormoni cât pentru 2 luni. Îmi încuiam adesea colegul de cameră pe afară (sorry B.) şi petreceam amândoi clipe ce transcendeau spaţiul şi timpul, părând infinite (deh, Dragostea). Ea avea un obicei când adormea pe care-l voi ţine minte mereu … pentru că eram atât de fericiţi unul cu altul când ne regăseam, îmi cerea adesea să-i mai povestesc odată „cum ne-am cunoscut” (adormind pe la jumătatea poveştii :) ).

Ne duceam la toate concertele Iris de care auzeam. Ne jucam în prostie Diablo II, eu barbar, ea vrăjitoare. Simţeam că este datoria mea să o protejez în faţa monştrilor, iar ea simţea că este de datoria ei să adune toate bunătăţile ce picau în urma luptelor şi să cerceteze toate cuferele.

Şi desigur, a apărut şi Toto, un pechinez extrem de răsfăţat şi cu foarte multe toane. Iubeam căţeii amândoi, însă Toto ne-a ales pe noi, nu invers. Mai târziu a apărut şi Bella, o hapciupalitică ce ulterior a mai crescut şi l-a pedepsit pe Toto pentru toate persecuţiile de când era mică :) Copiii noştri, echipa perfectă … un pechinez şi un rottweiler.

După ce treci de 20 de ani îţi dai seama încet-încet că te-ai născut în rahat, şi cu cât urci mai sus cu atât este aerul mai curat. Cândva de-a lungul poveştii a venit într-o zi vremea unei maturizări forţate (De ce?), dar un lucru era cert … era timpul să fiu pe picioarele mele. Eforturi, sacrifici mari de care nu eram pregătit, job-uri cu oameni care visau de mici să fie şefi, vise decimate de realitate.

Am reușit totuși să ne mutăm în apartamentul nostru. Ne-am chinuit la început, am făcut amândoi curat aşa cum am putut, şi tot ce aveam erau un covor în mijlocul camerei, un scaun pe care așezasem un televizor mic, un fierbător de apă pentru cafea, o oglindă în baie şi o plapumă veche pe care dormeam toţi patru. Dimineaţa ne trezeau razele soarelui, neavând jaluzele la geamuri, şi ne cumpăram gogoşi de la brutăria de peste stradă care erau dumnezeiesc de bune, după care plecam la servici. Şi eram fericiţi, eram liberi, eram amândoi, aşa cum spuneam odată eram ca „două boabe într-o păstaie”. Simţeam că suntem pe acoperişul lumii.

SANY0043 În timp am uitat de noi, am uitat să fim atenţi. Există un anumit prag pe care-l treci când te maturizezi, când încetezi să mai visezi în culori, când pentru orice idee ce ţi-ar trece prin cap începi să faci socoteli, când începe indiferenţa şi declinul (Pe Sârmă, Zmeul).

Însă povestea continuă, și vom reuși să trecem peste orice. Îi iubesc râsul, îi iubesc făţuca ei morocănoasă când se trezește dimineaţa şi cere cafea, o iubesc când nu ne-am văzut de mult timp și are multe de povestit (deși abia reușesc să țin pasul cu detaliile), o iubesc seara când adoarme cu o carte-n mână şi iubesc chiar și certurile cu ea.

Îi dedic aceste rânduri şi într-una din serile în care nu va putea adormi poate o ajută să asculte încă odată „povestea”.
(17 - infinit)

Pe 29 Februarie este ziua ei de naştere. 25 reprezintă o vârstă frumoasă de care aş vrea să se bucure.
La mulţi ani puiule!

Posted in mylife | 1 Comment »

Limbaje de programare, ză fiuciăr

February 15th, 2009 Alex

Eul meu alternativ a scris pe celălalt blog o mică diatribă despre problemele combinării de biblioteci de cod scrise în limbaje de programare diferite.

Şi mai am o altă problemă: instrumentele curente de design al unui limbaj de programare sunt destul de primitive. Yacc/Lex sunt decente, dar odată parserul complet cam trebuie să lucrezi la propriul backend cu un minim de facilităţi necesare, cum ar fi garbage-collection şi FFI.
Sau interpretorul se poate baza pe un VM stabil şi complet, cum ar fi JVM sau CLR. Însă din păcate maşinile astea virtuale sunt specifice limbajelor statice pentru care-au fost create, Java/C#, şi deşi JRuby în diverse benchmark-uri are performanţe mai bune ca Ruby MRI, asta spune mai multe despre performanţa proastă a implementării de referinţă. Şi există Antlr (gramatică EBNF, parsare LL(*), AntlrWorks, backend-uri multiple), dar nu-mi rezolvă problema.

Am început să mă joc cu Parrot şi cu Rakudo, implementarea de Perl6. Parrot mi se pare genial şi pentru Februarie este pregătită versiunea 1.0. Parte din Parrot face parte şi PGE (Parrot Grammar Engine) ce permite definirea de expresii regulate cu nume ataşat. Mă rog, termenul de „expresie regulată” nu prea e corect deoarece în PGE expresiile pot fi recursive (uite o întrebare de interviu pentru tortură maximă: dă-mi un exemplu de conţinut ce nu poate fi parsat cu un regex şi demonstrează de ce :) ). Şi tot Parrot îţi pune la dispoziţie unelte pentru reprezentarea AST-ului / compilarea în bytecode.

Planul meu de dominare a lumii începe.
~

Posted in perl, technology | 2 Comments »

„Spamming” pe motoarele de căutare

February 8th, 2009 Alex

Foarte mulţi oameni au idea preconcepută că pentru a avea succes trebuie să apari în primele rezultate din căutările Google şi nu poţi apare decât prin intermediul tehnicilor SEO.

Tehnicile SEO se împart în două categori: „white hat” şi „black hat”. Eu întotdeauna am preferat optimizările ce reies dintr-un design bun şi un conţinut de calitate. De exemplu oricâte trucuri ai face, cu greu poţi bate Wikipedia.

Nu este şi cazul unor publicaţii online de la noi. În „Publicitatea online pe înţelesul tuturor” Dragoş face o analiză a topului siteurilor de ştiri din România, şi surpriză, surpriză, realitatea.net face spam.

Fenomenul este foarte nasol, deoarece nu se concurează corect prin calitatea conţinutului, şi deşi motorul de indexare de la Google este suficient de inteligent pentru a se prinde de astfel de trucuri, se întâmplă două lucruri:

  • site-urile .ro sunt situate pe un index separat şi mai prost întreţinut, google.ro nefiind o prioritate
  • în contextul unui motor de căutare e mai nasol să obţi un „fals pozitiv”, decât un „fals negativ” … dacă eşti banat de pe Google, este ca şi când n-ai exista, şi instanţele în care site-uri perfect valide sunt banate trebuie eliminate cu riscul de a valida site-uri ce n-ar avea dreptul

Aşa că-mi veni o idee: site-urile ce încalcă regulamentul Google pot fi detectate, şi există şi un formular de raport a link-urilor cu astfel de probleme. Desigur, este costisitor ca timp să stăm şi să vânăm manual astfel site-uri, dar un serviciu ce caută astfel de site-uri şi trimite în mod automat un top lunar la Google pentru analiză … se poate construi. Plus că dacă Google nu face nimic în legătură cu astfel de site-uri, există întotdeauna fenomenul social de arătare cu degetul.

Şi eu mă bag. Din păcate sunt ocupat cu serviciul şi cu un alt proiect personal, iar timpul liber îmi este momentan ocupat. Dar serviciul ar contribui la un index românesc mai curat, şi la o concurenţă mai loială. Dacă aveţi idei, sau vreţi să contribuiţi (ar putea fi un proiect al comunităţii), contactaţi-mă …

<alex la sinapticode.ro>

Posted in projects | 2 Comments »