Grădina Botanică

31 March 2009

GradinaBotanica

Duminică am vizitat grădina botanică. Plănuisem să mergem la acvariu, dar duminică a fost Cherry Tree Blossom Festival – ceva festival japonez. Adevărul e că nu am stat să asistăm la spectacol ci am preferat să ne plimbăm prin grădină. Nu am găsit nici urmă de cireș înflorit, dar a fost frumos oricum. Am văzut în sfârșit ghiocei anul ăsta. Am traversat un labirint făcut din verdeață, cum văzusem numai în filme până acum.

Labirint

Super. De acum am stabilit să profităm de Vancouver cât timp locuim în Canada așa că în fiecare weekend cu vreme bună vom merge să vizităm ceva atracție. Și o să-mi cumpăr un tricou cu Eu ♥ Vancouver. Neapărat.


Buddhist Colony

30 March 2009

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


Hello Kitty, Forest Gump și idioți compleți

28 March 2009

Hello Kitty

Azi dimineață mi-am luat inima în dinți și, în sfârșit, am tăiat bradul. Cu fierăstrăul de la Ikea (a trebuit să mergem până la capătul orașului la Ikea ca să găsim un fierăstrău). L-am tăiat bucăți și l-am pus în plasele de la Ikea (plasele de la Ikea sunt mari). Și, normal, m-am tăiat cu fierăstrăul. Am știut eu ce am știut când m-am făcut programator – nu am vocație pentru chestii din astea. Când a trebuit să bat cuie, mi-am dat cu ciocanul peste degete. Acum, când a trebuit să tai cu fierăstrăul, m-am tăiat pe mână.

Cu ocazia asta am aflat că nu avem dezinfectant în casă. Nici spirt nici betadină nici nimic. Noroc cu soția, care a venit cu o idee grozavă – mi-am dezinfectat rana cu un strop de whiskey. M-am simțit ca în vestul sălbatic. Pe urmă mi-am pus un leucoplast. Noroc cu soția, care a insistat să luăm leucoplast cu Hello Kitty. Și acum am pe mână un leucoplast mare și roz de pe care se uită la mine trei Hello Kitty.

Forest Gump

Dupămasă am fost să-mi cumpăr bicicletă. Tot am plănuit eu asta de mult. Și acum, când a început să fie vreme mai bună, o tot țineam în sus și în jos că vreau bicicletă, ca un copil mic. Ei bine astăzi am fost și mi-am luat.

Și venind de acolo, pe bicicletă, desigur, aveam impresia că arăt ca Forest Gump. Mi-a venit să râd de mine tot drumul. Să explic: am întrebat pe nenea de acolo ce te obligă legea aici să ai că să fii în regulă. Și mi-a spus că trebuie cască obligatoriu. Acum mie mi se par ridicole căștile. În primul rând pentru că, dacă dă un tir peste tine, te faci praf cu cască sau fără. În al doilea rând, dacă nu dă un tir peste tine, doar cazi de pe bicicletă, supraviețuiești, cu cască sau fără. În al treilea rând pentru că mie personal mi se par caraghioase. Dar dacă trebuie, trebuie. Mi-am luat cască.

Desigur, m-am dus după bicicletă în blugi. Nici nu am pantaloni de trening, decât unii scurți și era destul de frig afară cât să nu merg în pantaloni scurți. Și eu port pantaloni puțin mai largi, relaxed fit, că așa îmi stă bine. Ca să mă urc pe bicicletă a trebuit să mi-i trag cât de sus se poate.

Și așa pedalam eu spre casă – cu o cască ridicolă pe cap, cu blugii trași până la piept și cu un leucoplast cu Hello Kitty pe mână.

Idioți compleți

După cum ziceam, îmi venea să râd de mine. Dar, din fericire, se poate și mai rău. După ce am dus bicicleta acasă, am fost la mall să mă întâlnesc cu soția, pe care o lăsasem la cumpărături. Ajung mai repede și, ca să pierd vremea, intru într-o librărie. Și acolo văd cât de cretini pot fi oamenii de pe continentul ăsta. Voiam să zic canadienii dar și americanii intră aici, pentru că sigur cartea era tipărită în State. Ce carte? Fiți atenți: The Complete Idiot’s Guide to Amazing Sex.

Ghidul idiotului pentru sex. Acum nu pot spune că am studiat domeniul, dar știu că există cărți care da, te învață ceva. Știu că dacă vrei plăcere amestecată cu cârcei, Kama Sutra te învață contorsionism. Știu că dacă vrei să încerci ceva inedit și incomod sunt cărți care îți dau idei. Dar Complete Idiot’s Guide??? Din titlu îți dai seama că te ia de la zero și te învață doar chestiile de bază.

Și întreb, cât de idiot poți fi să ai nevoie de un manual pentru asta? Că doar nu a apărut de ieri-de azi. Everybody is doing it. Se descurcă orice animal, s-au descurcat toți strămoșii tăi de la Adam și Eva (cum zice manualul creaționist de biologie) sau de la brontozaur la cimpanzeu și pâna la homo sapiens și tu ai nevoie de un manual? Păi dacă ești în situația asta, nu mai bine o lași baltă? Așa, ca să se bucure generațiile viitoare de beneficiile selecției naturale.

Vedeți, se poate și mai rău ca Forest Gump.


Earth Hour Movie

28 March 2009

Cică astăzi a fost Earth Hour. La ora la care toți eco-friendlies stăteau pe întuneric, eu am fost la cinema. Bine, și la cinema era întuneric. Așa că pot zice că am participat pasiv la Earth Hour.

Am văzut The Haunting in Connecticut. Horror, fantome, casă bântuită, tot tacâmul. Mi-a plăcut – parcă te sperii mai bine în sala de cinema decât acasă. Un singur lucru nu am înțeles. Era noapte și toată familia văzuse câte o fantomă. Și s-au adunat toți într-o cameră să doarmă împreună de frică. Păi dacă eu văd o fantomă la mine în casă în două minute am ieșit pe ușă, în cinci minute mă cazez la Marriot, care e la doi pași de unde stau, și dorm speriat acolo. Pe bune că nu înțeleg de ce toți ăștia din filme care ajung în case bântuite stau câte o săptămână acolo chiar dacă văd de la început te-miri-ce. Dar lăsând asta la o parte, filmul a fost destul de OK. Nu cel mai grozav, dar a mers.

Săptămâna trecută am văzut Knowing. Destul de drăguț, doar că, dacă vorbim de filme apocaliptice, nu se compară cu The Day the Earth Stood Still. Totuși, eu zic că merită văzut. Bine realizat și mi-a plăcut în mod deosebit cum au împletit povestea cu elemente religioase.

Și mi-am mai cumpărat niște blue-ray-uri cu filme mai vechi. Mi-am luat Goodfellas, American Gangster și Death Proof a lui Tarantino. Toate de nota 10+. Apropo de Tarantino, abia aștept să apară Inglourious Bastards. Scris, regizat și produs de el. Dar mai am de așteptat până în august.


The Bridge Pattern

27 March 2009

The bridge pattern is a great design pattern and an interesting thing about it is that most of the time the need for it doesn’t exist from the beginning and only appears along with new requirements. The initial design may be very good and not implement it, then other requirements appear and, if the proper refactoring isn’t done, the code can easily become a mess.

For example, working on a compiler, we end up with an Assembly base type which represents any assembly. Let’s also assume it has an abstract Compile() method used to generate code.

Going further, we make a distinction between an application (.exe file) and a library (.dll file) but since they are both assemblies and, of course, both can be compiled, we derive them from the base Assembly type and make sure each one implements its own Compile() operation. Now we have the following structure:

bridge1

As I said, a lot of times the need to implement a bridge pattern arises with new requirements, not being evident from the start. I would say the design is great the way it is. For now. Consider a new requirement of having separate debug and release builds – debug build means embedding some sort of debug information in the compiled assembly, release means optimizing code for best performance.
Having all compilation logic in the Application.Compile and Library.Compile methods and considering there isn’t that much difference between a debug and release build – they do have a lot of common processing, one might be tempted to continue deriving from the already existing classes:

bridge2

Now DebugApplication is a really small class, its Compile method just adds debug information and calls base.Compile(). Same thing with ReleaseApplication – perform some optimization and call base.Compile(). For the same resons, DebugLibrary and ReleaseLibrary are also two really small classes. We end up with four classes but one might consider they are not hard to maintain since they don’t contain a lot of code themselves, they just override one method. Responsibilities are clear and developers are happy.

Until a new variable is required. Let’s say that after some time, the need for a build targeting Mono instead of .NET arises. For simplicity’s sake, let’s assume that only one kind of build is required for Mono assemblies. We would need to create two additional classes MonoApplication and a MonoLibrary. Then the need for a new type of assembly appears. We would need to create 4 additional classes – the base type and the Debug, Release and Mono children. As you can see, things start to grow exponentially.

The solution is to refactor to the bridge pattern as soon as the first new requirement (Debug and Release builds) makes its appearance. Create a new Compiler base type that handles all compiling behavior. Derive DebugCompiler and ReleaseCompiler from it. Have Assembly keep a reference to a Compiler instance and use that in deriving classes to compile the code. Have the Application.Compile() and Library.Compile() delegate to that compiler instance.

bridge32

Let’s say that after some time, the need for a build targeting Mono instead of .NET arises. We would need to create a MonoCompiler class. Then the need for a new assembly appears. We would need to derive a new class from Assembly. That’s it.

Notice that going with a bridge from the start, it would’ve been overdesigning – having the following five classes just for compiling an Application and a Library seems a bit too much:

bridge4

I know the pattern might seem pretty obvious when presented in a simplified example, but a lot of times it’s rather difficult to spot in real-life. The first sign of something going wrong is, as above, when you notice you must create more than one class in the same hierarchy to introduce a single new varying thing.


Erezia

25 March 2009

Ultima dată când înșiram ce am citit și ce am de citit, terminam Horus Rising, primul volum din seria Horus Heresy. Ei bine m-am apucat de următorul volum, False Gods, și nu m-am mai oprit. Am fugit la librăria cartierului și mi-am cumpărat tot ce mai aveau din serie. Am citit Galaxy in Flames și The Flight of the Eisenstein și mai am de citit Fulgrim, Descent of Angels, Legion, Battle for the Abyss și Mechanicum. Și pe urmă aștept, că mai apar… Mă bucur măcar că nu m-am apucat să citesc de când a apărut primul volum pentru că atunci ar fi trebuit să mor de nerăbdare luni la rând până ar fi apărut un volumn nou. Bine, așa voi face și acum, după ce le gat pe astea.

Povestea este foarte captivantă. Calitatea variază, pentru că volumele sunt scrise de autori diferiți. Noroc că nu variază atât de mult. Adică nu este un volum superb și următorul mizerabil. Variază undeva între “super!” și ”meh, am citit și mai bun”. Dar e OK. Și nu mă las până nu le citesc pe toate.

E vorba de împăratul omenirii, care deține puteri fenomenale, unii începând să-l considere un zeu și despre primarchs, “fii” lui, care conduc legiuni de soldați modificați genetic în lupta de a (re)cuceri galaxia. E vorba despre forțele malefice care există în warp, despre Horus, Warmaster, care a rămas să conducă cruciada pentru a cuceri galaxia după ce împăratul a decis să se întoarcă pe Terra și despre planul lui Horus de a-i lua locul pe tron. Îmi place amestecătura de vechi și nou: cruciade, religie, onoare – inginerie genetică, arme futuriste, nave spațiale. Frumos.

Acum nu se mai pune problema de wishlist, până nu termin cu seria. De fapt mai trebuie să-mi iau Descent of Angels, Battle for the Abyss și Mechanicum, care nu erau la librărie.

Stau și mă gândesc câți bani va face Amazon pe spinarea mea. Din România nu comandam pentru că era prea mare bătaia de cap – trebuia să-mi fac card, să aștept cine știe cât după comandă, eventual să mă plimb pe la vămi, cum a pățit un prieten. Am zis că mai bine aștept să ajung aici. Acum s-a schimbat situația – comand lunar. Totuși, parcă mai bine îi dau pe cărți decât să-i lipesc de frunte la maneliști, cum fac unii, nu?


Despre hamburgeri și plăcinte

25 March 2009

De ce are toată lumea impresia că te îngrași dacă mânci de la McDonald’s? Adică da, este nesănătos, cartofii prăjiți sunt din plastic și hamburgerii sunt din vacă hrănită cu steroizi dar totuși, ați văzut ce porții mici au? Minuscule. Păi dacă aș mânca de amiază doar un hamburger de la McDonald’s în fiecare zi, nu că m-aș îngrășa, aș muri de foame. Și cam toate firmele celebre de hamburgeri sunt la fel. Toți au reclame cu niște hamburgeri de un metru lățime și un metru înălțime și când colo… Mai și văd la televizor câte un spot cu un tip care mâncă un hamburger și încearcă să-l țină cu două mâini de parcă nu-l cuprinzi tot cu două degete.

Chiar nu mi-e frică de hamburgeri. Sunt alte chestii mult mai periculoase pe aici. Cinnemon buns. Cheesecake. Donuts. Got milk?


Reclame

25 March 2009

Că tot am scris de vreo două marketing fail. De data asta marketing win. Cică Blackberry takes a shot at Apple:

Și răspunsul:


Atlas De Mitocănie Urbană

24 March 2009

Super tare. Bravo Radio Guerrilla!


Steveston

22 March 2009

Steveston

Astăzi, pentru că în sfârșit am avut vreme mai bună, am fost să vizităm Steveston. Steveston este – sau mai bine zis, era – un sat de pescari la sud de Richmond. Acum a devenit și obiectiv turistic. Plănuiam de mult să facem o excursie până acolo doar că pe ploaie nu ar fi avut niciun farmec.

A fost super. Ne-am plimbat pe docuri, am văzut pescăruși și lebede și am mâncat pește, principala atracție fiind restaurantele de pe malul apei. De la restaurante se poate coborî la docuri, unde pescarii vând pește proaspăt direct din bărci.

Barca

În Steveston este și o vestită brutărie românească, unde l-am cunoscut pe brutarul Nicu și de unde am luat o pâine făcută pe vatră.

Ne-a plăcut foarte mult și sigur vom mai merge. Și din nou rămân uimit cât de frumoasă poate fi zona asta - cum suntem la 30 de minute distanță atât de munte cât și de ocean. Următoarea destinație: acvariul din Vancouver.