Månadsarkiv: maj 2015

I nuet

Det hade varit en riktigt bra förmiddag en riktig skitnatt till trots. Vädret hade visat sig från sin bästa sida och i stort sett hela förmiddagen hade spenderats i trädgården. Vi hade fått en hel del gjort, H och jag, utan att för den delen stressa eller behöva säga nej till barnen när de pockade på uppmärksamhet. Inte för att det behövdes heller – pojkarna var lite småsnuviga och trivdes bra med lugna lekar och storasyster har sällan bekymmer att sysselsätta sig. Vi gick där och påtade, trimmade och fixade på ett nästan lite idylliskt manér.

Jag stod i köket och plockade in den sista disken i diskmaskinen efter lunch. Minstingen som var mest medtagen av snuvan hade sovit en kvart. H var ute i trädgården och grejade med en ros som skulle planteras om tillsammans med vår andre son. Jag sneglade mot dottern som efter en hel förmiddag i trädgården satt sig till rätta vid köksbordet med en pärlplatta. Mina små minihögtalare som jag streamar musik på via bluetooth på telefonen puttrade på med mysig jazz. Inte någon genre jag brukar välja men just idag kändes det helt rätt.

Dottern tittade upp från sitt pyssel och bjöd på ett leende. Jag log tillbaka och började torka av diskbänken. En tanke letade sig in i mitt huvud om att det är så här det alltid borde vara. Jag tittade ut mot trädäcket på baksidan och funderade över om det skulle finnas utrymme att köra ett litet pass yoga idag – jag brukar köra åtminstone tio minuter varje dag – och slogs i samma stund av att jag på sätt och vis redan hade ägnat mig åt yoga. Nu undrar ni säkert hur det ser ut när jag plockar in disk, men jag talar här inte om något motoriskt utan om något mentalt. Jag hade plockat undan i stort sett hela lunchen utan att fylla huvudet med en massa saker. Jag hade varit i nuet.

Känslan i kroppen var lite lik den som jag emellanåt kan frammana när jag tränar asanas, när kroppen har fullt upp och hjärnan har fullt fokus på andningen. Det är liksom en fridfull känsla där man bara är. Där och då tror jag att jag förstod klyschan att ”yoga är en livsstil” – eller i vilket fall har jag fått kläm på vad uttrycket betyder för mig. Att ha yoga som livsstil handlar om att hitta vägar till att vara i nuet. Om det sker under yogapasset, med näsan i trädgårdslandet eller i ett bus med barnen spelar ingen roll så länge som man emellanåt hittar dit. Att påta i trädgårdslandet kanske inte kan ses som yoga, men på sätt och vis kan man i stunden ändå uppnå samma syfte.

Jag tror inte att det är på grund av att jag yogat en tid som jag kände den där känslan idag – jag hade nog varit i nuet ändå – men jag tror att jag har yoga att tacka för att jag har lärt mig att känna igen känslan av att vara i nuet och att kunna reflektera över den efteråt. Och jag tänker att det först är när man är medveten om något som man kan arbeta med och utveckla det.

En önskning till PHP-tomten

Som ni kanske redan har läst här på min fina blogg har jag dykt ner lite i PHP under föräldraledigheten. Säga vad man vill om PHP men med Laravel kan man ha riktigt kul och få en vettig projektstruktur på köpet. Två flugor i en smäll så att säga. Nåväl, nu efter ett par månaders hackande tänkte jag ta tillfället i akt att ändå gnälla lite eftersom det är det vi människor är bäst på. 😉

Det finns mycket som man skulle kunna gnälla över när ämnet är PHP, särskilt ur mitt perspektiv som (främst) Javaprogrammerare. Men alla språk har sina begränsningar, sin historia och sin ryggsäck, och om verktyget – det vill säga språket – inte passar ändamålet är det väl bättre att byta verktyg än att sura ihop? Med det sagt finns det ändå en stor grej som jag saknar vad det gäller objektorienteringen i PHP, och det är det här med package-private visibility. Ni vet, den där varianten där man i Java utelämnar visibility i till exempel en metoddeklaration. I Java innebär det att metoden endast kan anropas från klasser i samma paket. Det kan låta som lite ”jaha” men det är faktiskt någonting väldigt användbart när man modellerar. Genom att använda denna visibility på ett förnuftigt sätt kan klasser inom ett och samma paket samarbeta utan att man behöver exponera sånt som bara är relevant inom paketet ut mot resten av systemet. Ett paket kan då designas att endast ha ett fåtal metoder som går att anropa utifrån. Det gör att vi kraftigt kan begränsa interaktionspunkterna med koden i paketet vilket i sin tur ger oss bättre förutsättningar att ha en förvaltningsbar kodbas.

Ett enkelt exempel på när avsaknaden av package-private visibility ställer till modelleringsbekymmer är när man vill bygga sig en Factory som skapar objekt av Foo, vi kallar den för FooFactory. Eftersom vi vill att FooFactory alltid ska sköta konstruktionen av objekt av typen Foo kan vi då i Java sätta package-private visibility på konstruktorn i Foo. Eftersom vi har package-private visibility på konstruktorn har vi effektivt sett till att det inte går att skapa upp instanser av Foo från någon annanstans än inom dess paket. Vi kan sedan välja att publicera en metod ut publikt mot resten av systemet i FooFactory som konstruerar objekt av typen Foo efter konstens alla regler.

I PHP är det en annan historia. Eftersom det inte finns någon package-private visibility får vi snällt låta konstruktorn vara publik. Visst kan vi skapa upp en Factory – exempel på det finns här – men då får vi helt enkelt gilla läget och låta konstruktorn i Foo vara publik. Vi har då alltså exponerat två sätt att skapa upp instanser av Foo – dels genom Foos konstruktor och via FooFactory – men vi vill bara att den senare av dem ska användas. Hur ska man kunna försäkra sig om det? Tja, jag antar att man får ha disciplin och berätta för nytillkomna programmerare att de ska hålla sig borta från Foos konstruktor. Men modelleringsmässigt känns det riktigt trist. Om man nu har bemödat sig med att lägga till stöd för namespaces i PHP kunde de väl ändå peta in package-private visibility också.

Sådär, då var dagens I-landsproblem avhandlat. Tack för mig. 🙂