Hackaton!

Anna Viklund
vkmedia-dev
Published in
4 min readNov 21, 2018

Igår var det dags för utvecklingsavdelningen att ta en paus från våra ordinarie arbetsuppgifter för att tillägna en hel dag åt valfria projekt. Vi brukar ha sådana dagar ett par gånger per år och det är ett perfekt tillfälle att under fria former få förverkliga en idé eller testa ny teknik. Under dessa dagar brukar vi också förflytta oss från våra vanliga arbetsplatser och istället sitta tillsammans med förhoppningen att kanske bli lite extra kreativa! I slutet av dagen demonstrerar alla sina projekt. Här är vad vi gjorde igår!

Text to speech

Möjlighet att låta våra nyhetsartiklar bli upplästa med hjälp av Google Text-to-Speech API via ett knapptryck på våra artikelsidor. Uppläsningen var förvånansvärt bra, så denna feature kanske ni får se i produktion snart! Även en explosion implementerades, för extra effekt.

Kategorisering av artiklar med machine learning

Kan vi via machine learning skapa en modell som baserat på en artikels textinnehåll avgör vilken kategori artikel tillhör? Svaret är eventuellt! Den slutliga modellen tyckte att nästan alla artiklar tillhörde kategori “Nöje” av någon anledning, men med mer tid och mer träningsdata skulle säkert en mer pålitlig modell kunna hittas!

Nyhetsgrid

Med CSS Grid Layout kan man snabbt och enkelt definiera ett grid och även hur olika rutor ska justeras baserat på fönstrets storlek. Perfekt om man vill testa att presentera innehåll på ett nytt sätt!

Exempel på nyheter i ett CSS grid istället för i ett traditionellt flöde.

Miss DJ

Vore det inte härligt om alla på kontoret kunde lyssna på musik tillsammans under dagen, men i sina egna hörlurar? Ungefär som en radiokanal, men där anställda tillsammans bestämmer vad som sänds. Det är målet för Miss DJ, som är en slack bot med koppling till Spotify.

Dynamiska övervakningsgrafer

Alla våra applikationer skickar loggar till Papertrail och via deras API kan man göra sökningar i dessa loggar. För att snabbt kunna se eventuella fel i våra miljöer har vi ett antal grafer som visar kritiska meddelanden från loggarna. Under gårdagens hackaton byggdes stöd för att dynamiskt kunna lägga in nya grafer genom att ange ett antal förbestämda parametrar, till exempel applikationsnamn och nyckelord för loggmeddelandet. Appen som byggdes är gjord i .NET Core, som körs i Docker (likt de flesta av våra andra appar) och visualiseringen sker med hjälp av C3.js.

Web push notifications

Web push notifications är helt enkelt pushar på webben, istället för via mobilappar. Dessa pushar kan användas på både mobil och desktop och ger möjlighet att notifiera användare om nytt innehåll samtidigt som de är inne på sidan, men också efter att de stängt ned den. För en nyhetssida skulle detta kunna vara värdefullt, så det är troligtvis något vi kommer kolla mer på framöver.

Automatisk flytt av Jira-tickets vid deployment

Vi har sedan tidigare haft stöd för automatisk flytt av tickets i Jira (som vi använder som verktyg för projekthantering). Detta innebär till exempel att en ticket får status “staged for release” när en branch har mergats till master. Vi har däremot inte riktigt fått till sista steget än, så att en ticket får status “done” när motsvarande fix tillslut är ute i produktion. Detta var något som undersöktes under gårdagens hackaton. Tanken var att försöka få vår lanseringsbot Sören att ordna detta, men tyvärr svek han oss under demon. Men enligt rykten är det nu fixat!

Postgres backup med övervakning

Vi har idag ett gäng databaser som vi gör backuper på ungefär var 100:e minut. Under gårdagen sattes två nya grafer upp i Grafana som dels visar hur gamla våra backuper är och hur stor vår totala backup size är.

Grafer som visar status för våra Postgres backups
Widget för aktuella händelser.

Händelsebevakning

På en nyhetsredaktion är det alltid full fart och mycket att hålla reda på, så verktyg som kan underlätta bevakningen av viktiga händelser är alltid uppskattade. Många organisationer och myndigheter tillhandahåller öppna API:er och baserat på data från bland annat Polisen, SMHI och SOS Alarm byggdes en widget där redaktionen skulle kunna se aktuella händelser i realtid och generera en artikelgrund baserad på en vald händelse.

Features via bokmärken

All kod vi skickar till klienten är inte alltid relevant. Till exempel så kräver vår interna algoritmbar (som går att läsa mer om i detta inlägg) vissa förberedelser i koden som istället hade kunnat påföras i efterhand. Via ett enkelt bokmärke kan detta åstadkommas, så att enbart intresserade personer behöver ladda den kod som behövs för exempelvis algoritmbaren.

Responsiv sida med code splitting

Idag kör våra nyhetssidor två separata applikationer för mobil och desktop eftersom det finns en hel del i koden som skiljer sig. Vi har till exempel skilda annonser och widgets på olika plattformar. Detta har tidigare gjort det svårt för oss att ha en responsiv sida, men med code splitting skulle vi kunna hämta ny kod för renderingen baserat på fönstrets storlek, vilket var något som undersöktes och visades under gårdagens hackaton. En responsiv sida skulle framförallt kunna vara värdefull under utveckling, men eventuellt även i produktion.

Hackaton-gänget!
Dagen avslutades med bowling och AW, tjoho!

--

--