SpecFlow + XUnit

Specflow fajny jest, piszemy scenariusze czytelne dla ludzi a pod spodem szaleje xunit i sprawdza. Jest tylko jedne problem, aktualnie specflow.xunit instaluje xunit 2.0 a do pliku .feature.cs generuje kod:

MyProjFeature : Xunit.IUseFixture

No i klops, IUseFeature już nie jest dostępny w xunit 2. Można jednak sobie poradzić mieszając trochę w pakietach. Po prostu trzeba po instalacji specflow.xunit odinstalować wszystko związane z xunit 2.0 (use the –Force Luke) i zainstalować xunit 1.9.2 i wszystko śmiga. Poniżej zestaw magicznych zaklęć:

install-package -ProjectName "MyProj.Specs" specflow.xunit
uninstall-package -ProjectName "MyProj.Specs" xunit –Force
uninstall-package -ProjectName "MyProj.Specs" xunit.abstractions –Force
uninstall-package -ProjectName "MyProj.Specs" xunit.extensions –Force
uninstall-package -ProjectName "MyProj.Specs" xunit.assert –Force
uninstall-package -ProjectName "MyProjent.Specs" xunit.core –Force
uninstall-package -ProjectName "MyProj.Specs" xunit.extensibility.core –Force
install-package -ProjectName "MyProj.Specs" xunit -Version "1.9.2"
install-package -ProjectName "MyProj.Specs" xunit.extensions -Version "1.9.2"

Re: Sekrety udanych prezentacji

infomeet-iot

Tydzień temu miałem przyjemność wystąpić na katowickim InfoMEET gdzie poopowiadałem trochę o Internet of Things. Nie pierwszy raz występowałem na InfoMEET ale tym razem chyba najlepiej mi się mówiło, jakoś tak bardzo płynnie szło no i patrząc na oceny to podobało się więc jest git. Jeśli temat kogoś interesuje to będę z nim jeszcze w Krakowie w kwietniu i Wrocławiu w bodajże czerwcu. Jeśli byłeś/byłaś na mojej prezentacji i chcesz się podzielić jakimiś wrażeniami/opiniami to zapraszam do komentarzy lub od formularza kontaktowego.

Będąc natomiast przy prezentacjach to nawiążę do ostatniego wpisu Maćka o sekretach udanych prezentacji i dodam swoje 3 grosze. Nie jako kontrargumenty a raczej uzupełnienie i mój punkt widzenia.

Czas na przygotowanie

U mnie to wygląda tak, że prezentacja rodzi się w głowie i tam się układa później przelewam to na PowerPointa – głównie dlatego, że ma widok prezentera, który u mnie działa :) Natomiast fakt, warto mieć czas na przygotowanie i mieć wiedzę na temat o jakim będziemy mówili. Prezentacja na temat o którym nie mamy pojęcia jest naprawdę ciężka do przeprowadzenia.

Na scenie bądź zdecydowany

Tu uważam, że potrzeba energii. Jeśli temat nie jest jakiś specjalnie lotny ale prelegent mówi fajnie, ciekawie i jest pewny siebie to da się słuchać, gorzej jeśli osoba przedstawiająca temat mówi cicho i pod nosem wtedy widać brak pewności siebie i jakoś to wtedy nie idzie.

Slajdy

MAŁO TEKSTU – nic tak nie zabija jak slajd z napaćkaną wielką ilością tekstu. Czasem trzeba wrzucić tekst, ale wtedy daj uczestnikom chwilę na przeczytanie tego co tam zostało wklejone. Jeśli nie będzie tego spora część zacznie czytać tekst zamiast słuchać. Generalnie zasada jest taka, prezentacja to tło do tego co będzie mówione. Pod żadnym pozorem to nie są karteczki do czytania. Tak to nie działa. Jeśli zaś są tłem do tego co będzie mówione to i obrazek i animka i bardzo krótki tekst jest ok. Co mnie natomiast męczy bardzo to fikuśne przejścia. Imho albo brak przejść albo jedno, szybkie i w miarę zgrabne. Nie wiem po co w PowerPoincie zrobili ich tyle i co jedno to gorsze… Na szczęście jest już lepiej. Kilka lat temu spora większość prezentacji jakie widziałem to było prezi. Prezi jest fajne pierwszy raz, może drugi a potem po prostu męczy. Szczególnie jeśli cały czas widać napis unregistered czy co on tam wypisywał.

Nie przepraszaj

To moja pierwsza prezentacja więc proszę o….. ziew. No sorry. Albo stajesz przed ludźmi i gadasz najlepiej jak umiesz albo nie ale nie zaczynaj od przepraszania, no chyba że się spóźnisz, wtedy naprawdę warto przeprosić armię ludzi, której zmarnowałeś kawałek swojego życia – miej naprawdę dobry powód. Bo to nieprofesjonalne – bardzo nieprofesjonalne.

Demo

No cóż. Imho to wymaga dużo skill-a i wewnętrznego spokoju bo prawie zawsze coś idzie nie tak. Jeśli masz dostęp do pilota to za wczas sprawdź czy działa freeze. To potrafi uratować życie. Jak widzisz, że komputer nie daje rady daj freeze i wtedy możesz go nawet zrestartować. Jak przy tym nie stracisz zimnej krwii to nikt się nie zorientuje.

Woda!

Oprócz mlaskania o którym pisał Maciek to są jeszcze dwa powody. Jeśli to Twoja pierwsza prezentacja to może się zdarzyć, że w pół sekundy od rozpoczęcia będziesz miał w ustach Sahare. wtedy łyk wody i jakoś pójdzie. Drugi powód to zbudowanie takiego lekkiego zawieszenia. Dajesz coś do poczytania i robisz łyk, albo przed czymś ważnym, cisza, robisz łyk, automatycznie wiele osób koncentruje uwagę bo coś się zmieniło.

“Tryb prezentera”

Mi działa i sobie cenię głównie ze względu na timer. Zresztą PowerPoint pod tym względem jest fajnie rozbudowany, może sam zmieniać slajdy jeśli ustawimy timing. Możemy robić próby i zapisywać czas per slajd etc. Dla mnie najważniejsze to właśnie notatki, wypunktowane rzeczy, które przy slajdzie chcę powiedzieć i często zaznaczone tzw transition sentence czyli zdanie lub zwrot, który pozwoli mi ładnie przejść do następnego slajdu.

Kolory

No właśnie, czy to prezentacja czy kod czy cokolwiek innego powinny być czytelne na PROJEKTORZE, czyli bez delikatnych kolorków, ma być konkret, to musi być czytelne ot i tyle. Warto za wczasy poznać działanie Win +/- w nowych systemach do robienia zoomu, sprawdzić jak powiększyć wielkość liter czy to w VS czy chromie czy innym IDE którego będziesz używać

Pulpit

Nic tak nie rozbraja jak pierwsze podłączenie laptopa gdzie na wielkim projektorze pokazuje się piękny burdel na pulpicie. W Windowsie zanim podłączysz się pod cokolwiek, wyłącz ikony pulpitu, to po prostu wygląda lepiej. No i tapeta przydała by się jakaś przyzwoita a nie roznegliżowane żona/kochanka/mąż/kochanek.

Timing

No i na koniec najważniejsze. Nie przedłużaj sesji dłużej niż to trzeba. Niektórzy chcą iść zrzucić coś z jelita, inni potrzebują kawy. Jakkolwiek interesująca by była sesja to nie przepadam jeśli przedłuża się w nieskończoność. Szczególnie na konferencjach, gdzie przerwy krótkie. Serio, prelegencie miałeś swój czas, ludzie siedzieli cicho słuchając Ciebie, uszanuj to i okaż szacunek wobec innych i nie kradnij ich czasu. Jest tylko kilka osób, u których takie zachowanie bym zaakceptował – tylko, że one tak nie robią.

Wuluzuj/A jak się nie uda…

To nic się nie stanie. Miałem kiedyś okazję być na wykładzie gościa, bodajże ~17 latka. Który wyszedł przed ok 70 osób odpalił slajdy i go po prostu zamurowało. Nie wiedział co powiedzieć. Normalnie zżarła go trema i to w najgorszy możliwy sposób. I co się stało? Przeprosił i chciał uciekać ale ktoś z sali zaczął ciągnąć gościa za język żeby powiedział o czym miał powiedzieć. Potem ktoś inny zapytał i jakoś tak wspólnie “lud” pociągną tą prezentację i z tego co pamiętam to była fajna merytorycznie prezentacja. Gość dopiął swego i wyszedł z tarczą. Jak on to zrobił to Ty też możesz.

Zatem do dzieła!

 

foto:InfoMEET

Wroc#  czyli rozpieszczanie developerów level hard.

W zeszły czwartek dane mi było pojechać na zupełnie nową konferencję na polskiej scenie, Wroc#. Agenda wypchana po brzegi nazwiskami ze światowej top listy spowodowała, że tam po prostu trzeba było być – zapowiadało się świetnie i światowo. Jak świetnie się zapowiadało? Ano tak, że organizatorzy po pierwszym rzucie biletów powiększyli pulę biletów bardzo ale to bardzo znacząco.

Do rzeczy,

Pre-conf przygotowała wrocławska grupa .net z lokalnymi celebrytami, Gutek, Maciek i Mirek poopowiadali o CQRS-ie chyba. Chyba bo przybyliśmy na miesce w połowie wykadu Maćka i z samego tyłu za bardzo nie było słychać o czym mówi chociaż slajdy wyglądały ciekawie. Potem jednym okiem patrzyłem na Mirkowe ruby i za każdym razem jak widzę kod w ruby to coraz bardziej przekonuję się, że chce jeszcze posiedzieć w ogródku c#-pa. Po prezentacjach piwko i rozmowy wszelakie, ogólnie sympatyczny początek nadchodzącego wroc#.

Czwartek, rano, spacerek na miejsce eventu. Dochodzimy na miejsce, a tu nalepki na chodniku i smutni panowie z kwadratowymi torbami czyli wiemy, że jesteśmy w dobrym miejscu. Szatnia, gift-pack i siadamy na miejscu. A w giftpacku same dobrze rzeczy, bardzo porządny notes, drewniana gwiazdka do składania, koszulka, devtalk propaganda i jakieś ulotki. Elegancko (chociaż ciągle brakuje mi konferencji gdzie będzie można się zaopatrzyć w buty lub jeansy :) ).

Konferencję rozpoczął dyrektor z Objectivity, czapki z głów bo gość bardzo ładnie i zwięźle przywitał wszystkich i bez owijania ale w jednym zdaniu powiedział, że jeśli ktoś chce u nich pracować to żeby przyszedł pogadać – nic nachalnego, kultura. No i co warto nadmienić przez całą chyba konferencję siedział na sali i uważnie słuchał. To się ceni, wielki +.

Agenda,

Jak już pisałem, była zacna. Na wielu blogach poczytacie dokładniej kto o czym rozmawiał ale najlepiej pooglądać filmy, które maja być dostępne w krótce. Zatem ograniczę się do moich subiektywnych wrażeń.

  • Chris Heilmann, Innovating the other web. Bardzo przyjemny i lekki wykład na początek. Trochę mnie druga połowa zmęczyła jak gość powiedział, że pracuje w Microsofcie. Czyli propaganda działa. Na szczęście nie było marketing bulshit tylko rzeczowe i obiektywne spojrzenie na web.
  • Matt Ellis, Little changes to make your app a lot faster. Czekałem na ten wykład i się zawiodłem. Nie dlatego, że był słaby ale dlatego, że wszystko co zostało powiedziane i pokazane czytałem już na blogu jebrainsa. Mimo tego, warto było poświęcić czas. Warto jeszcze raz podkreślić, że to co pokazywał Matt to jest ostatni krok „psucia kodu” i tylko w miejscach gdzie kod tego wymaga, w hot path.
  • Mark Seemann, Type-Driven Development. Wykład na który najbardziej czekałem. Jak zobaczyłem Marka w agendzie to wiedziałem, że chcę tam być. Świetny wykład o wykorzystaniu silnego typowania i tego co ono nam daje na etapie rozmyślań nad rozwiązaniem. Od dawna uważam, że silne typowanie jak bardzo jest upierdliwe tam gdzie trzeba poskładać te wszystkie out w generykach, coś nadpisać coś stuningować to jest to genialna siatka bezpieczeństwa, która pilnuje aby kod miał ręce i nogi. Jedyny minus tego wykładu to to, że był w F#-pie więc jeśli ktoś przyszedł bez znajomości podstawowej składni to mógł mieć mocno pod górkę. Trzeba było słuchać Michała na zeszłorocznej get.net – wystarczyłoby :)
  • Dan North, I, Programmer. Bardzo dobry, miękki wykład. Dan świetnie opowiada i mimo, że nie powiedział nic specjalnie odkrywczego to fajnie pozbierał wszystkie aspekty bycia programistą.
  • Maurice de Beijer, What is new in ASP.NET vNext? Najsłabszy jak dla mnie wykład. Myślałem, że coś nowego się dowiem o vNext jednak dowiedziałem się to co można przeczytać wszędzie. Przecierpiałem do końca bo Maurice się starał ale chyba temat mało lotny – przynajmniej dla mnie.
  • Chris Klug, Decomposing AngularJS, tutaj sobie odpuściłem bo kolejny wykład o angularze – jak to gdzieś przeczytałem takiej Javie w świecie JS. Zagadnąłem w połowie i….. widzę Visual Studio wiszące na jakimś js-ie. Serio co tam jest zepsute z tym Visual Studio, że tak słabo daje sobie radę z js-em? Z relacji innych dowiedziałem się, że wykład był świetny bo gość robił swojego „angulara” od zera i jak to usłyszałem to mi trochę żal było, że jednak nie poszedłem. No cóż, trzeba czekać na video i doglądnąć bo z tego co słyszałem, może być ciekawe.
  • Mark Rendle – nie dotarł z powodu choroby… niestety. Organizatorzy na szybko zorganizowali panel dyskusyjny z Ewą Drzyzgą Danem jako moderatorem. Wyszło świetnie, nie wiem co by pokazał Mark ale gdybym nie widział agendy to by mi to wyglądało jak zaplanowane. Super wybrnęliście z sytuacji.

Potem impreza, piwo uwarzone specjalnie na tą konferencję – świetny pomysł, genialne szoty z mango – no po prostu genialne, jak ktoś nie spróbował to po prostu nie był na wroc# 😉 Bardzo dobre jedzenie (jestem kupiony w 100% podali carpaccio i to nie ze słonia a z prawdziwego wołu) , automaty do gier, piłkarzyki, lotki, budki do zdjęć. Jedynie zespołu mi było żal, bo goście się starali i grali zacnie tylko, że tym głośnym graniem wypłoszyli wiele osób – no cóż, my introwertycy jakoś chyba nie umiemy skakać pod sceną. Generalnie, konferencja bardziej niż udana, cuda na kiju. Jeśli to była pierwsza edycja to jestem ciekaw co będzie dalej. Poprzeczka jest bardzo wysoko zawieszona.

Gratulacje, czapki z głów i czekam na przyszły rok.

Raspberry Pi2 i nowe media center

Jeśli ostatni tydzień spędziłeś pod kamieniem to pewnie nie wiesz, że na świat przyszła nowa wersja malinki, raspberry pi 2. Mamy teraz do dyspozycji 1GB ramu oraz 4 rdzenie. Spora różnica w porównaniu do poprzedniej wersji. Rozmiar jak i cena bez zmian. Jeśli dowiedziałeś się o tym czytając tego bloga to na prawdę musisz mieszkać w jaskini bo o tym wydarzeniu napisali już wszyscy – może poza pudelkiem i mną do teraz.

IMG_20150203_185617

Wszyscy pisali bo i jest o czym pisać, Microsoft ogłosił, że będzie wspierał raspberry Pi 2 swoim Windowsem 10, czekam na to bo może być wesoło. Ciekawe jak będzie działał na tym .net bo do tej pory uruchamiałem na malinie mono i nie miałem większych problemów z tym.

Media Center

Pierwsza malina, która zawitała do mnie do domu pracowała jako media center czyli RaspBMC + dysk zewnętrzny. Spokojnie hostowała sobie zdjęcia, filmy, trochę muzyki, radia internetowe, youtuby i takie tam inne. Ot smart tv w domowym wykonaniu. Demonem prędkości nigdy nie była ale też nie można było bardzo na nią narzekać. Nowe Raspberry Pi 2 na piewszy ogień ma zamienić stary model B (bez plusa) i dać kopa. Tylko, że Raspbmc nie działa z Pi2, na stronie jest oficjalna informacja, że nie ma już wsparcia. Projekt raspbmc jest niejako martwy bo Sam Nazarko (autor) skupia się na nowej platformie OSMC i to działa już na Pi2 i działa super szybko.

OSMC to na razie alpha. więc i choroby wieku dziecięcego się pojawiły. Pierwsza to brak sieci. Przez interfejs użytkownika nie działało u mnie ustawianie sieci – a chcę mieć statyczne ip na tym. Aby to obejść wystarczy wyłączyć ui – opcja wyłącz (bez restartu) i za pomocą esc możemy dostać się do konsoli tam już logowanie (nowe defaultowe hasło daje wam osmc i user osmc) i można brać się za konfigurację.

vi… nie działą, vim też nie, ale działą nano

niestety /etc/network/interfaces też nie działa bo osmc używa jakiegoś innego lepszego sposobu używania sieci, google mówi, że:

sudo nano /var/lib/connman/ethernet.config

i wpisujemy

[service_ethernet]
Type = ethernet
IPv4 = 192.168.1.100/255.255.255.0/192.168.1.1
Nameservers = 192.168.1.1

Czyli generalnie konfiguracja, w postaci

IPv4 = ip malinki/maska/gateway
Nameservers = dns

Restart i śmiga wszystko jak złoto. Jest internet, jest ssh, można szaleć.

I jeszcze jedna uwaga, Pi2 u mnie zaczął wyświetlać kolorowy tęczowy kwadrat na ekranie, czyli brakowało mu mocy z zasilacza. Działa stabilnie ale marudzi, że słabo. Ładowarka od Nexus-a 4 to dla niej za mało dlatego wymieniłem na ładowarkę z iPhone-a i już nie marudzi.

MSBuild nie chce robić publish-a

Jest serwer Continuos Integration, który pilnuje, żeby nasz cudny kod był buildowalny poza maszyną developera. To bardzo ważne jeśli tego developera akurat nie ma w biurze. Wiadomo – u dev-a wszystko działa i wszystko się builduje – to czego nie wiadomo to co on/ona mają na komputerach poinstalowane i dlaczego tak naprawdę to to się builduje.

Jak napisałem wcześniej mamy serwer CI, który za nas robi buildy i jeszcze sprawdza czy ładny kod piszemy. Tylko, że testowy serwer ręcznie trzeba było aktualizaować – bez sensu. Wprawdzie to tylko jeden publish w visual studio więc jedną komendą jesteśmy wstanie to zrobić (przechodzimy Test Joela w tej kwestii) to jednak robienie tego ręczne jest po prostu… niepotrzebne. Niechaj CI sam zrobi publisha.

Parę kliknięc w TeamCity i jest.

…cisza. Build przeszedł, TeamCity świeci na zielono, wersja na serwerze testowym jest stara. Szybki rzut oka do loga i… nic.

Na serwerze jest wszystko co potrzebne do buildowania ale dalej TeamCity nie zgłasza błędów z MSBuilda. Po prostu MsBuild wykonuje się poprawnie mimo, że nie robi publisha. Zresztą w logu MsBuilda magicznie nie znalazłem informacji, że publish się nie wykonał. Więcej, nie znalazłem informacji że MsBuild robił publish. Ot, nic takiego nie było. WHAAT!!

Instalacja .net framework 4.5 SDK też nie pomogła. W czeluściach internetów jednak znalazlem, żeby przenieść z maszyny developerskiej katalog

c:\program files (x86)\msbuild\microsoft\visualstudio\v12

do

c:\program files (x86)\msbuild\microsoft\visualstudio\v12

na serwerze buildowania.

Run i… nagle wszystko pięknie działa. Team City robi publish i świat już jest piękniejszy. Aby zrobić publish wersji do środowiska testowego, opublikować instalkę, wrzucić ja na sieć, nazwać i coś tam jeszcze zrobić muszę wykonać komendę:

git svn dcommit