JUGtoberfest 2016

Java User Group Łódź
Java User Group Łódź
Public group
Location image of event venue


JUGtoberfest - beer,food and great presentations.


18:00-18:10 - Intro

18:15 - 19:15 - "Building Applications with Angular JS and Spring Security" - Dave Syer

In this presentation we show some nice features of Spring Security, Spring Boot and Angular JS working together to provide a pleasant and secure user experience. Things to consider are cookies, headers, native clients, various security vulnerabilities and how modern browser technology can help us to avoid them. In this series we show how nicely features of the component frameworks can be integrated simply to provide a pleasant and secure user experience. We start with a very basic single-server implementation and scale it up in stages, splitting out backend resources and authentication to separate services.

19:15 - 19:30 - Uczestnicy wymieniają się wrażeniami przy napojach wyskokowych

19:30 - 20:15 - "Consumer Driven Contracts and Your Microservice Architecture" - Marcin Grzejszczak

Consumer driven contracts (CDC) are like TDD applied to the API. It’s especially important in the world of microservices. Since it’s driven by consumers, it’s much more user friendly. Of course microservices are really cool, but most people do not take into consideration plenty of potential obstacles that should be tackled. Then instead of frequent, fully automated deploys via a delivery pipeline, you might end up in an asylum due to frequent mental breakdowns caused by production disasters. We will write a system using the CDC approach together with Spring Boot, Spring Cloud Contract verifier. I'll show you how easy it is to write applications that have a consumer driven API and that will allow a developer to speed up the time of writing his better quality software.

20:15 - 20:45 - Dinner

20:45 - 21:30 - "Keep IT clean, or how to hide your shit" - Jakub Nabrdalik

Do you know why the default scope in Java is package-private? Because that's what designers thought should be the most popular scope. Is that the scope you most often see? Probably not. Somehow Java devs became crazy communists-capitalists, recognising only private and public access, and preferring public everywhere. And so our projects look like a lawn right after snow melts: full of shit laying in public. Hard to put into your head. Hard to reason about. Entanglement instead of encapsulation. People even register every possible class in an IoC container, because FU (nctional) programming, that's why. You wanna find something in my code? Google it.

Or how about inheritance? James Gosling asked in 2001 about what he would do differently if he had a chance to recreate Java, said he would probably remove class inheritance. We are in 2016, having lambdas, defaults on interfaces, AOP and other tricks, but young developers still prefer to just add another abstract class to your code. Gonna be fun navigating those seven layers of hell when you read it.

Ok, maybe it's not THAT bad, but it's not much better either. The problem of course, is that we all start with tutorials, which cut corners for brevity. And we don't pay attention to those small problems till they hit us hard.

Let's see how we can make our situation a little bit better, using Domain Driven Design, package-private scope, sensible packaging structure, and CQRS on microservices. Because it is actually easier, than not doing it.
Real life project examples included.

21:40 - 22:10 - "The pitfalls of inconsistency in modern systems" - Jan Pustelnik

Many modern trends in programming are recommending leaving the traditional consistent transactional monolithic system semantics in order to reach the restful microservicely architected reactive cloud-native nosqlish heaven, giving comforting examples of book warehouses and micropayments. However, in real life everything comes with a price. In this talk I am going first to show you the whole spectrum of possible (in)consistent behaviours (like is there a relation between causal consistency and repetable read), then walk you through the galore of clever tools that can be used in creating modern by-design non-consistent systems (e.g. sagas and compensations) and finish with quick overview of the business meaning of each of them in various contexts. After this I hope you'll be able to judge for yourselves the financial impact of the technology choices you are making in the name of your Clients.

22:10 - ... - Afterparty

With Beers : Miłosław Pils, Raciborskie Klasyczne, Warmińskie Rewolucje, Belfast Irish Stout, Miłosław Witbir + some food


Dave Syer

Senior Engineering Consultant at Pivotal

Founder of Spring Cloud, Spring Boot, Spring Batch, lead of Spring Security OAuth, and an active contributor to Spring Integration, Spring Framework, Spring AMQP, Spring Security. Experienced, delivery-focused architect and development manager. Has designed and built successful enterprise software solutions using Spring, and implemented them in major institutions worldwide.

Marcin Grzejszczak

Principal Software Engineer at Pivotal

Open source contributor (including Rest-assured, Moco, Mockito). Co-author of the Groovy @Builder AST, Micro Infra Spring and Accurest projects. Author of Uptodate Gradle plugin, Spock Subjects-Collaborators Extension, Gradle-Test-Profiler and JSONAssert open source projects. Co-founder of the Warsaw Groovy User Group and Warsaw Cloud Native Group. Author of Mockito books. Making Spring Cloud @Pivotal.

Jakub Nabrdalik

Senior Software Engineer at Grupa Allegro

Jan Pustelnik

Principal Consultant & Technical Architect at GFT. Mainly Scala & Java developer, also happily working with Go(lang), Python, C++, F# and Haskell. Academic teacher at the University of Lodz. Open Source fan, Akka project contributor (mainly akka-http). During his career he has designed, developed and supported various banking systems both for Retail as well as Investment banks, some of which moved real money in large volumes at high speeds. Very interested in how software works on low detail level and does not find big frameworks appealing.