Menu
About me Kontakt

How to Cleverly Process 10 Million PDFs? - Linux Autumn 2024 (film, 1h and 6m)

In the latest material from the channel Jesień Linuksowa, Tomasz Zieliński shares his experiences with collaborating with Polish offices, particularly the Ministry of Justice, during the implementation of the random case allocation system in Polish courts. He discusses how he has navigated the challenges of public information as it pertains to the project, emphasizing the importance of transparency and public trust in judicial institutions. Tomasz reminds his audience that his foray into legal matters started back in 2020, making him an authority on the subject.

Throughout his presentation, Tomasz captured listener interest by discussing critical issues related to randomness in case allocation across courts. He delved into the automation and digitization of processes within the Polish justice system, highlighting concerns regarding data access and analysis that could significantly improve the system. He brings attention to various inconsistencies stemming from the lack of access to essential data and further asserts that meaningful analysis could enhance the efficiency of the judicial process.

He also addresses the technical challenges of processing millions of files, explaining that handling such vast volumes of data necessitates the use of appropriate tools and infrastructure. Tomasz shared his thoughts on employing technologies like SQL and Cloudflare to generate useful reports and profiles for judges, revealing the complex tasks that require programming skills and creative solutions.

A pivotal part of his talk involves discussing the intricacies surrounding public access to information. Tomasz recounts his journey of requesting access to data, emphasizing the bureaucratic hurdles and lengthy processes he faced, which can take several months. He shares an anecdote about a successful request that ultimately led him to gather an impressive amount of data.

At the end of the presentation, he comments on the statistics surrounding his efforts, which at the time of writing this article included 5225 views and 239 likes. Audience responses after the presentation indicate a keen interest in the topic of random case allocation and a desire to clarify uncertainties regarding procedural aspects of the Polish justice system. Overall, the delivery of the talk was dynamic and engaging, shedding new light on issues related to the digitization of courts and the accessibility of public information.

Toggle timeline summary

  • 00:00 Introduction to the presentation before dinner.
  • 00:10 Keynote speaker Tomasz Zieliński discusses experiences working with Polish authorities.
  • 00:20 Zieliński expresses his excitement about being invited to speak.
  • 00:29 He reflects on celebrating 20 years since his first public IT conference appearance.
  • 00:51 Audience participation in recalling past experiences at Pingwinaria conference.
  • 01:37 Zieliński introduces himself as a programmer at DIPL.
  • 02:14 Discussion on the implementation of random case assignment system in Poland.
  • 02:25 Participants share their past court experiences.
  • 02:49 Exploration of the need for respect and conditions necessary for judicial independence.
  • 03:35 Connection between court impartiality and the symbolic representation of Lady Justice.
  • 05:43 Launch of the random case assignment system in Polish courts in 2018.
  • 05:57 The goals of the system: achieving random case allocation and balancing judges' workloads.
  • 06:28 Challenges faced in achieving the intended goals of the system.
  • 06:45 Growing public inquiries about the functionality of the random assignment system.
  • 07:02 Sharing of internal documentation related to case assignment algorithms.
  • 07:51 Reports generated for each case assignment, maintaining confidentiality.
  • 08:23 Experimentation with automation in data retrieval from courts.
  • 10:15 Zieliński's experience obtaining data and insights from court documentation.
  • 20:31 Use of efficient tools for data processing and analysis.
  • 24:11 Widespread public interest and response to the data upon its release.
  • 41:22 Details shared on the accessibility of court data through a web portal.
  • 46:34 Issues discovered in the algorithm documentation used in the random case assignment system.
  • 52:30 Outline of ongoing issues faced due to inconsistencies in the judicial system.
  • 54:05 Discussion of the accumulation of challenges related to accessing public data.
  • 56:41 Exploration of the transparency of the system and importance of public accountability.
  • 01:43 Zieliński highlights that court sessions are open to the public for observation.
  • 05:02 Closing remarks urging the audience to engage with him for further questions.

Transcription

To tutaj dzisiaj ostatnia prezentacja przed kolacją. Mamy naszego keynote speakera, Tomasz Zieliński opowie nam o perypetiach, których może dostarczyć współpraca z urzędami polskimi. Cześć, bardzo się cieszę, że zostałem tu zaproszony, ponieważ w tym roku miałem równo 20 lat od mojego pierwszego publicznego wystąpienia na konferencji IT, to było na pingwinariach w roku 2004. I tu takie pytanie, kto z was był kiedyś na pingwinariach, póki jeszcze były? 3, 4, OK, informacja dla radiosłuchaczy, 4 osoby podniosły ręce. Kto z was czterech był na pingwinariach w Krynicy? Dwie osoby, to razem ze mną będą trzy, czyli chwilkę czasu już minęło jak widać. Słucham? Nie, dobrze. Więc chwilę czasu od tych pingwinariów minęło, natomiast tutaj bardzo się cieszę, że mogłem przyjechać i opowiedzieć wam o mojej przygodzie z tym, w jaki sposób radziłem sobie z odpowiedzią na informację publiczną, która została zrealizowana, co było dla mnie sporą niespodzianką. Tak, dwa słowa o mnie, jestem programistą, pracuję w firmie DIPL. Zadam wam trzy pytania, zanim przejdę do rzeczy. Pierwsze jest takie, czy znacie automatycznego tłumacza DIPL? Jesteście wspaniałą publicznością. Czy czytujecie może mojego bloga, Informatyk Zakładowy? Jesteście naprawdę wspaniałą publicznością. Bardzo się cieszę. Jeśli czytujecie go od dawna, to pamiętacie być może, że już od roku 2020 zajmowałem się tematyką sądownictwa i takiego systemu, który nazywa się system losowego przydziału spraw. To będzie trzecie pytanie, ponieważ będę mówił o sądownictwie, o tym, jak w Polsce realizowane są jakieś procesy informatyczne w sądach. Kto z was był kiedykolwiek w sądzie na jakiejś rozprawie? Zaskakująco dużo ludzi. Gdyby spytać ludzi z ulicy, to pewnie mniejszy procent by podniósł ręce, bo to nie jest jakoś strasznie popularne. Natomiast sądy są częścią świata, w którym żyjemy. I teraz tak, jeśli chodzi o sądy, to żeby one były szanowane, to musi zajść parę jakichś takich warunków. I to już starożytni Grecy odkryli, że tutaj mamy Temidę, która jest boginią odpowiedzialną za sprawy sądownictwa. I też starożytni Grecy odkryli, że sąd powinien być bezstronny. To właśnie to, że ta pani ma zasłonięte oczy, to ma symbolizować to, że ona waży rację w stron, które stają przed sądem bez patrzenia na to, jaki jest status społeczny stron, kto jest kim. Ta bogini sądząc, ona ma rozważyć sprawiedliwie tą kwestię, która poszedł bez patrzenia na status, na osoby, na instytucje. I to we współczesnych zachodnich demokracjach. Jedną z cech, jakie oczekuje się od sądów, będzie to, że nie istnieje żaden dla osoby, która idzie do sądu, wnosi jakąś sprawę, że ona nie ma żadnego sposobu na to, kto będzie tą sprawę rozpatrywał. Także w jakimś niedużym mieście jest np. sąd, w którym jest wydział karny, w którym jest dwóch sędziów i wiadomo powszechnie, że jeden sądzi łagodniej, a drugi sądzi surowiej. I teraz jeśli ktoś trafia pod sąd, to on nie może mieć wpływu na to, kto go osądzi. I taki analogowy podział spraw, on był kiedyś realizowany w taki sposób po prostu, że w sekretariacie, do którego albo przychodziła poczta, albo ludzie przychodzili osobiście i składali sprawy, tam były np. dwa albo trzy korytka takie i te sprawy przyszła pierwsza tu, druga tu, trzecia tu i albo po prostu jak się uskłada kubka, no to po kawałku tym trzym sędziom, czy ilu ich tam było. I ten sposób on działał oczywiście, bo nie było innego, ale były sytuacje, w których ktoś uważał np. że jest pokrzywdzony, ponieważ zna go np. prezes sądu albo przewodniczący wydziału, którzy mają teoretycznie możliwość wpływania na takie przydziały i że został pokrzywdzony, bo jego sprawa trafiła do sędziego, do którego na pewno osądzi na jego niekorzyść. Ponieważ mamy komputery, no to oczywiście wszystkie rzeczy można komputeryzować i stają się wtedy automatycznie o wiele lepsze, szybsze, prostsze i tak dalej. W polskich sądach, które nie są znane z tego, że jakiekolwiek procesy cyfrowe tam się zadziały kiedykolwiek, w 2018 roku rozpoczęto wdrażanie takiego systemu, który nazywał, nazywa się system losowego przydziału spraw. To jest zcentralizowany system komputerowy, który jest wyprodukowany i utrzymywany przez Ministerstwo Sprawiedliwości i on ma dwa główne cele. Pierwszy cel jest taki, żeby przydzielać sprawy wpływające do wszystkich sądów w Polsce w sposób całkowicie losowy, w taki, żeby nie podlegało wątpliwości, że nikt nie miał wpływu na taki przydział. No a drugi cel wprowadzenia tego systemu był taki, żeby zrównoważyć obciążenie sędziów pracą. Tutaj mały spoiler, nie udało się osiągnąć żadnego z tych zakładanych celów. Natomiast w tym, że w 2018 roku i później rozpoczęło się zadawanie pytań przez ludzi, którzy dowiedzieli się, że takie coś powstaje, że tak naprawdę działa. Co się dzieje w środku tego systemu losowego przydziału spraw? Dlaczego mamy wierzyć, że on faktycznie ma w sobie jakąś losowość, że tam nie siedzi człowiek, który nie ma swobody rozrzucania czy przydzielania tych spraw, jak mu się podoba. Tych pytań było coraz więcej. W roku 2021 opublikowano na stronach Ministerstwa Sprawiedliwości taki dokument, który się nazywał algorytm losowania z systemu losowego przydziału spraw. I to był fragment, jakiś taki wycinek dokumentacji projektowej, który faktycznie opisywał, jak ten flow ma przebiegać, ale nadal jakby to było jedyne, co publiczność wiedziała i to było troszkę zbyt mało. Oczywiście z każdego losowania, czyli dla każdej sprawy, która była złożona do sądu, powstawał tak zwany raport. Niedługo będzie widać, jak on wyglądał. I taki raport był drukowany, wkładany do akt sprawy, więc można było spojrzeć sobie, jacy sędziowie byli rozważeni, którzy trafili do puli, który sędzia został wylosowany do rozpatrzenia danej sprawy, ale nie dało się zobaczyć jakby większego obrazu. Nie dało się spojrzeć na wiele tych raportów naraz, bo każdy jeden był chroniony kapczą googlową i można było sobie ze stron portalu sądowego pobierać po jednym. A gdybyśmy chcieli pobierać większą ilość, no to wtedy kosztowałoby to dużo pieniędzy, bo rozpoznanie googlowej rekapczy to jest od dolara mniej więcej do dwóch za tysiąc sztuk, a tych spraw są miliony. Gdy czytałem sobie ten algorytm i analizowałem, jak on działa, to tak sobie pomyślałem, że gdyby dało się popatrzeć na wszystkie raporty, jakie są i porównać na przykład, że jeśli jest jakiś tam, nie wiem, sędzia ma ileś tych spraw albo punktów, albo wskaźników, albo czegokolwiek i on dostaje jakąś sprawę, to w następnym losowaniu w tej tabelce powinien mieć ten wskaźnik większy. I jak sobie dla danego sędziego przejdziemy przez wszystkie sprawy, do których został przydzielony i porównamy sobie, czy zmiany tego wskaźnika były zgodne z algorytmem i zrobimy tak dla wszystkich sędziów, to będzie można wykryć, czy tam były jakieś wałki, czy ich nie było. No, tylko problem był taki, że minister sprawiedliwości Ziobro Zbigniew, on w ogóle odrzucał jakąkolwiek możliwość wglądu. Były sprawy sądowe, Fundacja Młodej Państwa, zdaje się, już w 2018 roku rozpoczęła starania i o dostęp do raportów, i o dostęp do kodu źródłowego tego systemu. Skraszając tą historię, rok temu zmieniła się władza. Jak dobrze pamiętacie, mieliśmy wybory, demokratyczna opozycja przejęła w Polsce władzę i pomyślałem sobie, że być może to będzie dobra okazja, żeby zwrócić się z wnioskiem o dostęp do informacji publicznej, żebym dostał wszystkie te raporty. Ok, nie chodziło mi o wszystkie w ogóle z całej historii, bo to jeśli ktoś interesował się sprawą i czytał raport Najwyższej Izby Kontroli, która opisywała, jak wspaniale szło wdrażanie tego systemu, to wiedział, że kilkakrotnie resetowano go o rano i startowano od zera. I okazywało się, że nadal źle działa, przeprowadzono łaty, które jedne rzeczy naprawiały, wszystkie psuły. Long story short, po około pięciu latach ustabilizowało się to na tyle, że od drugiej połowy 2021 roku mamy coś, co oczekujemy, że mniej więcej od tamtego czasu jest spójne. Więc poprosiłem, żeby mi przysłano wszystkie raporty z losowań spraw z lat 2022-2023 i dostałem odpowiedź, że dostanę. Powiedzieć, że byłem zdziwiony, to nic nie powiedzieć. Ja byłem zdziwiony, wszyscy znajomi aktywiści prawnicy byli zdziwieni. Kurde, myślę, że najbardziej zdziwieni byli pracownicy Ministerstwa Sprawiedliwości, co się właśnie odwala. Oczywiście to nie jest tak, że tak od razu napisałem i dostałem. Ten proces trwał wiele tygodni. Trzeba pamiętać, że każdego roku generowanych jest ponad 4 miliony raportów z ponad 4 milionów losowań, więc to nie jest takie hopsiup. Chciałem, żeby mi to przysłano przez internet. Wiadomo, że to było dużo bajtów, ale internet jest obecnie szybki. Każda forma byłaby dla mnie okej. Pisałem to zresztą, że albo mogą wystawić na stronie, albo mogą jakimś mi transferem mi to wysłać, albo ja im wystawiłem SFTP bez limitu, żeby to się na pewno zmieściło, żeby te pliki mogli mi wysłać. Nie, jedyną opcją było to, że wysyłam nośnik odpowiednio duży, żeby zmieścił te miliony plików. Oni go sprawdzają, nagrywają, odsyłają. Pozostaje się ucieszyć, że nie zaproponowano mi przysłanie tego na papierze, bo jeśli ktoś sobie, ja zrobiłem obliczenia z ciekawości samej. 8 milionów raportów, które dostałem najpierw, gdyby je wydrukować na papierze A4, takim zwykłym, to by była mniej więcej taka ciężarówka, bo 1 milion arkuszy A4 waży około 5 ton razy 8 milionów, to jest 40 ton i taki ciągnik siodłowy w Polsce, to o ile się nie mylę, to jest jakieś 44 tony chyba, jaka jest, może być jego maksymalna masa całkowita, ale potem dostałem jeszcze 2 miliony i to już było 50 parę ton i to mi się zmieściło, więc tutaj teza udowodniona na papierze raczej nie, tym bardziej, że mógłbym mieć problem z przepisaniem tego wszystkiego. No dobrze, ale więc tak, więc wziąłem sobie, pendrive takiego dużego nie miałem, wziąłem przenośny dysk twardy, odpowiednio duży, spakowałem do koperty bąbelkowej, napisałem ten kwitek tam na polecony, przyszedłem do pani na poczcie, dałem tą paczuszkę jednym z drugim, pani wzięła stempel i walnęła w kopertę. W kopercie coś chrupnęło. Pani popatrzyła tak na mnie pytająco, ja na nią popatrzyłem odpowiadająco, tak uza spłynęła mi po policzku. Dobra, to może nie być całkiem prawdziwa historia, mogłem zaszlochać wewnętrznie bez tam żadnego płakania. W każdym razie, raz kozie śmierć, paczka pojechała, okazało się, że dysk przeżył i faktycznie już po tam nie wiem, miesiącu czy półtora dostałem go z powrotem i tam faktycznie były te dane. To było dla mnie bardzo dużym zaskoczeniem. Co wtedy zrobiłem? Poszedłem do sklepu, żeby kupić sobie dysk twardy szybki, bo nie miałem miejsca na te kilkaset gigabajtów nowych rzeczy. I nie próbujcie tego z dyskiem talerzowym, bo to by się nie mogło udać. Gdyby ktoś był ciekaw, to takie wtrącenie, tak teraz na moim domowym komputerze wygląda backup, tak jak Blaza, to sprawia czasem problemy, to znaczy to jest wpyte dużo plików. Jak zainstalujecie sobie świeżego Windowsa, tam popatrujecie, to będzie tak między 100 a 150 tysięcy plików, no to tu jest dwa rzędy wielkości więcej. No ale dobra, da się z tym żyć, nowy dysk śmigał i wszystko było fajnie. Te lekcje, jakie wyniosłem i jakie wy możecie wynieść dzięki mnie, po pierwsze, jak macie 10 milionów plików, to nie możecie ich trzymać w jednym katalogu. To nie jest tak, że próbowałem, ale trzeba pamiętać, że ok, większość współczesnych file systemów bez problemu to wytrzyma i one są regularnie testowane na takich i na większych wolumenach danych, ale jest problem z jakimkolwiek interfejsem, który daje dostęp do tych plików, bo jeśli sobie wyobrazicie, że chcielibyście wyświetlić 10 milionów plików w jakimś eksplorerze, finderze, czymkolwiek i to okienko, w którym one miałyby się pokazać ma na przykład 1000 pikseli w pionie, to przewinięcie okienka tamtego przesuwaka o jeden piksel przewala 10 tysięcy plików. No nie da się tak żyć. Co więcej, gdyby ktoś chciał sobie poradzić jakimiś maskami albo regexami, to one już przy 100 tysiącach plików przestają działać. Jest jeszcze gorzej. Nawet LS przy 5 milionach, 5, 7, 9, zależy kto próbuje, ale on przestaje działać poniżej 10 milionów plików, więc nie, oczywiście są sposoby. To nie jest tak, że już na zawsze tam będzie i nic się z tym nie da zrobić. To są sposoby i można sobie poradzić, ale lepiej trzymać te pliki w jakiejś strukturze katalogów. Ja skorzystałem z tej, która była w tych zipach, które dostałem, bo dostałem pliki popaczkowane po kilkanaście do kilkudziesięciu tysięcy, po jednym każdego dnia. Tam była taka strukturka jeszcze z jednostkami organizacyjnymi, więc zostałem przy tym. Więc mamy już te pliki rozpakowane i teraz trzeba pamiętać, że to jest bardzo dużo plików i sam trawers drzewa, jak chcemy na przykład zrobić jakiegoś forage'a z enumeracją, to będzie parę minut, żeby te pliki w ogóle wszystkie się uznalazły. Sprawdzenie ile ich jest tutaj, to już jest naprawdę ładnych parę minut. Jeśli chcemy zrobić jakieś bardzo proste operacje na tym, to będą godziny. A jeśli chcemy z tych PDF-ów wyciągnąć jakieś dane, zrobić jakieś przetwarzanie, konwersje, cokolwiek, to będą dni. I to nie mam na myśli, że dwa, trzy dni, takie bardziej na przykład sto dni. Dlatego gdy szukałem sobie jakiegoś narzędzia, którym będę mógł wyciągnąć rzeczy z tych PDF-ów, to głównym kryterium nie było tak naprawdę, czy to ładne rzeczy wychodzą, tylko głównym kryterium było jak szybkie to jest i ile ja będę czekał. I jeśli jakieś fajne narzędzie, wypróbowałem tak naprawdę większość tych open source'ów, które jakoś z PDF-a potrafią wyciągnąć tekst, no to co z tego, że coś działa super dobrze. Jeśli przetwarzam na przykład jeden plik pięć sekund, no to dla mnie to będzie pół roku. Więc potrzebne było coś, co będzie łowić kilkadziesiąt plików na sekundę i jeszcze oczywiście jak już znalazłem takie narzędzie, to zrównolegliłem tą pracę na wiele rdzeń. Jeszcze należy wyłączyć antywirusa. Jeśli ktoś przetwarza duże ilości plików naraz, to antywirus zarżnie, wydając trzechkich operacji dwukrotnie, szybciej wszystko spokojnie działa. Jeśli sobie antywirusa wyłączymy albo wrzucimy do ignorowanych katalogów, wiecie o co chodzi. Żeby coś przetwarzać równolegle, można oczywiście puścić kilka instancji procesu w taki sposób, żeby działały na różnych rdzeniach procesora, co było bardzo dobrą okazją do tego, żeby zmienić procesor. Zmieniłem sobie z ośmiordzeniowego na szesnastordzeniowy i dzięki temu coś, co trwałoby dwa tygodnie, na ośmiordzeniowym trwałoby dwa dni, no to miałem zrobione w jeden dzień. I to było znakomite uzasadnienie. Oczywiście kupiłem sobie jeszcze do tego chłodzenie wodne, co sprawiało, że odblokowało się pierwsze gniazdo pamięci, więc wykupiłem pamięci. To była okazja do zakupów, no to z niej skorzystałem. I teraz tak, raporty z losowań. Normalny raport, całkowicie przypadkowy, wygląda tak jak tutaj. Czyli mamy tu od góry tam, jaki sąd, jaki wydział, mamy sygnaturę sprawy, mamy jakieś takie metadany typu kategoria, symbol, koszt. Wiemy, kim było losowanie, wiemy jaki miało numer, wiemy jacy sędziowie byli dostępni. Z tych, którzy mieli najniższe, slajdy będzie można dostać, jak ktoś chce. Z tych, którzy mieli najniższy wskaźnik obciążenia czwórka albo mniej, ale zazwyczaj czwórka sędziów jest brana do tej puli, która jest potem losowana. No i tutaj jest napisane, że jakiś generator liczb losowych wygenerował dla sprawy jakąś liczbę, modulo liczba sędziów plus jeden, no to jest jakiś tam wyłoniony zwycięzca. Taki sędzia będzie tę sprawę rozpoznawał. I teraz, żeby móc to przetworzyć, moim celem było to, żeby móc z tymi danymi pracować, to najlepiej je mieć w SQL-u, w zwykłej relacyjnej bazie danych z paroma prostymi relacjami. Więc narzędzie Poplar okazało się tym, które spełniało moje potrzeby, to znaczy było wystarczająco dobre, jeśli chodzi o jakość i było bardzo szybkie, jeśli chodzi o szybkość, więc przetworzyłem sobie te wszystkie pliki do formatu tekstowego i to wyglądało mniej więcej tak. To jest tekst, który ma, jak widzimy, nawet odwzorowaną tą tabelkę, no oczywiście linijek tabelki nie ma, ale są, cały tekst, który był, jest, jest zachowana struktura i można to zacząć pracować. I tu problem jest taki, że ponieważ tool jest szybki, ale jednak prosty, to było trochę gliczy, na przykład taki, że mamy tutaj PDF-a, w którym tych sędziów jest tyle, że reszta jest spychana na dół i tutaj ten napis troszkę nachodzi na ten napis. Więc konwerter robi tak, że jest hop, hop, hop i skacze do góry, co oznacza, że w takim, w takich plikach, bo to jest tylko jeden przykład glicza, ale ich było bardzo dużo, że ciężko będzie napisać parser, który poradzi sobie z takimi wszystkimi przypadkami brzegowymi, z nawrotami w szczególności do czegoś, co już teoretycznie było przetworzone. A ja wiedziałem, że nie mam za dużo czasu, bo jak to mi zajmie za dużo czasu, to stracę motywację i nic z tego nie będzie. Więc musiałem przyjąć taką metodykę czy metodologię, nie jestem do końca pewny, ścinanie wszystkich zakrętów, jakie tylko się da. I efekt tego był taki, że to konwerter, który napisałem jest takim spaghetti kodem, że to jest absolutnie całkowicie nieutrzymywalne, nieczytelne i nikt nie powinien nigdy tego widzieć, bo to nie jest produkt. To miało być tylko narzędzie do jednorazowego uruchomienia. Miałem przetworzyć każdy raport jeden raz i zapomnieć o tym, wywalić to. Co oznacza, że gdy przetwarzałem jakiś blok, no to na początku była jakaś typowa sytuacja, potem jakiś typowy glicz, potem mniej typowy glicz, a na końcu miałem elsy takie, które łapały jakieś pojedyncze, skrajnie zrypane pliki txt i je naprawiały czasem. I to zadziałało, to znaczy oczywiście też wymagało troszkę zacięcia, bo jak zacząłem pisać ten parser, to pierwszego wieczoru przetworzył może ze 100 dokumentów. Drugiego może tysiąc. Jednego dnia, przypominam, generowanych jest kilkanaście tysięcy raportów, drugiego dnia pisania, trzeciego wieczora pisania konwertera byłem na drugim dniu, na drugim stycznia 22, ale widać może to przyspiesza, to znaczy z każdym kolejnym obsłużonym edge case'em przeskakiwało dalej. Najpierw tydzień, potem miesiąc i dzięki temu, że obsłużyłem kilkaset takich edge case'ów, no to taki konwerter jest taniem przedżycie przez te 10 milionów plików, to znaczy może w każdym razie szybko. No ale jak mówię, nie musiało się to wydarzyć więcej niż jedno udane przejechanie po każdym dokumencie. Zakręty były ścinane też gdzie indziej. Na przykład tak wygląda changelog z procesu powstawania tego wspaniałego systemu Jak to wrzuciłem na sociale, ale dostałem bęcki, ja pierdzielę. Jak się ludzie unieśli. Rozumiem, ale ponownie to była jedyna metoda, żeby to zrobić, bo inaczej po prostu by się nie udało. Jak coś działało, wrzucałem do repo, cisnął dalej, no powiedziałem, że nigdy nie wrócę do tych starszych wersji, tylko po to, żeby, nie wiem, jak mi dysk padnie albo coś, to żeby nie przypadły rzeczy. Dobrze, idąc dalej. Mamy sytuację, w której wyciągnąłem te dane z plików txt i mam je teraz w postaci bazy danych, to znaczy mam inserty bazodanowe, z których potrafię sobie w SQLite zbudować bazkę i to. Co dalej? Jak serwować światu tyle danych? No bo przypominam, to jest ponad 10 milionów losowań, w których łącznie jest ponad 70 milionów uczestników, 16 milionów wykluczeń, czyli jakby nieobecności w losowaniu i chciałbym to jakoś pokazać tak, żeby było przejrzyście, atrakcyjnie. To jest ponad 5 gigabajtów i to nie jest dużo. Jeśli ktoś ma hurtownie danych z miliardami rekordów, to wyśmieję te liczby, ale to też nie jest mało. Jeśli ktoś sobie robił bazę danych do szkoły z sklepem internetowym i miał tam 50 rekordów, to przy 10 milionach, czy tam 100 milionach łącznie, to już wychodzą takie rzeczy, które już zaczynają być problematyczne. Natomiast na przykład wszystkie tanie hostingi, no jeśli coś zrobię z tej bazy, to będzie 5 giga lub więcej. Wszystkie tanie hostingi zazwyczaj mają limit na gigabajcie, nie mówiąc o, nie wiem, w jakichś HTML-ach czy innych szablonach, które musiałyby tam być, więc było wiadomo, że żaden tani hosting tam na to nie wystarczy. Wiedziałem, że na początku przez pierwsze 2-3 dni zainteresowanie będzie olbrzymie, że połowa prawników w Polsce będzie sobie po tej stronce łazić i komentować i wysyłać linki i przez pierwsze parę dni zainteresowanie będzie strasznie duże i trzeba to wytrzymać, a potem spadnie do morza promila, więc wszystko to, co było potrzebne, żeby wytrzymać, to już nie będzie potrzebne. No i to był pewien jakby, no sprzeczne wymagania, ponieważ nie bardzo umiem wrobienie stron, to wymyśliłem sobie, że zrobię statyczną witrynę i schowam ją za Cloudflarem. Jak zacząłem grzebać w Cloudflare, to się okazało, że tam są jeszcze takie usługi, które mi pomogą o tym za chwilkę, więc pomysł był taki. Mam bazę danych, użyję języka R, który znam i bardzo lubię, żeby wyciągnąć sobie jakieś agregacje, przekroje, więc rzeczy, które będą mi potrzebne albo do wykresów, albo do jakichś list, zrobię jeszcze jedną aplikacyjkę w C Sharpie, bo jestem programistą C Sharpa, która zrobi mi z tego jakieś szablony i te szablony posłużą mi do publikowania strony. I to oznaczało, że nie będzie na przykład żadnych jakichś takich interaktywnych możliwości, jak nie wiem, w Tableau można zrobić albo w Power BI-u, bo po prostu nie było kasy na takie eksperymenty. Jak już wspomniałem, nie umiem front-end, bo ostatni raz, gdy robiłem jakieś strony, to był PHP 3 i to był naprawdę 98 rok albo coś koło tego, potem się już nie zajmowałem żadną webmasterką, więc jak zacząć, co tu zrobić. Zorientowałem się, że da się, to znaczy, że mamy na przykład projekt Bootstrap, który jest takim zbiorem klas CSS, styli, komponentów, takie gotowe klocki, że mogę sobie, nie umiejąc robić stron, mogę sobie w notatniku pokopiować takie rzeczy, zainkludować odpowiedniego CSS-a i to będzie wyglądało. Będzie wyglądało jak 100 milionów innych stron w internecie i bardzo kurde dobrze, bo to jest dowód, że da się zrobić coś, co będzie wyglądało przynajmniej przejrzyście. Jest taki generator statycznych witryn Hugo, który jak już miałem ułożoną stronkę, jak chcę, żeby wyglądała na przykład strona pojedynczego sędziego, no to wiedziałem, że na pewno w jakimś nagłówku tam będzie miało być imię i nazwisko, czyli tam akurat tutaj title. Hugo daje możliwość zrobienia jakichś tam bloków warunkowych, coś się pojawi albo nie. Tutaj mamy jakieś bardziej złożone warunki, składnia ona nie jest ładna, ale da się z niej użyć. Tutaj mamy jakiegoś includa, więc w ten sposób to było bazą do tego, żeby zbudować statyczną witrynę z plików. Do kompilacji takiej witryny potrzebne były te szablony takie jak tu i dane takie jak tu. Czyli widać, że tutaj jest jakaś strona o typie sędzia z danymi jakiejś pani sędzi, z informacją ile w którym miesiącu, którego roku dostawała spraw i tam tych rzeczy jest więcej, one się wszystkie jakby inkludują w tych we wskazanych miejscach tych szablonów i powstaje strona, która jakoś wygląda. Trzecim klockiem, który potrzebowałem był D3JS, czyli taki silniczek jakby do tworzenia czegoś wektorowego, który pozwala zrobić wykresy, które mają jeszcze tam jakąś, nie wiem, że jak się myszką najedzie to się jakaś etykietka pokaże albo można zrobić sobie pogrubienia i kolorki lub nie. To jest oczywiście tutaj poharadane tagami Hugo i czat GPT okazał się bardzo pomocny, ponieważ D3JS ma 100 tysięcy różnych tutoriali w internecie, to czat umie generalizować i podpowiadał mi rzeczy, ponieważ ja nigdy w życiu nie programowałem w javascriptzie, a da się. W każdym razie to był wynik na przykład tych narzędzi, które wcześniej widzieliśmy, czyli jakaś witryna z jakąś strukturą, która ma rzeczy, które ładnie wyglądają, znaczy ładnie, jak na mnie ładnie, mi się podoba i byłem w stanie to zrobić, nie umiejąc żaden frontend. Pozostał problem, jak oczywiście skrajnie tanio coś takiego hostować, no bo przypominam, że wywaliłem już troszkę pieniędzy na sprzęt, na hosting nie bardzo chciałem, więc hostowanie jak najtańsze. Jak wiecie do publikacji było kilkanaście tysięcy plików HTML, bo każdy sędzia, każdy wydział, każdy sąd dostał swoją własną stronkę, na którym były jakieś wykresy, statystyki, więc tam było kilkanaście tysięcy plików i to jest do ogarnięcia, ich nie było jakoś strasznie dużo, ale chciałem móc publikować też każdy raport jaki dostałem. Po kilku latach już generowanie dziesięciu milionów stron nie wchodziło w grę. Miałem przez krótką chwilę taki pomysł, no a na szczęście problemów szybko spiętrzyło się na tyle, że pożyczyłem, więc oczywiście powstał jakiś tam prosty szablon, za chwilę go zobaczycie i dane do niego pochodziły z tej właśnie bazy SQLite, która sobie stanęła obok. I chciałem móc serwować, ponieważ to, gdy to tworzyłem, to cały czas wszystkie te raporty były za recap-czą, więc sobie wymyśliłem, że u mnie nie będą za recap-czą i że każdy kto wejdzie na stronę konkretnego, pojedynczego losowania, to będzie nie dość, że mógł pobrać tego PDF-a, to jeszcze tam będzie osadzony na stronce PDF renderowany biblioteczką javascriptową, co ponownie zrodziło pytania, gdzie te dane się zmieszczą. Cloudflare oprócz tego, że ma CDN-a, z którego wiele osób korzysta, bo jest za darmo, ma też wiele innych darmowych usług. Co ciekawe one dają naprawdę dużo i to, jeśli to ma być ten schemat, że pierwsza działka gratis, to ona jakby ciągle dostaje się nowe kawałeczki tego, więc bardzo mi się to podoba i jedną z usług, z których korzystałem, był Cloudflare Pages, czyli skrzyżowanie CDN-a i serwerless-a. Bo oprócz tego, że można sobie wrzucić pliki i one się obserwują jak pliki, to można też wrzucić sobie jakieś kawałki napisane w nodzie i one będą się wykonywać po stronie serwera. Ponownie jeszcze ad gpt, ponieważ nie umiem programować w nodzie, ale udało się. Pages daje 100 tysięcy wykonań serwerless-a dziennie i sądziłem, że to mi wystarczy, okazało się, że owszem wystarczy, ale na wszelki wypadek, gdyby się okazało, że tych 100 tysięcy mi nie wystarczy w pierwszych dniach, no to tam te 5 dolarów jeden raz byłem gotów zapłacić za jakieś tam podbicie do tego pierwszego płatnego tira. I to jest fajną rzeczą, że nie musiałem wciskać tam plików tych renderowanych. Pages umie sam sobie skompilować stronkę z Hugo, więc podłączyłem go do reprezentatora GitHub-a, podałem jakimś zaklęciem kompilować i rzeczy naprawdę dzieją się same. To znaczy push do repo, rozpoczyna kompilację, kompilacja wrzuca nową wersję na stronkę i to się dzieje samo. Pages ma ograniczenie do 20 tysięcy plików i to było w sam raz, no bo przypominam, że ja miałem raptem kilkanaście tysięcy, więc to się wszystko pięknie zgrało. Usługą bazodanową, serwerlessową w Cloudflare jest tak zwany D1 i on okazuje się, że się nie nadawał. Po pierwsze dlatego, że maksymalny rozmiar bazy danych, które da się zaimportować to jest 5 giga. Ok, mógłbym przystrzyc, tam wywalić część kolumn, żeby być pod tym, ale to nadal nie był upload, tylko to narzędzie, które pozwala importować to jest po prostu jakiś taki chamski przepisywacz insertów i to po prostu nie mogło dobrze działać. Poza tym ograniczenie na darmową bazę to jest 500 megabajtów. I jakby jeszcze tego było mało, to w wersji beta, bo na początku roku D1 było jeszcze w becie, było ograniczenie do 100 tysięcy insertów na dobę, co jasno sprawiało, że te moje kilkadziesiąt, prawie 100 milionów, że to nie przejdzie. A oprócz tego, że miałem 100 milionów rekordów 5 gigabajtowej bazy danych, no to miałem jeszcze 500 giga PDF-ów. Wszyscy, którzy byli wczoraj na prezentacji Kuby Mrugalskiego wiedzą, że jest coś takiego jak mikrus, serwery dla pasjonatów, to ja i byłem stuprocentowo pewny, że nawet mikrus 1.0 wystarczy do hostowania tego, bo wiedziałem, że i tak to wszystko schowam za Cloudflarem, więc każdy plik, który mikrus wyserwuje, wyserwuje tylko raz, a potem to już będzie leciało z kesza CDN-a, więc nawet nie wiem, wrzucałem na social jakiś link do strony konkretnego sędziego i tysiąc ludzi naraz wchodziło, to było jedno żądanie do mikrusa, a resztę z keszu. Jeden problem, dysk mikrusa 1.0, 5 giga, potrzebuję 100 razy więcej, więc cały proces wyglądał tak, że napisałem do Kuby, tworzę nowy produkt, potrzebuję do niego terabajt storage'a, czy możesz podpiąć ile do mojego mikrusa. W zamian obiecuję wspominać go w publikacjach i wystąpieniach making-off, które na pewno się pojawią. Jeśli ktoś się jeszcze nie zorientował, to jest właśnie to wystąpienie. Więc co się dzieje? Ponieważ Kuba jest człowiekiem niewielu słów, to odpowiedział. Więc miałem już wszystko, czego potrzebowałem. I jeszcze jakby taka mała porada, że jak mamy tego serwerlessa, to można go użyć do serwowania dwóch wersji stron, darmowej i płatnej. Darmowa, czy pokazywała, to już nie jest aktualne, bo po kilka tygodni temu jakby wszyscy widzą wszystko, ale na początku było tak, że anonimowy użytkownik widział dane z roku 2022, a trzeba było zapłacić, czyli zarejestrować się na newsletter, żeby dostać dostęp do wszystkich tych rzeczy, które tam miałem. I teraz to nadal były statyczne pliki. I w jaki sposób można zróżnicować dostęp? No bardzo prosto, generujemy w jednym HTML-u dwie wersje, darmową i płatną i używamy serwerlessa do tego, żeby wyciąć połówkę z góry albo z dołu. Proste, działa. Jeśli działa, to znaczy, że jest dobre. Reszta BKD-u na make.com, czyli obsługa tych kliknięć wszystkich, postmark do wysłania maili, mailer light do zapisywania się na newsletter i to wystarczyło. Jeśli ktoś nie był jeszcze na stronie monitora SLPS, to jest adres www.slps.pl i można tam znaleźć takie wspaniałości jak informacja ile losowań było zrealizowanych danego dnia. Od kilkunastu do kilkudziesięciu tysięcy. Dla każdego sądu widać jaka jest struktura, jak się rozkłada wpływ spraw na różne wydziały i tak dalej. To, że one są tutaj posortowane w numeracji rzymskiej, to jest przypadek jak sądzę, bo to byłoby trudne do osiągnięcia. A tutaj widać, działa. Dla każdego wydziału mamy statystyki, mamy informacje jakie są repertoria, czyli takie jakby nazwijmy to przegródki w szafie i możemy sobie przełączać te różne kategorie, repertoria i kategorie i patrzeć kto ile, który z sędziów wylosował. Jakby się nie zmieścili tutaj, to oni są tymi kolorkami, więc widać kto ile dostał spraw w jakim czasie, zarówno jeśli chodzi o sztuki, jak i takie sprawy przeliczeniowe. Bo to jest tak, że jeśli ktoś ma jakąś funkcję, na przykład nie wiem, jest prezesem sądu, to sądzi tylko ćwierć tych spraw co zwykły szeregowy sędzia. Więc on na przykład na sztuki mógł być tutaj nisko, ale okazuje się, że na sprawy przeliczeniowej byłby łeb w łeb z tymi, no bo jedna sprawa liczy, fizyczna liczy mu się jak dwie te przeliczeniowe na przykład. Dla każdego sędziego oprócz imienia, nazwiska, widać na przykład wskaźniki obciążenia i to jak zmieniały się w czasie i można sobie przełączać różne kombinacje właśnie tutaj wydziałów, kategorii, repertoriów, bo dla każdego, dla każdej kombinacji te statystyki są liczone osobno. Można również zobaczyć sobie kalendarz obecności, czyli kiedy dany sędzia brał udział w losowaniach, a kiedy nie brał. Tam jest, no nie widać tego tutaj, ale jest jeszcze taki gustowny tooltip, jak się najedzie na jakiś kwadracik to widać rozpiskę z danego dnia. Widać wyłączenia, jeśli coś by było niespójne, no to też będzie na czerwono oznaczone. Dla każdego sędziego jest też lista wszystkich losowań, które wygrał, zarówno po numerkach, jak i po sygnaturach spraw. I gdy wejdziemy na stronę pojedynczego losowania, to będziemy widzieć wszystkie te dane i metadany, które wcześniej pokazywałem w PDF-ie, a oprócz tego jak przewiniemy tę stronę, to będziemy tego PDF-a mieli tutaj zainkludowanego. Czyli jakby pełen przekrój wszystkich informacji, coś czego ministerstwo wam nie pokaże, no to ja wam pokażę i to było bardzo interesujące dla bardzo wielu ludzi, pierwszy raz dowiedziało się, jak się pracuje w innych sądach, ile jest spraw w mieście, ile na prowincji, ile spraw dostaje ich przełożony, bo wiadomo, że mniej, ale można było sobie zobaczyć dokładnie, ile mniej i z których kategorii, no bo było też tak, że taki prezes sądu no to mógł sobie zupełnie przypadkiem przypisać, że jemu wlatywały postanowienia, które się opędza po kwadransie na sztukę, a wszystkim pozostałym sędziom sprawy, no które trwają wiadomo miesiącami. Więc mogli się dowiedzieć, być może dlatego przestałem dostawać te dane, tak troszkę wyprzedzając, ale tak, oprócz tego, żeby móc przygotować, przygotować te statystyki i wykresy i tak dalej, musiałem najpierw zrozumieć o co chodzi, bo to ani z przepisów nie wynika, ani z tego algorytmu SLPS, zwłaszcza dynamika, co to jest koszt sprawy, bo to wbrew pozorom to nie ma nic wspólnego ze sprawą, a zależy wyłącznie od sędziego, więc to jest tak, dobra, abstrahując. Koszt prawy to jest coś, co nie jest kosztem sprawy. Wskaźniki obciążenia skaczą w sposób ciężki do zrozumienia, zwłaszcza jeśli ktoś widział tylko papierowe raporty. Przypominam, kilkadziesiąt równolegle obliczanych wskaźników na jednego sędziego. Nie dało się tego zrozumieć albo śledzić, patrząc tylko na kartki. Po raz pierwszy dało się to zobaczyć na wykresach tutaj. To przy okazji mogłem też znaleźć błędy z tym związane, ale tak, żeby móc opisać, musiałem to najpierw zrozumieć, ale jak to zrozumiałem to tworzyłem artykuły, które można sobie przeczytać i podobały mi się reakcje sędziów niektórych. Na przykład jedna pani sędzia napisała, że ona po raz pierwszy zrozumiała, czym jest koszt sprawy i jak działa SLPS, bo wcześniej traktowała to jako złośliwe, nieprzewidywalne bóstwo, które dowala jej spraw w ogóle w sposób, który nie daje się zrozumieć, więc dało się to już zrozumieć. Tak, na początku oglądalność była całkiem spora, potem spadła, no bo jakby nie pojawiały się tam nowe rzeczy, ale dzięki temu, że tyle w tych danych grzebałem, no to mogłem znaleźć, ile jeszcze mam czasu? Nie będzie problemu, jeśli jeszcze jest 10 minut? Dobra, no to postaram się tego, żeby ci, którzy są głodni, no to nie żałowali, że byli głodni chwilkę dłużej. Usterki jakie znalazłem, oczywiście nie wszystkie, ale te, które rzuciły mi się w oczy, no to zawarłem na slajdach, na przykład obciążenie przed losowaniem. To jest projekt, który mówi mniej więcej, jakie zaległości ma dane sędzia i tu mamy trzy sędzie z Nowego Sącza, które mają zaległości rzędu dwóch miliardów stu czterdziestu siedmiu milionów spraw i jeśli ktoś ma coś wspólnego z programowaniem, to może sobie pomyśleć, że to jest podejrzanie bliskie intowi ze znakiem i to musi być spierdolone za przeproszeniem na kilku różnych poziomach, ale najpierw trzeba przekręcić zmienną na niewłaściwy typ, potem ją przekonwertować na floata i potem jeszcze na niej robić obliczenia, więc no, ale jak, aha i to nie jest tak, że to jest jeden raport taki, to przez rok co najmniej się takie wskaźniki ciągnęły, więc jak ktoś jest ciekawy, no to może sobie zajrzeć do tych, do tych pani sądzi i się dowiedzieć, czy tak jest dalej. Raport, w którym brakuje nie wiadomo czemu numeru wydziału, co sugeruje, że albo mechanizm generowania jest spieprzony, albo nie ma konstraintów na bazie, albo cholera wie co, ale nie ma, albo mamy sprawę o numerze zero. Ja wiem, że my jako programiści liczymy od zera, ale normalni ludzie w sekretariatach sądów, oni liczą od jednego. Jak widać, nie zawsze. Tutaj jest fragment, później, bo nie mam czasu, przepraszam. Ok, no to tutaj jest fragment dokumentacji tego tak zwanego algorytmu i tu jest jakiś tam diagram, który opowiada, kiedy, w jaki sposób sędziowie mają być zwielokrotnieni w losowaniu i wszystko jest fajnie, tylko, że obok jest opis tekstowy i on opisuje co innego. I teraz, no nie wiem, czy wyłapał to programistka, który to implementował, że się nie spina, czy wybrał sobie po prostu, który mu, który wariant jest dla niego wygodniejszy, albo nie zauważył i pocisnął po prostu bez żadnych testów, bo to, że nie było testów to wiadomo skąd inąd. Tutaj mamy raport, który wygląda trochę dziwnie, ale on nie wygląda dziwnie w taki sposób, że tutaj jest dziewięć kopii tej samej sędzi. Jeśli słuchacie pana Krzysztofa Brejzy, czyli europosła naszego obecnego, on się strasznie bulwersował o to, że w jakiejś jego sprawie sędzia pojawił się trzy razy i ja mu wytłumaczyłem dlaczego. Bo jeśli ktoś ma aktywną funkcję budowy referatu, czyli jest nowym sędzią, który jakby przychodzi i trzeba mu nawrzucać więcej spraw, żeby miał tyle co koledzy, to ta funkcja go będzie zwielokratniać. I że to nie był spisek, bo taki spisek by trzeba zawiązać kwartał wcześniej, bo ten sędzia miał rzeczy, pojawiał się wielokrotnie na losowaniach właśnie od kwartału, ale więc tutaj nie jest dziwne to, że pani Pokrzywa pojawia się dziewięciokrotnie, a pani Łukasik tylko jeden raz, bo są funkcje, ich nie ma dużo, ale są funkcje w sądownictwie, które sprawiają, że ma się tylko 10% przydziału normalnego sędziego. Czyli jeśli wpływa 10 spraw do sądu albo 100 albo 1000, no to przy dwójce sędziów trzeba to rozrzucać w takich proporcjach, gdzie jest 1 do 10, tutaj jest akurat 1 do 9, ale mniejsze o to. I teraz śmieszny fakt, mimo że tutaj ta pani pojawia się dziewięciokrotnie i teoretycznie losujemy spośród 10 sędziów, to przez ponad rok losowano nadal z czterech. Pierwszych czterech dodajmy. Więc to nie jest tak tragicznie, jak mogłoby się wydawać, to jest jeszcze drugi wariant czegoś takiego, gdyby ta pani miała mniejszy wskaźnik, ona by była na początku i wtedy by losowano też pierwszych czterech z nią na pierwszym miejscu, co de facto sprawia, że zamiast tego balansu taki, który powinien dążyć do oczekiwanych procentów, to zawsze była jedna szansa na 8 przez ponad rok. No jak coś przestawało działać, no to nie działało, no i tyle. Więc wiemy już dlaczego te główne założenia SLPS, czyli gwarancja losowego przydziału i równoważenie obciążenia, dlaczego one w ogóle nie działały i nie mogły działać. No gwarancja losowości. Ten system w takiej postaci, w jakiej jest, on jest absolutnie nieprzejrzysty. Nie możemy powiedzieć dosłownie niczego o uczciwości pojedynczego losowania. Natomiast równoważenie obciążenia, tam nie ma żadnej pętli zwrotnej. Jedna sprawa nawet z tej samej kategorii może zająć jedną rozprawę, a inna może mieć 100 świadków i zająć 10 rozpraw prowadzonych przez 2 lata. Co więcej, ktoś może wycofać sprawę z sądu, ale jak ona była wylosowana, to ona już robi sędziem obciążenie i tam nie ma pętli zwrotnej, nie ma w ogóle informacji o tym, jaka jest rzeczywista pracochłonność, więc to równoważenie, ono po prostu nie jest realizowane. To nie jest równoważenie obciążenia, tylko co najwyżej mniej więcej modulo te błędy, przydzielanie takiej samej liczby spraw, ale bez patrzenia na rzeczywistą pracochłonność. I teraz tak, jaka jest przyszłość tego serwisu? Ci, którzy śledzą moje social media wiedzą, że go porzuciłem. Dobrze, może zbyt mocne słowo, że na pewno nie będzie, na pewno nie będzie rozwijany. Przestałem dostawać nowe dane. Mamy październik. Nie dostałem danych z zakwiecień ani żadne późniejsze. W kularach sobie możemy porozmawiać o tym, jak ta sprawa wygląda obecnie. W każdym razie sugerowano mi, sugerowano, to była oficjalna odpowiedź na wniosek o informację publiczną, że ta informacja publiczna jest udostępniona w portalu sądowym i że jak się wypełni ten formularz z sygnaturą i wszystkim i kliknie pobierz, to można taki pojedynczy raport sobie pobrać. Przypomniałem, kilkanaście tysięcy dziennie. Całkiem sporo klikanie, jeśli o mnie chodzi. Ja powiedziałem, że ja mam w dupie i że ja tego nie będę robił. Ale, znaczy oczywiście napisałbym automat, tylko że uznałem, że skoro takie jest podejście Ministerstwa Sprawiedliwości, to będą mi przeszkadzać też z innymi rzeczami, które są mi potrzebne. Spoiler, miałem rację. Natomiast gdy jeden z moich czytelników faktycznie napisał automat, który zaczął ściągać z tej strony kolejne PDF-y i przez niecały tydzień ściągnął jakieś trzy miliony, to co? Ta-da, wróciła kapcza. I to jest, znaczy ja nie chcę używać brzydkich wyrazów, ale amerykańska rykapcza na stronach polskiego rządu to jest kurwa skandal. Ja naprawdę mówię, że to nie powinno nigdy, że to nigdy nie powinno mieć miejsca i ktoś, kto się na to zgodził, to powinien stracić swoją funkcję, bo się nie nadaje do jej pełnienia. Natomiast jakby sprawy dzieją się tak dynamicznie, że nie nadążam z tymi slajdami, bo dzięki temu, że mam dostatecznie duże zasięgi na social mediach, to główną burzę potrafię jakby wzniecić i gdy napisałem we wtorek, że wróciła rykapcza i Puls Biznesu napisał o tym w czwartek, bo w czwartek rano już jej nie było. I to nadal nie znaczy, że te sprawy powinny tak działać, ale życie wygląda jak wygląda. Podobno, to jest cytat z odpowiedzi ministerstwa do pani dziennikarki, która napisała o tym do gazety, że ministerstwo musiało zlecić za bardzo dużo pieniędzy, jakieś tam kwoty od 20 do 50 tysięcy, musiało zlecić zewnętrznej firmie przygotowanie tego wszystkiego, co ja chciałem i że zrobili to raz, ale jak ja przysłałem im paczkę pendrive'ów, żeby mi co miesiąc odsyłali po jednym z nowymi danymi, no to już był foch i już tego nie chcieli robić, ale jak gównoburza wyzbrała dostatecznie wysoko, dostatecznie wiele razy, no to jednak podobno będą, ale to mam nadzieję, że ktoś się ogarnie i że nie będą wystawiać paczek pendrive'ów, bo jestem na razie jedynym człowiekiem na świecie, który umie z nich zrobić bazę danych, tylko że wystawią, kurde, tą bazę danych, jakąkolwiek, JSON-y, CSV-y, żeby to już nie, żeby to były surowe dane, a nie takie pogrywanie sobie. Ja, który miałem sprzed prawie roku, że wyślę wniosek i nagle został zrealizowany, to była dla mnie wielka niespodzianka. Pewnie nie dali by czego innego, no bo jak na przykład chciałem, wiecie, w Polsce są i sędziowie, i referendarze. Referendarz to jest taki prawie sędzia, który rozciega w mniej ważnych sprawach i chciałem na stronach sędziów móc podpisać, kto jest sędzią, kto jest referendarzem. Dostałem wniosek o informację publiczną, żeby zrobili, kurde, durnowatego selekta na tej bazie i żeby tam była funkcja i przypisanie do wnioski organizacyjnej, dodatkowo bym wiedział, które nazwiska się powtarzały, bo na przykład sędzia Anna Nowak jest ich więcej niż jedna. Dostałem odpowiedź, że muszę, znaczy, że to jest informacja przetworzona, będzie płatna, muszę zapłacić co najmniej dwie dniówki zewnętrznej firmy, która to będzie robić, a oprócz tego wykazać szczególnie tutaj wypowiedniony interes publiczny, żeby takie coś dostać. No to, kurde, mam to w dupie, nie będę. I tak spędziłem dość czasu na tym, więc nie, jakby sensem mojego życia nie jest kopanie się z koniem. Nie, to nie, to nie będzie. Co zyskałem? No, nie pieniądze, bo nie zarobiłem na tym projekcie ani złotówki. Zyskałem sporo znajomości w branży prawnej, również wśród sędziów. To jakby te artykuły, które pisałem, to mi sprawdzało kilkoro sędziów i tych paleosędziów, jak to się mówi, i neosędziów. Okazuje się, że wszyscy byli zainteresowani tym, żeby taki portal istniał, ale ministerstwo nie. Zyskałem trochę szacunu na dzielni, to jakby trochę się poniosło, że tutaj taka szarpanina się odbywa. No i oczywiście zyskałem temat, z którym dzisiaj do was przyjechałem. Dziękuję bardzo. Dziękuję. Czyli rozumiem, że jeszcze parę minut na pytania mamy. Tak, tak. No to postaramy się. PDF to format do eksportu. Nie mogłeś się domagać czegoś bardziej ludzkiego? DAM z bazy, CSV, JSON? Nie mogłem, ale chodziło mi o coś, co na pewno będę w stanie wyciągnąć, bo skoro te raporty są drukowane i wpinane do każdej sprawy, to znaczy, że te PDF-y istnieją. I czy one istnieją gdzieś w jakimś systemie plików, czy jako bloby na bazie? To proste jest sporządzenie archiwum, w którym one będą, więc to mi się wydawało czymś, co ma największą szansę, że dostanę i faktycznie okazało się, że dostałem. Udostępnisz bazkę SQLite? Jak ktoś potrzebuje i pogada, to zobaczymy. Jaki był schemat bazy danych SQLite? Tej, którą zbudowałem? No tak są. Jedna tabela z losowaniami, jedna ze słownikiem sędziów, jedna z uczestnictwem w losowaniach, jedna z wykluczeniami z losowań. Cztery tabele? To już było. Czy aktualizujesz dane? Odpowiedziałeś nie na razie. Jeśli znowu chorągiewka się przestawi i te dane dostanę, to pewnie zaktualizuję, bo to akurat, to jest puszczenie paru skryptów, poczekanie dzień albo dwa i będzie. Ale żeby coś nowego robić na tej stronie, to na razie strasznie motywacja. Co sądzisz o public money, public code? Złożony temat, ale sam kod to jest mało. Jakbym losowania spraw miał sens, to te losowania powinny być reprodukowalne, ukośnik weryfikowalne. Żebyśmy na przykład najpierw dostali listę losowań, jaka będzie robiona wieczorem. Potem patrzyli na wynik, nie wiem, losowania Totolotka. Co wyszło? Jakaś informacja losowa, która pojawia się na świecie po przygotowaniu tej listy. I ten wynik Totolotka haszujemy i używamy jako random seed do jakiegoś znanego algorytmu. I robimy losowania według tego, tak żeby każdy mógł sobie sprawdzić. To by była wartość takiego przejrzystego systemu, a nie kod źródłowy. Oczywiście fajnie by było go zobaczyć, ale z drugiej strony już tyle wiemy o jego jakości, że może już lepiej do niego nie patrzeć. Tu jest pytanie, czy możesz udostępnić te pliki? To było pierwsze pytanie, więc sądzę, że chodziło o PDF-y, które tak chronologicznie. Jak ktoś chce, to oczywiście. Jak te pliki były ponazywane? Sensownie, to znaczy w nazwie każdego pliku, oprócz tego, że one były w strukturze katalogów w zipie, to każda z nich tam była sygnatura, numer losowania, data. Jakby pomagało to, jak były nazwane. Jaki był system plików na zewnętrznym dysku? Ja dostałem pliki zip na dysku, który wysłałem w zwykłym fatowym chyba, więc to nie ma znaczenia. A gdyby tak pracować na losowej próbce? To niczego się nie dowiemy. To są sekwencje, czy też szeregi czasowe tak naprawdę, więc nie ma sensu losować. Co jeśli w plikach były wirusy? To jest za późno. Czy zdarzyły się uszkodzone, nieczytelne pliki? Tak, jeden z nich był uszkodzony, ale przesłano mi go mailem tego jednego. Potem po kilku miesiącach analizy okazało się... To, że brakowało iluś plików, zazwyczaj z końca bardzo wielu miesięcy, myślałem, że tak wygląda ten proces, że nie wiem, ostatniego dnia sądy nie rejestrują albo nie losują albo coś, ale jak zacząłem analizę, czego brakuje, która nie była łatwa, bo jak się pracuje z milionami rekordów, to jednak tak popatrzenie oczami, że zdroworozsądkowo to tutaj coś jest nie tak, to nie jest takie łatwe. Okazało się, że faktycznie kilkunastu dni brakowało i dosłano mi je bardzo niedawno. A co jeśli dwaj sędziowie mieli to samo imię i nazwisko? To niestety obecnie w systemie występują jako jedna persona, która ma kaszę w tych wykresach. To już było. Następne prosimy. Czy nie kusiło cię, żeby poczekać 10 minut dłużej przed wysłaniem prośby do Kuby o story czy do Mikrusa? Pod slajd nie pamiętam, co tam było. 10 minut dłużej, w związku z czym? Pod slajd. Dobra. Czy widzisz jakieś ryzyka dla prywatności sędziów? Na przykład analiza, jak często biorą urlop wynikający z istnienia monitora? Trochę tak. I dlatego na przykład nie cisnąłbym, nie domagałbym się świeżych danych każdego dnia, no bo faktycznie wtedy będzie widać, że jak ktoś rok temu wyjechał w sierpniu na trzy tygodnie na urlop i mamy początek sierpnia i on znika, to może ma pustą chawirę. Więc dostrzegam to ryzyko. Jednocześnie sędziowie są taką grupą społeczną, która musi się godzić z tym, że informacje o ich życiu są dostępne w większym stopniu niż szarego obywatela. Więc moim zdaniem miesięczne opóźnienie byłoby wystarczająco duże, żeby już tej prywatności nie naruszać i żaden z sędziów, którzy się ze mną kontaktowali, nie wspomniał o tym ani razu, więc chyba też nie mają z tym problemu. Czy istnieją jakieś zagrożenia dla prywatności obywateli wynikające z istnienia monitora albo samego systemu losowania? Czy można powiązać losowanie z przedmiotem sprawy, mediami, OSINT? Nie, ale oprócz tego wiele osób nie wie, że sądownictwo, wymiar sprawiedliwości ogólnie jest w Polsce otwarty i każdy może pójść do dowolnego sądu i wejść w charakterze publiczności na każdą rozprawę i to się nie dzieje, bo nikt nie chodzi hobbystycznie do sądu, ale każdy może. To znaczy możecie sobie zrobić eksperyment. Pójść do najbliższego sądu, poczekać, aż będzie jakaś rozprawa, wejść, sędzia może być zdziwiony, może spytać, kim pan jest. I wtedy starczy odpowiedzieć, wstać, powiedzieć w charakterze publiczności i to wystarczy. I tyle. Jeśli chodzi o zagrożenie dla zwykłych ludzi, no to są tego, są portale, znaczy jest portal sądowy, w którym są wyroki i one są niby zaanonimizowane, a czasem są tak zaanonimizowane, że da się znaleźć na przykład personalia albo wywnioskować, o kogo chodzi, więc raczej tam by były większe zagrożenia niż w monitorze SLPS. Gdzie ogłaszałeś stronę postarcia? Na social mediach. Właśnie kilkadziesiąt tysięcy obserwujących, a potem już idzie wiralem. Co rozumiemy przez koszt sprawy? Proszę albo przeczytać artykuł, albo podejść w kuluarach i pogadamy wtedy, bo to wymagałoby chwili, żeby objaśnić. Czy jak wykryto przekręty sędziów można pójść, czy jak, czy jakby wykryto sędziów, przekręty sędziów, można pójść z tym na drogę sądową? Jeśli tak, to kto powinien się tym zająć? Tego w sumie nie powiedziałem, a powinienem był. Badając przez miesiące działanie tego systemu i dowiadując się coraz więcej, bo dostałem na przykład instrukcję obsługi dla administratora i mogłem sobie poczytać jak to działa, albo instrukcję obsługi też mam dla pracownika sekretariatu, więc po tych miesiącach analizy myślę, że jakiekolwiek fałszerstwa byłyby nie do wykrycia, ponieważ istnieje prawie pełna dowolność w zmianie tych parametrów i wskaźników. Można sędziego na pałę całkowicie albo dociążać, albo odciążać. Oczywiście możemy mieć nadzieję, że gdy taka operacja była wykonana, to miała uzasadnienie, natomiast w moim źródle danych, czyli w raportach PDF-owych nie ma ani śladu o przyczynach, więc ja mogę tylko zauważyć nieciągłość, ale czemu ona się tam pojawiła, to nie wiadomo. I niestety musimy zakończyć, bo już nie mamy czasu na pytania z sali, więc łapcie Tomka w kuluarach. Także wielkie dzięki za prelekcję. Dziękuję.