Konkurs Daj Się Poznać to świetna inicjatywa mająca za zadanie skłonić programistów do wyjścia ze swojej piwnicy. Uczestnicy mają przed sobą dwa zadania – prowadzić bloga technicznego i rozwijać projekt open source. Obie te aktywności skupiają się na udostępnieniu innym osobom naszego kodu, doświadczeń, czy luźnych przemyśleń, a tym samym wystawieniu się na oceny i krytykę. Pewnie nie tylko dla mnie ta wizja wydawała się przerażająca. Jednak okazało się, że dzielenie się swoimi doświadczeniami daje dużo satysfakcji, a ten początkowy lęk ma też pozytywny aspekt objawiający się dokładnym przygotowaniem merytorycznym do każdego wpisu. W końcu nie chcę napisać jakiś bzdur i wyjść na debila 😀

Razem ze mną do konkursu przystąpiło około 1000 śmiałków i każdy musiał zmierzyć się z podobnymi problemami. Dzięki temu powstało naprawdę dużo ciekawych wpisów i przez te 3 miesiące zupełnie nie musiałem się martwić o znalezienie dobrej lektury do śniadania. Czytanie postów innych było dla mnie motywacją do zgłębiania wiedzy i poznawania oraz stosowania dobrych praktyk, wzorców itp. Była to również doskonała okazja do lepszego poznania technologii spoza mojej działki. Mimo szczerych chęci nie byłem w stanie pochłonąć wszystkich interesujących mnie treści, ale to dobrze – będę miał lekturę na później. W osobnym wpisie chcę przygotować listę ciekawych blogów konkursowych.

Mój udział w konkursie

DSP 2017 było dla mnie wyjątkowo udane. Zrealizowałem cel, który stawiałem sobie przed rozpoczęciem, czyli dotrwanie do końca konkursu blogując dwa razy w tygodniu i rozwijając projekt. Udało się nawet osiągnąć o wiele więcej – dzięki głosom innych uczestników konkursu znalazłem się wśród 25 ścisłych finalistów i ostatecznie zająłem 12 miejsce.

Jeżeli chodzi o postęp prac nad robotem, to udało się zaprojektować elektronikę i polutować elementy, oraz złożyć część mechaniczną, czyli przede wszystkim mocowania silników i koła. Na płytce znalazłem jeden błąd, który będę chciał poprawić w ewentualnej kolejnej wersji PCB. Mocowania kół również wymagają lekkiej poprawy. Napisałem także drivery do peryferiów procesora umożliwiające proste sterowanie robotem za pomocą Bluetootha. Aktualny stan prac można zobaczyć tutaj – link.

Rozwijając projekt zdobyłem nowe umiejętności głównie w dwóch obszarach:

  • Travis CI – narzędzie do continuous integration. Konfiguracja, jaką chciałem osiągnąć nie była trywialna i spędziłem nad nią wiele godzin. Przy okazji odkryłem różne kruczki. Swoje zmagania opisałem tu i tu, a efekt końcowy można znaleźć na GitHubie.
  • Druk 3D – kupiłem własną drukarkę, a następnie przetopiłem wiele filamentu. Stoczyłem walkę z kilkoma programami do obsługi drukarki próbując uzyskać odpowiednią kalibrację i drukować elementy w zadowalającej jakości.

Jak widać, większość czasu zużyłem na aktywności niezwiązane z programowaniem. Miałem zamiar poznać bibliotekę cpputest, pobawić się trochę algorytmami sterowania i estymacji oraz zobaczyć jak się w takim projekcie sprawdzi projektowanie architektury zaczynając od szkieletu wszystkich bloków i stopniowo wypełniając go szczegółami. Przy okazji chciałem poużywać githubowych narzędzi do prowadzenia projektu – issue trackera i wiki. Żadnego z wymienionych celów nie udało mi się zrealizować w sposób, który by mnie satysfakcjonował, więc będę miał jeszcze co robić.

Co chciał bym wiedzieć przed rozpoczęciem DSP?

W tym rozdziale postanowiłem zebrać różne przemyślenia, do których doszedłem podczas udziału w DSP i które chciałbym usłyszeć przed startem. Może przydadzą się komuś, jeśli zostaną zorganizowane kolejne edycje konkursu. Niektóre z nich dotyczą konkretnie DSP, inne tyczą się ogólnie prowadzenia bloga.

Konfiguracja strony przed konkursem

Bardzo się cieszę, że bloga założyłem w styczniu, a konkurs rozpoczął się dopiero w marcu. Dzięki temu przez styczeń i luty zdążyłem stoczyć walkę z hostingiem, wordpressem, wtyczkami itp. Dzięki temu kiedy rozpoczął się konkurs nie musiałem tracić na to czasu. Poza tym miałem już na koncie kilka postów, więc wiedziałem lepiej ile pracy wymaga pisanie dwóch postów tygodniowo. Na konfigurację bloga na początku nie warto tracić za dużo czasu i dopinać każdego detalu na ostatni guzik. Można w tym utknąć na długo. Jednak koniecznie trzeba skonfigurować filtr antyspamowy, bo inaczej:

Śledzenie czasu

Wielu uczestników konkursu zbierało dane dotyczące czasu spędzanego na różne aktywności związane z projektem i blogiem. Ja niestety tego nie robiłem i teraz żałuję. Wiem tylko, że w trakcie DSP spędziłem nad blogiem i projektem bardzo dużo czasu, ale nie mam pojęcia ile konkretnie. Poza tym mam wrażenie, że nie wykorzystywałem tego czasu tak efektywnie, jak mogłem. Jednak nie dysponuję żadnymi danymi. Darmową aplikacją działającą na telefonie i komputerze polecaną przez uczestników DSP jest Toggl. Będę go musiał w końcu wypróbować.

Obrazek wyróżniający i wstęp

Obrazek wyróżniający i pierwszy akapit tekstu to dwa najważniejsze elementy pod względem marketingowym. To one są widoczne na stronie głównej i tam, gdzie reklamujemy nasz wpis, więc to one zachęcają ludzi do kliknięcia w link i przeczytania reszty artykułu. Ja nie przykładałem do tego aspektu należytej uwagi. Zwykle łatwiej mi przychodziło napisanie szczegółów technicznych, a wstęp zostawiałem sobie na koniec i przez to zwykle nie był zbyt chwytliwy. Tak samo z obrazkami do postów. Często do wpisów o programowaniu nie dawałem żadnego obrazka, bo ile można dodawać pokolorowane linie kodu. A szkoda, bo efekty dobrego obrazka są piorunujące. Na Facebooku największy zasięg przez długi czas miał post o unit testach (link) właśnie ze względu na obrazek. Dobrym pomysłem jest baza obrazków programming humour, które można dodawać w razie braku weny.

Promocja

Jeżeli już publikujemy jakieś treści w sieci, warto dotrzeć z nimi do potencjalnych odbiorców. Ja ten aspekt kompletnie zaniedbałem. Trochę wstydziłem się reklamować, żeby nie być spammerem, trochę obawiałem się krytyki, trochę bałem się, że nie będzie to nikogo interesować – wymówek jak zwykle było dużo. Ostatecznie jedynie prowadziłem fanpage na Facebooku, gdzie treści trafiały głównie do moich znajomych. Dobre kanały promocji to:

  • Twitter – można tam łatwo śledzić tweety z tagiem konkursu, dodawać swoje i komentować cudze. Ja sobie konto założyłem dopiero po gali, a w sumie mogłem wcześniej.
  • Dotnetomaniak – jest to strona agregująca wpisy z różnych blogów programistycznych. Jak sama nazwa wskazuje, skupia się na technologii .NET i z tego powodu stwierdziłem, że dla mnie nie będzie przydatna. Jednak treści okołoprogramistyczne również można tam umieszczać i zawsze jest to jakiś sposób, żeby inni programiści o nas usłyszeli.
  • Wykop – dzięki niemu możemy uzyskać dużo czytelników, jednak możemy też nawpuszczać na naszego bloga różnych hejterów. Tutaj też pewnie lepiej zamieszczać treści niezwiązane bezpośrednio z projektem.

Slack

Na potrzeby konkursu powstał dedykowany kanał na Slacku dla uczestników. Ja z niego prawie nie korzystałem, bo ciężko było blogować, robić projekt i jeszcze znaleźć czas, żeby tam siedzieć. Na pewno jest to dobry sposób na poznanie uczestników. Można tam było np. dostać feedback na temat swoich wpisów, albo zapytać się o rady dotyczące projektu. Przy okazji w pierwszym etapie to właśnie inni uczestnicy głosują, więc jeśli rozpoznają twojego bloga, masz większe szanse, żeby przejść dalej.

Prezentacja na gali

Żeby zostać prelegentem na gali trzeba było od razu odpisać na maila z tą propozycją. Ja zwlekałem długo z odpowiedzią, bo chciałem najpierw sobie wszystko przemyśleć, wybrać temat itp. i kiedy w końcu się zdecydowałem, okazało się, że już dawno wszystkie miejsca są zajęte. A przecież w mailu o gali było napisane wyraźnie, że zgłaszając się nie trzeba mieć wszystkiego przygotowanego, wystarczy tylko zgłosić chęć wystąpienia.

Dalsze plany

Strona ma już trochę wartościowego contentu, dlatego teraz warto by było ją trochę dopracować. Mam zamiar poprawić archiwum i uporządkować kategorie i tagi. Postów już jest na tyle dużo, że nie wszystko dobrze wyświetla się w archiwum i przez to trudno dotrzeć do niektórych artykułów. Poza tym chcę dodać zakładkę O mnie i formularz kontaktowy. Początkowo zaniedbałem te rzeczy, bo chciałem jak najszybciej przejść do tworzenia treści. Jednak ta strona powinna też być moją wizytówką.

Mam zamiar w dalszym ciągu aktywnie blogować i rozwijać swoją wiedzę. Planuję publikować więcej materiałów dotyczących programowania embedded, także dotyczących systemów bezpieczeństwa spełniających konkretne normy i posiadających wysoki SIL (Safety Integrity Level). Docelowo chciałbym być ekspertem w swojej dziedzinie i udzielać się w programistycznej społeczności. Aby to osiągnąć, chcę :

  • Zacząć brać udział w trójmiejskich meetupach np. w Hackerspace.
  • Pojechać na jakieś konferencje – na razie jako słuchacz, docelowo może jako prelegent. Stricte z mojej niszy chyba nie ma w Polsce żadnych konferencji, ale na takich eventach jest dużo ogólnych tematów niezwiązanych z konkretną technologią, które będą dla mnie ciekawe.
  • Prowadzić szkolenia – w swojej firmie zgłosiłem chęć przygotowania szkolenia wewnętrznego z TDD dla systemów wbudowanych. Mam już przygotowane jakieś notatki, teraz będę miał czas, żeby do tego usiąść.

Jeżeli chodzi o dalszy rozwój mojego robota Micromouse, to planuję jeszcze kilka poprawek związanych z mechaniką i przejście do doboru nastaw sterownika silników. Muszę też wlutować i skalibrować czujniki ścian. Dopiero kiedy te urządzenia wykonawcze będą działać bez zarzutu, mogę przejść do implementacji algorytmów estymacji położenia, mapowania labiryntu i znajdowania ścieżek. Sezon zawodów zaczyna się w październiku i trwa przez cały rok akademicki. Mam nadzieję, że uda mi się wystartować w jakimś turnieju. Przy okazji mam kilka pomysłów na inne projekty, ale na razie muszą poczekać.