[PL] GET.NET w Łodzi 2017

TL;DR

Polski Piątek: o polskim community, o tym co u nas w trawie i w technologii piszczy, a także o innych rzeczach wszelakich.

GET.NET

22 kwietnia 2017 odbyła się kolejna odsłona konferencji GET.NET w Łodzi. Miałem przyjemność przedstawić tam moją ostatnią prezentację The Only Thing That Matters, w nowej, nieco zmodyfikowanej formie. Jak zwykle w przypadku GET.NET, obsługa prelegenta stanęła na wysokim poziomie.

Sama prezentacja to prawie 50 minut treści. Udało mi się zebrać feedback od 10 osób. W większości bardzo pozytywny. Czekam na wyniki ankiet!

Jak zwykle uczestniczyłem jako słuchacz tylko w kilku prezentacjach. Najciekawszą, która zaintrygowała mnie możliwościami nowego podejścia, była prezentacja Krzysztofa Cieślaka pokazująca niezwykle ciekawy projekt o nazwie Fable, kompilujący F# do JavaScriptu używając do tego Babela. Z webem niestety nie miałem dawno do czynienia, ale posiadanie możliwości pisania swojego kodu w F#, np. funkcji dispatchujących w Redux wyglądało niesamowicie.

SII, dzięki za zaproszenie i możliwość prelekcji. Do rychłego zobaczenia!

[PL] Eksperymenty małe i duże

TL;DR

Polski Piątek: o polskim community, o tym co u nas w trawie i w technologii piszczy, a także o innych rzeczach wszelakich, jak na przykład o eksperymentowaniu.

Jak?

W ciągu ostatniego pół roku udało mi się przeprowadzić kilka eksperymentów. Każdy z nich był ograniczony:

  1. w czasie (próbuję coś przez miesiąc, pół)
  2. w kosztach (nie wydam 100000 na samochód aby zobaczyć jak się jeździ, ani nie powiem w domu, że teraz coś testuję i nie ma mnie przez miesiąc)
  3. efektach ubocznych (eksperymentem dla mnie nie jest jedzenie 10 czekolad dziennie – to głupota).

Jednym z moich eksperymentów było niejedzenie słodyczy przez miesiąc. Eksperyment zakończył się dobrym wynikiem. Słodyczy nie jadłem przez miesiąc, i już nie będę jadł. Jeżeli na konferencji, na której nie ma kanapek/sałatek a tylko ciastka, zjem jedno, dwa. Natomiast nie mam już ciągów słodyczowych. Koszt eksperymentu jest ujemny: nie kupuję słodyczy. Efekt uboczny: prawdopodobna redukcja tkanki tłuszczowej. Ojej ojej, co ja z tym zrobię 😛

Kolejnym, wstawanie o 5:45 a nie o 6:00 po to, aby zawsze móc poćwiczyć przed pobudką najmniejszego z domowników i nie mieć problemów z “niewyrabianiem się”. Eksperyment zakończony sukcesem w pierwszym tygodniu. Koszt: męczenie się podczas ćwiczeń, na które zawsze jest czas. Skutki uboczne: trochę lepsza kondycja i siła.

Kolejnym, są Polskie Piątki. Sprawdzam siebie, czy potrafię pisać o rzeczach mniej technicznych i Was, czy chcecie czytać o takich tematach.

Po co?

Nie wiem jak zareaguje moje ciało, umysł, otoczenie dopóki czegoś nie zmienię. Więc zmieniam, w ograniczonym zakresie (czas/koszt/efekty uboczne) i patrzę co z tego wychodzi. I tyle. Nie wszystko wyjdzie, nie wszystkiego się podejmę, ale sprawdzanie i korelacja efektów po, daje ciekawe wyniki.
Nie jestem tak dobrym eksperymentatorem jak Tim Ferris, który żyje ze swoich 4 godzin.  Jednocześnie mogę powiedzieć, że eksperyment z robieniem eksperymentów ma jak na razie pozytywne konsekwencje. I ten właśnie, postaram się przekuć w nawyk. A Ty, jak testujesz siebie?

[PL] zdobywanie wiedzy i kompetencji dziś

TL;DR

Polski Piątek: o polskim community, o tym co u nas w trawie i w technologii piszczy, a także o innych rzeczach wszelakich.

Za 15 lat

Jeżeli ktoś, podczas moich studiów, powiedziałby mi, że za 15 lat będę mógł uczęszczać w Warszawie codziennie na inny meetup związany z technologią, powiedziałbym, że to czyste żarty (wyraziłbym się bardziej dosadnie). I nawet, jeżeli cały czas jestem oszołomiony ich liczbą, to jest to przyjemne oszołomienie.

Poza dużą liczbą wydarzeń, charakteryzują się one też dużą różnorodnością. Mamy:

Jest tego naprawdę, zarówno pod względem liczby, jak i formy bardzo dużo. I dobrze!

Elitarność

Zdobywanie wiedzy traci na elitarności. I nie chodzi o to, że sama wiedza jest “gorsza”. Po prostu dostęp do niej jest coraz bardziej powszechny i coraz więcej zależy od jednostki, od Ciebie. Masz chęć i siłę poświęcić 2 godziny dziennie aby pouczyć się Go? Idziesz na meetup, rozmawiasz z ludźmi, oglądasz prezentacje, idziesz na szkolenie, kodujesz i zdobywasz wiedzę. I już.

Chęć

Pozostaje tylko jedno. Twoje chęci, zapał, wytrwałość, siła i kilka innych zasobów, którymi musisz się wykazać. To jak, wykażesz się? 🙂

 

[PL] var Sovia = new Tech();

TL;DR

Polski Piątek: o Warszawskiej Grupie .NET, o polskim community, o tym co u nas w trawie i w technologii piszczy, a także o innych rzeczach wszelakich.

Jakość, jak zawsze

Po raz kolejny polski oddział Microsoft dostarczył wydarzenie na bardzo wysokim poziomie var Sovia = new Tech (); Nie chodzi mi tu o zawartość merytoryczną (o tym później), ale o organizację, wybór miejsca na konferencję jak i rzeczy tak trywialne jak jedzenie czy dobrą kawę. Po ostatnim lokalnym wydarzeniu “Build” wyszedłem oczarowany. Także w tym wypadku, wysoko postawiona poprzeczka została utrzymana na tym samym poziomie.

Kontent, czyli zawartość

Prezentacji było wiele. To co ciekawe to przepleciono wystąpienia związane z technologiami MS z prezentacjami produktów czy startupów na nich bazujących. I tak na przykład, o Hololensach słyszał każdy. Nie każdy wie, że powstaje projekt, który umożliwi sprawne i szybkie przygotowanie chirurga do wykonania operacji serca. Cognitive Services użyte w kwerendzie SQL generującej raport razem z wiekiem osoby, której zdjęcie pozyskaliśmy? Żaden problem.

Prezentacja Satyi Nadelli. Na żywo. W Warszawie. Tego jeszcze nie było.

Ciekawą pozycją była walka w klatce starego .NET z nowym .NET core dostarczona przez Bojana Vrhovnika i Jakuba Gutkowskiego. Było zabawnie, z jajem. Pojawiły się też smoki 😉

Społeczności

Event bez społeczności nie znaczy nic. I tym razem nie zabrakło ludzi, dyskusji i dywagacji na przeróżne tematy. Ewidentnym plusem spotkania była możliwość porozmawiania z osobami albo pracującymi w MS albo pozostającymi w bliskich relacjach.

Jeżeli var Sovia = new Tech(); zagości u nas ponownie za rok, to będzie to mój pewnik w konferencyjnym kalendarzu.

[PL] Druga Unconference Warszawskiej Grupy .NET

TL;DR

Polski Piątek: o Warszawskiej Grupie .NET, o polskim community, o tym co u nas w trawie i w technologii piszczy.

Unconference WG.NET

W poprzednim tygodniu uruchomiliśmy drugą edycję Unconference Warszawskiej Grupy .NET. Tym razem ugościł nas Demant Technology Centre, mający siedzibę w Q22, w Centrum Warszawy.

Samo spotkanie dogrywaliśmy na podobnych jak ostatnio zasadach: kilka osób ze zgłoszonymi wcześniej tematami, moderatorzy w liczbie wystarczającej do obsłużenia wszystkich grup i flipboardy, po jednym na każdą grupę. Chwilkę, chwilkę. Flipboardy?

No laptop no slides

Flipboardy, bo konwencja przez nas założona zakazuje używania laptopów i slajdów. Chcemy, zamiast prezentacji i tony tekstów/memów/fotek na slajdach, zobaczyć żywą dyskusję pomiędzy uczestnikami a prelegentem a także pomiędzy samymi uczestnikami.

Jedna runda unconference w naszym wypadku zajmuje około 45 minut, po czym następuje 15 minut przerwy podczas której można się posilić, skofeinić i porozmawiać z innymi uczestnikami i prelegentami. Po tym następuje kolejna runda i kolejna przerwa i tak do:

  1. padnięcia wszystkich
  2. wyrzucenia nas z budynku “bo jest po trzeciej rano”
  3. wyczerpania się tematów

Która z przyczyn jest najczęstsza, nie zdradzę.

Nowy prelegent, nowy słuchacz

Unconference dodatkowo pomaga w jednym aspekcie. Jeżeli zastanawiasz się, czy warto kiedyś powiedzieć coś na forum grupy/konferencji, to ten format jest idealny do sprawdzenia tego. 10-20 osób słuchających Ciebie przy flipboardzie nie wymaga wyobrażania sobie wszystkich “nago”, wystarczy po prostu dyskutować i przekazywać swoją wiedzę naturalnie, zgodnie ze swoim naturalnym warsztatem.

To jest pyszne!

Nowa forma spotkania cieszy się bardzo dobrym odbiorem,

Dzięki za fajne spotkanie i merytoryczną konwersację 🙂

Jak dla mnie ta forma może być na stałe 🙂

co powoduje, że na pewno nie raz do niej wrócimy.

Async programming model

TL;DR

This is a follow up post to Async pump for better throughput in Azure. Please read the first before moving forward.

Feedback

I’ve been given a lot of feedback about my Async pump post. In a few cases this blog post from Ayende was quoted as it describes exactly the same approach. You can read the post, but more meaningful are comments provided by Kelly Sommers and Clemens Vasters.

The model

The await statement has simple semantics. It breaks your code and schedules the following part as a task continuation. This heavy lifting is done on the C# compiler level, so you don’t have to worry about. The model of this extension is simple: define a task and a continuation. Nothing more, nothing less. With my approach, that was a “trick”

That’s the premise of the “trick” that is allegedly achieving parallel execution of I/O and compute work here. That is, however, not the purpose of the asynchronous programming model and of the Windows IO completion port (IOCP) model. The point of IOCP is to efficiently offload IO work from user code to kernel and driver and hardware and not to bother the user code until the IO work is done

by Clemens Vasters

What it basically says is once you await on IO operation, your code that is run after, is scheduled on the IO thread

As IO typically takes very long and compute work is comparatively cheap, the goal of the IO system is to keep the thread count low (ideally one per core) and schedule all callbacks (and thus execution of interleaved user code) on that one thread. That means that, ideally, all work gets serialized and there minimal context switching as the OS scheduler owns the thread. The point of this model is ALREADY to keep the CPU nicely busy with parallel work while there is pending IO.

by Clemens Vasters

So with your code awaiting some IO, you’ll call IO, next the code after await is executed on the IO thread, as it’s assumed to be lightweight, another IO occurs, again the same thread dispatched the callback. With the async pump I proposed, comes a danger, as when we follow this partially awaitless approach the continuation code is

not on a .NET poll thread, but an IO pool thread. The strategy above sits on that IO pool thread past the point where you are supposed to return it (which is the next IO call) and thus you might force the IO pool to grow

by Clemens Vasters

Summary

Measure first. Think. Then think again. The “trick” worked in my case, improving performance for initialization of one app (I needed it in the beginning). Does it work in every case and should be used in general, I’d say no. It’s good to follow the programming model. If you don’t want to, you must have strong reasons for it.