Blogg

Här finns tekniska artiklar, presentationer och nyheter om arkitektur och systemutveckling. Håll dig uppdaterad, följ oss på Twitter

Callista medarbetare Mikael Lagberg

En dag i (J)fokus

// Mikael Lagberg

När jag går på konferens vill jag egentligen bete mig som ett litet barn i en leksaksaffär. Jag vill springa runt och leka med allting tills jag bestämt mig för något jag verkligen(?) vill ha.

Tyvärr är det omöjligt att gå på alla föreläsningar, och när jag inser det så kan jag förstå hur barnet i leksaksaffären känner när hen inte får ta med sig ALLA leksaker.

Under Jfokus 2019 försökta jag få in “det hippa” inom utveckling, tex Machine Learning och Apache Kafka blandat med matnyttiga saker såsom functional Java, code analysis och testning.

Dag 1

Jfokus 2019 inleddes med en intressant presentation av Gil Tene som under keynoten pratade om på vilken nivå man ska ligga när man tolkar metrics från sin applikation. Kontentan var att inte hänga upp sig på dåliga metrics, utan istället tillåta sig att ha en “accetaple measurement of misery”. Han menade att man istället för att hänga upp sig på sina dåliga metrics tillåta applikationen att producera en viss nivå av sådana.

Efter keynoten var det dags för en 45 minuters crash-course i den senaste “mode orden” inom utveckling, just nu. Blockchain blev först ut, där gick man snabbt går igenom för och nackdelar med tekniken och man konstaterade att det finns fall där tekniken passar mer eller mindre bra. Har man t.ex krav på låg latency är nog blockchain fel val.

Chatbots var det andra som avhandlades, där man inleder med att konstatera att det har funnits chatbots i över 10 år…

Man tog även upp serverless som faktiskt inte är applicerbart på allting, utan har sina specifika usecases. Ser man inte upp kan det lätt bli dyrt.

AI och Machine Learning kommer inte ta över våra jobb. Än.

Efter lunch var det dags för Brian Vermeer och “Ten Common mistakes made in Functional Java”. Brian pratade mycket om att inte använda “blocks”, alltså if och try-catch -statements i lambdas. Istället bör man bryta ut dessa block i separata metoder och använda dessa metoder i lambdan. Och istället för att ha try-catch i lambdan bör man överväga functional interfaces eller Javas Either type. Just Either approachen var faktiskt ny för mig och känns som ett användbart sätt att lösa problemet på.

Under sitt föredrag beskrev Brian även om betydelsen av att returnera “oavslutade” streams. Alltså inte köra typ

return list.stream() .map(s -> s.toUpperCase()) .peek(s -> System.out.println(s));

eftersom peek inte stänger strömmen (den är inte terminal). Avsluta strömmen och returnera collection!

Adam Tornhill fortsatte konferensen med att prata om “Behavioral Code Analysis” där han tog upp hur man kan få fram väldigt intressant data av att analysera kod från versionshanteringssystem. Bland annat kan man få fram data som förklarar varför koden ser ut som den gör idag, var i kodbasen den mest komplexa koden finns, var det finns kod-duplicering etc. Han menade att man kan avgöra hur komplex kod är genom att räkna indenteringen i koden. Han presenterade även lösningar på hur man kan hantera komplex kod, dels genom att använda sig av “Splinter pattern” (bryta ut kod till separata klasser), och dels genom “Principle of Proximity”. Principle of Proximity handlar om att flytta kod som har gemensam funktionalitet, dvs som ändras tillsammans även bör ligga tillsammans i kodstrukturen.

Grace Jansen, som har en bakgrund som biolog, hade ett intressant föredrag där hon tyckte vi skulle titta på hur bisamhälle fungerar när vi utvecklar mjukvara, eftersom deras samhälle påminner mycket om “the reactive platform”. Ett annorlunda sätt att se på utveckling!

Vidare sen till “Micro Frontend: the microservice puzzle extended to frontend” där Audrey Neveu pratade om hur dom på Saagie gjorde när dom byggde sin microservice baserade frontend. Ett väldigt intressant föredrag för mig som mest hållit på med backend de senaste åren. Personligen kändes det lite meckigare just i frontend eftersom det är något som är, eller kan vara, “synligt” för användarna på ett annat sätt. Efter att ha sett min beskärda del av snårig (och väldigt lång) frontend kod kan jag förstå att man kan vilja “microserviciera” även frontend.

Avslutade konferensen gjorde Oliver Zeigermann med att fråga sig om Machine Learning kommer ta jobbet från oss utvecklare. Svaret var nej (som tur var). Oliver tog upp ett exempel där han använde kunddata från en applikation som hanterar bilförsäkringar. Utifrån ålder på kunderna, hastigheten på den önskade bilen samt den årliga körsträckan försökte han få till sk “Supervised Machine Learning” så pass bra att det kunde ersätta den snåriga affärslogiken som ursprungligen finns i koden. Resultatet av det hela blev väl hyfsat, och det var en riktigt intressant approach för att hantera affärslogik. Det kändes dock som att man måste ha en hel del data för att kunna träna sitt nätverk fullt ut för att kunna använda det på riktigt.

Oliver avslutade föreläsningen med att konstatera att “No machine has common knowledge of the world, though” och att “Machine learning in an engineering effort, There is no strong AI that you just throw a problem at and it will solve it automatically”. Tur i oturen då, eller?

Tack för att du läser Callistas blogg.
Hjälp oss att nå ut med information genom att dela nyheter och artiklar i ditt nätverk.