Całkiem niedawno M. w mailu zapytał, czy znam Advent of Code. Ano znam. Nawet miałem o tym notkę. Odkąd poznałem, to bawię się regularnie. Z przerwą w 2019 z powodów, których nie pamiętam.
Ponieważ z tego co pamiętam nie robiłem jeszcze zadań „poza konkursem”, to dobry moment na podsumowanie. 2018 – 10 gwiazdek. 2020 – 33 gwiazdki, 2021 – 29 gwiazdek. W tym roku póki co 21 gwiazdek. Oczywiście na ilość gwiazdek rzutuje wiele czynników, z których istotnym jest czas, który mogę poświęcić na zabawę.
Niemniej staram się siąść codziennie rano o szóstej do komputera i porywalizować. Głównie ze znajomymi z pracy. Wspólny dashboard z wynikami to dobry motywator. I AoC ma to rozwiązane bardzo fajnie. W sumie tego najbardziej zabrakło mi w opisywanym rok temu Advent of Cyber.
Czy coś się zmieniło? Wydaje mi się, że tak. Dorobiłem się schematu rozwiązywania zadań. Po pierwsze, wszystko rozwiązuję w Pythonie. Po drugie, standardu dorobiły się struktura katalogów, nazewnictwo plików, nazewnictwo plików z wejściem, czytanie wejścia. Parsowanie wejścia, i debug podczas pisania też. Niekoniecznie zawsze jest przez to wszystko szybciej, ale mam wrażenie, że czas rozwiązywania jest stabilniejszy.
Wydaje mi się, że lepiej radzę sobie ze strukturami danych i podziałem na funkcje. Staram się pisać bardziej pythonowo, ale różnie to wychodzi. Z innych obserwacji – do rozwiązywania niektórych zadań (np. części drugiej dziś) przydaje się zabawa w CTFy.
Ogólnie Advent of Code bardzo mi się spodobał. Na tyle, że wykupuję co roku AoC+. Warto, bo to prawdziwe pay what you want.
W tym roku ponownie uczestniczyłem w Hacktoberfest. Początkowo wydarzenie traktowałem sceptycznie. Zresztą słusznie, bo problem mało istotnych commitów i spamu jak najbardziej istnieje. Potem jednak stwierdziłem, że to fajny motywator, żeby coś zrobić w open source. Zabawę z Hacktoberfest zacząłem więc w 2020, z repozytoriami nie uczestniczącymi oficjalnie w Hacktoberfest.
W zeszłym roku dołączyłem do firmowego wydarzenia. W ramach gry we własną grę, bawiliśmy się w zbieranie jak największej ilości gwiazdek. Czyli robienie commitów do repozytoriów z ich jak największą ilością. W duchu fair play, czyli bez spamu i poprawiania literówek. Trochę taki CTF.
Zatem w pełnym wymiarze uczestniczyłem w Hactoberfest 2021. Mógłbym dodać and all I got was this lousy t-shirt. Bowiem po spełnieniu warunków na odpowiednią liczbę commitów można było wybrać nagrodę – koszulkę lub zasadzenie drzewa. Lubię t-shirty, więc wybrałem koszulkę, mimo średniego koloru. Przy okazji dowiedziałem się, ile kosztuje darmowa koszulka po przejściu przez cło i Pocztę Polską. Otóż w 2021 przy deklarowanej wartości przesyłki $5,95, naliczono 5 zł VAT oraz 8,5 zł opłaty pocztowej. Razem 13,5 zł, czyli mniej więcej połowa wartości paczki. Zaś sama paczka dotarła w marcu 2022. Dowód:
Nie powinno zatem dziwić, że w tym roku wybrałem posadzenie drzewa zamiast koszulki. Tegoroczny Hacktoberfest to trochę kontynuacja poprzedniego. Znowu zbieranie gwiazdek z ekipą z firmy. Z drugiej strony jest to powrót do korzeni, bo moje tegoroczne commity to głównie tłumaczenia do tldr. A przecież przygodę z open source zaczynałem od tłumaczeń w ramach Polish Debian Documentation Project, potem tłumaczyłem na polski w ramach GNU Polish Translation Team.
Oczywiście były też commity związane z kodem, oczywiście w Pythonie. I tu spostrzeżenie, że ludzie potrafią znaleźć błąd, zdebugować go, znaleźć miejsce, gdzie powinien być poprawiony i… założyć issue, wszystko pięknie opisując. Nie oceniam bo przyczyny mogą być różne, choć dziwię się, bo nakład pracy na założenie issue na GitHub z pięknym udokumentowaniem błędu i debugiem jest IMVHO większy, niż poprawka w kodzie. W każdym razie widać, że warto commitować i poprawiać takie drobne błędy.
Jak pisałem wcześniej, nadchodzi koniec edytora Atom. Z pewnych względów, na maszynie służbowej i tak zacząłem korzystać z Visual Studio Code . Dlatego postanowiłem przyspieszyć proces migracji także na prywatnej maszynie. VSC nie było złe, więc zgodnie z zapowiedzią dałem szansę VSCodium.
Czym jest VSCodium?
VSCodium to fork microsoftowego Visual Studio Code, zbudowany z otwartego kodu źródłowego, dostępny na wolnej licencji. Dodatkowo pozbawiony dodatków od Microsoft służących do zbierania telemetrii/śledzenia. Poza tym, wszystko powinno działać tak samo.
Po tym zostaje już tylko aktualizacja danych o repozytoriach i instalacja pakietu codium:
apt update; apt install codium
Wtyczki z marketplace
Nieprzypadkowo napisałem, że wszystko powinno działać tak samo. Słowo powinno powinno dać do myślenia. Otóż po instalacji pozwoliłem sobie „ściągnąć” konfigurację, a w zasadzie używane wtyczki, z marketplace od kolegi z pracy, korzystającego z VSC. Mocno się zdziwiłem, bo większość potrzebnych wtyczek, tych od Microsoft, nie była w VSCodium dostępna do instalacji. Nie drążyłem wtedy tematu i po prostu zainstalowałem VSC.
Jednak po szybkim zbadaniu tematu okazuje się, że nie ma najmniejszego problemu z korzystaniem z marketplace Microsoft w VSCodium. Zgodnie z tym, co piszą w dokumentacji, wystarczy w pliku
I możemy cieszyć się dostępem do wtyczek zupełnie jak w Visual Studio Code.
Wtyczki
Nie ukrywam, że bardziej podobało mi się działanie wtyczek w Atomie. Na przykład isort wywołany tamże po prostu sortował wszystkie importy. W przypadku VSC nie ma tak dobrze. Z tego co udało mi się znaleźć, można „naprawić” pojedynczy import.
Istnieje obejście, które jest podpowiadane w opisie konfiguracji wtyczki, czyli dodanie do settings odpowiedniej sekcji. Jest to nieco nieintuicyjne, bo w czytamy to będąc w… ustawieniach, czyli settings. Chodzi jednak o inne settings. Jak znalazłem pod tym linkiem, trzeba zmienić zawartość pliku
~/.config/Code/User/settings.json
Na razie tyle. Z doświadczeń w pracy wynika, że spokojnie da się żyć z VSC zamiast Atoma. Na razie pracuje mi się w VSC gorzej, ale raczej chodzi o drobną zmianę przyzwyczajeń i dokładniejsze poznanie nowego programu. Z wyboru zamiennika jestem wstępnie zadowolony.