#github chce trenować AI na Twoim kodzie. Można się wypisać
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out. Review this update and manage your preferences in your GitHub account settings .
Hmm mam wrażenie, że robicie wszyscy z igły widły. Tam jest napisane, że będzie tylko używać danych z waszych interakcji z Copilotem a nie całego waszego kodu. Czyli wasze prompty plus odpowiedzi AI. I jest to opcjonalne, uczciwie uprzedzili że będą tak robić i dali możliwość wyłączenia tego. Przecież większość AI w jakiś sposób używa podobnych danych a zwłaszcza w darmowych wersjach. Zobaczcie sobie regulaminy wszystkich tych usług.
Czasem ten komentarz jest taka oznaka, że publikowany jest niskiej i może zawierać halucynacje większe niż gdyby napisało się ten kod z palca. Nie korzystam z Claude Code, ale czasem sam dopisuję do commita informację, że powstał on przy wsparciu zewnętrznych narzędzi co ma właśnie sugerować, że np. bugfix może aktualnie wprowadzać więcej błędów niż naprawiać. Myślę, że to szczególnie jest zauważalne jak Cursor czy Claude Code pisze dokumentację, albo testy jednostkowe, gdzie ich jakość często jest przeciętna (ale lepsza niż nie istniejąca) - nawet na Opus 4.6.
Czy vibecoding to szansa dla projektów na otrzymanie większego wsparcia od społeczności?
Nie, to jest przekleństwo dla projektów Open Source. Twórcy/opiekuni projektów są zasypywani bezużytecznymi pull requestami i zgłoszeniami nieistniejących bugów już od jakichś 2 lat i z roku na rok jest coraz gorzej.
@fadeimageone BTW nie ma co ukrywać, że GitHub jest tak nieczytelny, że jak ktoś wchodzi pierwszy raz na stronę projektu to pierwsze pytanie na forum czy grupie jest zawsze "GDZIE TU JEST PRZYCISK DOWNLOAD!?" xDDD
https://www.githubstatus.com/ polecam, w poprzedniej robocie miałem alerty na maila i powiadomienie dźwiękowe jak padło, bo tam trzymaliśmy kod i sporo CI
Uwielbiam pythona, uwielbiam kiedy potrzebuje użyć jakiegoś programu i jego jedyna dostępna wersja to taka do ręcznego zainstalowania poprzez sklonowanie repo i doinstalownie zależności przez pip. Kocham kiedy muszę dla każdego programu robić osobne wirtualne środowisko i instalować te same paczki po 15 razy w różnych wersjach. Jeszcze bardziej kocham jak się potem okazuje, że to jest jakaś kosmicznie stara i specyficzna wersja pythona której nawet nie ma skompilowanej dla twojej dystrybucji wiec jeszcze musisz poczekać aż zbuduje ci się cały python lokanlnie u siebie. A na koniec po odpaleniu i tak zobaczysz błąd, że nie udało się zimportować *jakiegoś_gówna.py*.
Taki żart ofc, umiem to wszystko zrobić i dobrze rozumiem dlaczego tak jest ale dobrze wiemy, że każdy choć raz przez to przeszedł xD.
Gdyby mi ktoś powiedział 16 lat temu, że będzie tak popularny to chyba bym nie uwierzył. Pamiętam jak ja trzymałem programy na studia w git a inni w svnach i cvsach
Python jest obecnie najczęściej używanym językiem w serwisie GitHub!
Sztuczna inteligencja wprowadziła Pythona do czołówki języków programowania w 2024 roku.
Wiąże się to ze wzrostem liczby programistów "data science" oraz "machine learning" na świecie, przez co Python wyprzedził JavaScript jako najpopularniejszy język programowania na GitHubie.
@AureliaNova - a ja uznaję tak i tak - przecież i tak kod we wszystkich językach się formatuje wcięciami dla lepszej czytelności
Poza tym przeszedłem przez wszystkie popularne języki programowania i jak trzeba jestem w stanie w nich napisać całkiem skomplikowane rzeczy - bo języki programowania to tylko narzędzia - głupio by było ich nie używać gdy ma to największy sens do danego zadania
@koszotorobur ja wiem, tylko sobie śmieszkuję. Na pewno kwestia przyzwyczajenia.
Ale moment, gdy mi apka nie chciała się kompilować, bo miałem niespójne wcięcia i musiałem w kilkunastu plikach zamieniać spacje na tab, ostatecznie przekreslił go w moich oczach :P
No i bomba, bo to świetny język, a popularność nadaje trakcji rozwojowi, bo i pieniążki się znajdują dla fundacji. Jest starszy niż Java, a wiele osób myśli, że to świeży język, bo długo był w cieniu.
@koszotorobur A jakie duże aplikacje webowe/desktopowe sa napisane w Pythonie? Serio pytam, bo jak wieki temu wybierałem technologie pod jakieś mikroserwisy to Python może i był najwolniejszy, ale za to nie dało się go utrzymać in the long run. Może coś się zmieniło
Poza tym w korpo Python niesamowicie też urósł do pełnoprawnego języka i w moich 3 ostatnich korpo (wliczając obecne) Pyhon jest używany do:
Napisania mega skomplikowanych prezentacji danych w formacie strony internetowej używając modułu Dash od firmy Plotly
Obróbki danych typu ETL używając modułów jak Pandas oraz Polars
Automatyzacji zbierania i obróbki danych potrzebnych do generowania raportów typu "security compliance" z wewnętrznych serwerów oraz różnych dostawców chmurowych
Budowania modeli finansowych używając uczenia maszynowego
Automatyzacji zadań administratora systemów przy pomocy Ansible
Tworzenia infrastruktury chmurowej z kodu (Infrastructure as a Service) używając Pulumi
Pamiętacie pewnie Winampa (no przecież to portal dla starych ludzi, to musicie pamiętać). Winamp przeszedł na open source, ale ktoś napisał bardzo gównianą licencję która nie pozwala na bardzo wiele podstawowych rzeczy w świecie open source, ale w tym, uwaga, na forkowanie repozytorium XD
W ten sposób uniemożliwili dostarczenie jakichkolwiek zmian bez łamania licencji XD
Rozpętała się piękna gównoburza, polecam wziąć popcorn i przejrzeć issues i pull requesty (również te zamknięte).
Niestety już usunęli zapis o zakazie forkowania (ciekawe czy złamali przy tym licencję), ale dalej wiele rzeczy jest zakazanych xd
widać, że noe potrafią w opensource, ale i tak mało firm decyduhe się na taki krok. Gdyby każda gra przechodziła na open source po 20 latach to retro gaming byłby dużo przyjemniejszy na nowych kompach. Już pomijając kompatybilność z systemem
Zajmuję się analityką internetową - zbieram i raportuję dane o tym, jak ludzie przeglądają strony internetowe.
Przez ostatnie kilka miesięcy pisałem sobie rozszerzenie do #chrome, które wizualizuje dane o klikniętych na stronie elementach - tzw "heatmapa", czy też "clickmapa".
Była to okazja żeby mieć sporo niecodziennych wyzwań do rozwiązania, i pomyślałem że się nimi podzielę. Ponieważ sporą część tego co musi być zrobione miałem w głowie i nie porywało mnie robienie jej, do stworzenia części kodu użyłem #chatgpt i #github #copilot , co też przyniosło ciekawe doświadczenia.
Są to totalnie geekowskie wynurzenia ale mam nadzieję znaleźć odrobinę przestrzeni gdzie mógłbym też zyskać może jakiś feedback na temat tego rozwiązania
Całość opiera się na zbieraniu selektorów CSS klikniętych elementów, a później pobieraniu tych danych i wizualizowaniu ich.
Sama komunikacja z zewnętrznym serwisem w Chrome Extensionie to już jest ciekawy fikoł, bo można to robić tylko z konkretnego kontekstu - service workera (a.k.a. background.js) - wymaga to przerzucania danych w odpowiednie miejsce (np. do otwartego taba przeglądarki), bo nie można ich pobrać "gdzie się chce"
Wizualizacja klikniętych elementów to fragment w którym mocno wspomagałem się AI - ChatGPT dobrze był w stanie zrozumieć o co mi chodzi i uwzględnić wymagania, ale jego sposób pracy potrafił się wahać z tygodnia na tydzień. W końcu przerzuciłem się na GitHub CoPilot ponieważ sugeruje na podstawie całego otwartego w #vscode projektu i bieżącego miejsca w kodzie. Czasem jak kulą w płot, ale zaoszczędził mi mnóstwo czasu. W sumie cały algorytm wizualizacji to jego dzieło którego staram się sam nie ruszać jedną z rzeczy, które AI rozwiązało jest kolejność renderowania elementów na podstawie sprawdzenia, który jest czyim dzieckiem, tak, aby nie było później zwizualizowanych elementów, których nie da się kliknąć.
Największym problemem, nad którym dumałem jak memiczny Pablo Escobar przez 1,5 miesiąca odkładając całość w kąt, było jak skonstruować toolbar wyświetlający się po kliknięciu danego elementu. No nie mogłem tego sobie dobrze wymyśleć biorąc pod uwagę to co chciałem zrobić, czyli doklejać go do już istniejącego elementu i pozwalać mu się rozwijać na obszar poza tym elemente. Z pomocą też pewnego wieczora przyszło AI, ale do rozwiązania o co je poprosić musiałem dotrzeć sam.
Nadawanie odpowiedniej kolorystyki w zależności od ilości kliknięć na dany element jest czymś co muszę jeszcze dopracować. Pierwsza wersja opierała się na przypisaniu natężenia jednego koloru, teraz już mam 2 kolory. Wymyśliłem sobie żeby dzielić skalę pomiedzy tymi 2 kolorami na liczbę kolorów odpowiadającą ilości elementów do pokolorowania, ale to nie daje wyraźnych wizualnie efektów, więc wprowadziłem dodatkowy model który elementy z największą ilością kliknięć doboostowuje na podstawie tego, które mają miejsce w datasecie (bo jest on posortowany od najbardziej klikanych elementów)
Potrafią się też zdarzać uszkodzone dane z niewłaściwymi, urwanymi selektorami CSS - trzeba je w miarę możliwości oczyszczać i wizualizować na najbliższym elemencie
Niektóre elementy na stronach, gdy są kliknięte, potrafią zwracać inne selektory np zawierające klasę "active". Żeby te dane łączyć (chociaż chyba mi to jeszcze nie do końca działa ) też zrobiłem dedykowaną temu funkcjonalność.
Problem, którego jeszcze nie rozwiązałem: przy używaniu google translate, mogą się zmieniać wykrywane selektory CSS klikniętych elementów, bo jest w nich dodatkowo umieszczany tag <font> albo i dwa
Popełniłem też sporo mniejszych, czeskich błędów przy obsłudze dość złożonego API - tym lepiej miałem okazję się go nauczyć
GitHub CoPilot dobrze się u mnie zadomowił. Zrobiłem kilka zrzutów które chcę zmontować w filmik o nim, gdzie mam przykłady i dobrych i kiepskich jego zachowań. Czasem trzeba go lekko szturchnąć w odpowiednim kierunku, i potrafi dużo pomóc, ale czasem jest zupełnie bezużyteczny i kręci się w kółko jak 5 latek
No i taka robota. Mi się bardzo przyda w mojej codziennej pracy. Jak coś, to extension współpracuje z analityką Piwik PRO, która ma dwie zalety - jest robiona w Polsce i jest darmowa do 500 tys. eventów miesięcznie ( ͡° ͜ʖ ͡°) #toniejestreklama, może się komuś przyda, a samo rozszerzenie tu: https://logbaker.com , a filmik mam nadzieję że się osadzi: https://www.youtube.com/watch?v=wJSYjGRO5YM
Jeśli ktoś ma pytania dot. developmentu chrome extensiona też chętnie odpowiem na tyle ile wiem
pytanie zasadnicze: co cię motywowało do tworzenia własnego rozwiązania?
Gotowych rozwiązań do heatmap było sporo (nie robię w tej branży od wielu lat, toteż na bieżąco już nie jestem) i głównym problemem była ich ociężałość. Ale nie wspomniałeś o gotowcach w ogóle, toteż jestem ciekaw czy krojenie żadnego gotowca nie byłoby "bardziej".
Druga rzecz to selektory.
Jak zbierasz dane dot. selektorów obejmujących całą szerokość lub wysokość widocznego
@VonTrupka motywacja do stworzenia własnego rozwiązania była taka, że już tej platformy używałem, a rozwiązanie w niej zawarte nie było wystarczające. A nie chciałem do samych heatmap zaprzęgać zawsze kolejnego rozwiązania, skoro to już mam działające. Oczywiście, jest wiele rozwiązań, ale każde ma swoje wady i zalety oraz koszty. A tutaj wiem dokładnie jakie dane przetwarzam i co chcę z nimi zrobić
Jest jeszcze aspekt prywatności przetwarzania danych - dla wielu firm istotny - a przy niektórych rozwiązaniach potrafi to być bardzo niejasne (patrz: MS Clarity). Piwik ma to dobrze ograne dzięki anonimizacji.
Co do selektorów - jeśli element ma całą wysokość lub szerokość viewportu, to jest zbierany tak samo (np body) - i na nim też są wizualizowane kliknięcia, najczęściej te nieintencjonalne - jeśli dobrze rozumiem o co pytasz ale z defaulta ignoruję wizualizowanie kliknięć na tych elementach właśnie z tego względu - nie mają znaczenia dla analizy tych faktycznie interaktywnych elementów, zaburzają ją
założyłem defaultowo self hosted rozwiązania, chmurowatość to dla mnie ostateczność
przy czym i tak prędzej odpuściłbym 3rd party hosted niż go użył
tzn ogólnie rzecz biorąc i afair liczone były współrzędne kursora podczas wywoływania eventu i normalizowane względem - hgw, jak to określić - rozmiarów strony lub głównego kontenera.
I tutaj pytanie moje dotyczyło selektora elementu który ma dużą szerokość lub wysokość a jest w zasadzie pusty. No jeszcze wypadałoby uściślić jakiego typu selektory i czy są unikatowe, bo w przypadku klas to odróżnienie klikniętego elementu tylko na tej podstawie byłoby ... trudne