Oh My Dev logo

Beta

Oh My Dev logo

Beta

Tryb nocny!
Jest trochę późno, chcemy zadbać o Twój wzrok, tutaj możesz włączyć tryb ciemny.

"Brakowało mi jednej, zbiorczej mapy"- wywiad z Kacprem, twórcą Velomapy

"Brakowało mi jednej, zbiorczej mapy"- wywiad z Kacprem, twórcą Velomapy
Aleksander Piskorz
Podziel się

Cześć Kacprze, zacznijmy od początku: skąd decyzja o tym, aby zainwestować swój czas w projekt, jakim jest Velomapa? 


Od samego początku mojej przygody z programowaniem zawsze miałem jakiś projekt, z którym się bawiłem po godzinach. Dzięki temu miałem okazję próbować różnych rzeczy, na które nie miałbym normalnie czasu w pracy. Jest to przydatne w rozwijaniu nowych umiejętności. Kilka razy moje hobbystyczne projekty ułatwiły mi rekrutację. Jest to na pewno coś, na co warto czasami poświęcić swój własny czas, szczególnie na początku kariery.


Dwa lata temu przeprowadzałem się do Gdańska. Całkiem sporo jeżdżę na rowerze i szukałem fajnych tras w nowym miejscu (co prawda studiowałem w Gdańsku, ale wtedy jeszcze rower nie był moim dużym hobby). Lokalna organizacja turystyczna na swojej stronie ma sporo opisanych szlaków, ale (przynajmniej wtedy) nie były one pokazane na mapie. Brakowało też zbiorczej mapy ze wszystkimi szlakami.


Nie było innej opcji jak zbudowanie takiej mapy samemu. Po Gdańsku zacząłem dodawać szlaki z innych części Polski. Jakiś czas później zacząłem szukać zawodów rowerowych. W internecie jest sporo różnych list i kalendarzy, ale znów - brakowało mi jednej, zbiorczej mapy agregującej wszystkie informacje.


Sam często nie mogę znaleźć dla siebie odpowiedniej trasy i mam wrażenie, że krążę “w kółko”: jak postanowiłeś rozwiązać tego typu bolączki u wielu osób?


Celem Velomapy jest prezentowanie szlaków turystycznych, które są wyznaczone przez różne, lokalne organizacje turystyczne. Są to głównie trasy poprowadzone od punktu A do B, chociaż jest też kilka pętli. Dzięki temu, że wszystkie szlaki są dostępne na jednym zbiorczym widoku, możemy łatwo znaleźć interesujący nas region. Pozwala to znaleźć inspirację i wstępnie zaplanować wycieczkę.


Oczywiście nie trzeba od razu "robić" całego szlaku. Sam często jadę tylko kawałkiem albo łączę kilka odcinków podczas jednego wyjazdu. Każdy szlak w projekcie ma swoją podstronę gdzie można pobrać plik GPX. Następnie te pliki GPX można wgrać do wybranej aplikacji służącej do nawigowania - Komoot, Locus czy innych.


Dzięki Velomapie przejechałem już sporo kilometrów w moim województwie. Byłem już też ze swoim rowerem dwa razy w Małopolsce, gdzie sporo inwestuje się w infrastrukturę, a także gdzie cały czas powstają trasy na najwyższym poziomie.


Jaka technologia stoi za Velomapą i dlaczego właśnie ta? Podejrzewam, że opcji było mnóstwo, jednak chciałbym dowiedzieć się, dlaczego zdecydowałeś się postawić na konkretne rozwiązania. 


Na co dzień pracuję głównie w Ruby, ale od jakiegoś już czasu interesuję się Elixirem. Wybór padł więc na tą technologię. Elixir jest językiem funkcyjnym. Bardzo przyjemnie się w tym pisze i można odpocząć od programowania obiektowego. Dodatkowo, popularny framework Phoenix pozwala na podobną ergonomię i szybkość pisania nowych funkcjonalności prawie jak Ruby on Rails. Przy czym jest zdecydowanie bardziej wydajny.


W poprzedniej pracy trochę się zmęczyłem pracując z Reactem i SPA (single page application) dlatego postanowiłem używać jak najmniej JavaScriptu przy tym projekcie. Do tworzenia interaktywnych map używam znanej biblioteki LefletJS. Jest ona prosta w użyciu i całkiem lekka w porównaniu do innych bibliotek.


Dodatkowo Elixir/Phoenix oferuje coś takiego jak LiveView. Jest to technologia pozwalająca na interakcje w czasie rzeczywistym. Stan i logika jest trzymana na serwerze a zmiany są wysyłane do klientów przy pomocy websocketów. Bardzo chciałbym zobaczyć, jak to się sprawuje.




Ile czasu zajęło stworzenie całego projektu - od momentu napisania pierwszej linijki kodu do oficjalnego uruchomienia strony w sieci?


Pierwsza linijka została napisana 21 marca 2020 roku. Patrząc na profil na FB, pierwszą wersję projektu ogłosiłem publicznie światu 4 maja. Oczywiście na tym praca się nie skończyła. Cały czas dodaję nowe treści i dodaję nowe funkcjonalności. Dopiero niedawno (październik 2021) dodałem możliwość zakładania kont oraz komentowania poszczególnych szlaków.


Oczywiście to wszystko, to praca po godzinach, w wolnych chwilach. Staram się też żeby projekt nie przeszkadzał mi w życiu prywatnym i w jeżdżeniu na rowerze (jak na razie w tym roku przejechałem około 6000 km :) ).


Gdybyś teraz mógł się cofnąć i zrobić coś inaczej podczas swojej pracy nad Velomapą, to co by to było? O ile oczywiście posiadasz tego typu przemyślenia.


To jest ciekawe pytanie, ale niestety nie wiem co mógłbym zrobić inaczej gdybym zaczynał od początku. Myślę, że warto takie projekty robić z kimś w zespole a nie samemu. Zawsze można podzielić się pracą i dodatkowo motywować. Niestety nie znalazłem nikogo z kim mógłbym ten projekt rozwijać.


Jeszcze niedawno zastanawiałem się czy nie lepiej było by gdybym wybrał Ruby on Rails jako główną technologię. Wydaję mi się, że mógłbym dodawać niektóre funkcje zdecydowanie szybciej. Ekosystem Ruby jest dużo bardziej rozwinięty i na wiele problemów znajdziemy już gotowe rozwiązania. 


Jednak ekosystem Elixira cały czas się rozwija. Tak samo biblioteki. Ostatecznie to, co mnie przekonało do tego wyboru, to wydajność. Niedawno dodałem wpis o Velomapie na Wykop. Wpis był na trzecim miejscu najpopularniejszych wpisów tamtego dnia, co przełożyło się na bardzo duży ruch na stronie (jak na tak młody projekt). Jednak serwer (bardzo słaba specyfikacja) praktycznie tego nie odczuł i śmiało mógłby obsłużyć kilka razy większy ruch.




Stawiasz także na aspekt społecznościowy Velomapy. Użytkownicy mogą się już zalogować, ale może zdradzisz… co jeszcze pojawi się w tym projekcie w przyszłości? Pobieranie tras od użytkowników, oceny poszczególnych ścieżek?


Aktualnie użytkownicy mogą tylko dodawać komentarze o szlakach. Chciałbym w przyszłości umożliwić przesyłanie większej ilości informacji. Takich danych jak stan nawierzchni, ciekawe miejsca na szlaku, niebezpieczne miejsca, dodawanie zdjęć...


Chciałbym umożliwić wszystkim użytkownikom robienie czegoś w stylu swoistego "audytu szlaku". Ze wsparciem społeczności moglibyśmy stworzyć bardzo przydatną bazę wiedzy o trasach i ich aktualnym stanie. W następnej kolejności moglibyśmy udostępniać część tych danych do projektu OpenStreetMap.


Kolejną rzeczą, którą planuję dodać, jest możliwość dodawania szlaków i imprez rowerowych. Chciałbym też podjąć współpracę z organizatorami zawodów i organizacjami turystycznymi. Te mogłyby same dodawać swoje imprezy czy szlaki. Zarządzanie danymi stałoby się więc znacznie prostsze.


Mam wiele potencjalnych pomysłów, ale niestety ogranicza mnie czas.


Już teraz widzę, że bez problemu mogę pobrać plik .gpx z wybranej trasy. Czy planujesz rozszerzać możliwości eksportu? Jeśli tak, to w jaki sposób?


Aktualnie nie planuję tutaj nic rozszerzać. GPX jest najpopularniejszym formatem kompatybilnym z większością urządzeń i aplikacji do nawigacji. Oczywiście jestem otwarty na sugestie użytkowników i jeżeli będzie taka potrzeba, mógłbym dodać inne formaty. 


Z jakiej infrastruktury korzystasz do utrzymania swojego projektu? Chmura czy może coś innego? 


Wybrałem chyba najłatwiejsze rozwiązanie jakie istnieje, czyli Heroku. Jest to platforma PaaS (Platform as a Service). Nie jest to najtańsza opcja, ale przebija wszystko inne swoją prostotą. Z racji tego, że pracuje głównie sam, zależało mi na czymś prostym co pozwoli mi się skupić na rozwoju aplikacji a nie infrastruktury. Baza danych to PostgreSQL, która też jest oferowana i zarządzana przez Heroku.


Oprócz płacenia miesięcznych rachunków niczym innym nie muszę się już martwić. W tym momencie korzystam z najtańszej opcji, 512 MB pamięci RAM za 7 USD miesięcznie. Specyfikacja nie zachwyca ale w zupełności radzi sobie z aktualnymi potrzebami. Bez problemu serwer dał sobie radę z “efektem Wykopu”. Jednego dnia na stronę weszło około 14 tys. unikalnych użytkowników i wygenerowało około 200 tys. zapytań. 


Do trzymania plików statycznych, w tym głównie zdjęć, używam standardowo AWS S3. Do tego używam darmowego planu z Cloudflare, dzięki któremu mam certyfikat SSL, DNS i CDN (content delivery network). 




I na koniec ostatnia kwestia: ile godzin dziennie potrzeba, aby hobbystycznie stworzyć projekt podobny do Velomapy? To pytanie bardziej ma dać obraz osobom, które zastanawiają się, czy dadzą radę rozwijać własny pomysł po “pracy od 9-17”. Jesteś w stanie to ocenić? 


Ciężko odpowiedzieć ponieważ nie liczę ile czasu spędzam i staram się pracować w wolnych chwilach. Ile dziennie? Niewiele. Tylko wtedy praca nad projektem zajmuje prawie dwa lata, jak w moim przypadku. Niestety nie pracuję nad Velomapą regularnie. Najbardziej produktywne godziny spędzam w mojej regularnej pracy. 


Nie mam konkretnego i ustalonego rytmu pracy nad hobbystycznymi projektami. Czasami pracuje godzinę albo dwie z rana przed pracą, czasami wieczorem. Są okresy, że prawie nic nie robię przez kilka tygodni - w końcu same kilometry się na rowerze nie przejadą. Cały czas pracuję zdalnie, dzięki czemu oszczędzam czas na braku dojazdów. 


Wszystko zależy od ilości poświęcenia swojego wolnego czasu. Na pewno można rozwijać projekty po godzinach, nie poświęcając tego czasu za dużo, jednak cały proces oczywiście się wydłuża.


Dzięki wielkie za odpowiedzi i rozmowę :) 


Projekt Kacpra znajdziecie tutaj.

1818komentarzy
Podziel się
20.10.2021 09:21
20.10.2021 09:21

"Brakowało mi jednej, zbiorczej mapy"- wywiad z Kacprem, twórcą Velomapy

"Brakowało mi jednej, zbiorczej mapy"- wywiad z Kacprem, twórcą Velomapy

Cześć Kacprze, zacznijmy od początku: skąd decyzja o tym, aby zainwestować swój czas w projekt, jakim jest Velomapa? 


Od samego początku mojej przygody z programowaniem zawsze miałem jakiś projekt, z którym się bawiłem po godzinach. Dzięki temu miałem okazję próbować różnych rzeczy, na które nie miałbym normalnie czasu w pracy. Jest to przydatne w rozwijaniu nowych umiejętności. Kilka razy moje hobbystyczne projekty ułatwiły mi rekrutację. Jest to na pewno coś, na co warto czasami poświęcić swój własny czas, szczególnie na początku kariery.


Dwa lata temu przeprowadzałem się do Gdańska. Całkiem sporo jeżdżę na rowerze i szukałem fajnych tras w nowym miejscu (co prawda studiowałem w Gdańsku, ale wtedy jeszcze rower nie był moim dużym hobby). Lokalna organizacja turystyczna na swojej stronie ma sporo opisanych szlaków, ale (przynajmniej wtedy) nie były one pokazane na mapie. Brakowało też zbiorczej mapy ze wszystkimi szlakami.


Nie było innej opcji jak zbudowanie takiej mapy samemu. Po Gdańsku zacząłem dodawać szlaki z innych części Polski. Jakiś czas później zacząłem szukać zawodów rowerowych. W internecie jest sporo różnych list i kalendarzy, ale znów - brakowało mi jednej, zbiorczej mapy agregującej wszystkie informacje.


Sam często nie mogę znaleźć dla siebie odpowiedniej trasy i mam wrażenie, że krążę “w kółko”: jak postanowiłeś rozwiązać tego typu bolączki u wielu osób?


Celem Velomapy jest prezentowanie szlaków turystycznych, które są wyznaczone przez różne, lokalne organizacje turystyczne. Są to głównie trasy poprowadzone od punktu A do B, chociaż jest też kilka pętli. Dzięki temu, że wszystkie szlaki są dostępne na jednym zbiorczym widoku, możemy łatwo znaleźć interesujący nas region. Pozwala to znaleźć inspirację i wstępnie zaplanować wycieczkę.


Oczywiście nie trzeba od razu "robić" całego szlaku. Sam często jadę tylko kawałkiem albo łączę kilka odcinków podczas jednego wyjazdu. Każdy szlak w projekcie ma swoją podstronę gdzie można pobrać plik GPX. Następnie te pliki GPX można wgrać do wybranej aplikacji służącej do nawigowania - Komoot, Locus czy innych.


Dzięki Velomapie przejechałem już sporo kilometrów w moim województwie. Byłem już też ze swoim rowerem dwa razy w Małopolsce, gdzie sporo inwestuje się w infrastrukturę, a także gdzie cały czas powstają trasy na najwyższym poziomie.


Jaka technologia stoi za Velomapą i dlaczego właśnie ta? Podejrzewam, że opcji było mnóstwo, jednak chciałbym dowiedzieć się, dlaczego zdecydowałeś się postawić na konkretne rozwiązania. 


Na co dzień pracuję głównie w Ruby, ale od jakiegoś już czasu interesuję się Elixirem. Wybór padł więc na tą technologię. Elixir jest językiem funkcyjnym. Bardzo przyjemnie się w tym pisze i można odpocząć od programowania obiektowego. Dodatkowo, popularny framework Phoenix pozwala na podobną ergonomię i szybkość pisania nowych funkcjonalności prawie jak Ruby on Rails. Przy czym jest zdecydowanie bardziej wydajny.


W poprzedniej pracy trochę się zmęczyłem pracując z Reactem i SPA (single page application) dlatego postanowiłem używać jak najmniej JavaScriptu przy tym projekcie. Do tworzenia interaktywnych map używam znanej biblioteki LefletJS. Jest ona prosta w użyciu i całkiem lekka w porównaniu do innych bibliotek.


Dodatkowo Elixir/Phoenix oferuje coś takiego jak LiveView. Jest to technologia pozwalająca na interakcje w czasie rzeczywistym. Stan i logika jest trzymana na serwerze a zmiany są wysyłane do klientów przy pomocy websocketów. Bardzo chciałbym zobaczyć, jak to się sprawuje.




Ile czasu zajęło stworzenie całego projektu - od momentu napisania pierwszej linijki kodu do oficjalnego uruchomienia strony w sieci?


Pierwsza linijka została napisana 21 marca 2020 roku. Patrząc na profil na FB, pierwszą wersję projektu ogłosiłem publicznie światu 4 maja. Oczywiście na tym praca się nie skończyła. Cały czas dodaję nowe treści i dodaję nowe funkcjonalności. Dopiero niedawno (październik 2021) dodałem możliwość zakładania kont oraz komentowania poszczególnych szlaków.


Oczywiście to wszystko, to praca po godzinach, w wolnych chwilach. Staram się też żeby projekt nie przeszkadzał mi w życiu prywatnym i w jeżdżeniu na rowerze (jak na razie w tym roku przejechałem około 6000 km :) ).


Gdybyś teraz mógł się cofnąć i zrobić coś inaczej podczas swojej pracy nad Velomapą, to co by to było? O ile oczywiście posiadasz tego typu przemyślenia.


To jest ciekawe pytanie, ale niestety nie wiem co mógłbym zrobić inaczej gdybym zaczynał od początku. Myślę, że warto takie projekty robić z kimś w zespole a nie samemu. Zawsze można podzielić się pracą i dodatkowo motywować. Niestety nie znalazłem nikogo z kim mógłbym ten projekt rozwijać.


Jeszcze niedawno zastanawiałem się czy nie lepiej było by gdybym wybrał Ruby on Rails jako główną technologię. Wydaję mi się, że mógłbym dodawać niektóre funkcje zdecydowanie szybciej. Ekosystem Ruby jest dużo bardziej rozwinięty i na wiele problemów znajdziemy już gotowe rozwiązania. 


Jednak ekosystem Elixira cały czas się rozwija. Tak samo biblioteki. Ostatecznie to, co mnie przekonało do tego wyboru, to wydajność. Niedawno dodałem wpis o Velomapie na Wykop. Wpis był na trzecim miejscu najpopularniejszych wpisów tamtego dnia, co przełożyło się na bardzo duży ruch na stronie (jak na tak młody projekt). Jednak serwer (bardzo słaba specyfikacja) praktycznie tego nie odczuł i śmiało mógłby obsłużyć kilka razy większy ruch.




Stawiasz także na aspekt społecznościowy Velomapy. Użytkownicy mogą się już zalogować, ale może zdradzisz… co jeszcze pojawi się w tym projekcie w przyszłości? Pobieranie tras od użytkowników, oceny poszczególnych ścieżek?


Aktualnie użytkownicy mogą tylko dodawać komentarze o szlakach. Chciałbym w przyszłości umożliwić przesyłanie większej ilości informacji. Takich danych jak stan nawierzchni, ciekawe miejsca na szlaku, niebezpieczne miejsca, dodawanie zdjęć...


Chciałbym umożliwić wszystkim użytkownikom robienie czegoś w stylu swoistego "audytu szlaku". Ze wsparciem społeczności moglibyśmy stworzyć bardzo przydatną bazę wiedzy o trasach i ich aktualnym stanie. W następnej kolejności moglibyśmy udostępniać część tych danych do projektu OpenStreetMap.


Kolejną rzeczą, którą planuję dodać, jest możliwość dodawania szlaków i imprez rowerowych. Chciałbym też podjąć współpracę z organizatorami zawodów i organizacjami turystycznymi. Te mogłyby same dodawać swoje imprezy czy szlaki. Zarządzanie danymi stałoby się więc znacznie prostsze.


Mam wiele potencjalnych pomysłów, ale niestety ogranicza mnie czas.


Już teraz widzę, że bez problemu mogę pobrać plik .gpx z wybranej trasy. Czy planujesz rozszerzać możliwości eksportu? Jeśli tak, to w jaki sposób?


Aktualnie nie planuję tutaj nic rozszerzać. GPX jest najpopularniejszym formatem kompatybilnym z większością urządzeń i aplikacji do nawigacji. Oczywiście jestem otwarty na sugestie użytkowników i jeżeli będzie taka potrzeba, mógłbym dodać inne formaty. 


Z jakiej infrastruktury korzystasz do utrzymania swojego projektu? Chmura czy może coś innego? 


Wybrałem chyba najłatwiejsze rozwiązanie jakie istnieje, czyli Heroku. Jest to platforma PaaS (Platform as a Service). Nie jest to najtańsza opcja, ale przebija wszystko inne swoją prostotą. Z racji tego, że pracuje głównie sam, zależało mi na czymś prostym co pozwoli mi się skupić na rozwoju aplikacji a nie infrastruktury. Baza danych to PostgreSQL, która też jest oferowana i zarządzana przez Heroku.


Oprócz płacenia miesięcznych rachunków niczym innym nie muszę się już martwić. W tym momencie korzystam z najtańszej opcji, 512 MB pamięci RAM za 7 USD miesięcznie. Specyfikacja nie zachwyca ale w zupełności radzi sobie z aktualnymi potrzebami. Bez problemu serwer dał sobie radę z “efektem Wykopu”. Jednego dnia na stronę weszło około 14 tys. unikalnych użytkowników i wygenerowało około 200 tys. zapytań. 


Do trzymania plików statycznych, w tym głównie zdjęć, używam standardowo AWS S3. Do tego używam darmowego planu z Cloudflare, dzięki któremu mam certyfikat SSL, DNS i CDN (content delivery network). 




I na koniec ostatnia kwestia: ile godzin dziennie potrzeba, aby hobbystycznie stworzyć projekt podobny do Velomapy? To pytanie bardziej ma dać obraz osobom, które zastanawiają się, czy dadzą radę rozwijać własny pomysł po “pracy od 9-17”. Jesteś w stanie to ocenić? 


Ciężko odpowiedzieć ponieważ nie liczę ile czasu spędzam i staram się pracować w wolnych chwilach. Ile dziennie? Niewiele. Tylko wtedy praca nad projektem zajmuje prawie dwa lata, jak w moim przypadku. Niestety nie pracuję nad Velomapą regularnie. Najbardziej produktywne godziny spędzam w mojej regularnej pracy. 


Nie mam konkretnego i ustalonego rytmu pracy nad hobbystycznymi projektami. Czasami pracuje godzinę albo dwie z rana przed pracą, czasami wieczorem. Są okresy, że prawie nic nie robię przez kilka tygodni - w końcu same kilometry się na rowerze nie przejadą. Cały czas pracuję zdalnie, dzięki czemu oszczędzam czas na braku dojazdów. 


Wszystko zależy od ilości poświęcenia swojego wolnego czasu. Na pewno można rozwijać projekty po godzinach, nie poświęcając tego czasu za dużo, jednak cały proces oczywiście się wydłuża.


Dzięki wielkie za odpowiedzi i rozmowę :) 


Projekt Kacpra znajdziecie tutaj.

Dodaj swój pierwszy komentarz i stań się częścią naszej społeczności
Zaloguj się
KOMENTARZE (0)

Dodaj pierwszy komentarz

Najpopularniejsze w społeczności
Te treści czekają też na Twoją uwagę

Oh My Dev logo
Oh My Dev logo

OhMyDev.pl - to, co najważniejsze w IT - od devów dla devów

Oh My Dev to społeczność dla każdej osoby, która interesuje się lub zajmuje szeroko pojętym IT. Najnowsze i najpopularniejsze informacje z całego świata IT. Szukaj, oceniaj, komentuj, czytaj, twórz.