2025-02-14 Teknikstack(are)

Api-klient

Varje timme är det en liten java spring boot-snurra som hämtar förseningar från Trafikverkets api.

Varför java? För att jag hade en api-klient färdig från ett tidigare projekt.

Persistens

Data sparas i en elasticsearch-databas.

Varför elasticsearch? I teorin är det ju bättre än en relationell databas för att hantera tidsserieinformation, men när det rör sig om så pass små volymer spelar det nog egentligen ingen roll. Jag tror det skulle vara möjligt att göra detta med en cvs-fil på disk. (Det skulle kanske bli lite krångligt pga data måste uppdateras ibland). Det skulle vara lite små-intressant att provköra med en relationell databas någon gång. Det får vänta tills jag har åtminstone ett års data. Hursomhelst är kibana ett gott skäl att använda elasticsearch. Genom att dra fram en massa grafer och tabeller kan jag snabbt se om jag missat något när jag persisterar data. Det är olyckligt att det inte finns något smidigt sätt att publicera kibana-dashboards till allmänheten. Jag kanske kommer på något i framtiden.

Tabeller i GUI

Alla tabeller med förseningar genereras en gång i timmen av en snurra med python, elasticsearch-dsl och jinja2. Varför python? För att man använder json för att kommunicera med elasticsearch och det är krånligt med json i starkt typade språk.

Reseplanerare

Reseplaneraren är en snurra i java med spring boot. Python-snurran som genererar html genererar också en sammanfattnings-json, så reseplaneraren behöver aldrig gå direkt till elasticsearch-databasen. Varför java här? För att python är ett dåligt språk för dåliga människor. För att generera html i svaret används thymeleaf och det är väldigt otrevligt att jobba med. Det har i alla fall en betydligt högre tröskel än jinja2, men det är möjligt att det är mer korrekt.

2025-01-07 Planer

Saker att fixa med webbversionen. Kanske i ordning. Kanske inte.