WinOps #4

Topic: Automated deployment of Infrastructure to Microsoft Azure

Inconsistencies in infrastructure configuration in the release pipeline can lead to unforeseen issues. In this demonstration filled session we will discuss why a consistent infrastructure environment is vital in enabling continuous delivery and reducing unplanned work.

We will focus on three key DevOps practices:

• Infrastructure as Code
• Configuration as Code
• Release Management

Which will be demonstrated using:
• Azure Resource Manager Templates
• PowerShell Desired State Configuration
• Visual Studio Team Services Release Management

From: http://www.meetup.com/WinOps/events/228704653/ 

IT Academic Day

Pierwszą prezentacją na IT Academic Day była mowa motywująca. Przedstawiała nowe oblicze firmy. Zapewne MS kojarzy się z firmą tworzącą oprogramowanie. Piotr Bubacz z Microsoft Polska twierdzi, że to przeszłość. Nowy kierunek rozwoju to usługi i produkcja urządzeń. Pamiętacie mój wpis z Imagine Cup? Omawiałem jak firma zmienia swój piar i technologie. Wprowadzanie możliwości mieszania wielu języków w Windows 8. Mocne wsparcie dla Javascriptu… Nowe bardziej przyjazne środowisko i złagodzenie polityki firmy. Wszystko to wydaje się krokiem w dobrym kierunku.

Następnym prelegentem był Dawid Piaskowki (Okazjum, BookLikes). Kolejna opowieść o Startup’ach. Sam temat kontrastuje z stereotypowym wizerunkiem ms ale jak już kiedyś pisałem firma zmienia wizerunek. Staje się coraz bardziej nastawiona na użytkowników i partnerów. Nawet otworzyli fundusz i akcelerator w Niemczech. O funduszu już wspomniałem przy okazji Berlin Startup Safary.

Ale w prezentacji moją uwagę przykuł temat inwestorów. Oprócz samego Lean Canvas, Dawid wspomniał o podstawowych kruczkach w umowach inwestycyjnych:

  • NDA – umowa o poufności
  • Drag-Along  (bring along) – daje inwestorowi prawo żądania sprzedaży 100% udziałów
  • Tag-Along prawo przyłączenia się do sprzedaży akcji. W przypadku, gdy któryś z akcjonariuszy chce zbyć swoje akcje, akcjonariusz, któremu przysługuje prawo tag along (Akcjonariusz Żądający), może zażądać od Akcjonariusza Zbywającego, aby ten sprzedał również jego akcje na identycznych warunkach.
  • Pierwszeństwo (sprzedaży akcji)

Następnie mogliśmy posłuchać o stażach w Redmond. Nie muszą mnie do nich przekonywać. Gdybym mógł od razu bym tam wyjechał. Świetni wpis w CV, kontakty, atrakcyjne wynagrodzenie. Nic, tylko się zapisywać. Skoro to takie oczywiste, po co taka prezentacja? W prezentacji chodziło głównie o rozdawanie gratisów. Tak więc wybaczamy im małe show.

Następnie prezentacja o Windows Azure. Poprowadzona wspólnie przez Sylwia Ptaszek-Pydyn (Microsoft Polska) i Piotra Bubacz.  Temat Azure przewija się od dawna. Pamiętam prezentację z czasów gdy byłem w Dublinie. Z własnego doświadczenia powiem, że technologicznie wypada naprawdę fajnie. Wspiera Linuxa i Windowsa. Fajne skalowalne środowisko. Jedyny problem jaki mieliśmy podczas korzystania to brak odpowiedzi ze strony obsługi technicznej. Ale artykuł nie jest o mnie. Prelegenci omówili jak można szybko postawić prostą stronę WWW na Windows Azure. Ponoć maks 15 min. Podczas prezentacji nawet krócej. Wspomnieli jak wybierać lokalizację serwera. Przy okazji poruszyli aspekty prawne i ceny. To bardzo logiczne, im dalej tym drożej. Azure to ponoć świetne miejsce do backupów danych. Według badań 3x tańszy od konkurencji.

Całość zakończyła prezentacja o Windows Phone. Osoby, które trochę lepiej znają mój profil technologiczny wiedzą, że strasznie napalam się na pisanie natywnych aplikacji w Javascripcie. Jak twierdził prelegent na Windows 8 jest to niemożliwe. Za to C# jest prostym językiem wartym nauczenia. Prezentacja przyjęła postać Live coding.  Całkiem spoko. Ładny kod.  Nawet słynnego efektu dema się doczekaliśmy ;D

Wracając do Windows Phone & Javascript. Znalazłem coś takiego: Developing in HTML5 and Javascript for Windows Phone

Reasumując IT Academic Day to całkiem fajna konferencja. Można poznać ciekawych ludzi. Poznać nowinki ze świata i usłyszeć kilka ciekawych haseł. Polecam jako miłe oderwanie od codzienności. Wskaże wam kierunek rozwoju. Ale to tylko moja opinia.

 

{Niestety miałem awarię aparatu więc zdjęcia z imprezy są niedostępne}

 

Imagine Cup

Wstęp

Witam wszystkich czytelników 😉 Tym razem opiszę naszą przygodę z technologiami Microsoftu i Imagine Cup. Pewnie niektórzy z was wiedzą, że sam jestem raczej linux’owcem.  Choć do przeciwników MS, zdecydowanie nie należę. Ostatnio nawet zostałem zwolennikiem Windows Azure. Musze przyznać, że jest to bardzo dobra platforma.

Ale zaraz. Czytelnikom mojego bloga, coś może nie pasować. W końcu zwykle opisuję eventy w Poznaniu. A tu w Poznaniu nic nie było… Imagine Cup to impreza  zdalna. Na pewno dwa pierwsze etapy. Później mamy finały krajowy i finały światowe. No pomiędzy jeszcze finały online. Dla projektów które spodobają się użytkownikom, jest to to coś w rodzaju drugiej szansy 😉

Lean Canvas

Tym razem postaram się, żeby mój wpis był trochę bardziej edukacyjny niż zwykle. Tak więc opiszę nie tylko samą imprezę ale też technologie i problemy jakie mieliśmy. Pierwszy etap to stworzenie biznes planu. My skorzystaliśmy z Lean Canvas. Choć po prezentacji Olsa wiem, że nie był to dobrze zbudowany Lean. Za to nakreśla koncepcję projektu 😉
canvas

Problem

Czyli o co nam chodziło?? Pierw zerkamy na problemy jakie ma rozwiązywać nasza aplikacja:

1. Brak nowoczesnego mobilnego systemu do głosowania.
2. Wolna komunikacja z wieloma użytkownikami ( dość nie zręcznie napisane. Zresztą nie tylko to 😀 Chodziło o grupowe podejmowanie decyzji)
3. Brak prostego narzędzia do badania rynku.

„Customer segment” – Grupa docelowa

Dla kogo miała być aplikacja?

Z uwagi na idę która przyświecała projektowi wyróżniliśmy 2 grupy docelowe:

1. „Zwykli ludzie” chcący się podzielić swoją opinią lub ciekawi opinii innych. Chcący zwrócić uwagę na problem w swojej okolicy.

Model biznesowy: dostęp darmowy – cel uzyskania efektu skali

2. Firmy. Gdy prowadzimy biznes w sposób nowoczesny. Interesuje nas nie tylko zdanie nasze ale również zdanie innych. Chcemy wejść w interakcje z pracownikami i klientami. Chcemy wspólnie podejmować decyzje właśnie ta aplikacja może pomóc 😉

Model biznesowy: minimalny koszt pobrania aplikacji [skalowalność] + potencjalne dedykowane funkcjonalności dla firm [minus to brak skalowalności i wymaganie odpowiednich zasobów ludzkich]. Dodatkowy plus to bliski kontakt z klientem i możliwość czerpania zysków przed osiągnięciem efektu skali.

Produkt

Czyli nasze rozwiązanie problemu. W naszym wypadku miała być to aplikacja (część mobilna Windows Phone i Serwerowa). Jej podstawowe funkcjonalności to:

1. Stworzenie mobilnego systemu ankiet. (możliwość głosowania zdalnego i z urządzenia ankietera).
2. Ankiety miejskie. Czyli np ankieta „podpięta” do pomnika/boisk/sklepu przed twoim domem. Dość dziwnie to nazwaliśmy bo „social form”. Z perspektywy czasu stwierdzam, że była to bardzo niewymowna nazwa.

Warto dodać, że część aplikacji miała być open source. Jest to dość ważne dla modelu biznesowego. W końcu coraz częściej to, że produkt jest za darmo nie wystarcza 😉

Kilka problemów z MVP

Zerkając na nasze grupy docelowe i funkcjonalność produktu można zobaczyć dość mglisty obraz aplikacji. No właśnie „mglisty”. Wynika to z faktu, że przedstawiłem tu produkt w idealnej postaci (gdyby były wszystkie bajerki jakie byśmy chcieli). My mieliśmy pewne swoje MVP (Minimum Viable Product). Sprowadzał się do w pełni darmowej wersji aplikacji (pozwala zacząć pozyskiwać użytkowników. Jeszcze zanim mamy funkcjonalność za którą ktoś zapłaci. Tak więc mówiąc prościej bez całej części z firmami. Tylko ankiety miejskie i ankiety społecznościowe.

Rzut oka na resztę Canvasa

Napiszę co jeszcze poprawił bym w reszcie. Czyli wszystko to co aż mnie kuje w oczy 😉 Kanały sprzedaży – – widać moje niezdecydowanie. Ale też coś za tym stoi. Nie znałem do końca grypy docelowej. Rozpoczęcie promocją małym kosztem wieloma kanałami nie jest takie głupie. Pozwala sprawdzić gdzie przyjmuje się produkt i skupić na tej grupie.

Warto jeszcze napisać wprost: To Unfair Advantage jest makabrycznie skopane. To pole powinno być puste. Bo nie jest to „nieuczciwa przewaga”, której nie da się skopiować. Coś co mamy tylko my. Czyli wcale nie jest taka nieuczciwa 😉

Jak widać dość sporo rzeczy do poprawy. Canvas jest fajnym narzędziem. Pozwala uporządkować wizję produktu. U nas jest trochę rozmyta z uwagi na pośpiech i pewne przenikanie etapów postępowania (można to określić jako chaotyczność). Ale o tym dalej.

Zaczynamy z Imagine Cup

Żeby opis naszego produktu nie przenikał się z opisem samej imprezy dodałem go wcześniej. Teraz będę opisywał same zawody. Czyli jak to się zaczęło.  Dość sporo chodziłem po różnych imprezach. W różnego typu zawodach startowałem już kilka razy. Np dwa razy w HackFest. Raz z aplikacją do eventów (2011) i raz z aplikacją do grafiki 3d  (2012). Kilka razy byłem na Startup Sprint. Raz nawet byłem w wyróżnionym składzie na Startup Weekend. – Niestety nie mogę znaleźć wpisu z tej imprezy. Jest pewnie jeszcze z czasów zanim zacząłem prowadzić bloga 😉

Imprezy te nauczyłem mnie, że wydarzenia tego typu pomagają zbudować team. Nawet nietrwały, jedynie na czas zawodów. Pozwalają popracować wspólnie. To naprawdę wiele daje. To był podstawowy motor do startu w zawodach tego typu. Ale nie od razu wiedziałem, że będzie to IC. Wybór Imagine Cup nie był taki oczywisty. Osobiście wahałem się między Google Summer  Of Code a Imagine Cup.  Mimo, że nasz projekt jest częściowo Open Source. Google Summer kładzie duży nacisk na otwartość i nie komercyjność projektu.  Dlatego też nasz projekt bardziej nadawał się na Imagine Cup. W końcu „egzotyczny i Open Sourcowy” model biznesowy, to nadal model biznesowy 😉 Tak więc IC sprzyja młodym przedsiębiorcom.

Formujemy team

Jak łatwo stwierdzić samo postanowienie wzięcia udziału w zawodach nie wystarczy. Prace zaczynamy od utworzenia teamu. Mi udało się za drugim razem 😉 Samo dotarcie do ludzi jest dość proste wystarczy fb i np grupa rocznika. Jacyś znajomi z it… Z mojego roku zgłosiły się dwie osoby. Bardzo dobra okazja, żeby poznać nowych ludzi. Dzięki uprzejmości ZOO Coworking, udało nam się bezpłatnie zorganizować spotkanie w salce konferencyjnej. Darisza Walczak udzielił nam też paru wskazówek i porad + pomógł spotkać kilku ciekawych ludzi :)

Jednak pierwszy team się rozsypał. Dlaczego?? Z uwagi na rzeczy kompletnie niezwiązane z projektem. Jeden z uczestników stwierdził, że nie czuje się na siłach. Zna tylko podstawy c++ i  nie ma czasu/nie czuje się na siłach uczyć się nowych technologii. Niestety przekonywania, że projekt jest tworzony na luzie. Argumenty żeby poznać strukturę zawodów, zdobyć doświadczenie, nauczyć się pracować w grupie… nie pomogły. Warto zaznaczyć, że nie ma sensu nikogo zmuszać czy przekonywać na siłę bo nie o to chodzi. Kolejny miał dość sporo zleceń. tak więc zrezygnował z udziału by móc sprostać wymaganiom rynku ;D
Potem przez projekt przewinęła się jeszcze jedna osoba. Trochę pomagałem mu z Zendem. Zrezygnował z podobnych powodów. Zbyt dużo komercyjnych zleceń…

Team udało mi się utworzyć gdy skontaktowałem się z Robertem. Osobą poznaną podczas Letniaj szkoły e-biznesu. Gdy się kontaktowaliśmy był jeszcze na stażu w Hiszpanii. Tak więc przez część projektu mieliśmy jedynie kontakt zdalny 😉 Dzięki Robertowi udało się zwerbować kolejnego członka teamu.  Był to Łukasz Ogan. Tak więc skład mieliśmy dość mieszany 😀 Mieliśmy osobę z Uniwersytetu Ekonomicznego, z Uniwersytetu Mikołaja Kopernika i mnie z Politechniki.

Praca zdalna

Brzmi dość ryzykownie. W końcu wielu boi się pracy zdalnej. Muszę przyznać, że nie było tak strasznie jak to ludzie malują. Jednak też nie zawsze można tak pracować. U nas system ten sprawdził się dzięki temu, że każdy miał zestaw niezależnych zadań. Każdy mógł pracować niezależnie i komunikacja nie była wąskim gardłem.

Nie znaczy to, że nie było wąskich gardeł. Jeśli chodzi o wąskie gardła które mieliśmy to był to wolny czas członków zespołu. Każdy z nas miał studia, jakieś dodatkowe zajęcia i projekt. Niestety na projekt momentami brakowało czasu. Była to główna przyczyna tej chaotyczność w różnych aspektach projektu. Do tego dużą część czasu straciliśmy na różne sprawy organizacyjne i załatwianie wszelkich niespodziewanych spraw. Na pewno więcej niż się spodziewałem.

Z etapu do etapu

Imagine Cup składa się z kilku etapów. Pierwszy to formowanie teamu, tworzenie modelu biznesowego i planowanie produktu. To już opisałem 😉 Następnie jury wybiera 30 najlepszych teamów, które dostają się do drugiego etapu. Teraz, naszym celem jest stworzenie produktu 😉 Wychodzą tu wszystkie niedociągnięcia z pierwszego etapu. Jeśli tam coś źle zaplanowaliśmy tu to wyjdzie. Oczywiście nie oznacza to że błędów tych nie można naprawić 😉 Tworzenie produktu to ciągłe udoskonalanie.

O technologi, ludziach, motywacji i ideologii

Przy tworzeniu produktu najważniejsza jest technologia. O ile większość z nas miała mniejsze lub większe doświadczenie w tworzeniu stron internetowych i programowaniu. Mało kto bardzo dobrze znał technologie MS. Można się  było zapytać: co tam do cholery robimy… Nasza obecność była pewną odpowiedzią na złagodzenie i zdecydowaną poprawę polityki Microsoftu, względem „reszty świata”. Co mam na myśli? MS bardzo wielu kojarzy się z bardzo korporacyjną firmą i ludźmi z „klapkami na oczach”. Bardzo często spotkałem osoby, które uważały, że jeśli coś nie jest MS to nie jest warte uwagi. Bez argumentów. Często be znajomości tematu… Takie zamknięcie dla samego zamknięcia.

Właśnie to mnie zawsze odstraszało od tej firmy. Tworzyło to granicę przez, którą mogliśmy korzystać z zamkniętych technologi MS lub z Open Source. Ale nie jednocześnie. Wydaje mi się, że rozwiązanie tego problemu zaczęło się od Windows Azure i Internet Explorer. MS dogadał się z twórcami pozostałych kluczowych przeglądarek i pogłębił współpracę z W3C W efekcie IE zobowiązało się dostosować do pozostałych przeglądarek, a reszta dołączać wszystkie nowe rozwiązania IE do standardu. W tym obsługi WebGL.  Twórcy Azure włożyli bardzo wiele wysiłku, żeby zapewnić serwery w chmurze nie tylko miłośnikom Windowsa ale także Linuxa. Sam korzystam i muszę przyznać, że moje wrażenia są bardzo pozytywne.

Do tego dochodzi Windows8 i zmiana podejścia do tworzenia oprogramowania. Windows 8 można zaprogramować w wielu językach. Powiem więcej. Można je mieszać. Dzięki wprowadzeniu WinRT mamy wspólne API.

windows8-platform-tools_2

Jak widać jest naprawdę interesująco. Natywne aplikacje w Javascript. Metro Style… i wiele więcej. Właśnie te innowacje nas zainspirowały. To nowe oblicze pisania aplikacji i nowe innowacyjne technologie. „What is next?”

Wybór technologi

Nasz plan zakładał, że jest dostatecznie dużo czasu na napisanie czegoś w JavaScripcie. Rzeczywiście czasu było wystarczająco. Ale mimo, że napisałem mała aplikacje na w8 (desktop) w js… założenie, że podobnie pójdzie z WP było błędne. Ale może jeszcze napiszę o założeniu jakie miałem: Zakładałem, że uda nam się napisać natywną aplikację w JavaScript. Jeśli to się nie uda wykorzystamy Phonegap’a (z którym miałem już styczność). Tak więc miałem dwie alternatywne technologie na jedną platformę i czułem się bezpieczny. Zbyt bezpieczny…

Bezpieczeństwo to rzecz względna. Możesz dopłynąć tak blisko brzegu, że prawie czujesz grunt pod nogami, po czym nagle roztrzaskujesz się na skałach.

Nie ma nic tak złudnego i zdradliwego jak poczucie bezpieczeństwa. Nie ma również nic tak zdradliwego i niebezpiecznego jak operowanie na niepełnych danych. Bo właśnie to czego nie widać może wszystko zepsuć. Tak jak u nas. Ale o tym za chwilę.

Sprzęt

Mimo licznych telefonów rozdanych przez MS, my nie mieliśmy żadnego. Jak łatwo się domyślić był to pewien problem. Jednak nie wszystkie telefony trafiły do studentów. Część została ofiarowana uczelni. Dzięki temu i pomocy kn-atena udało się wypożyczyć jeden 😉 Tak więc mieliśmy swojego Windows Phone do pracy. Niestety, jak się później okazało z W7.

Góra lodowa

Żeby ten art nie był jak drugi Pan Tadeusz (taka lektura), nie mam czasu skupiać się na szczegółach.  Nam W7 trochę ukrzyżował plany. Wtedy jeszcze nie wiedziałem, że nie każdy WP ma wspomniane bajerki. Po protu technologie te wychodziły w podobnym okresie. Jak by nie patrzeć jest to słabe overview rynku. Słabe mimo włożenia dużej ilości pracy.

Została alternatywna technologia Phonegap. Jak się okazało sama była jak góra lodowa. Choć sam phonegap jest tylko prostym interfejsem. Nakładką na system która pozwala wykorzystać standardową przeglądarkę do tworzenia aplikacji. Nakłada bardzo wiele ograniczeń . Nie wszystkie przeglądarki udostępnia pełną funkcjonalność jako widget. Do tego nie zawsze w takim trybie mamy wsparcie karty graficznej.

Bugi, bugi evrywhere

Podczas pracy z Phonega’pem z Windows Phone napotkaliśmy na masę Bugów. Jeden opisałem bardzo dokładniej i chciałbym go tutaj przytoczyć. Tz. problem z mapami. Wyobrażacie sobie go ankiety bez map?? My też nie:

Jak działają można zobaczyć na YT:

Cały kod do pobrania na GitHub. Dodatkowo oczywiście odpowiedz twórców silnika na oficjalnym forum (opublikowana para miesięcy po zakończeniu się zawodów):

Unfortunately this is NOT (reasonably)possible in the IE9 implementation of the WP7.1 WebBrowser.  There are actually no native mouse events sent to the browser outside of mousedown + click.  I did considerable work to add mouse events to the browser, however I was only ever able to support single-touch, and not multitouch.

Windows Phone 8 has IE10 which supports PointerEvents, so you can deal with fingers/mouse/stylus all consistently, although this will not help your WP7 app.
The best I can suggest would be to use the mousedown/mousemove/mouseup events to pan the map, and add buttons to zoom in + out.
OR write a native map pluging ( this may be out of scope, but this would be great if someone did it. )
Cheers,
Jesse
Jak widać perełka. Do tego jeszcze kilka błędów w silniku jak.
White Screen – IE ma na sztywno ustawiony kolor tła na biały. Jeśli przełączamy stronę i jej tło jest czarne (zgodnie z metro style). Dostajemy biały błysk. Tz standardowe tło zanim wczyta się strona.
Link Select Box – Jedynym rozwiązaniem White Screen jest użycie Ajax. Niestety czeka nas kolejna miła niespodzianka 😀 Czyli podświetlenie linka i problem z odświeżeniem ekranu.  Tz po załadowaniu nowej strony zaznaczenie linka (generowane przez system) nie jest odświeżane. Rozwiązaniem problemu jest nie korzystanie z zdarzenia click i ładowanie strony za pomocą js. Oczywiście nie możemy korzystać ze tagu <a> Brzmi magicznie? Tak jest naprawdę.
Do tego dochodzą jeszcze problemy z ajaxem, blokowaniem przewijania strony, skalowaniem strony… kto wie o czymś jeszcze zapomniałem. Przy okazji dam jeszcze jedną radę. Jeśli korzystacie z Phonegapa warto pisać aplikację bez ciężkich frameworków. Np my użyliśmy jQuery Mobile. Wzwiązku z czym mieliśmy problemy z optymalizacją + mieliśmy problem z kilkoma bugami. p niepoprawnym budowaniem się stron.

Ostatni kamień milowy

Jak widać powaliła nas technologia. Żeby pójść dalej musieli byśmy mieć 64-bitowy komputer. Miałem 32-bitowy. Żeby odpalić środowisko deweloperskie do WP8 potrzebne są 64bity. Do tego wspomniany Windows Phone 8. Czyli razem koło 2.5 / 3 tyś złotych. Pieniędzy nie było.

Efekt końcowy

Tak pisałem o tych bugach i pisałem. Można by się spodziewać, że nic nie zrobiliśmy. Nic bardziej mylnego. Zrobiliśmy produkt. Po prostu czas, który musieliśmy w to włożyć był relatywnie wysoki i efekt odbiegał od naszych oczekiwań.

Strona domowa projektu zrobiona przez Łukasza:

stronawww

Podsumowanie

Być może dużo nie brakowało. Jednak nie dostaliśmy się do 3 etapu, czyli finałów krajowych. Teraz będziemy uzbrojeni w większe doświadczenie. Większą wiedzę i chęć walki. Jeśli miałbym coś doradzać nowym zawodnikom to skupienie się na materiałach promocyjnych. Szczególnie 2min filmiku i przykładaniu wagi do szczegółów. Skupieniu się na tym jak inni odbierają nasz produkt.

Literatura

Na koniec jeszcze trochę literatury, która przydała mi się podczas projektu. Projekty Open Source. Trochę podstaw ale potrafi zainspirować 😉