Michał Krzysztof Feiler

Student I roku informatyki, adept programowania funkcyjnego.
Próbował robić programowanie funkcyjne zanim o nim usłyszał.

O mnie (długo)

Jestem studentem I roku informatyki na Wydziale Matematyki i Informatyki Uniwersytetu Mikołaja Kopernika w Toruniu. Od zeszłego roku akademickiego jestem członkiem Koła Naukowego Informatyków UMK. Co roku od 4 lat angażuję się w wystawę interaktywną na naszym wydziale w ramach Toruńskiego Festiwalu Nauki i Sztuki. Ciągnie mnie do programowania funkcyjnego.

Języki programowania w których aktywnie programowałem i programuję to, w kolejności chronologicznej: od ~2010 nieunikniony Bash, od 2014 do 2016 — Python, od 2015 do 2017 — Go, od 2016 do 2017 — Dart, od późnego 2016 do późnego 2017 — Java, od wczesnego 2017 do wczesnego 2018 — Clojure oraz, od późnego 2017 do teraz zaczynam z: Haskellem, C++ i może trochę Rustem.

Już od podstawówki interesowałem się programowaniem, systemami uniksopodobnymi (wówczas głównie GNU/Linux) oraz palmtopami z systemem Palm OS. W latach 2011-2014 uczęszczałem do Gimnazjum nr 24 w Toruniu im. Szarych Szeregów. W roku 2013 zacząłem grać w Ingress, grę terenową od Niantic Labs.

Jakoś przed egzaminem gimnazjalnym zacząłem się interesować luźno językiem Python, jednak zniechęcony wcześniejszymi podejściami do ANSI C (Wydanie II) minęło trochę czasu (i wspomniany egzamin gimnazjalny) nim pewnej nocy otworzyłem kilka tutoriali Pythona (m.in. Dive Into Python) i po kilku godzinach gdy już świtało stwierdziłem, że w sumie to programuję w Pythonie, przystępując do pisania swojego pierwszego skryptu do zgrywania danych o liczbie rowerów na poszczególnych stacjach Toruńskiego Roweru Miejskiego, którego operatorem był wówczas WIM System a którego strona była bardzo niewygodna (zainspirowałem się tym że tata zrobił o wiele prostszy i mocno niedoskonały a wręcz wadliwy skrypt zgrywający te dane, w awku).

W roku 2014 dostałem się do klasy "uniwersyteckiej" mat-fiz-inf toruńskiej "Czwórki", dzięki prowadzonym przez IV Liceum Ogólnokształcące w ramach naboru do tej klasy unikalnym testom umiejętności, dzięki czemu mogłem w latach 2014-2017 rozwijać się m.in. korzystając z pomocy świetnych nauczycieli, w większości będących również nauczycielami akademickimi, przyłączając się do inicjatyw jak Toruńskie Koło Naukowe Fizyków (zajmowałem się głównie administrowaniem i tworzeniem obsługi informatycznej) czy wreszcie co roku, tworząc projekty (we współpracy z innymi uczniami jak i absolwentami Czwórki) na, i pod sztandarem Czwórki biorąc aktywny udział w wystawie interaktywnej na Wydziale Matematyki i Informatyki w trakcie Toruńskich Festiwali Nauki i Sztuki, projekty jak m.in. 3manchess; czy wreszcie w ostatnim roku nauki w Czwórce dołączając (później wraz z paroma innymi osobami) z polecenia p. Damiana Kurpiewskiego do Koła Naukowego Informatyków UMK.

Dzięki uczestnictwu we wspomnianych wystawach na Festiwalach Nauki i Sztuki nawiązałem kontakty i wykazałem się umiejętnościami i podejściem, dzięki czemu pod koniec roku szkolnego 2015/16 zostałem zaproszony na staż do m.in.-gdańsko-toruńskiego startupu DLabs, gdzie przez wakacje pracowałem nad projektami głównie w języku Python, pracując m.in. z microframeworkiem Flask, bazą danych MongoDB (również replikacja), oraz technologią Docker (także Docker Compose); (choć stawiają tam również nacisk na Machine Learning, mimo początkowych prób nie udało im się wtedy wdrożyć mnie w ML — chyba po prostu nie byłem na to wtedy jeszcze gotowy).

Zanim jeszcze otrzymałem propozycję stażu w DLabs, zacząłem się interesować językiem Go. Przepisałem na niego swój główny projekt (3manchess) i generalnie byłem pod dużym wrażeniem jego łatwości i możliwości — do dziś, jak wielu, ze względu na prostotę składni polecam go trochę jak "kompilowanego Pythona", choć to bardzo nieprecyzyjne określenie. Będąc silnie pod wpływem hype'u na Go, wyrażałem nieskrycie swoje pragnienie wykorzystania go w pracy, jednak gdy przyszła okazja by stworzyć rutynkę która przemieszczałaby dane m.in. między Redisem a PostreSQL w pewien określony sposób, mimo poświęcenia paru dni nie doszło do wdrożenia ani nawet ukończenia owej rutynki (została ona zaimplementowana od nowa przez kogoś innego inaczej), głównie ze względu mój ówczesny (choć on wciąż jest) brak umiejętności dobrego przewidywania ilości czasu jaką zajęło by mi było tamto zadanie, a także zwyczajne "totrochępierwszyraz". Pierwszy staż — w firmie stawiającej na Pythona, a ja już byłem w nim tylko jedną nogą.

W roku szkolnym 2016/17, po krótkim epizodzie zafascynowania językiem Dart (efekt: kolejny niedokończony rewrite 3manchess, męczenie się z trampoline.dart etc.), ze względu na maturę zdecydowałem się nauczyć Javy. Przepisałem na nią (znowu) 3manchess, i trochę się nauczyłem o ekosystemie Javy, no i napisałem w niej maturę (miernie bo się nią nie zajmowałem jakoś bardzo). Ale przede wszystkim poczułem, że jako adept Javy mogę uczęszczać na spotkania Toruń JUG — toruńskiej grupy użytkowników Javy[, JVM i w sumie nie tylko].

Nurkując w świat toruńskich [dwóch głównych non-MS ;)] grup meetupowych, tj. Allegro Meet IT Toruń i Toruń JUG, będąc pod wpływem prezentacji i spotykając się z ludźmi z toruńskiego, i nie tylko, IT, pozyskiwałem nowe perspektywy, znajomości i inspiracje. Pod wpływem m.in. o tymże prezentacji, zacząłem się interesować programowaniem funkcyjnym, dostrzegając w nim wiele wzorców które wcześniej sam wywnioskowywałem nie znając ich nazw, pisząc m.in. 3manchess w Go, co wychodziło bardzo brzydko, dziwiąc się dlaczego nie są to wzorce powszechne i zastanawiając się, co robię źle. Wreszcie pod wpływem prezentacji Marcina Radoszewskiego na spotkaniach Allegro Meet IT oraz prezentacji Pawła Kapały na Toruń JUG, zacząłem się interesować Clojure.

Moje zainteresowanie Clojure doprowadziło do, oczywiście, kolejnego (znowu nieudanego) rewrite'u 3manchess) oraz zrobienia paru mniejszych projekcików, a jako iż stawałem się coraz mniej Pythonowy i wiele zapomniałem z frameworków Pythonowych a też zmieniła się sytuacja w projektach, toteż wraz DLabs zdecydowaliśmy o zakończeniu współpracy, chyba że coś się dla mnie znajdzie. W ramach Toruń JUG podzieliłem się tym newsem z Pawłem Kapałą, który przygarnął mnie na okres reszty wakacji abym wraz z nim popracował trochę nad projektami w Clojure (dokładniej pracowałem przy projektach w ClojureScript/React Native (re-natal/re-frame)).

Po wakacjach rozpocząłem studia na kierunku informatyka na Wydziale Matematyki i Informatyki w Toruniu, gdzie, jeśli Bóg pozwoli a ja się wreszcie skupię trochę jednak na zadaniach i egzaminach kosztem własnych projektów, zamierzam trochę ją jeszcze postudiować. W ramach zajęć uczę się C++a, teorii mnogości i algebry liniowej, w ramach projektu na Festiwal uczę się Haskella, w ramach w sumie niczego uczę się trochę Rusta.

Jeżeli ktoś przeczytał aż dotąd, to zapraszam serdecznie do przewinięcia z powrotem (lub kliknięcia na pasku) do sekcji "Kontakt". Pozdrawiam :)