Cu și despre boschetari

29 November 2008

Ieri am văzut primul boschetar din Richmond. Și m-am bucurat. Aici, homelesness-ul nu este atât de la modă ca în Vancouver. L-am remarcat ușor: barbă, plete, haine murdare și rupte… Tot ce trebuie. Sare în ochi. În Vancouver, unde sunt mult mai mulți, nici nu poți să-i recunoști pe toți. Unii, cred eu, sunt începători. Pentru că, se pare, este foare trendy să fii boschetar în downtown – everybody’s doing it! Așa că, începători fiind, fie nu au plete și barbă încă, fie au haine relativ bune pe ei. Fakeri! Unde mai pui că blugi rupți în genunchi poartă și toți clubberii. Așa că se mai întâmplă să nu observi câte unul.

De ce e important să-i recunoști? Vă spun. Nu pentru că sunt agresivi sau gălăgioși sau te miri ce. Pentru că miros urât. Miros groaznic. Și aici nu-i poți învinui. Sunt convins că igiena corporală nu este prima pe lista lor de priorități. Pe primul loc, cel mai probabil sunt drogurile (sau băutura, după caz) – că altfel nu ar fi boschetari. Pe locul doi, desigur, mâncarea – că altfel ar înceta să mai fie boschetari, murind de inaniție. Și desigur, lista continuă cu țigări, culcuș, cojoc pentru iarnă… Nici nu vreau să mă gândesc ce loc ocupă săpunul pe listă. Și nici statul sau alte organizații nu cred că ajută. Am auzit de cantina săracilor dar de dușul săracilor nu.

Așa că miros groaznic. Și am învățat să grăbesc pasul și să-mi țin respirația când trec pe lângă ei. Și aici apare problema: dacă e unul mai bine îmbrăcat și nu se trădează prin indicii vizuale, ajung să-mi dau seama că e boschetar după indicii olfactive. Ceea ce este foarte rău, pentru că verde nu este culoarea naturală a tenului meu și conținutul stomacului prefer să mi-l știu coborând nu urcând.

Acum cred că înțelegeți de ce m-am bucurat când l-am văzut pe boschetarul din Richmond.

PS - Tot respectul celor care împing un cărucior de cumpărături plin cu gunoaie. Pe ăștia n-am cum să-i ratez.


Royal Canadian Kilted Yaksmen

29 November 2008

Nu știu câte lume mai ține minte serialul de desene animate Ren&Stimpy. Dar decând locuiesc în Canada, mă tot gândesc la episodul ăla în care cei doi erau mândri Royal Canadian Kilted Yaksmen :)

Din păcate nu am găsit tot episodul, doar imnul.

Our country reeks of tress…


Conjecturi

28 November 2008

Am mai avut până acum vreo două posturi despre matematică și voi mai scrie despre asta pentru că mă pasionează subiectul. Dar recunosc că nu știu mare lucru și nici nu am timpul sau ambiția să aprofundez. În schimb îmi place să citesc despre paradoxuri, conjecturi, formule și demonstrații elegante și ingenioase și istoriile și legendele din spatele lor. Aș putea spune că mă interesează partea estetică a matematicii.

În matematică, o conjectură este o propoziție care pare adevărată dar care nu a fost demonstrată încă. Cele mai frumoase conjecturi sunt cele din teoria numerelor. Asta pentru că au enunțuri extrem de simple și ușor de înțeles dar nu este indicat să încerci să le demonstrezi pentru că, așa cum ești prevenit peste tot, mulți încearcă să le atace cu cunoștiințe matematice la nivel de liceu și pot pierde oricâtă vreme au la dispoziție fără a avea rezultate. O astfel de conjectură faimoasă este Conjectura Goldbach:

Orice număr întreg par mai mare ca 2 poate fi exprimat ca suma a două numere prime.

Nu sună complicat nu? Până acum nici nu s-a găsit un contraexemplu. Doar că, atât timp cât nu există o demonstrație riguroasă, rămâne Conjectura lui Goldbach și nu Teorema lui Goldbach. Dar cea mai interesantă poveste este cea despre Ultima Teoremă a lui Fermat. Enunțul este următorul:

Pentru n mai mare ca 2, ecuația xn + yn = zn nu are soluții întregi diferite de zero.

Fermat a enunțat teorema în jurul anului 1630. De fapt, după moartea sa, a fost găsită ca o notiță pe marginea exemplarului din Arithmetica de Diophantus (carte scrisă prin anii 200-300). În carte, Diophantus arată cum un pătrat se poate scrie ca sumă de două alte patrate (ecuația pentru n=2) și întreabă cum se poate face asta pentru n=4. Fermat scrie pe marginea cărții că acest lucru este imposibil pentru n=4, mai mult, pentru orice n > 2 și că a găsit o soluție remarcabilă pentru a demonstra asta. După moartea sa, afirmația a ieșit la lumină și o mulțime de matematicieni au încercat să redescopere acea demonstrație remarcabilă. Faptul că enunțul a apărut post mortem, a făcut ca titlul său să devină Ultima Teoremă a lui Fermat în loc de Conjectura lui Fermat. Demonstrația lui Fermat nu a fost găsită decât pentru cazul particular n=4.

După aproximativ 100 de ani, Euler vine cu o demonstrație pentru cazul n = 3, demonstrație care, de fapt, conținea o greșală, reparată ulterior de alți matematicieni. După încă aproximativ 100 de ani, Dirichlet și Lagrange demonstrează cazul n=5. În secolul 19, Academia Franceză de Științe oferă un premiu în bani pentru demonstrație. Ulterior, alte instituții oferă diferite sume de bani primei persoane care construiește o demonstrație. Rezultatul este apariția a mii și mii de demonstrații greșite. Unele cu greșeli evidente, altele cu greșeli subtile, care necesită mult timp pentru a fi infirmate.

Sir Andrew Wiles află enunțul teoremei la vârsta de 10 ani. Încearcă să o demonstreze începând de atunci. După mulți ani, descoperă că pe baza altei conjecturi, Conjectura Taniyama-Shimura (privind curbe eliptice, deci aparent departe de teoria numerelor), se poate construi o demonstrație a Ultimei Teoreme. Rămâne astfel să demonstreze o parte relevantă a conjecturii Taniyama-Shimura, demonstrație la care lucrează ani întregi în secret. Teorema este în sfârșit demonstrată de Wiles în 1993, după mai mult de 300 de ani de la enunțarea ei. Sir Andrew Wiles și-a dedicat mare parte a vieții acestei demonstrații dar efortul i-a fost răsplătit, asigurându-i un loc în istorie.

Cam asta este povestea, pe scurt, a celei mai controversate conjecturi-devenită-teoremă din istoria matematicii.


La muncă!

28 November 2008

Astăzi am avut o zi lejeră la lucru, pentru că e Thanksgiving în State. N-am primit niciun mail. Nu a avut loc nicio ședință. Mi-am gătat treaba și cum nu era nimeni on-line să îmi traseze alte sarcini, am decis să pornesc mai repede spre casă (dar asta rămâne între noi, da?). Cum microbuzul nu circulă decât dimineața și seara, a trebuit să iau un autobuz care m-a lăsat lângă mall. Ca să ajung acasă, cel mai scurt drum este prin mall, așa că am mers pe acolo.

În mall era plin plin de lume. Mai ceva ca în weekend. Nu mi-a venit să cred. M-am uitat atent și nu erau mulți pensionari. Cel puțin nu mai mulți ca de obicei. Nici tinerii nu aveau fețe de scriitori sau muzicieni să zici că își căutau inspirația pe la food court. Deci o masă mare de oameni lălăind prin mall când alții se spetesc la servici. Mi-a venit să strig la ei ”La muncă cu voi, nu la mall!”. Pe urmă mi-am dat seama că normal nici eu nu prea aveam ce căuta acolo la ora aia așa că mi-am continuat retragerea strategică spre casă în liniște…


Cursors and Dynamic SQL

28 November 2008

Although what I’ll talk about next isn’t rocket science and most people with some database development experience already know this, I hope there will still be some who will find it useful.

I am currently working on a SQL Server 2005 application. Whenever I had to develop a solution involving databases until now, I developed all the application logic in C# and used SQL Server only for storing data. Maybe I created a small stored procedure or view, but never got to actually implementing anything serious using only SQL. Up until now.

Suppose you have multiple data sources, each uploading data into a table and data sources can be added/removed from the solution after it is deployed. You need to copy all data from all sources into a single table (all tables have the same structure). Now this being a SQL Server application, it comes naturally that the best place to store the list of data sources is a table. Unfortunately, copying data from all tables cannot be done in a single statement. First, you need the SQL equivalent of stepping through each row. This is done using a cursor, as follows:

DECLARE Source CURSOR FOR SELECT SourceName FROM TableListingSources
DECLARE @SourceName VARCHAR(100)
OPEN Source
FETCH NEXT FROM Source INTO @SourceName

WHILE @@FETCH_STATUS = 0
BEGIN
    /* Copying things will come here */
    FETCH NEXT FROM Source INTO @SourceName
END

CLOSE Source
DEALLOCATE Source

First statement declares a cursor, assigning it a query. Second statement declares a variable which will be used to store the data retrieved by the cursor. The the source is opened. FETCH NEXT grabs the following row of the query result and stores it in the given variables. Multiple fields can be retrieved and stored by separating them with commas. @@FETCH_STATUS is 0 as long as the cursor is able to retrieve a row – in other words, as long as the end of the table isn’t reached. Cleanup at the end – the cursor must be closed and deallocated.

So executing the above, the variable @SourceName will take the value of each table name stored in the TableListingSources table. Second problem is copying data from each table, given its name. Although looking very elegant, the following statement won’t work:

INSERT INTO Destination SELECT * FROM @SourceName

There are places in a SQL statement where variables cannot be specified. And this is where Dynamic
SQL comes into play. Instead of the above statement, you can write:

EXEC (‘INSERT INTO Destination SELECT * FROM ‘ + @SourceName)

EXEC, or EXECUTE, can send to SQL Server any string and SQL Server will try to interpret it as a statement. So whenever you need to generate statements on the fly, depending on some variables that can’t be directly placed into statements, you can use EXEC and build a string instead.

More information on cusors and dynamic SQL can be found on MSDN.


La Grecu’ Nebun

27 November 2008

Este un restaurant grecesc chiar peste drum de noi. Îi zice Mad Greek. Normal că tot personalul e format din chinezi. Din ce ziceam că sunt mulți unde locuiam în Vancouver, că eram la două străzi de Chinatown, vreau să spun că în centrul în Richmond sunt numai chinezi. Serios. Cred că eu și soția suntem singurii caucasians din bloc, dacă nu din cartier.

După cum ziceam, personalul restaurantului format doar din chinezi. Meniul format doar din preparate grecești. Am cerut și eu o musaca. Mie îmi place foarte mult musacaua pentru că făcea bunica o musaca de vinete de nota 10. Ba îmi place atât de mult că am insistat să ia și soția rețeta, așa că acum și ea face o musaca de nota 10. Ei bine la Grecu’ Nebun vine o chestie. Destul de departe de musaca, dar să zicem. Măcar avea și carne și vinete și mai știu eu ce trebuia acolo. Ce m-a dat gata a fost că a venit cu o garnitură copioasă de orez.

Sunt convins că bucătarul, chinez, desigur, când a luat cartea de bucate și a văzut ce și cum, a avut sentimentul ciudat că ceva lipsește. Că a uitat ceva. Până a avut o revelație: Orez! Cum ar putea exista un fel de mâncare fără orez? Eh, au uitat ăștia să-l treacă în cartea de bucate, noroc cu spiritul lui de observație. Dar serios acum, musaca cu garnitură de orez? Și nu e prima dată când pățesc asta. Mi-am luat mai demult un wrap. Cică piept de pui împachetat în salată verde. Așa scria. 90% din umplutură era orez :|

Evident că nu mai mergem niciodată la Mad Greek. Dar măcar am înțeles de unde vine numele: trebuie să fii nebun să dai un restaurant cu specific național pe mâna unor bucătari chinezi.


Gata

27 November 2008

Gata, ne-am mutat. De tot. Astăzi a venit nenea de la Telus și ne-a dat internet și cablu TV, deci este primul post scris din noua locuință. Tot astăzi am cărat și ultima geantă de 40 de kile din Vancouver în Richmond. Atât de mult a trebuit să car în ultima vreme cu mutatul ăsta dintr-o parte în alta (Timișoara – Hunedoara – Vancouver – Richmond) că acum știu ce voi face dacă falimentează Microsoft: mă fac hamal! Experiență am. Porturi sunt și în Vancouver și în Seattle… Dar momentan am terminat cu căratul!


Time for popcorn&Coke

25 November 2008

Am mai văzut câteva filme. O parte înainte de teribilul weekend, o parte după. Așa că a venit momentul să mă plâng din nou de cât de proaste sunt filmele și chestii… Glumesc. De data asta chiar am avut noroc de filme bune.

Kiss the Girls l-am mai văzut, m-am înșelat când am spus că este un clasic pe care l-am scăpat – m-am înșelat la partea cu scăpatul, nu la partea cu clasic. Dar nu regret că m-am mai uitat odată la el. Un film foarte bun. Din păcate am impresia că încep să mă senilizez. Abia la sfârșit am realizat că îl mai văzusem. Până atunci l-am urmărit cu ”sufletul la gură”, abia la ultima secvență mi s-a aprins beculețul. A fost aiurea. Parcă mi-am povestit singur sfârșitul.

Am văzut Wind Chill, un horror surprinzător de decent. Nu pot spune că a fost grozav, dar a fost mult mai bun decât mă așteptam. Peste medie adică. Dacă dați de el, merită văzut. E spooky. Cu fantome. Noaptea.

A apărut pe DVD și am închiriat și faimosul WALL-E. Foarte drăguț. Și acesta merită văzut. Mi-a explicat soția cum că multe filme sunt turnate în Vancouver (alias North Hollywoord) din diferite motive (e mai ieftin). Am început să recuonaștem filmele făcute aici pentru că acum cunoaștem cityscape-ul și observăm pe fundal clădirile înalte de aici din downtown. Ce mi s-a părut ciudat este că am avut impresia că observ o astfel de clădire în WALL-E. Bine bine, e mai ieftin să filmezi aici, dar e mai ieftin și să animezi?!

Un alt film pe care l-am revăzut a fost Assault on Precint 13. Nici ăsta nu a fost slab, chiar dacă puțin cam tras de păr. Dar aveam chef de un film ”cu împușcături”, așa că a picat bine.

Am mai văzut și Blood Diamond, care are nota 8 pe imdb. A fost drăguț și ăsta, minus două chestii: Unu – am înțeles, în Sierra Leone e sărăcie, mizerie, violență, sunt rebeli, dar parcă prea mult s-a insistat pe chestia asta. Jumătate din film au fost doar africani zbierând și împușcând alți africani. Doi – Leonardo DiCaprio a murit atâââât de încet în filmul ăsta. Groaznic. Mai încet decât în Titanic. Mi-a plăcut mult mai mult de el în The Departed, când a murit brusc și în liniște.

Astăzi am închiriat The Score, pe care urmează să-l văd imediat (Robert De Niro și Edward Norton pe copertă suna bine) și The Italian Job care – surpriză, surpriză – l-am mai văzut. De data asta mi-am dat seama de la început. Fain, dar când e vorba de filme cu jafuri imposibile, preferatul meu rămâne Ocean’s Eleven. Eleven! Nu 12, 13 sau mai știu eu ce continuări.

Următoarele filme pe care le voi închiria, le voi vedea pe noul meu Samsung LCD HDTV de 40 de inci :D Abia aștept!


Trojan

25 November 2008

Cyanide and Happiness, a daily webcomic
Cyanide & Happiness @ Explosm.net

Știu, știu, am mai postat comics de la Explosm.net. Dar unele sunt atât de reușite…


Lazy 2.0

24 November 2008

Dacă tot am primit laptopul de servici și dacă tot am muncit ca un vierme tot weekendul, m-am decis să lucrez de acasă astăzi. Astfel că, în loc să mă trezesc la 7, să alerg până la microbuz și să pierd două ore făcând naveta, m-am trezit pe la 8:30, mi-am luat laptopul în brațe și nici nu m-am ridicat din pat. Da. Mileniul trei. Conectivitate. Internet. Colaborare la distanță. Și cu toate că sunt obișnuit cu toate astea, totuși mi s-a părut puțin ciudat să stau în chiloți în pat și să discut cu șeful meu prin intermediul lui Office Communicator…