## How fractals helped my students to master package development in R

Last semester I taught an R programming at MIMUW. My lectures are project oriented, the second project was related to package development. The idea was straightforward: each team of students shall create a package that produces IFS fractals (based on iterated function systems). Each package shall have two generic functions: create() and plot(), documentation and vignette. Fractals shall be implemented with the use of S3 or S4 classes.

I have students with different backgrounds. Mostly statistics, but some are from physics, psychology or biology. I was a bit unsure how they will deal with concepts like iterated contractions.
After all results exceeded my expectations.

Guess what is happening with students engagement when their packages start producing nice plots. Their need/hunger for more leads to beautiful things.

This team got interested in nonlinear transformations. They manage to create Apollonian Gasket generator and much more. See their vignette and package here.

This team got interested in probabilistic mixtures of two fractals. They developed a Shiny app that mixes two sets of contractions with given mixture proportions. Here is a mixture of Sierpinski gasket and a tree. Find out their vignette here.

This team got interested in random fractals. They developed fractal generator that draws parameters of each contraction. In result they get beautiful random shapes like these. Here is their vignette.

And these two teams got interested in different ways of fractal colouring. Vignettes of Team 1 and Team 2

After all it turns out that fractals are very addictive!
Use it with care 😉

## BetaBit: Tato, kiedy ty mi to wreszcie wytłumaczysz….

Czasem, gdy rozmawiam o edukacji matematycznej dla dzieci, temat schodzi na zagadnienia typu: w jakie słodkie opakowanie ubrać tę gorzką pigułkę wiedzy, aby dziecko chciało ją połknąć. Że to niby tyle różnych cukierków dookoła, tu gra, tam facebook, trzeba z takimi gigantami rywalizować o uwagę dziecka.

Ale czy tak faktycznie jest? Mój syn mnie kiedyś zabił pytaniem ,,Tato, kiedy ty mi wreszcie wytłumaczysz co to jest DNA”? Zacząłem się zastanawiać, jak wyglądałaby interakcja pomiędzy uczniem a nauczycielem, gdyby uczeń robił co tylko może by wyciągnąć od nauczyciela wiedzę, a nauczyciel co tylko może by żadnej wiedzy nie przekazać. Do jakich pytań posunąłby się uczeń aby wyrwać nauczycielowi skrawki tajemnicy?

Skracając te przemyślenia i przechodząc do pointy.
Napisałem krótkie opowiadanko o takim chłopcu co bardzo chciał wiedzieć jak rozwiązać zagadkę z mostami w Królewcu.
Znajdziecie je tutaj.

## Czy transakcyjne podejście do ucznia jest dobre w Data Science?

Sporo czasu spędziłem ostatnio w National Institute of Education (NIE) in Singapore gdzie kształci się nauczycieli na każdym poziomie nauczania. Gdy patrzeć na wyniki Singapuru przez pryzmat badania PISA, to trudno uwierzyć, że żyją tu ludzie a nie roboty. Wyniki badania z 2015 roku plasują Singapur na 1 miejscu w praktycznie każdym kryterium (czytanie, matematyka, przyroda) i to z taką przewagą, że od drugiego miejsca dzieli ich przepaść.

Poruszając się po tym mieście-państwie widać w każdym miejscu olbrzymi nacisk położony na edukację, od ogrodu botanicznego (z masą edukacyjnych elementów), przez telewizję (z długimi programami na tematy naukowe i ekonomiczne) po metro.
Singapur ma też bardzo wysoki współczynniki nierówności Giniego, łatwo wyobrazić sobie prosty mechanizm w którym nacisk na edukacje wynika z chęci pozyskania lepszej pracy, wyższych zarobków itp.

W rozmowach z ludźmi z NIE ciekawiło mnie w jaki sposób teraz starają się kształtować zasady nauczania, co traktują za największe wyzwanie.
I tutaj ciekawa historia. Część z nich narzeka na bardzo transakcyjne podejście uczniów do edukacji. Podejście w którym za określony wysiłek czeka określona nagroda. Ale nie ma czasu na zwykłą ciekawość, zerkanie w bok, schodzenie ze szlaku. W artykułach o wysokich wynikach z PISA pojawia się pytanie: a gdzie innowacje?

Jak ta historia ma się do tytułowego kształcenia w Data Science? Hype wokół Data Science spowodował, że wiele osób traktuje ten zawód jako prosty sposób znaczącego podbicia sobie pensji po opanowaniu kilku konkretnych technik. Skupiając się na słówku Data zamiast na Science.

Tymczasem w dużej części do innowacji prowadzą nowe, pomysłowe zastosowania danych, a nie bezmyślne stosowania maszynek do młócenia danych. Aby znaleźć pomysłowe zastosowanie trzeba myśleć kreatywnie, ryzykować, schodzić ze szlaku. Próbować, upadać i próbować dalej aż się uda.

Hipoteza: programy studiów nie są na to gotowe. Często zaliczanie oparte jest o punkty, które można uzyskać za różne, niewielkie, bezpieczne zadania. Im bardziej pynkty są za bardzo konkretną aktywność, tym bardziej mamy transakcyjne/zamknięte podejście do nauczania.
Zamiast szukać smakołyków w danych, studenci mogą czuć pokusę by szukać punktów potrzebny do zaliczenia.
Nie jest to zreszta wina studentów, ponieważ zazwyczaj programy nauczania i kryteria określają nauczyciele akademiccy. Punkty wydają się być sprawiedliwym rozwiązaniem.
Moim zdaniem takie podejście jest jednak szkodliwe w tej mistycznej dyscyplinie jaką jest Data Science.
Jak nie transakcje to transformacje. Przedmiot (taki jak warsztaty badawcze) powinien zmieniać uczestnika (a uczestnikiem przedmiotu jest i uczeń i nauczyciel), wystawiać go poza strefę komfortu, generować nowe doświadczenia i rozwijać ciekawość do eksperymentowania.

## 0 -> 1

Rysunek po prawej stronie to zdjęcie okładki książki Scotta Berkuna. Ładnie oddaje urok chwili, w której rodzą się nowe pomysły.
Scott pisze wiele na temat zarządzania projektami innowacyjnymi i na temat samej innowacyjności. Warto poczytać i posłuchać.

Przypomniała mi się ta książka i ten obrazek gdy oglądałem trzeci projekt studentów z Technik Wizualizacji Danych [MiNI PW] i Programowanie i Wizualizacja w R [MIM UW].
To dwa różne kursy, ale zrobiłem im wspólny trzeci projekt i wspólną prezentację – wynikowe plakaty wiszą na 2. piętrze wydziału MiNI.
Zadanie było sformułowane mgliście i ogólne: przygotuj plakat formatu A2 pokazujące wybrany temat dotyczący Polski lub Europy. Możesz użyć ggplot2.
Zostało sporo miejsca dla autorów na sprecyzowanie pomysłu i formy prezentacji.
Co z tego wyszło? Poniżej część zgłoszonych plakatów.

Jeżeli któryś przypadnie Ci drogi czytelniku do gustu, to do końca tygodnia możesz na niego zagłosować. Wystarczy, że zeskanujesz telefonem kod QR umieszony w prawym górnym rogu (część punktów z projektu studenci otrzymują za otrzymane głosy, jedno urządzenie liczy się jako jeden głos).
Ciekaw jestem na ile preferencje szerszej grupy odbiorców będą się zgadzać z moimi.

Tematy większości plakatów są bardzo ciekawe, wykonanie bardzo dobre. Kliknij by powiększyć.

## Najgorszy wykres 2017 roku

Zbliża się Sylwester, czas więc wybrać najgorszą prezentację danych opublikowaną w roku 2017.
Konkurs na najgorszą wizualizację przeprowadzamy co roku od 2012 (edycja 2016, edycja 2015, edycja 2014, edycja 2013, edycja 2012). W tym roku było wiele ciekawych zgłoszeń przesłanych przez facebook, emailem, od studentów przedmiotu Techniki Wizualizacji Danych. Ze zgłoszeń wybrałem 10 niezwykłych wykresów, mogących moim zdaniem śmiało rywalizować o tytuł najgorszego wykresu ever.

Zasada plebiscytu jest prosta. Do końca roku można wskazywać swoje typy na najgorszy wykres, głosując za pomocą ankiety umieszczonej na końcu tego wpisu (w jednym dniu można głosować tylko raz. Jednocześnie można wskazać do 5 kandydatów). Po nowym roku zobaczymy, który wykres otrzymał najwięcej głosów. To on otrzyma tytuł „Zniekształcenie roku 2017”. Aby ułatwić głosowanie, każdy kandydat ma skrótową wpadającą w ucho nazwę.

1. Detale są bez znaczenia

Ten wykres pochodzi z tvn24. Za pomocą słupków przedstawiono nakłady na zdrowie jako % PKB. Co jednak ciekawe, długość słupków wcale nie jest proporcjonalna do prezentowanych liczb. Słupki systematycznie sobie rosną zaznaczając wyłącznie kolejność. Wartość zakodowana przez pierwszy słupek różni się od wartości zakodowanej przez czwarty tylko o 1,2 pp. Różnica pomiędzy dwoma ostatnimi to 1,5 pp. Długość słupków tylko wprowadza w błąd. Wartości liczbowe zostały zignorowane – jak widać to tylko detale.

2. 12%

Ten wykres pochodzi z benchmarku nvidia. Wygląda na to, że wzrost wydajności jest naprawdę duży (pierwszy słupek jest 3x mniejszy od ostatniego), przynajmniej dopóki nie spojrzy się na oś. Więcej podobnych ciekawych zniekształceń jest opisanych tutaj.

3. Gdzie jest Wally?

Mapki (czyli kartogramy) są wspaniałe, wyglądają elegancko, często są kolorowe i jeszcze powodują przyjemne uczucie zrozumienia, przecież ‚łał widziałem gdzieś ten kształt – to chyba kontury Polski’.
Do pewnych analiz kartogramy się jednak zupełnie nie nadają, a jedną z nich jest porównywanie dwóch kartogramów.
Np. jak znaleźć istotne różnice na poniższych kartogramach?

4. Będzie lepiej!

Wykresy słupkowe to jedna z najprostszych w użyciu technik prezentacji danych. Trudno zrobić je źle, a jednak, poniższy wykres pokazuje, że się da. Prezentuje dane z lat 2016/2017 oraz prognozy. A prognozy nie dość, że są optymistyczne, to jeszcze narysowane w taki sposób…
Źródło

5. Jak tankować, to tylko na Śląsku

Za Forbes podajemy wykres ze średnimi cenami benzyny w różnych województwach. Gdzieś musi być drożej, a gdzieś musi być taniej, ale czy z poniższego wykresu łatwo odczytać, że maksymalna różnica cen pomiędzy województwami to 5%?

6. Nie interesuję się

Poniższy wykres pochodzi z portalu oko.press i prezentuje odpowiedzi na pytanie które wydarzenia można uznać za najważniejsze w 2016 roku.
Jeden z nielicznych przypadków w których legenda jest 3 razy większa niż wykres, sam wykres całkowicie nieczytelny, właściwie jedyne co można odczytać to, że na pytanie ,,Które wydarzenie było najważniejsze” w poprzednim roku najczęstsza odpowiedź to ,,Nie wiem, nie interesuję się, nie zastanawiałem się”.

7. Walec

Jak przedstawić cztery liczby by wyglądały poważnie? Dodajmy dwie kategorie, masę cyfr najlepiej nic nie wnoszących i koniecznie pokażmy dane w 3D. Gdy jeszcze zastosujemy różne agregacje dla różnych słupków oraz dwie kategorie, wtedy będziemy mogli być pewni, że z wykresu niewiele da się odczytać.

Żródło wyjaśnia związek tego wykresu ze smogiem w Wadowicach.

8. Ślub tylko w miesiącu z r i roku z 0

W serwisie Bankier znaleźć można taki zaskakujący wykres przedstawiający liczbę małżeństw.
Z jakichś niezwykłych powodów autor wykresu zdecydował się pomiędzy pomiarami dodać dołki aby wykres był ciekawszy.

9. Wrocław na tle innych miast

Na portalu wroclaw.pl znaleźć można porównanie finansów Wrocławia z pięcioma innymi dużymi miastami. Dane ciekawe, ale sposób prezentacji dziwaczny (w raporcie jest więcej takich kwiatków). Np. co można odczytać z poniższej szarlotki (podpowiedź, segmenty szarlotki NIE są posortowane po wielkości)?

10. Będzie impreza

Na portalu biznes.onet umieszczono portret zamożnego Polaka. Poniższy wykres pokazuje rozkład wielkości miesięcznych oszczędności. Nie przypuszczałem, że to powiem, ale: te dane znacznie lepiej byłoby pokazać na wykresie kołowym. A tutaj, skąd te kolory, skąd te wielkości?

Który wykres zasługuje na tytuł ,,Zniekształcenie roku 2017''?

View Results

## Data Science Masters – najlepsze prace magisterskie z Data Science i Uczenia Maszynowego

Do 20 stycznia 2018 można zgłaszać prace do konkursu Data Science Masters.
Zgłaszać można prace magisterskie obronione na dowolnej polskiej uczelni w latach 2016 lub 2017.

Data Science i Uczenie Maszynowe to dwie bardzo szerokie dziedziny. Aby je objąć w Jury znajdują się matematycy i informatycy z czterech różnych uczelni z szeroką gamą zainteresowań, od bioinformatyki, ekonometrii po Big Data czy analizę obrazów.

Łączna pula nagród to 8 500 zł, a prezentacja zwycięskiej pracy jest zaplanowana na dzień liczby Pi, czyli 14 marca.

Celem konkursu jest pokazanie jak ciekawe problemy rozwiązywane są w ramach prac magisterskich w Polsce. Mamy nadzieję, że będą one inspirowały przyszłe tematy prac.

Więcej informacji: https://www.datasciencemasters.edu.pl/

## Z pamiętnika nauczyciela akademickiego – Irracjonalne wybory

TL;DR

Wybory studentów są czasem nieracjonalne, przynajmniej z mojego punktu widzenia. Ale czasem to znaczenie lepiej i bardzo mnie to cieszy.

Dłuższa wersja

Na przedmiocie Techniki Wizualizacji Danych mam w tym roku bardzo silną grupę matematyków ze specjalności SMAD (statystyka i analiza danych) i informatyków ze specjalności PAD (przetwarzanie i analiza danych). W semestrze mamy trzy projekty i spodziewałem się, że wyniki każdego będą tak ciekawe, że je tutaj opiszę.

Ale…

W terminie oddanie pierwszego projektu zadałem też całkiem wciągającą pracę domową. Projekt dotyczył wizualizacji danych komunikacji miejskiej VaVeL, praca domowa dotyczyła przeprowadzenia badania sprawdzającego jak ludzie odczytują dane z wykresów. Z projektu można było dostać do 100 punktów, praca domowa jest punktowana 10 punktów, z możliwością dodatkowego bonusu 10 punktów jeżeli będzie bardzo dobra. Projekt był dosyć silnie skierowany na konkretny dobór danych, praca domowa pozostawiała bardzo szerokie pole do interpretacji.
Czasu oczywiście niewiele, warto zrobić jedno i drugie ale projekt to 100 punktów a praca domowa max 20.
Na co studenci poświęcili więcej czasu?
Racjonalnie (więcej o tym na samym końcu) byłoby się skupić głownie na projekcie. Ale patrząc na wyniki, więcej czasu i serca widać w pracach domowych. Badania, które wykonali na pracę domową były tak ciekawe, że to właśnie o nich napiszę poniżej.

Ale o co chodzi

Punktem wyjścia do pracy domowej był esej Percepcja obrazu oraz trudność w wyobrażenia sobie co odbiorca widzi na naszym wykresie, jeżeli nie jest obciążony naszą wiedzą, co na tym wykresie chcieliśmy pokazać. Na wykładzie omawialiśmy sobie jak nasz mózg widzi wykresy, jak rozumie dane i co potrafi z wykresu odczytać a czego nie.

I co z tego wyszło

Jedna z grup (Alicja Gosiewska, Kinga Jamróz, Maja Kalinowska, Karolina Marcinkowska) przygotowała internetową ankietę weryfikującą co internauci widzą a czego nie widzą a następnie zebrała wyniki w raporcie.

Ankietę można znaleźć w internecie TUTAJ i bardzo polecam ją zrobić. Jest świetnie przygotowana, zaskakująca i to po prostu dobra zabawa.

Wyniki z zebranych badań w postaci raportu są dostępne TUTAJ.
Uwierzcie, że po zrobieniu ankiety, będziecie chcieli wiedzieć jak zrobili ją inni.

Ciekawych prac domowych było oczywiście więcej.
Zespół (Mateusz Mazurkiewicz, Wojciech Rosiński, Dawid Stelmach) sprawdzał czy wykresy słupkowe sa faktycznie takie dobre jak je prowadzący rysuje.
Ta praca mierzy się z wykresami typu tree plot (Ahmed Abdelkarim, Aleksandra Hernik, Iwona Żochowska)
Z piktogramami (czy ISOTYPE) mierzyła się grupa (Paweł Pollak, Karol Prusinowski, Karol Szczawiński)
A zespół (Anton Lenartovich, Mateusz Mechelewski) rozstrzygał komu podobają się wykresy typu płatki śniegu.

A co do tytułowej irracjonalności.
Na jesienną pluchę polecam książkę Dana Ariely (dostępna też jako audiobook) Predictably Irrational: The Hidden Forces That Shape Our Decisions.
Oczywiście zachowania studentów wcale nie są irracjonalne. Zamiast wybrać zadanie z większą liczbą punktów wybrali zadanie ciekawsze w dłuższej perspektywie jest lepszym wyborem.
A to, jak pisałem na wstępie, bardzo mnie ucieszyło.

## intsvy: PISA for research and PISA for teaching

The Programme for International Student Assessment (PISA) is a worldwide study of 15-year-old school pupils’ scholastic performance in mathematics, science, and reading. Every three years more than 500 000 pupils from 60+ countries are surveyed along with their parents and school representatives. The study yields in more than 1000 variables concerning performance, attitude and context of the pupils that can be cross-analyzed. A lot of data.

OECD prepared manuals and tools for SAS and SPSS that show how to use and analyze this data. What about R? Just a few days ago Journal of Statistical Software published an article ,,intsvy: An R Package for Analyzing International Large-Scale Assessment Data”. It describes the intsvy package and gives instructions on how to download, analyze and visualize data from various international assessments with R. The package was developed by Daniel Caro and me. Daniel prepared various video tutorials on how to use this package; you may find them here: http://users.ox.ac.uk/~educ0279/.

PISA is intended not only for researchers. It is a great data set also for teachers who may employ it as an infinite source of ideas for projects for students. In this post I am going to describe one such project that I have implemented in my classes in R programming.

I usually plan two or three projects every semester. The objective of my projects is to show what is possible with R. They are not set to verify knowledge nor practice a particular technique for data analysis. This year the first project for R programming class was designed to experience that ,,With R you can create an automated report that summaries various subsets of data in one-page summaries”.
PISA is a great data source for this. Students were asked to write a markdown file that generates a report in the form of one-page summary for every country. To do this well you need to master loops, knitr, dplyr and friends (we are rather focused on tidyverse). Students had a lot of freedom in trying out different things and approaches and finding out what works and how.

This project has finished just a week ago and the results are amazing.
Here you will find a beamer presentation with one-page summary, smart table of contents on every page, and archivist links that allow you to extract each ggplot2 plots and data directly from the report (click to access full report or the R code).

Here you will find one-pagers related to the link between taking extra math and students’ performance for boys and girls separately (click to access full report or the R code).

And here is a presentation with lots of radar plots (click to access full report or the R code).

Find all projects here: https://github.com/pbiecek/ProgramowanieWizualizacja2017/tree/master/Projekt_1.

And if you are willing to use PISA data for your students or if you need any help, just let me know.

## Storytelling w pracy badawczej analityka danych

Czy prezentacje statystyk lub narzędzi do analiz statystycznych mogą być porywające? Oczywiście, jeżeli tylko statystyki układają się w historię, a narzędzia służą odkryciu tej historii.

Najlepszym dowodem jest prezentacja Hansa Roslinga na TED 2006 wykorzystująca program Gapminder aby opowiedzieć o zmieniającej się demografii współczesnego świata.
Prezentacja ma ponad 10 lat, a wciąż oglądam ją z zainteresowaniem, ponieważ prof. Hans Rosling, jak nikt inny, zamienił rząd statystyk dotyczących dzietności i czasu życia w barwną wyprawę przez kontynenty i czas.

Idealnie pokazał przy tym możliwości narzędzia Gapminder (Trendalyzer), które kilka miesięcy później odkupił Google.

Warsztaty

Dlatego na wtorkowe seminarium badawcze grupy MI2DataLab zaprosiliśmy mistrza storytellingu – Marka Stączka, autora bloga http://stoslow.pl, oraz firmy szkoleniowej http://www.edisonteam.pl.

Magistranci, doktoranci i sympatycy naszej grupy mieli okazję przez godzinę uczestniczyć w warsztatach, a później mieliśmy sesję pytań i odpowiedzi.
Poniżej opiszę kilka wybranych rodzynków z tego spotkania.

Zainteresowani tematem znajdą sporo ciekawej treści na ww. stronach lub tutaj.

Po co?

Po co wykorzystywać storytelling w przypadku pracy badawczej? Gdy tworzymy nowe rozwiązania, algorytmy, narzędzia analizy danych, zależy nam by były one używane. Czasem wplecenie historii w opowieść o naszych algorytmach może pomóc. Dwa przykłady:

1) Przygotowujemy referat na konferencję. Przeciętna konferencja to 2-3 dni po 6-8 godzin wypełnionych 20-30 minutowymi referatami. W ciągu jednego dnia słyszymy o kilkunastu rozwiązaniach i w oczywisty sposób tylko kilka z nich zapamiętamy. Co zrobić aby to nasze rozwiązanie było zapamiętane? Spróbujemy znaleźć dla naszego rozwiązania znaleźć ciekawe zastosowanie!
Poświęćmy trochę czasu aby słuchacze dokładnie zrozumieli problem, który chcemy rozwiązać. Łatwiej będzie im zapamiętać nasze rozwiązanie gdy w pamięci będą mieli bardzo konkretną potrzebę, która do niego doprowadziła.
Nie tworzymy jeszcze jednego testu post-hoc, ale rozwiązujemy problem dotyczący istotności określania, które kraje mają istotnie różne wyniki w testach PISA.

2) Dobra historia ma bohaterów, których nazwy da się spamiętać. Opisując nasz nowy algorytm nadajmy mu też łatwą do zapamiętania nazwę. Bardzo często nazwy rozwiązań są bardzo długie, nie mieszczą się w jednej linii, długością przypominają streszczenie. ,,Odporny nieparametryczny test dla zbioru hipotez oparty o sekwencyjne kryterium wyboru grup.” Trudno tę nazwę odtworzyć po kilku minutach. Nawet jeżeli uda się komuś zrozumieć co nasze rozwiązanie robi, dobrze by było, by we właściwym czasie pamiętał też jak je znaleźć.

Czy zawsze?

Ciekawe wątki pojawiły się też podczas sesji z pytaniami.

1) Czy storytelling jest zawsze potrzebny? Czy do każdej prezentacji naukowej trzeba koniecznie szukać odpowiedniego story?
No cóż. Moim zdaniem nie.
Na przykład, kiedy jakość rozwiązania można łatwo ocenić za pomocą jednej, łatwo mierzalnej wartości, to lepiej się skupić na tej mierzalnej wartości.
Trzeba było mieć rozwiązanie z najmniejszym błędem predykcji, najmniejszą złożonością obliczeniową czy najlepszą kontrolę błędu?
Wystarczy pokazać, że nasze rozwiązanie jest najlepsze w tym kryterium.
Choć też warto pamiętać, że sytuacji w których jakość rozwiązania mierzy się łatwo jedną liczbą jest bardzo mało.

2) Jak szukać tej ciekawej historii dla naszego rozwiązania?
Gdy oglądamy dobrą prezentację to zazwyczaj nie widzimy, ile pracy trzeba było włożyć w jej przygotowanie. Zazwyczaj świetnych historii trzeba trochę poszukać. A jak już się znajdą to trzeba je doszlifować. Warto je więc opowiadać możliwe często.

## MI^2 Data Talks

Z początkiem semestru ruszamy z nowym seminarium badawczym w DataLabie.

Seminarium skierowane jest do osób zainteresowanych pracą badawczą w obszarze tworzenia narzędzi (metodologii i softu) do modelowania statystycznego.

Na zmianę będziemy mieć referaty o:

* jak tworzyć dobre oprogramowanie statystyczne (GiHub, Travis, Continuous Integration, Czysty Kod),
* jak komunikować wyniki swoich badań (przygotowanie prezentacji, artykułu, plakatu na konferencje, cheatsheetu),
* Journal Club.

Lista tematów kolejnych spotkań dostępna jest na stronie http://mi2.mini.pw.edu.pl/index.php/kalendarz-spotkan/

Spotykamy się we wtorki w godzinach 12-14 w DataLab (pokój 44, Koszykowa 75, Warszawa). Zapraszamy.