Bądź pierwszy, który pozna Windows 8!

31
maj/12
0
WODNUG_LOGO

Tak jak wspominałem podczas ostatnich spotkań WODNUG(Warsaw Official .Net User Group), 2 czerwca odbędzie się Warsaw CodeCamp 2012 poświęcony zagadnieniom związanym z Windows 8.

Udało mi się zaprosić znakomitych prelegentów – Tomasza Kopacza z Microsoftu, a obok niego Maćka Grabka, Marcina Iwanowskiego, Kubę Bińkowskiego i Wojtka Poniatowskiego – wszyscy albo są albo do niedawna byli wyróżnieni tytułem MVP. Będzie to więc niepowtarzalna okazja do spotkania się ze znanymi  specjalistami, zadania im pytań, a komu dopisze szczęście, ten wróci do domu niosąc zestaw Xbox+Kinect, który będzie można wygrać w konkursie :)

Start planujemy na godzinę 11:00, w czasie wydarzenia będzie zapewniony catering, więc nie powinno nam zabraknąć energii na cały dzień pochłaniania wiedzy o kolejnej edycji systemu Windows.

Nie zastanawiajcie się zatem już dłużej i już teraz rejestrujcie się w portalu Codeguru: http://www.codeguru.pl/kalendarium/podglad-wydarzenia/warsaw-codecamp-2012---windows-8-community-launch,6711

Szczegółowe informacje o konferencji (m.in. informacje o prelegentach, tematy wykładów) znajdują się na stronie http://www.warsawcc2012.pl/.



Byłem sędzią na finałach krajowych Imagine Cup 2012

06
maj/12
0
Komisja sędziowska

 

W dniach 11-12 kwietnia 2012 roku odbyły się krajowe finały konkursu Imagine Cup. Kiedyś pisałem już o tym konkursie, zachęcając do wystartowania w nim. W tym roku zostałem zaproszony do Komisji Sędziowskiej.

Kulisów prac samej Komisji zdradzał nie będę, bo nie wypada, ale chętnie napiszę o ogólnych wrażeniach związanych z konkursem. Przed finałami, dostałem do obejrzenia i oceny 10 prac, złożonych z webcastów, opisów oraz zaimplementowanych rozwiązań. Niektóre drużyny załączały kod, inne same binarki wymagane do odpalenia aplikacji. Moi faworyci dostali się do finału, więc wiedziałem już, że poziom będzie wysoki :)
Na kilka dni przed finałami Tadeusz, przewodniczący Komisji, przesłał maila z linkami do wszystkich prezentacji finałowych drużyn, dzięki czemu 11.04 stawiłem się przy Al. Jerozolimskich z podstawową wiedzą na temat projektów. Jednak jak się ku mojemu pozytywnemu zaskoczeniu okazało, filmiki przeważnie stanowiły słabszą część wypracowanych rozwiązań.

Odczucia ogólne

Drużyny mi zaimponowały. Przygotowane stoiska, materiały i prezentacje naprawdę robiły wrażenie. Oczywiście widać czasem było popełnione błędy albo zwyczajny brak funduszy, ale tym bardziej chylę czoła dla zaangażowania i przygotowania materiałów pomimo ograniczonych możliwości. Czasem trudno było uwierzyć, że są to drużyny wyłącznie studenckie, dopiero uczące się technologii, czy też zbierające doświadczenie w promowaniu swoich prac. Generalnie duży plus.

W efektach działań widać poza talentem włożoną masę pracy. Zwracam na to uwagę tym bardziej dlatego, że sam kiedyś z kolegami zgłosiłem się do konkursu. Spotkaliśmy się 3-4 razy(różne obowiązki nie pozwalały na więcej) i myśleliśmy że to wystarczy… Zdecydowanie nie wystarczy. Rozmawiałem z Uczestnikami i Uczestniczką ;) i wiem, jak dużo pracy włożyliście w przygotowanie rozwiązań.

Muszę też zwrócić uwagę na obecność podczas 1 dnia finałów mentora dwóch drużyn z WAT. Z jednej strony pozwolił drużynom zaprezentować swoje rozwiązania, z drugiej strony cały czas czuwał nad ich pracami, podpowiadał i wspierał. Super.

Każda z drużyn miała 2 starcia z drużynami sędziowskimi. Tzn. cała komisja została podzielona na 3 grupy i każda drużyna musiała zaprezentować rozwiązanie przed 2 z 3 grup sędziowskich.

Sztab szybkiego reagowania

Podczas wieczornej kolacji po pierwszym dniu komentowaliśmy w Komisji Sędziowskiej swoje spostrzeżenia. Pojawiło się ogromne zdziwienie, gdy okazało się, że drużyny potrafiły po pierwszej z prezentacji dostrzec swoje błędy i szybciutko je załatać. Albo wręcz zmienić osobę prowadzącą. Takie rzeczy tylko na studiach. Dobrze, że na pytanie “kiedy jesteście w stanie uruchomić produkt?” nie padła odpowiedź “aaa kiedy sesja?” ;)))

Odnośnie finałowej piątki nie mieliśmy 100% zgodności, co tylko pokazuje, że poziom był wyrównany, a o awansie decydowały niuanse. Co wszyscy uczestnicy powinni odczytać jako sygnał pt. “warto działać dalej!”.

Spadochroniarze…

W ramach gali finałowej, swoje 5 minut miało Billennium. Bartek, prezes firmy, wygłosił krótkie przemówienie po czym wręczył ufundowaną przez nas nagrodę – skok ze spadochronem dla wszystkich członków zwycięskiej drużyny :) Z komentarzy jakie usłyszałem wnioskuję, że nagroda się podobała, a wybrany przez nas zespół Bug Busters został bezpardonowo oblany falą zazdrości :)

Trochę znajomych…

Impreza Imagine Cup(zarówno część oficjalna, jak również wieczorna impreza) są okazją do rozmów ze znajomymi. Na pewno nie zdołam wymienić wszystkich, ale na pewno miło było wspólnie podziałać z Tomkiem(na zdjęciu poniżej), Jasiem, Eugeniuszem, Rafim, Kasią, Bartem, czy też Arkiem.

Super było to, że podczas wieczornej imprezy podchodziły do mnie drużyny i pytały o feedback, chciały porozmawiać o swoich błędach i naprawdę chciały się dowiedzieć, w jakim kierunku wg mnie powinni rozwijać swoje rozwiązanie. Nie jestem w stanie dać gwarancji, że mój punkt widzenia zapewni im sukces. Tak samo nie jest powiedziane, że zwycięska drużyna ma największy potencjał biznesowy. Wyniki są wypadkową odczuć Sędziów, ważenia szans na dalszy sukces w finałach światowych, czy chociażby lepszego albo gorszego marketingu.
Cieszę się natomiast, bo po kilku tygodniach wróciła do mnie informacja, że mój feedback był dla Drużyn cenny.

Co dalej?

Przede wszystkim na pewno zachęcam Drużyny do rozwijania swoich pomysłów. Zaimponowało mi, że albo dobrze udawaliście, albo naprawdę wierzycie w swoje rozwiązania. Jak wspominałem w prywatnych rozmowach albo podczas sesji zadawania pytań, czasem brakuje Wam jasnej wizji, ale wszyscy macie jakąś podstawę o którą można się oprzeć.
Moim zdaniem 2 prace potrzebują już tylko dobrego sprzedawcy, bo już dzisiaj są produktem.

Chciałbym jednak na końcu zaapelować o rozsądek i pokorę. Rozmawiałem z Bartkiem Pampuchem, że chyba robimy uczestnikom trochę krzywdę powtarzając, że są elitą, osiągnęli już sukces i właściwie świat leży u ich stóp. To prawda – osiągnęliście sukces i na tle kolegów wykazaliście się olbrzymimi umiejętnościami i zaangażowaniem. Ale to dopiero początek, czasem w prezentacjach można było wyczuć postawę “no to właśnie mistrz wszedł do sali, zadawajcie pytania i uczcie się, póki możecie”. To chyba poszło trochę za daleko, życzę Wam troszkę więcej pokory, szczęścia i co najmniej tyle samo zacięcia do rozwijania Waszych rozwiązań, co do tej pory.

Że macie predyspozycje, to już udowodniliście. Nie zapomnijcie przy tym o zwykłej radości z codziennego działania i dalej rozwijajcie swoje pasję, bo to dopiero początek. Nie zapominajcie o tym :)



Wrażenia ze Szczytu, czyli MVP Summit 2012

02
kwi/12
0
MVP_LOGO

Jako Microsoft MVP zostałem zaproszony do udziału w wydarzeniu MVP Summit 2012, czyli zjeździe wszystkich MVP ze Świata. Jako programowy żółtodziób drżałem z wrażenia na myśl o możliwości uczestnictwa w tej imprezie i tym sposobem 24 lutego o pogańskiej godzinie 5:30 stanąłem na Okęciu. Czy było warto? Zdecydowanie tak, o czym postaram się w tym poście krótko napisać :)

 

Przelot

MVP Summit odbywa się w głównej siedzibie firmy Microsoft, w Redmond. Zgodnie z zasadami, każdy uczestnik Summitu ma opłacony pobyt, jedzenie i transport na miejscu, ale dotrzeć tam trzeba samodzielnie. Więc się zaczęła pierwsza rzeźba, związana z poszukiwaniem samolotu w rozsądnej cenie i najchętniej nie lecącego przez Władywostok. Ostatecznie udało się znaleźć całkiem rozsądne połączenie, z zaledwie 3-godzinną przesiadką we Frankfurcie – inne pasjonujące propozycje potrafiły zawierać np. nocleg na lotnisku w Amsterdamie :)
Jak się okazało jeszcze przed wylotem, tym samym połączeniem na Summit udają się Paula Januszkiewicz z Grzesiem Tworkiem, więc o wspomnianej pogańskiej godzinie kończyliśmy razem pierwszą kawę.

Po dotarciu do Seattle, zostaliśmy przywitani deszczem…

Paula i Grześ wybierali się na północ od Seattle, zahaczając po drodze o Centrum Handlowe i zaprosili mnie do zabrania się. Specjalnie się nie namyślając, zapakowałem się na tylne siedzenie i pojechaliśmy… Kto by pomyślał, że będę miał ponad 70km powrotu, których przejechanie autobusami zajęło mi.. co tam, 3 godzinki! ;) I to też dzięki pomocy Pauli z Grzesiem, bo gdyby mnie zostawili w środku niewiadomoczego, to wracałbym pewnie do dzisiaj… Niesamowite dla mnie jednak jest, jak wszyscy w Stanach są pomocni. Daleki jestem od ogólnej fascynacji tym krajem, ale naprawdę otwartość ludzi i ich serdeczność robi wrażenie.
Tak czy siak, po prawie 40h bez snu(bo w samolocie okoliczne dzieci postanowiły, że one już spać nie chcą i widocznie uznały że ja też nie) dotarłem do hotelu, rzuciłem się na łóżko i zgasłem.

Aha, więcej o zwiedzaniu opowiadał nie będę, jedyne dwie ciekawostki to fakt, że pierwszego dnia złapał mnie grad, żeby za chwilę walić w oczy pięknym słońcem. A prognoza pogody na cały tydzień wyglądała tak… A sprawdzalność mają niestety niezłą.

Summit właściwy – dzień pierwszy

Pierwszym dniem summitu było tzw. MVP2MVP, czyli sesje zorganizowane w hotelu, podczas których inni MVP(i przedstawiciele MS zresztą też) pokazywali rozmaite ciekawostki. Był np. gość, który wraz z zespołem buduje aplikację bazującą na Kinect SDK, sterującą… buildami w TFS :D Uruchomienie builda(po angielsku “build kick off”) wykonuje, jakby wykonywał rzut karny w finale Ligi Mistrzów. Podrzuciłem mu pomysł, który chętnie podchwycił, żeby dodali do aplikacji osiągnięcia, np. Hat-trick.
Inna sesja pokazywała, jak w Microsofcie wyglądają procesy buildów, jak sobie radzą z ich optymalizacją. Ciekawostką jest fakt, że buildy potrafią zajmować 15 do 23 godzin :)
Tego dnia udało mi się też poznać plany jeśli chodzi o rozwój codeplexa, czy też usłyszałem o projekcie http://tfseventworkflows.codeplex.com/, dzięki któremu można budować workflowy, subskrybowane do zdarzeń zachodzących po stronie serwerowej.
Bardzo fajna inicjatywa i z tego, czego się dowiedziałem, uruchomiona w roku 2011 – widać było duży entuzjazm wśród uczestników.

Pierwszego dnia miał też miejsce koktajl organizowany przez Ale, naszego regionalnego opiekuna. Była to okazja do poznania MVP z rozmaitych specjalności – wypiliśmy piwko z kolegami ze Słowacji, Słowenii, Węgier, Czech… Nie chcę też zapeszać, ale dzięki nawiązanemu tam kontaktowi prawdopodobnie w maju odwiedzę Słowenię ;)

Summit właściwy – dzień drugi, trzeci i czwarty

Postanowiłem, że ten post będzie nietechniczny i nie będę opisywał merytoryki, jaka była poruszana podczas spotkań. Postaram się wkrótce nadrobić w osobnych postach, może po raz 123151 ożywię bloga (;

Dzień 2, 3 i 4 Summitu przebiegły pod znakiem sesji prowadzonych przez przedstawicieli Microsoft. Kapitalny był fakt, że przedstawiciele zespołu po prostu spędzali z nami cały dzień, w czasie jednej z przerw siedziałem i rozmawiałem np. z Brianem Harrym, czyli facetem, którego bloga mam w RSS Readerze od kilku lat i za samego bloga darzę go wielkim szacunkiem. Aż tu nagle siadasz z nim “Hi Brian, how are you” i zaczynacie rozmawiać o tym, co właśnie było omawiane w sali, jakbyście się znali od dawna. Generalnie atmosfera współpracy w grupie produktowej ALM pomiędzy przedstawicielami MS, a MVP była(poza kilkoma negatywnymi epizodami) bardzo owocna. Bardzo doceniam też ich otwartość, cierpliwość i chęć słuchania społeczności, której niektórzy przedstawiciele byli naprawdę mega marudni, chyba czasem już dla zasady bycia marudnym i pokazania, że “właściwie nie mam lepszego pomysłu, ale wy jesteście microsoft, to dajcie nam lepsze narzędzia” ;)

Bardzo ważnym aspektem dyskusji było licencjonowanie, a że pokazano nam masę nowości(np. jak się rozłożą funkcje odpowiednich edycji Visual Studio), to przy większości z nich było pytanie, jak to się przełoży na cenę i licencje ;) Byliśmy też jednymi z pierwszych, którzy dowiedzieli się o darmowości Team Explorer Everywhere, a skoro to już oficjalne, to spieszę poinformować wszem i wobec – TEE jest już darmowy(wymagany jest CAL, ale sam produkt jest już free)! Spadła też cena Visual Studio Professional.

Sama platforma ALM niesie masę nowości, postaram się je powolutku omówić w kolejnych postach. W ramach summitu mieliśmy też okazję wydać kilka dolarów w sklepie MS, po cenach “pracowniczych”. Jak już kupiłem ze 3 giery xboxowe, to się dowiedziałem, że prawdopodobnie nie będą śmigać w naszym PALowym formacie(w USA obowiązuje format kodowania NTSC). Więc je musiałem oddać i przywiozłem tylko jakieś drobne upominki dla rodziny :) i btw. chyba mi się xbox obraził, bo po 2 dniach od powrotu zaczął się red ring of death :]

Summit właściwy – dzień czwarty NBA

Czwartego dnia zaplanowałem sobie wyjazd do “pobliskiego” Portland na mecz NBA, lokalni Trailblazers podejmowali Miami Heat… Wypożyczyłem “samochodzik”(chciałem coś w rodzaju Toyoty Corolli, ale ponieważ nie mieli, to dostałem darmowy upgrade do Chevrolete’a Traverse – obok dla porównania stoi Toyota Rav4 :) ).

Oprawa, organizacja meczu to coś niesamowitego. Kibice przeciwnych drużyn siedzą ramię w ramię, wspólnie przeżywają mecz, raz wiwatują jedni, raz drudzy. Normalnie piknik, brak chamstwa, brak agresji. Sam mecz sprawia wrażenie znacznie szybszego, niż gdy się ogląda same skróty albo transmisję. No i miałem okazję zobaczyć takie akcje na żywo:

http://www.nba.com/video/games/blazers/2012/03/01/0021100527_mia_por_recap.nba/

Niezapomniane, polecam. “Pobliskie” Portland znajdowało się ok. 3h godzin jazdy samochodem od hotelu, więc stosowałem wszystkie możliwe sztuczki żeby nie zasnąć… ale udało się, a ta metoda okazała się być najskuteczniejszą na jet laga! W samolocie byłem tak niewyspany, że nie pamiętam momentu startu, obudziłem się z godzinę przed lądowaniem w Europie. Przespałem akurat mniej więcej okres 23-8 czasu polskiego, więc nie miałem zupełnie problemu z różnicą czasu :)

Podsumowując…

Przygotowując sesję o wrażeniach z Summitu na ostatnie spotkanie WODNUG, zadałem sobie pytanie, czy warto piłować pół świata, żeby zobaczyć to samo, co teoretycznie wszyscy mają dostępne online.

Moja odpowiedź brzmi: zdecydowanie tak. Okazja zobaczenia twórców na żywo, porozmawiania z nimi, dowiedzenia się o niektórych nowościach zanim usłyszy o nich świat, żywy kontakt z VS ALM Rangersami, dopisanie się do produktowej listy dyskusyjnej… aż wreszcie Lebron i D.Wade na żywo –> BEZCENNE!



Warsaw Official .Net User Group–Wystartowaliśmy!

14
lis/11
1
WODNUG_LOGO

9 listopada odbyło się pierwsze spotkanie WODNUG(Warsaw Official .Net User Group) – nowopowstałej grupy pasjonatów technologii .Net z województwa mazowieckiego!

Podczas spotkania, poza omówieniem kwestii organizacyjnych, wystąpił Bartek Zass, częstując nas sokiem z Mango własnej roboty(a więc najważniejszymi informacjami zarówno dotyczącymi rozpoczęcia developmentu dla platformy Windows Phone 7 i 7.5, jak i ciekawostkami technicznymi dotyczącymi zastosowanych i dostępnych dla programistów mechanizmów).

Paradoksalnie, dużą wartością prezentacji dla mnie stanowił fakt, że Bartek doszedł do… 2 slajdu :)) Jego wystąpienie odbyło się w luźnej formie, gdzie kolejne obszary były dostosowywane do toczącej się dyskusji, pytań z sali i próśb o zaadresowanie danego obszaru. Zdecydowanie warto było tam być offline ;)

Spotkanie z Normanem Judah, Chief Technology Officer w Microsoft

Podczas spotkania inauguracyjnego obiecałem zapewnienie ciekawych prelegentów, również od samego patrona merytorycznego naszej Grupy, czyli firmy Microsoft.
Bartek Zass był pierwszym reprezentantem, a już za 2 tygodnie kolejna szansa na wysłuchanie prezentacji gościa specjalnego, jakim będzie Norm Judah, CTO w Microsofcie! Więcej informacji o nim znajdziecie tutaj.

Tak tak, już 28 listopada o godzinie 18:00 odbędzie się spotkanie z Normanem – wstęp oczywiście jest bezpłatny :)

Rejestrujcie się więc gromadnie na Codeguru: http://www.codeguru.pl/kalendarium/podglad-wydarzenia/spotkanie-z-normanem-judah-cto-microsoft,5669 
I koniecznie przekażcie info znajomym!

Zapraszam na WODNUG!

Kończąc posta bardzo mocno zapraszam do uczestnictwa w spotkaniach naszej grupy! Planujemy spotykać się w każdą drugą środę miesiąca, w siedzibie Microsoft przy Al. Jerozolimskich 195A w Warszawie.

W ramach zachęty wklejam poniżej opis WODNUG, jaki znajdziecie również pod adresem http://wodnug.pl

WODNUG, czyli Warsaw Official .Net User Group, jest społecznością pasjonatów technologii .Net z województwa mazowieckiego. Celem istnienia grupy jest wspólny rozwój realizowany poprzez poszerzanie wiedzy, wymianę doświadczeń, jak i zawieranie znajomości z pasjonatami o podobnych zainteresowaniach.
Do realizowanych i planowanych form funkcjonowania grupy należą:

  • Regularne comiesięczne spotkania - w każdą drugą środę miesiąca

    Podczas spotkań będzie okazja zapoznać się z prezentacjami wygłaszanymi zarówno przez znane osobistości ze świata IT(np. Bartłomiej Zass - ISV Developer Evangelist, czy też Norman Judah - Chief Technology Officer, obaj pracujący w firmie Microsoft).

    Spotkania sprzyjają również dyskusji z innymi uczestnikami - takie "offline'owe forum" jest doskonałą okazją do znalezienia rozwiązania dla problemu, z którym borykasz się aktualnie w projekcie

  • Konferencje, realizowane min. raz w roku
  • Warsztaty techniczne
  • Konkursy wewnętrzne, np. Speaker Idol

Podstawową ideą działalności WODNUG jest przeniesienie obszaru szeroko pojętego wytwarzania oprogramowania z poziomu tylko codziennej pracy do poziomu wspólnie rozwijanej pasji. Grupa jest otwarta zarówno dla osób zajmujących się już zawodowo technologiami Microsoft, ale także dla tych, którzy rozpoczynają swoją karierę i pragną nadać jej przyspieszenia.

Pamiętaj, do zobaczenia w siedzibie Microsoft już w najbliższą drugą środę miesiąca! :-)



Artykuły na polskim MSDN

17
sie/11
1
signs

Jakoś tak się złożyło, że zapomniałem wspomnieć na blogu o materiałach mojego autorstwa na polskim MSDNie. Współpracując z Tomaszem Kopaczem przygotowałem 4 artykuły:

 
 
 
 
 
 
 
 

Oczywiście gorąco zapraszam do lektury :-)



Własna reguła do check-inów: praktyczny przykład

10
lip/11
0
signsJedną z mocno przydatnych mechanizmów TFSa jest podstawowa kontrola jakości umieszczanych zmian PRZED ich faktycznym zaistnieniem w repozytorium. Mechanizm ten nazywa się Check in policies (luźne tłumaczenie: reguły check-inów) i standardowo z instalacją dostarczone mamy implementacje takich zasad jak np. “wymagany komentarz do check ina”, czy też “wymagane podpięcie work itema”.
Co jednak, gdy chcemy zaimplementować własny algorytm, weryfikujący specyficzne wymagania naszego zespołu? Wtedy z pomocą przychodzi TFS API i klasa abstrakcyjna PolicyBase, po której dziedzicząc i wypełniając implementacje dosłownie kilku metod, wprowadzamy do naszego zespołu automat spełniający nasze konkretne wymagania dotyczące check-inów.
W poniższym przykładzie pokazuję, jak sprawić, przy wszystkie umieszczane w repozytorium pliki projektowe z rozszerzeniem .csproj zawierały w sobie konkretną frazę(często firmy wprowadzają konkretną konwencję nazewniczą dla projektów, przeważnie jednym z członów jest nazwa firmy).

1.) Tworzymy projekt…


…typu Class Library i dodajemy w nim referencje do biblioteki Microsoft.TeamFoundation.VersionControl.Client. Następnie proponuję zmienić nazwę klasy Class1 na naszą, np. ProjectNameValidator i oznaczyć ją jako serializowalną.

2.) Dziedziczymy i implementujemy…

Klasę ProjectNameValidator odziedziczmy po klasie PolicyBase. Gdy poprosimy Visual Studio o “zaimplementowanie” wymaganych metod i właściwości, zobaczymy dosłownie kilka miejsc do wypełnienia. Najważniejsza metoda to Evaluate, zawierająca logikę naszego sprawdzenia. Poniżej wklejam przykładową implementację(na końcu posta jest też link do kompletnej solucji):
[Serializable]
    public class ProjectNameValidator : PolicyBase
    {
        /// <summary>
        /// fraza do weryfikacji w plikach o rozszerzeniu .csproj
        /// </summary>
        private const string _requiredString = "CompanyName";

        /// <summary>
        /// Opis reguły - pojawi się w oknie dodawania reguły
        /// </summary>
        public override string Description
        {
            get { return string.Format("Dokonujemy sprawdzenia, czy wszystkie pliki .csproj zawierają w sobie fragment \"{0}\"", _requiredString); }
        }

        /// <summary>
        /// Informacja pokazana użytkownikowi, gdy nie ma zainstalowanej biblioteki z regułą na swojej maszynie
        /// </summary>
        public override string InstallationInstructions
        {
            get { return "Nie masz zainstalowanej reguły sprawdzenia nazw projektów - proszę pobrać z http://..."; }
        }

        /// <summary>
        /// Wykorzystywane, gdy chcemy edytować istniejącą regułę.
        /// </summary>
        /// <param name="policyEditArgs"></param>
        /// <returns></returns>
        public override bool Edit(IPolicyEditArgs policyEditArgs)
        {
            return true;
        }

        /// <summary>
        /// Główna metoda dokonująca walidacji
        /// </summary>
        /// <returns></returns>
        public override PolicyFailure[] Evaluate()
        {
            var failures = new List<PolicyFailure>();

            // iterujemy po każdym ZAZNACZONYM pliku
            foreach (var file in base.PendingCheckin.PendingChanges.CheckedPendingChanges)
            {
                if(file.FileName.EndsWith(".csproj") && file.FileName.IndexOf(_requiredString) == -1)
                    failures.Add(new PolicyFailure(string.Format("Plik {0} nie zawiera w sobie fragmentu {1}!", 
                                                        file.FileName, 
                                                        _requiredString), 
                                                    this));
            }

            return failures.ToArray();
        }

        /// <summary>
        /// Pokazana administratorowi podczas dodawania reguły dla danego projektu w TFS
        /// </summary>
        public override string Type
        {
            get { return "ProjectNameValidator"; }
        }

        /// <summary>
        /// Szczegółowy opis pokazany administratorowi podczas dodawania reguły dla danego projektu w TFS
        /// </summary>
        public override string TypeDescription
        {
            get { return string.Format("ProjectNameValidator - dokonuje sprawdzenia, czy wszystkie pliki .csproj zawierają w sobie fragment \"{0}\"", _requiredString); }
        }
    }

3.) Instalujemy…

Instalacji możemy dokonać na dwa sposoby:
A. ręcznie dodać wpis do rejestru(najłatwiej wyszukać klucza “Checkin policies”, bo z tego co zauważyłem, ścieżka może być różna w zależności od konfiguracji. U mnie jest to np. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Checkin Policies).
Dodajemy nową wartość stringową, gdzie nazwa to prostu nazwa naszej zasady, a wartość to pełna ścieżka do wynikowej dllki naszego projektu z implementacją z powyższych punktów.
B. stworzyć projekt VSIX(Visual Studio SDK wymagane do jego obsługi!) i za jego pośrednictwem umieścić wpis w rejestrze – załączony na końcu posta projekt uwzględnia właśnie instalację z VSIXa.
 
Po instalacji, restarcie VS i przejściu do właściwości Source Control dla danego projektu(Team –> Team project settings –> Source Control –> [zakładka] Check-in Policy –> Add), na liście powinniśmy zobaczyć naszą nową zasadę.
dodanycheckin
Od chwili jej dodania jako obowiązującej, wszyscy programiści będą musieli się do niej stosować. Gdy którykolwiek z programistów nie będzie posiadał zainstalowanej na swojej maszynie biblioteki z naszą zasadą, otrzyma komunikat, jaki wypełniliśmy we właściwości InstallationInstructions. Tak więc check in zostanie uniemożliwiony każdemu, kto nie przeszedł zadanego przez nas warunku lub zwyczajnie nie ma zainstalowanej naszej reguły :)

4.) Wymagamy! ;)

Jak widać poniżej, reguła faktycznie wymusza, aby wszystkie pliki .csproj zawierały fragment z nazwą firmy. Naturalnie zaproponowana implementacja jest dość podstawowa, mamy możliwość wytworzenia bardzo wyszukanych algorytmów. Pamiętajmy tylko, że wprowadzanie odpowiednich zasad ma nam pomóc w codziennej pracy! Nakładanie zbyt rygorystycznych albo zwyczajnie upierdliwych restrykcji może obniżyć wydajność zespołu, albo spowodować, że check iny będą dokonywane znaczniej rzadziej(co nie zawsze jest pożądanym efektem).
eval
 
Kompletna solucja: ProjectNameValidator.zip


TFS Power Tools i modyfikacja Work Itema

06
lip/11
0

gears

Case: Dwa dni temu w ramach jednego z projektów w Billennium przyszedł do mnie kolega z pytaniem o możliwość wyświetlenia dat w szczegółach zadań w TFS. Zadania zostały zaimportowane przeze mnie z MS Projecta i faktycznie daty rozpoczęcia i zakończenia domyślnie nie pokazywały się nigdzie na formularzu zadania ani na liście zadań(screeny poniżej).

Na szczęście z pomocą TFS Power Toolsów udało mi się sprawnie temat ogarnąć i poniżej prezentuję rozwiązanie.

Najpierw widok standardowy, przed rozpoczęciem tweakowania(click na obrazku znacznie ułatwia sprawę;) ):

Jak widać, brakuje gdziekolwiek informacji o oczekiwanych datach rozpoczęcia i zakończenia zadania…

Na szczęście bardzo sprawnie i “na żywym organizmie”(czyli w locie, bez żadnych restartów, zmian w bazie danych i innych cudów) można zmodyfikować Work Itema, żeby zaczął pokazywać pożądaną informację. W tym celu wchodzimy w menu Tools->Process Editor->Work Item Types-> Open WIT from Server i po wskazaniu właściwego projektu i typu Work Itema przechodzimy do zakładki Layout. Na niej w odpowiednim miejscu (ja dla zmyłki w sekcji Classification) klikamy prawym i wybieramy opcję New Control. Następnie wypełniamy właściwości nowododanej kontrolki analogicznie jak na poniższym screenshocie:

Możemy w każdej chwili skorzystać z przycisku “Preview Form”, żeby upewnić się, ze osiągamy zamierzony efekt. Jak już wszystko będzie w porządku wykonujemy zwyczajny zapis(Ctrl+S) i zmiany natychmiast wędrują na serwer. Po przeprowadzeniu takiej przyjemnej i szybkiej akcji, formularz zadania jest wyposażony w dodatkowe pola(u mnie w trybie read only, ponieważ chcę je edytować wyłącznie z poziomu MS Projecta):

Tym samym szybciutko i bez większych problemów udało się pokazać bardzo istotna informację na formularzu.

Dodatkowo naturalnie w Work item queries można w Column Options dodać kolumny Start Date i Finish Date, żeby pokazywać w liście zadań ich terminy. Ale nadal to tylko połowa szczęścia :)



Otrzymałem tytuł Microsoft MVP: Visual Studio ALM

02
lip/11
3

mvp

Co łączy osoby: Jordan, Lebron, Bryant, Magic Johnson, Nowitzki, Rycaj, Pawlik, Subik?

Wszyscy przynajmniej raz zostali wyróżnieni tytułem MVP! :-)
No już dobra, dobra trochę mnie poniosło z tym porównaniem(dla niezorientowanych, pierwsze 5 osób to gracze NBA) ;))
Ale fakt faktem, Microsoft zdecydował się docenić moje działania z ostatnich 12 miesięcy w obszarze Visual Studio ALM, a więc głównej tematyki tego bloga, moich wystąpień na konferencjach, artykułów na MSDN i generalnie codziennych zajęć.

Gratulacje dla Asi i Piotra, MVP właśnie wyjętych ze mną z piekarnika(a więc świeżo upieczonych ;) ). Mam nadzieję, że te literki, tak jak na mnie, również na Was wpłynął motywująco i przerodzą się w Move Very Powerfully.

Gratuluję też wszystkim osobom renominowanym, a więc:

  • Grzegorz Tworek (Enterprise Security)
  • Jacek Doktór (System Center Configuration Manager)
  • Jakub Skałbania (Dynamics CRM)
  • Karol Stilger (Setup & Deployment)
  • Marcin Szeliga (SQL Server)
  • Paweł Pławiak (Directory Services)
  • Paweł Potasiński (SQL Server)
  • Tobiasz Koprowski (SQL Server)

A skoro i tak już jestem chwalipiętą, to jeszcze fragment maila, który zafundował mi banana na twarzy:

Dear Grzegorz Rycaj,
Congratulations! We are pleased to present you with the 2011 Microsoft® MVP Award! This award is given to exceptional technical community leaders who actively share their high quality, real world expertise with others. We appreciate your outstanding contributions in Visual Studio ALM technical communities during the past year.

The Microsoft MVP Award provides us the unique opportunity to celebrate and honor your significant contributions and say "Thank you for your technical leadership."
Toby Richards
General Manager
Community & Online Support

I na koniec kilka linków nt. wyróżnienia MVP:

Strona oficjalna: http://mvp.support.microsoft.com/

Opis programu MVP w Polsce: http://www.wss.pl/Coulisse/10369.aspx

mvp_hor



Podsumowanie ostatnich prezentacji i spotkań

28
maj/11
0

lemur_thumb3I ponownie, podobnie jak w poście napisanym przed miesiącem z kawałkiem, trochę się ostatnio działo, jeśli chodzi o moje wystąpienia na różnych konferencjach i festynach ;). Przede wszystkim regularnie spotykamy się online w ramach cyklu w portalu VirtualStudy.pl, w między czasie wybrałem się do Katowic na Silesian Code Camp, popełniłem też kilka slajdów na Lubelskich Dniach Informatyki i Białostockim IE9 Community Launch. OK, 5 linków w 2 zdaniach oznacza, że nic więcej tu nie wymyślę i czas streścić krótko co tak naprawdę tam się działo ;-)

 

 

 

VirtualStudy

Od ostatniego wpisu odbyły się kolejne 4 spotkania, w których gadałem radośnie do ekranu :) W trakcie jednej z sesji zaginął gdzieś mój głos i dopiero po 5 minutach uczestnikom udało się do mnie dotrzeć z informacją, że na pewno dobrze mi idzie, ale nikt nic nie słyszy :-)))

Za to jak już było mnie słychać, to rozmawialiśmy sobie na tematy:

  • Różne sposoby dostępu do TFS i ich zastosowania
  • Praca z buildami i testami w Visual Studio ALM(celowo piszę i mówiłem o VS ALM, jako, że nawet bez TFS możemy sporo czerpać z możliwości, jakie daje nam Visual Studio w zakresie testowania). Pokazałem wybrane(najciekawsze wg mnie) rodzaje “wbudowanych” testów wraz z ich automatyzacją w procesie builda. A sam proces też sobie wspólnie modyfikowaliśmy ;-)
  • Dostosowywanie TFS do swoich potrzeb – w części 1 tego tematu omówiłem możliwości modyfikacji szablonu procesu, na co warto zwrócić szczególną uwagę i kiedy mocno się zastanowić przed naciśnięciem Ctrl+S ;) W drugiej części(w najbliższy wtorek, 31.05) będę omawiał API, za pomocą którego napiszemy własną aplikację całkiem nieźle dogadującą się z TFS

Tradycyjnie już, na końcu posta znajdziecie oczywiście linki do slajdów z tych spotkań.

Silesian Code Camp

Społeczność Leonów zawodowców ze Śląska zaprosiła mnie na tegoroczny Code Camp, w ramach którego odbywały się równolegle 2 ścieżki – SQLowa i Programistyczna. Ja otwierałem naturalnie tę drugą i naturalnie na temat Team Foundation Servera. Ponownie, ciekawe jest to, że na pytanie zadane na początku sesji o świadomość istnienia TFS(“czy słyszałeś/słyszałaś…”) mało osób się przyznaje, a z drugiej strony po sesji wiele osób przychodzi po dodatkowe informacje i wskazówki, czyli faktycznie jest zapotrzebowanie na to narzędzie i materiały o nim.

Ciekawy jest też fakt, że nadal licencjonowanie stanowi “barierę”, przeważnie czynnikiem zniechęcającym jest wyobrażenie o olbrzymich kosztach do poniesienia. Zgadzam się, że da się mało efektywnie zaplanować wdrożenie środowiska z TFS w roli głównej :)
Ale już opierając się o partnerstwo z Microsoftem, przy naprawdę przystępnej opłacie rocznej(na poziomie 1300 euro rocznie) zapewniamy licencje przynajmniej dla core’u drużyny :)

Dla osób zainteresowanych szczegółami licencyjnymi, załączam link do dokumentu(tak, wiem, dla ułatwienia ma 46 stron;)), wyjaśniającego zasady: http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=2b1504e6-0bf1-46da-be0e-85cc792c6b9d


Lubelskie Dni Informatyki

9 maja 2011 wesoło(naprawdę wesoło, jazda tą drogą w poniedziałek rano jest 500 razy przyjemniejsza niż w piątek wieczorem) pokonałem 160 km trasy Warszawa-Lublin, żeby pojawić się na Lubelskich Dniach Informatyki. Jako, że Billennium ma swój oddział właśnie w Lublinie, staramy się regularnie wspierać takie inicjatywy jak LDI.

Wystartowałem z moim ulubionym tematem, czyli wprowadzeniem do TFS. Pod koniec wystąpienia wywiązała się ciekawa dyskusja nt. licencjonowania całego środowiska, możliwości(granic) wydajnościowych i porównania z innymi platformami ALM. Widać więc, że coraz częściej wykorzystujemy coraz mocniej zintegrowane narzędzia, pokrywające szeroko proces wytwarzania oprogramowania, chociaż myślę, że nadal jest to tylko początek migracji do nich.

IE 9 Community Launch – Białystok

Wczoraj przed północą wróciłem z Białegostoku, gdzie Grupa .Net z Politechniki Białostockiej, we współpracy z Białostocką Zawodową Grupą .Net organizowała wydarzenie Internet Explorer 9 Community Launch. Z Warszawy wybieraliśmy się z Rafałem Czupryńskim na pociąg o 8:35 i przejazd w tamtą stronę zaczął się od absolutnego no-stress stwierdzenia Pani z informacji PKP, że “dzisiaj pociąg odjeżdza o 8:52”. Niby to niecałe 20 minut, ale podejście tej kobiety było tak olewcze, że równie dobrze mogliśmy usłyszeć, że “dzisiaj ten pociąg nie jedzie, any problemz madafakazzz?”.

Grupa Białostocka ma to do siebie, że jakie wydarzenie by się tam nie odbywało, to zawsze:

  • Organizatorzy “dają radę”, tzn. podejście jest z nastawieniem full pro mode on
  • Na sali frekwencja jest liczona w setkach… osób
  • Jest naprawdę przyjemnie przyjść, korytarze są obklejone i oplakatowane, z daleka wiadomo gdzie chcemy iść, sama obsługa przy rejestracji zasługuje na osobnego posta :)
  • itd.
  • itd.
  • i jeszcze ;)
  • i oh ah na koniec

Moja sesja była poświęcona buildom i testom w TFS, czyli pokazaniu jak łatwo wprowadzić praktykę Continous Integration w naszych projektach i jak zdecydowanie ułatwić sobie pracę, wykorzystując odpowiednie narzędzia.

Po samym wydarzeniu przenieśliśmy się ze znajomkami na obiad do jakiejś doskonałej restauracji greckiej, która została zarekomendowana jako 2D – Dużo i Dobre. Po wizycie tam wiemy już, że jest 3D – Długo(czekaliśmy chyba z godzinę na podanie dań), Dużo i Dobre. Jak będę miał kiedyś zapas czasu, to może jeszcze wrócę ;-)

Obiad zakończyliśmy przenosinami do Domu Weselnego Gracja(tak, wiem, grubo), w którym spędziłem fantastyczne 15 minut… :] Rafi dławił się ze śmiechu, że piłowałem pół Białegostoku dla 15 minut(za to sam planował wracać pociągiem o pogańskiej godzinie 4 rano następnego dnia, hehe).
Niestety, wcześnie następnego dnia musiałem być w Warszawie, a ostatni pociąg z Białegostoku odjeżdza o 19:41… Tzn. planowo, bo nasz miał opóźnienie, co w mnie szalenie boli(zamiast 15 minut mogłem wyjść z gracją z Gracji po 30 uuuu).

Żałuję, bo zanosiło się na RÓJ atrakcji, ale to jeszcze nadrobiiimy. Tak czy siak duże gratulacje i brawa dla Organizatorów + dziękuję za upominki ;p


Najbliższe plany

No dajcie żyć… ;)

 

Slajdy

VirtualStudy, Sesja 5: Pobierz

VirtualStudy, Sesja 6: Pobierz

VirtualStudy, Sesja 7: Pobierz

VirtualStudy, Sesja 8: Pobierz



Poznaj TFS! Instalacja serwera

10
maj/11
5

Z lekkim opóźnieniem wracamy do cyklu poznawania Team Foundation Servera :)  Zgodnie z prośbą Andrzeja, dzisiaj kilka słów na temat samej instalacji. Nie chciałbym się jednak powtarzać z publikowanymi przeze mnie już wcześniej materiałami, dlatego najpierw odsyłam Cię, drogi Czytelniku do:

1.) Materiału mojego autorstwa, który ukazał się 22 kwietnia w portalu MSDN:

http://msdn.microsoft.com/pl-pl/library/team-foundation-server-2010—instalacja

Opisuję w nim etap przygotowań do instalacji(wymagania sprzętowe i systemowe), przejście przez proces instalacyjny, razem ze scenariuszem “zaawansowanym” i poświęcam kilka słów możliwościom rozbudowy środowiska np. o dodatkowy serwer aplikacyjny(w celu rozłożenia obciążenia/zapewnienia wysokiej dostępności)

2.) Posta na tym blogu, stworzonego na etapie TFS 2010 BETA2. Tak naprawdę sam proces instalacji nie zmienił się specjalnie od tamtego czasu, więc post też może być przydatny(chociaż traktujmy go jako opcjonalny po lekturze powyższego materiału z MSDN):

http://visualstudioalm.pl/post/Instalujemy-TFS-2010-Beta-1.aspx

A teraz kilka słów dodatkowych

TFS 2010 jest pierwszym produktem w serii, posiadającym instalator typu “Next, next, next, thank you”. Wcześniejsze edycje(2005 i 2008) wymagały sporo uwagi i w obu przypadkach zdecydowanie polecam Instalation Guide’y(dostępne pod linkami: 2005 / 2008).

Wizard w 2010 przyjemnie nas prowadzi za rękę przez cały proces, w zasadzie trudno zrobić błąd. Gdy stawiamy pierwszą instalację, radzę nie pchać się w scenariusz zaawansowany, podstawa nam w zupełności wystarczy. Mamy też inną możliwość. Ze stron Microsoftu możemy pobrać TRIAL TFS 2010 w postaci maszyny wirtualnej z zainstalowanymi dla nas odpowiednimi komponentami.

Do pracy z TFS 2010 możemy zaprząc wszystkie wersje Visual Studio 2010 poza Express, jak również większość Visual Studio 2005 i 2008(również poza Express). Wszystko, czego potrzebujemy, to zainstalowany dodatek Team Explorer. Gdybyście nie mieli go w swoim Visual Studio, to poniżej podaję linki:

Dodatkowo, dla 2005 i 2008 należy pobrać tzw. Compatibility Packi, dostępne pod adresami: 2005 / 2008

No tak, sporo tego, ale tylko w przypadku chęci skorzystania z TFS 2010 z poziomu VS 2005/2008. Przy VS 2010 wszystko powinniście mieć na pokładzie zaraz po instalacji środowiska :) Wymagania doinstalowania dodatków biorą się ze zmian, jakie zaszły w TFS 2010 pod względem organizowania projektów – wg mnie są to zmiany zdecydowanie na lepsze, nieco później w naszym cyklu dowiemy się, jakie to konkretnie różnice.

Tak czy siak, niezależnie od wybranej wersji Visual Studio dążymy do uzyskania widoku zbieżnego z poniższym screenshotem:

image

Uprawnienia w TFS

TFS pozwala nam zarządzać uprawnieniami na wielu poziomach – zaczynając od poziomu serwera, przechodząc przez kolekcje projektów, projekty, buildy, katalogi(w tym gałęzie), wreszcie na pojedynczych plikach kończąc. Jeśli któryś z poziomów jest dla Ciebie niezrozumiały(np. “kolekcje projektów”) – to nic straconego! Na pewno w ramach naszego cyklu poruszę ten temat.

Zarządzanie uprawnieniami na każdym z poziomów wygląda bardzo podobnie, do czynienia możemy mieć tylko z nieco innymi uprawnieniami(np. na poziomie kolekcji projektów będziemy ustawiali, kto może tworzyć nowe projekty – naturalnie na poziomie projektu takiego uprawnienia już nie będzie :)).

Przykładowy zestaw uprawnień dla kolekcji projektów został zaprezentowany poniżej:

Uprawnienia

Nie należy się przerażać, widząc te pozycje(nawet jeśli w pierwszej chwili nie wiemy co oznaczają)! TFS zaraz po instalacji ma ustawione pewne standardowe wartości, dzięki którym możecie śmiało zacząć pracę z systemem. A z czasem dojdziecie też do tego, jak sobie zorganizować uprawnienia w Waszym zespole.
Uprawnienia przydzielamy w sposób analogiczny do uprawnień w NTFS – możemy je nadać/odebrać użytkownikowi lub grupie(można je stworzyć “lokalnie” w TFS lub oprzeć o istniejące grupy w Active Directory lub na serwerze TFS – niekoniecznie musi być w domenie). Z praktyki zdecydowanie polecam konfigurowanie uprawnień w oparciu o grupy. Włączenie nowej osoby do zespołu oznacza wtedy dołączenie do odpowiedniej grupy. Naturalnie czasem nie chcemy nadawać pełnych uprawnień, natomiast nadal da się tak rozplanować liczbę grup i ich możliwości, żeby spędzać potem nad nimi bardzo mało czasu :-)

Gdzie faktycznie szukać odpowiednich pozycji konfiguracyjnych? Zawsze tam, gdzie znajdziecie tekst “Security” lub “Group Membership”. Najłatwiej je znaleźć eksperymentując i klikając prawym przyciskiem myszy na różnych elementach w Team Explorerze lub w Source Control Explorerze :-)
Łatwo je też znajdziemy w menu Team –> Team Project Settings / Team Project Collection Settings

  • Group Membership – to tu tworzymy sobie nowe grupy i dokładamy do nich nowych członków(uwaga: grupa może się też zawierać w innej grupie!). Jeden użytkownik może naturalnie należeć do wielu grup. Poniżej widzimy konfigurację grupy “Administratorzy projektu”, do której należy obecnie jeden użytkownik.
    Mam jednak możliwość dołożenia grupy TFSowej albo użytkownika/grupy Windowsowej i po wykonaniu takiej akcji wskazani użytkownicy nabiorą odpowiednich uprawnień(jakie to uprawnienia przeczytamy w kolejnej kropce)
grupa
  • Security – to właśnie tam określamy co może a czego nie dana grupa/użytkownik.
    Jak widać, tutaj też możemy dodać grupę lub użytkownika. Jest to łudząco podobne do tego, co mamy przy zarządzaniu grupami, jednak tutaj mówimy już tylko o stworzeniu na liście nowej pozycji, dla której chcemy nadawać uprawnienia. Na tym ekranie  nie ma mowy o dodaniu nowego członka do grupy “Project Collection Administrators”.
Uprawnienia2

Ważna uwaga odnośnie uprawnień

Opisane powyżej mechanizmy zarządzania uprawnieniami dotyczą wyłącznie części TFSowej – nie propagują się automatycznie na zintegrowane systemy, jak np. Sharepoint Server, czy też Reporting Services. Należy więc oddzielnie ręcznie dodać uprawnienia w odpowiednich miejscach. Tutaj znowu wracam do praktyki zarządzania przez grupy. Jeśli skonfigurujemy sobie sprytnie grupy Windowsowe i wykorzystamy je przy określaniu uprawnień do TFS, Sharepointa i Reporting Services, to potem nadanie uprawnień nowej osobie, czy też zmiana uprawnień dla istniejącego zespołu, zajmie nam dosłownie kilka minut.