3 luni si masina de spalat [ro]

January 27th, 2010

Petru a implinit azi 3 luni de viata. Nu-mi vine sa cred ce repede trece timpul!

Astazi am fost la control la Neonatologie si la Neurologie. Totul ok! Cea mai mare bucurie a noastra e sa-l vedem sanatos, cum creste si cum incepe sa faca giumbuslucuri.

Legat de masina de spalat, avem doua vesti. Una buna, una mai putin buna. Cea buna e ca (am aflat azi) Sectia de Neonatologie intra in renovare. Asta e foarte bine pentru conditiile viitoare. Partea mai putin buna e ca pentru a monta masina de spalat e nevoie de circuit electric dedicat (care sa reziste la 4.5kW… oops) si nu prea are sens sa se mai faca asta in actualul spatiu. In noul spatiu (temporar), va fi montata si folosita (cit de curind).

Multumim inca o data donatorilor!

PS Era sa uit! Petru da primele semne ca o sa-i placa rock-ul!

PPS Intreg setul de poz(n)e “aniversare” e aici. Dezavantajele aparaturii digitale sunt evidente. Nu mai stiu cind sa ma opresc din apasat butonul…

Running Database Engine Tuning Advisor 2008 on a SQL Server 2008 upgraded from 2005

January 5th, 2010

Problem

I run into an issue today. When trying to run Database Engine Tuning Advisor (part of SQL Server Management Studio 2008) on a SQL Server 2008 instance that was upgraded form a SQL Server 2005 instance, I got the error below:

Cannot initialize tuning. (.Net SqlClient Data Provider)

===================================

User does not have enough permissions to tune one or more of the databases specified. (.Net SqlClient Data Provider)

------------------------------
For help, click: here

------------------------------
Server Name: {removed}
Error Number: 31003
Severity: 16
State: 1
Procedure: sp_DTA_add_session
Line Number: 88

Of course, the error message is quite obscure, misleading you towards believing that it’s a permissions issue. However, documentation clearly states that a db_owner can run the tool. Investigating the issue I found out that some DTA-related tables and stored procedures from the MSDB database differ between 2005 and 2008 and they were not upgraded during the migration to 2008.

Solution

So, it’s pretty clear what the solution is:

Option A. Delete all DTA-related objects from the MSDB database and run the Database Engine Tuning Advisor using a sysadmin user so that it re-creates the structures.

Option B. Compare the schemas and create and run an update script yourself. Keeping your DTA history requires some tweaking.

I opted for option A as I found it less of a hack than option B.

Exercițiu social [ro]

December 19th, 2009

[Actualizare în 30 decembrie 2009]
Ieri ar fi trebuit să se nască Petru. Acum are aproape 3700g și de fapt a împlinit 2 luni. :)
Tot ieri am cumpărat mașina de spălat. Am rămas pe modelul BOSCH de 2599RON de la Media Galaxy.
Mașina va fi livrată astăzi și sper că în curând să fie pusă în funcțiune.

Cu banii stăm așa: 27 de donații, în total 2256RON până azi la ora 15:30. Mulțumim tuturor că ați făcut posibil acest exercițiu.

[Actualizare în 24 decembrie 2009]
Astăzi de dimineață am atins și chiar depășit suma propusă inițial, adică am strâns 2065RON. Mulțumim din suflet tuturor donatorilor.

Fiindcă acum suntem siguri ca propunerea noastră de mai jos va deveni realitate, vrem să facem câteva precizări.

Am pornit pe acest drum acu câteva zile sperând ca vom avea zeci, poate chiar către o sută de donatori care vor dona sume mici (10-20RON). Surpriza noastră a fost să avem donatori cu sume mari, astfel că suma a fost atinsă și depășită din 24 de donații. Mulțumim tuturor.

Am avut mai multe remarci legate de calitatea mașinii de spălat Indesit sau Ariston aleasă de noi inițial. Ținând cont de aceste păreri, am căutat alternative. Puteam alege între a cumpăra o mașină făra uscator, însă de calitate, din gama medie sau una cu uscător. Ne-am sfătuit cu doamna asistentă șefă de la Neonatologie și ne-am dat seama că mașina trebuie sa aibă următoarele caracteristici:
- să aibă uscător, pentru ca pe secție nu se pot usca rufele decât pe calorifere (cum zicea Oana)
- nu conteaza capacitatea de spălare, pentru ca acolo nu se poate aștepta să se adune rufe ci ele trebuiesc spălate cât mai repede. Așadar, mașina trebuie sa reziste la spălări dese cu cantități mici.
- și, normal, să fie de calitate, pentru că nu vrem să umblăm cu ea prin service…

Am hotarât împreună cu Oana să facem un pas mai departe. Luând in considerare cerințele concrete de pe secție (noi am dorit sa facem un cadou/donație cât mai folositor, care să rezolve o problemă concretă și să facă o diferență semnificativă) și faptul că deja ne-am atins ținta inițială, împreună cu remarcile și informațiile avute despre calitatea mașinii alese inițial,. ne-am decis să optăm pentru o mașină cu uscător marca BOSCH, care costa 2600RON.

Am găsit-o aici.

Așadar, continuăm să încercăm să atingem ținta de 2600 RON. Mai avem puțin.

Nu în ultimul rând, unii dintre voi v-ați exprimat dorința de a ne asigura că acești bani ajung acolo unde e nevoie de ei și că sunt folosiți conform intenției noastre. Garanția acestui lucru e oferită de noi, personal. Mașina o vom comanda noi la magazin, cu transport direct la Clinică.

Mulțumim încă o dată tuturor celor care ne-au ajutat, fie donând, fie trimițînd mai departe povestea noastră. Iată ca am putut face împreună un gest frumos, un gest care cu siguranță va fi apreciat la Clinică și care, din pacate, e făcut prea rar la noi în țară. Ne-am gândit să publicăm pe site lista donatorilor, însă toți cei pe care i-am întrebat dacă doresc sau sunt de acord cu asta au preferat să nu o facem. Vom duce, însă, la Neonatologie o felicitare frumoasă pe care vom scrie numele mic al celor implicați, pentru că vrem ca cei de acolo să vadă că de Crăciun și oamenii obișnuiți fac minuni.

Vom reveni, desigur, cu finalul poveștii, cât de curând…

—– aici începe articolul original —-

Astăzi e a 53-a zi de viață a lui Petru, copilașul nostru.

Între două hrăniri, spălări de hăinuțe, fineturi, prosoape, găsesc puțin timp să ma gândesc la noi, la mine și la ce simt. Povesteam cu Oana zilele trecute, lucru foarte prețios și drag, despre ultimele săptămâni și despre experiența noastră cu nașterea lui Petru și evoluția lui de până acum. Petru s-a născut la 31 de săptămani, fix. Se întâmplă adesea, însă când mi se întâmplă chiar mie, puține cuvinte ajung la mine cum ajung cuvintele medicilor și ale asistentelor care se ocupă zi și noapte de Petru. Din prima zi, pe 27 octombrie, mi-am dat seama că cezariana a fost partea simplă, că de abia atunci începea greul și că viața lui Petru depinde de Dumnezeu și de Oamenii de la secția de neonatologie. Am scris intenționat cu O mare. Pentru că din prima zi, stând acolo pe hol ore în șir ca să aflu ceva, să mă asigur cumva că Petru e bine, am observat cum se lucrează, ce responsabilități există și cum toate astea se întâmplă într-un spațiu care, zice mama, arată exact ca atunci când m-am născut eu, în același loc, acu 31 de ani. Pentru ca am trăit împreună cu Oana 5 săptămâni în spital, la Gine 1, Oana într-un maraton al asigurării lăpticului pentru Petru iar eu, ca o furnicuță care ducea zilnic cele necesare și care lipsesc din spital, în aceste 5 săptămâni am cunoscut Oamenii de acolo, am văzut cum se lucrează și am înțeles că și eu pot să ajut cu ceva. Am înțeles că pot să transform bucuria enormă pe care o simt pentru că Petru a evoluat foarte bine și să o transform într-un demers ce se întoarce să-i ajute pe cei ce l-au hrănit, spălat și îngrijit pe Petru și pe ceilalți bebeluși (prematuri sau nu) de acolo.

Concret, am observat nevoia unei mașini de spălat. Oana spune mai multe despre asta pe blog-ul ei și cred ca nu e necesar să explic că exact ce facem noi acum pentru Petru acasă (spălăm diverse…) se face acolo pe secție pentru zeci de copii zilnic, 24 din 24, 7 din 7, 365 din 365, an de an… Cred că pentru o asistentă care lucrează acolo de peste 30 de ani, care nici nu pot să-mi închipui câți copii a îngrijit (poate chiar si pe mine, sau pe tine, sau copiii tăi născuți la Gine 1), a înceta să spele cu mâna, la chiuvetă și să usuce pe calorifer, e o schimbare mare. Așadar, ne-am propus să strângem 2000 RON ca să cumpărăm o mașină de spălat cu uscător pe care să o donăm secției Neonatologie, a Clinicii Ginecologie I, a Spitalului Clinic Județean de Urgență Cluj. Orice sumă, cât de mică, e binevenită. Cred că voi, cei care ne cunoașteți personal, știți că vorbim serios și că vom reuși să strângem banii aceștia. Iar voi, cei care ați ajuns aici la recomandarea prietenilor noștri comuni, a colegilor sau, pur și simplu, din întâmplare, vă mulțumesc că ați citit până aici.

Banii îi strângem in contul: RO19INGB0000999900133556, deschis la ING Bank, pe numele Oana Damian.
Pentru donații în numerar, ne vom întâlni cumva… Puteți pune un comentariu sau să ne trimiteți un e-mail.

Orice sumă, oricât de mică e importantă!

Sunt convins că vom reuși! Până la urmă, acest exercițiu de voință se rezuma la întrebarea: “Oare în cât timp îi vom strânge?”.

Era să uit… Petru vă mulțumește și el cu un zâmbet:

[Actualizare]
În prima oră de la publicare am strâns deja 150 RON. :)
În a doua oră am ajuns la 350 RON.
Sfârșitul primei zile (o zi de sâmbătă) ne-a adus la un total de 400RON.

A doua zi, duminică, ne-am odihnit cu toții.

A treia zi, luni 21.12.2009, la ora 14:15, avem deja 665 RON strânși. Oare am putea să-i strângem înainte de Craciun?

A început a patra zi, marți 22.12.2009. La ora 10:10 avem deja 865 RON. Mulțumim!

Azi e 24.12. Ajunul Craciunului. Ne-am trezit dimineata (în fine, la prima masă pe lumina a lui Petru, adica pe la 11) și am avut o surpriză minunată. Datorită vouă, donatorilor inimoși, prieteni sau necunoscuți (nouă) am reușit să strângem 2065 RON. Așadar, de Craciun se întâmplă minuni! Am aflat și ca am reușit împreună să strangem acești bani in numai 5 zile! Vă mulțumim din suflet. Crăciun Fericit!

Welcome, Petru!

November 16th, 2009

We (Oana and I) have been very busy lately with a home project which we recently delivered… Our son was born on October 27th, 2009. I’m now a very proud father, besides already being for a long time a proud husband. So, Petru says hello to the world through me! :)

Here’s a photo of him enjoying dinner …

No need to say that this project will need more time and attention in the coming period. See you soon!

România wins 2 Oscars @ Imagine Cup 2009 in Egypt

July 9th, 2009

After years of participation, Romania finally marks the first prize in Software Design. It’s a great day for Sytech team from Iasi and for their mentor. Cosmin Ilie won the IT section with the highest score ever.

Congratulations to the team members, their mentors and the Microsoft Romania people who put their hearts and minds into it.

I hope this will be an impulse for others, I hope Sytech and Cosmin will share their winning tips and I want to see many others asking them how they did it. It must be repeatable!

More details on:

Imagine Cup official site
Valy Greavu’s Live Text Transmission :)
Dan Iancu’s blog

Imagine Cup 2009, Egypt – Romania is in the game

July 6th, 2009

A while ago I blogged about the experience of being a member of the jury for the Software Design section of Imagine Cup in Romania. Sytech, the team that represents Romania in the Egypt finals prepared for us a nice present during last weekend. They qualified in the top 6, world wide. That’s the best result all-time for a Romanian team in this (section of the) competition. Congratulations!

Of course, as always, Valy Greavu has deep coverage, so follow his blog for details: http://itboard.ro/blogs/valys_blog/archive/2009/07/04/finala-imagine-cup-2009-it-challenge-live-text.aspx (Valy, thank you for being there and sharing)

Also, vote for the Romanian team here: http://peopleschoice.imaginecup.com/default.aspx (ignore the runtime error and come back later if you really want to vote).

CompositeWPF and WinForms : Regions

May 21st, 2009

Florin, one of the colleagues working on the Prism customizations at ISDC has wrote a great description of how we managed to build our own RegionManager for the Win Forms scenario. No need to explain more, just read his article here.

Imagine Cup 2009, Software Design

May 18th, 2009

Another year passed, one more Imagine Cup final. It was the Software Design section. Sytech team, from Iasi, was selected to represent Romania in the world competition finals, in Egypt. As students, the only competition we could attend was ACM. It was more theoretical. Nowadays, I believe students are overwhelmed by the countless possibilities to train, experience, participate in projects, competitions, internships and so on. You would say this is a good thing, that it’s normal. However, from behind the jury desk we see a different side of the story. We see it is still difficult for us to prepare a project that is ready for prime time. Maybe us, as Romanians, are not trained yet well enough in giving birth to great ideas, freeing our mind to think the impossible, but to make it possible. I hope next year I will be amazed. This year, we (the jury members) could only select which team was better than the others, but not which team was the winner. 

Still, I believe that participating makes us better, so I hope all people present, including myself, will learn from the experience and will do better next time.

[Update]

For technical details about the competition, Valy’s blog has a thorough description of the teams, projects and criteria here.

Dan Iancu has put to use his great journalistic experience to pinpoint exactly the illness that we saw. I subscribe to his call to wake up. For a serious reading, go here.

Teamwork and weekend-mania

April 6th, 2009

Today I recovered (better than expected) from an out-of-band-kind-of-weekend. In Romania, spring has clearly shown its face, it’s warm and I get the impulse to stay out as much as possible.

This weekend we started to build a fence around our piece of land in Salicea, a village close to Cluj. We planted some trees a few weeks ago, but since our land seems to be on the main route of the sheep herds of the area, they started eating our trees, so we decided it was about time to clearly mark our property and hope it will keep “invaders” out of it. Although I’m an engineer, my construction knowledge is limited and is more or less based on intuition. So, we planned (my wife and me), we calculated, we argued, we purchased materials and we let people know what we were to do. Help did come our way, in the persons of my sister and two of our best friends. The end result, as you can see, is that we built a fence around roughly 50% of the land, which is a great achievement for beginners like us.

The end result

Well, if you read this so far, you’re either a friend of the “family” or you you’re a friend Developer and are curious what’s the link with software.

I realized it’s all very simple. If it’s not simple, it’s not right, it’s not going to work.

Let me tell you why. First of all, we started with a great design. We planned to make wholes, then put the pylons, then use a hammer to get them to spear their way into the earth until the proper depth… Then, our friend came by and started hammering the pylons directly through the grass… no wholes, no fuss. This was an enlightening moment. I realized over engineering is a kill and we should always try the simplest possible thing before going for more complex tools or technologies. If it’s simple and it does the job, why make your life harder?

The second thing I realized yesterday was that teamwork is the key. I learned to keep my ears & eyes opened all the time and listen to any idea, no matter where or from whom it came from. In software terms, and junior or senior can have great contributions to any software endeavour. Chances are there, you just have to make your voice heard (and have something to say).

Third, but not least, help always comes, because people are essentially good and want to help each other out through their projects. So, if you say you have unmotivated developers in your team, look first at yourself and ask yourself what you could change before putting it on the shoulders of someone else. I often find myself trying to motivate people to outperform themselves, to challenge boundaries, to think and do more than they believe is possible. Yesterday I realized that this is a normal desire of any human being, and if we provide the right space, people start expanding in it.

CompositeWPF and WinForms

March 14th, 2009

We recently started a project for an LOB that acts as a very specific ERP. The requirements were simple, build a system in .NET, that contains all functionality of an old system and make it robust and extensible. Well, looking at the list of roughly 200 use cases we needed to cover, and taking into account it needed to be a WinForms application, I immediately started to be afraid of building a monolithic, Visual Studio Designer generated app.

I wanted to use concepts like modularization, avoiding coupling as much as possible, making clear dependencies and also teaching new and better development practices. I wanted to use some kind of composition framework.

The old Composite Application Block  seemed a bit rusty, the concepts a bit tricky to understand, and even harder to explain to a team of developers. So, I started looking into fresher libraries, with better conceptualization. I found and finally decided to use the newer Composite Application Guidance for WPF and Silverlight.

But hey, how can you use this with WinForms?

Well, it’s possible. Composite WPF library is extensible and even though it gives an implementation, nobody stops you in replacing components with your own or using only parts of it. Thanks to Brian Noyes and his nice post on Composite Extensions for Windows Forms the starting point was clear and made things seem possible.

Helped by a few enthusiats at work, we rolled out our sleves and put down a set of classes that implement the concepts of CompositeWpf, but this time using the Windows Forms “windows”.

We had to implement from scratch or adapt concepts like ClickCommandBehavior, Region, RegionManager.

Still, the toughest process was to support the Model-View-Presenter pattern. So, we decided that all our Views will implement an IView interface, that any IView can be hosted in a Region. But hey, how do you activate a View (which in our case are User Controls) in a Region? Well, our solution was to build a set of Host controls. For example, activating a View in a Dialog Region (Modal), is as easy as creating a Form and adding the View inside it. Of course, plumbing and hooking some events is needed, but for the developer, the feeling is the same as for the Composite WPF code, you just Activate a View in a Region.

Another tough part was to support UI Composition in Windows Forms. Imagine you have a Person, a Company and they each have an Address. Now, you want to include the Address View (edit or read only mode) in both screens for editing a Person and a Company. Well, this seems good practice: we promote re-usability, we have less code to hunt for bugs, we get consistency and so on. But how to do it in WinForms? Well, since our Views are User Controls, we can nest them, but how? Well, it was fairly straight forward. We built yet another user control that acts as a Host for any IView. Plumbing some events, exposing some interfaces and we were done.

Oh, I almost forgot… a good introduction to Composite WPF technical concepts is available on the dedicated MSDN page.

The result, so far, is that we are able to develop fast, with clean code, employing good concepts and laying the ground for better testing of our software deliverables.