Ondřej Krajíček
Jaroslav Tulach
The best time to take coffee or juice
Daniel Sawano
Daniel Deogun
David Ostrovsky
Burr Sutter
Jaroslav Bachorik
Simon Maple
Edson Yanaga
The best time to take coffee or juice
Andrey Adamovich
Oliver Lockwood
Alberto Brandolini
The best time to take coffee or juice
Mark Price
Michał Matłoka
Kim van Wilgen
The best time to take coffee or juice
Dmitry Kornilov
Luigi Dell'Aquila
Thomas Sundberg
The best time to take coffee or juice
Fred George
The boat will leave 'Na Františku' harbour at 20:30!
The best time to take coffee or juice
The best time to talk with speakers and attendees
Keynote
To Be Announced
The boat will leave 'Na Františku' harbour at 20:30!
There is no business value with an unused product. Up until the point when real users can start using the product the development is waste. Waste is bad. Let me show you a case study how I minimised the waste of unused software at one customer. We went from an error prone, manual deployment process to a fully automated one. We cut the deployment time from hours to minutes. About three minutes. We also reduced the risk, and therefore the anxiety, with deployment from high to low. Small changes are inherently less scary. It was simple, but not easy. I will show you how it was done in this case. Don’t settle for second best; go for perfection. Go for continuous deployment!
View presentationThomas Sundberg ,
Independent consultant working with Java and test automation for several years
What is the JVM warm-up problem, and how does it affect our software? How can we aid the runtime in optimising our programs, and is it even a good idea to do so? This presentation explores the lifecycle of Java code, and how the JVM evolves the runtime representation of code during program execution. From bytecode to assembly and back again (via some uncommon traps), we will cover practical tips on ensuring that Java code is running fast when it matters most.
View presentationMark Price ,
Lead Performance Engineer @ LMAX
Reactive programming is already an established concept and there are many modern frameworks and tools which support it. You need to understand the concept in order to build truly reactive applications. But you do not need to switch from what you already know in order to build them. With standard Java EE you have wide range of options to add reactive behavior to new and even existing applications. You will witness that Java EE is a modern and evolving framework and you’ll learn how it supports reactive concepts by many examples and live demonstration. The latest version of Java EE together with Java 8 add even more asynchronous API to write fully reactive applications. On top of asynchronous processing in servlets, REST services and EJBs, there is CompletableFuture with its promise-like API to tackle callback hell. Several Java EE implementations, like Payara Micro, go even further and provide extensions to scale your applications in a natural way.
View presentationOndrej Mihályi ,
Trainer and consultant, inventing and evangelising new approaches with already proven Java tooling
The Scala language and its environment have been evolving quite significantly over the past few years. The adoption of the language is slowly growing and it can now even be found in use in rather conservative enterprise settings. At the same time there have been quite a few criticism of the language, its ecosystem and its practicability in larger teams. Many developers are still avoiding to have a more serious look at Scala and its ecosystem for a variety of reasons ranging from the fear of good tooling support to the apprehension of advanced category theory principles. This talk is a reflection upon six years of working professionally with Scala in projects of various size and shape. It aims at conveying some of the learnings and practical insights gained during that time as well as to debunk some of the many preconceptions that surround the language and its ecosystem.
View presentationManuel Bernhardt ,
Independent consultant, trainer and author with a keen interest in the madness of distributed systems
Clojure.spec is an exciting, new core library for Clojure. It enables pragmatic specifications for functions and brings a new level of robustness to building software in Clojure. We’ll take a tour of the library and then take it one step further by exploring its abilities with genetic programming. Finally, we’ll take a step back and think about how clojure.spec lets programs describe themselves and what it might mean to AI.
View presentationCarin Meier ,
Developer at Cognitect, Author of “Living Clojure”
So You thought databases might be useful. I will show You why this is ridiculous idea. Database is just the thing that kill performance of you system (100 times), destroys design and pollutes code. Besides it causes a great loss of information. Really, if you care about your data do not make a mistake and do not put them into Tables, JSONs or whatever. You can do it better. During the presentations you will see how to code systems NORMALLY and compare it to weird things such as Hibernate or JPA. You will learn that best place for your data is RAM !!! :-) And this all from the guy who was writing JEE systems with SQL (and not only) for the last 15 years. This guy (me) was even kind of evangelist for JEE, and introduced Hibernate and JPA in a few companies. (I am do sorry for that). And we will be talking about facts. Code is here: https://github.com/airomem/galakpizza
View presentationJaroslaw Ratajski ,
Java anarchitect - let's make java funny again
Learn how to take part in Java technology evolution through the Java Community Process (JCP) program. You can participate as an individual, corporation, or nonprofit such as a Java user group (JUG). This session outlines why and how to participate in the JCP Program. You will also learn about the global Adoption programs and how you can participate in the programs. We will discuss details such as how to run hack days, collaborate with other JUG leads on Adopt-a-JSR activities, and review use cases from other JUGs around the world contributing to the Java EE 7 and Java SE 8 JSRs. Currently there are new JSRs being submitted and developed for the Java EE 8 and Java SE 9 platforms. Find out how you have contribute to the future editions of the Java Standard and Java Enterprise Editions.
Heather VanCura ,
Director, Java Community Process Program
For developers using Java on a daily basis, JVM is a pretty important component - it runs our software. But it is usually treated like a magic box, which takes code in and produces business features. Have you ever thought about what you are missing with such an approach? During my talk I'll cover some of the JVM internals which should not be avoided even during regular Java development. We'll discuss real differences between primitives and their wrappers, talk about the cost of using lambdas and streams, see what really gets erased in the type erasure process and what we can gain by removing stacktrace from our business exceptions.
View presentationJakub Kubryński ,
Co-Founder of DevSKiller and Codearte
Let’s shake some of the dogmas that constrain our programming worldview. In this session, I would like to take you to an alternative world - a world where programming languages are not parsed, a world where languages can be downloaded from the Internet and plugged easily into your IDE. A world where you have the power to customize the languages that you use. You’ll see that projectional editing gives you incredible freedom in how you express your thoughts. It allows you to choose notations that best fit the task at hand. Your code can be edited as text, tables, diagrams, a form, or a combination of those. This is especially useful for Domain-specific languages and we’ll see real-life examples from domains such as the insurance industry, embedded software development, bioinformatics, enterprise systems and legislation. We’ll also discuss the downsides and integration challenges that projectional editors face. My goal is that you’ll leave this session inspired, enriched and motivated to try something new.
View presentationVáclav Pech ,
Passionate about programming in all its forms and flavours
This might be the psychology basic for developers... starting with the design 101; take some design principles and show how they are reflected in code. This talk takes one of design principles (from UX world - Norman's design of everyday things, memory model, psychology of short term memory - etc) and extrapolate it onto programming world, trying to distill some patterns and antipatterns in developers' approach to code.
Jakub Marchwicki ,
Dev for past 10+ years, recently architect, sometimes analyst, consultant if required, manager of choice, trainer by <3, entrepreneur wannabe, JUG leader
As Java developers we are used to having rich ecosystems of libraries and tools that make our lives easier. As of the release of Java 8, we finally got our hands on building blocks like lambdas, optionals, and streams. All sorts of tools that help us write more concise code. But now, when the honeymoon is over, are there any downsides to Java 8 or is it a silver bullet? Are there any new anti-patterns emerging? Or subtle bugs caused by the new style of programming? Have there been any lessons learned? Are there any best practices? If you are interested in learning about the challenges encountered when moving over to a functional style of Java programming, what code constructs to avoid, and best practices to use, well then this session is for you.
Daniel Sawano ,
Developer, architect, public speaker, and agile dude
Daniel Deogun ,
Coder and Quality Defender
Graphs are everywhere. Friended someone on Facebook? Graphs. Checked the best route to avoid traffic on Google Maps? Graphs. Those recruiters that keep spamming you with job offers on LinkedIn? They find you through graphs. We're surrounded by problems that can be best represented and solved through graphs, and yet graph databases and processing frameworks remain an obscure niche accessible mainly to data scientists and academics. It's time to right the injustice and bring graphs to the masses! In this session you will learn about the various graph databases and data processing tools. You will hear about the types of problems that can be solved through graphs, what works best with graph databases, and what should be done with big data processing offline. You will see different ways of representing common use-cases in graph databases, various graph query languages, and learn about the advantages of migrating from relational databases with complex joins to graph databases. The talk includes demos of the various technologies, such as Neo4j, OrientDB, GraphX, Giraph, and others.
View presentationDavid Ostrovsky ,
Senior Solutions Architect at Couchbase and all-round big data geek
As RAM sizes reach into the terabyte range, modern application servers rely ever more on RAM caches for good performance, keeping almost all data in them. However, this makes the cost of application shutdown or crash much worse than just the downtime; it might take even days to gradually reconstruct the hot set in the caches. This is where Hot Restart Persistence comes in: it backs up the data in purpose-built filesystem storage and efficiently reloads it on restart. I'll present the design used in Hazelcast, these are some highlights: log-structured storage; concurrent, incremental, generational garbage collection; pipelined multithreaded design of the reloading process; based on lock-free concurrent SPSC queues. On PCIe-attached SATA SSD the speeds achieved were 1.4 GB/s reloading throughput and 500,000 IOPS during regular operation (with 1 KB values). Fully synchronous persistence is also supported: concurrent operations are batched together so that the whole batch shares the cost of one fsync operation. The presentation will include a live demo of Hot Restart Store with a visualization of the actions of the garbage collector.
View presentationMarko Topolnik ,
Java professional since 2001, member of the Hazelcast Core team. Dedicated contributor on Stack Overflow
Do you think you know your Java inside out? You know nothing, Jon Snow. I will show you that since Java 8 it's already possible to have nice and readable 'literals' not only for map or JSON but even HTML. You are just not brave enough to use them and maybe that's a good thing.
View presentationLukáš Křečan ,
Software developer, architect and blogger
Annotations were introduced in Java 5, and we all got excited. Such a great instrument to make code shorter! No more Hibernate/Spring XML configuration files! Just annotations, right there in the code where we need them. No more marker interfaces, just a runtime-retained reflection-discoverable annotation! I was excited too. Moreover, I've made a few open source libraries which use annotations heavily. Take jcabi-aspects, for example. However, I'm not excited any more. Moreover, I believe that annotations are a big mistake in Java design.
Yegor Bugayenko ,
Author of Elegant Objects
In a world running at breakneck speed to embrace JavaScript, it is refreshing to see a project that embraces Java to provides solution that deal with the new world and even improve it. I describe Truffle, a project that aim to build multi-language, multi-tenant, multi-threaded, multi-node, multi-tooling and multi-system environment on top of Java virtual machine with the goal to form the fastest and most flexible execution environment on the planet! Learn about Truffle and its Java API to become real polyglot, use the best language for a task and never ask again: Do I really have to use that crummy language? Jaroslav Tulach is the founder and initial architect of NetBeans, which is not just a well known IDE, but also the first modular desktop application framework written in Java. I have seen, made and helped to recover from many API design mistakes. Such experiences forced me to write a book titled “Practical API Design”. These days I am helping OracleLabs to design the API of Truffle which is the fastest virtual machine on the planet.
Jaroslav Tulach ,
NetBeans Founder and architect. Writer of Practical API Design and 20 API Paradoxes books. Maintaining Truffle API for OracleLabs Graal project
Having programmers do data science is terrible, if only everyone else were not even worse. The problem is of course tools. We seem to have settled on either: a bunch of disparate libraries thrown into a more or less agnostic IDE, or some point-and-click wonder which no matter how glossy, never seems to truly fit our domain once we get down to it. The dual lisp tradition of grow-your-own-language and grow-your-own-editor gives me hope there is a third way. This presentation is a meditation on how I approach data problems with Clojure, what I believe the process of doing data science should look like and the tools needed to get there. Some already exists (or can at least be bodged together); others can be made with relative ease (and we are already working on some of these); but a few will take a lot more hammock time.
View presentationSimon Belak ,
Philosopher-hacker. Sometime theatre director always a lisp weenie
BigData is quite trendy and now you're in a new project with Spark/Cassandra/Hadoop/
DuyHai Doan ,
DuyHai DOAN is an Apache Cassandra Evangelist at DataStax and committer for Apache Zeppelin
Graal is a dynamic meta-circular research compiler for Java that is designed for extensibility and modularity. One of its main distinguishing elements is the handling of optimistic assumptions obtained via profiling feedback and the representation of deoptimization guards in the compiled code. Truffle is a self-optimizing runtime system on top of Graal that uses partial evaluation to derive compiled code from interpreters. Truffle is suitable for creating high-performance implementations for dynamic languages with only moderate effort. The presentation includes a description of the Truffle multi-language API and performance comparisons within the industry of current prototype Truffle language implementations (JavaScript, Ruby, and R). Both Graal and Truffle are open source and form themselves research platforms in the area of virtual machine and programming language implementation (http://openjdk.java.net/projects/graal/)
View presentationJakub Podlešák ,
Jakub works on JavaScript related parts of projects Truffle and Graal
Jan Štola ,
Graal project member focuses on the self-optimizing language execution framework (Truffle) and its language implementations
Modeling and querying persistent data structures can be tricky when they involve semi-structured data, complex relationships (with deep traversal) and physical information like geographical positions, areas, shapes and so on. Bad news is that almost all your applications will have to manage such kind of data. In this presentation you will see how to use OrientDB v2.2 Document-Graph engine and its new Geospatial Indexes to efficiently manage and query connected, spatial information. Very few slides, a lot of live coding, I promise!
Luigi Dell'Aquila ,
Father and husband, software developer and consultant, international speaker. Core Developer and Director of Consulting at OrientDB
What is the 99th percentile of your app response time? How much time it takes to save data in the database? How not to get caught off-guard by service failure? The answers are simple as long as you have the metrics. Metrics are the best source of information about your application inner workings, updated near real-time. Knowing what to measure and how to present the metrics gives you the reassuring 'my app is fine' feeling in times of peace and enables you to quickly identify the problem when things go south. What should you measure, which tools to use and what are the caveats? How to store and display metrics? I will present the answers during my talk. Just a bit of theory and a lot of working code and examples, so you will know what your application is up to at any point of day or night.
Adam Dubiel ,
Tech leader at allegro.pl, tech owner of hermes.allegro.tech
In this talk the lessons learned when crafting high performance instrumentation for extracting detailed data from the big data processing systems (Hadoop, Hive, Spark) will be presented. We will focus on the best practices for using BTrace as well as less known, but powerful, features allowing to dramatically decrease the instrumentation overhead. Although BTrace will be used as the delivery vehicle for the instrumentation the same principles can be used for any other bytecode injecting technique or tool.
View presentationJaroslav Bachorik ,
Strong believer in software engineering. The BTrace guy
At Sky, we use Cassandra for database persistence in our Online Video Platform - the system which delivers all OTT video content to both Sky and NOW TV customers - and yes, that includes handling huge spikes in traffic both when there's a big Premier League football match and when a new Game of Thrones season comes online! This talk aims to cover the following topics.
Oliver Lockwood ,
Principal Software Engineer at Sky, working on Sky's OTT video platform & leading the Java community
With agile principles and practices reaching maturity, in many organizations the focus for the coming years will be on the next steps. Beyond agile. In fast pace organizations are adopting agile, DevOps, continuous delivery and new architectures such as microservices. Often all at once. Although from a perspective of similarities between these paradigms this makes sense, this also requires for increased collaboration between business, development and operations. During this session, Kim van Wilgen, head of IT at the Dutch insurance company Klaverblad, will give practical insights on their journey to continuous delivery with real-life pictures and stories. She'll be your guide through the journey to continuous delivery and tell you about the things to do or to avoid. How can organizations deal with the complexity of simultaneously changing architectures, ways of working, technology, and foremost culture? How do we make this journey comfortable and safe? How can we make the business case for continuous delivery? How can we deliver continuous delivery?
View presentationKim van Wilgen ,
Head of IT, Klaverblad Verzekeringen
Despite the recent (over)flow of log processing tools logs are still highly problematic - they can clog your servers and bring your production down, they are hard to read and parse, and oh too often they miss out the key data you need but contain 3 billion lines of B.S. While log pipelines can help to some extent their value is limited when the source of data is low quality - and this talk is all about improving the quality of your logs. This talk will show various features of Log4j 1/2 and Logback, show various tricks to get the information you want (and only the information you want) and explain how to do this in way that is truly 'production grade'.
View presentationAvishai Ish-Shalom ,
Avishai is a veteran Ops engineer and a survivor of many production skirmishes
Java allows us to bypass language security and peek directly into the contents of objects, calling methods and even constructing them. Usually this is fraught with danger. It binds you to a particular Java version, blocking your upgrade path. Dangerous. That said, I use reflection a lot as a tool to quickly and accurately discover things about objects that would be difficult to determine any other way. And then I throw the code away. Knowing how reflection works can save you a lot of time when you need to confirm performance issues. Whilst seldom a permanent solution, it can be a temporary hack until the architecture can be changed.
View presentationHeinz Kabutz ,
Autor of 'The Java Specialists' Newsletter'
In this live coding session, we'll build a Java EE application using JBoss Forge, deploy it onto Wildfly and test it using Arquillian. All of this is possible while barely writing a line of code! We'll also create a microservice using JBoss Swarm. If you're more into Spring we'll also show you how to create a Spring application from scratch, use Spring Boot and how you can rapidly develop you applications using JRebel. There will be a bunch of other tools and tips in this session, so if you want to write code like a pro, this is the session for you!
View presentationSimon Maple ,
Developer Advocate at ZeroTurnaround
Are the machines learning on their own? Wait, is Skynet already here? During this session we will tackle an easy Machine Learning problem, show how can it be processed on Spark including data cleaning, normalization and a learning process. Live coding session, but only if the machines don’t rise against us.
View presentationMichał Matłoka ,
Software Wizard @ SoftwareMill
This talk is focusing on practical differences between three programming languages. It talks about practical daily programming, with bit of lambdas and collections. What is missing in Scala compared to Java8? When are you missing out if you decide for Java8? Is Kotlin better than Scala? Jan has 7 years experience with Scala and followed Kotlin from its very first day.
View presentationJan Kotek ,
Jan is author of MapDB and works on crypto currency framework
Build the ivory tower, show them all in, lock the doors, drill the pizza box hole and throw away the key. This is how many companies build R&D departments. Or, be agile, hire a product owner and let them do the talking so that the team is not distracted from the customers. Or, you can frighten everybody to death and let R&D do the talking. But what if they say something they should not? Or, will they? This is the story of making mistakes and how we unknowingly and then knowingly harnessed the power of transparency to win customers. Interested?
Ondřej Krajíček ,
Y Soft CTO, espresso aficionado, software architect, passionate tech start-up tag along and Masaryk University guest lecturer
Continuous integration, continuous delivery, automated testing, unit testing, system testing. We have been successful as an industry with shortening the feedback loop and developers are getting the test results on their freshly committed code instantaneously. However, are those tests really valid? Are they really as close to the real world as they should be? How do you cross the boundary between verification and validation? Jakub is going to share the bad and the ugly, and most importantly the good that we learned about testing. It’s not about testing, it’s about the results and how we are moving from software verification to product validation. And, how is it related to Karel Čapek? See for yourself!
View presentationJakub Pavlák ,
Testing and Quality Assurance aficionado at Y Soft
Java has turned 20, but we still haven’t figured out how to create great Java code. Of course, we have examples of great developers and great code, but shouldn’t it be something common rather than unusual? We’ve seen Domain-Driven Design, Effective Java, Clean Code, Refactoring, Design Patterns.... But sometimes it’s still hard to apply all these great concepts in our projects. And we want to make proper use of encapsulation, immutability, the Law of Demeter, and lambdas. What we need is a proven set of tools, tips, and tricks gathered from successful real-world projects. We want to know how we can stop using basic types such as String, BigDecimal, List, and Map and how we can encapsulate information to craft great code. Attend this session to see code directly from the trenches.
View presentationEdson Yanaga ,
Red Hat's Director of Developer Experience, Java Champion, Microsoft MVP
Everybody is talking about microservices and reactive programming these days. And there’s a reason for that: the high-demand and high-scale distributed world that we have today, reacting to events in an asynchronous and non-blocking fashion seems the right approach to deal with scalability. And to achieve microservices you need a lightweight, fast, modular, high-performance and un-opinionated environment. Meet Vert.x: a toolkit for building reactive applications on the JVM. Come to this session to see how you can use Vert.x to create reactive code using Java, Groovy, JavaScript or other JVM languages. We’ll demonstrate how to build Vert.x-based systems leveraging the unique Vert.x event bus for creating apps with real-time communications from the modern web browser to the cloud and back again. Have fun with a large number of live demonstrations that will cause you to reconsider your reliance on monolithics and consider leaving tradition behind for an event-driven, reactive, microservice-focused architecture.
Burr Sutter ,
Java Champion, DevNexus conference founder, RedHatter
Software developers keep looking to CQRS as an architecture to boost performance. But the more I work with companies the more I discover there's a sweet spot where Theory of Constraints, Kanban, CQRS, Domain-Driven Design, EventStorming and UX blend together to solve 'the really real problems'. Once you're there, a land of opportunities ready to be caught sits in front of you. Why waiting?
View presentationAlberto Brandolini ,
Pragmatic Visionary, avanscoperta
The industry is replete with fresh topics: DevOps, Cloud Computing, MicroServices, Lean Startup, Fullstack Developers, Agile Variations, and the like. Having seen all these at conferences, there is an emerging theme around all these topics: Go Faster. Going faster is an old theme; I have heard it for over four decades. But the business incentives for it are more powerful than ever because competitors have become unfettered from traditional barriers:
Fred George ,
Consultant with over 46 years experience. An early adopter of OO and Agile, MicroServices and Programmer Anarchy advocate
TBD
View presentationSander Hoogendoorn ,
Independent dad, mentor, trainer, software architect, programmer, speaker, and writer
In this talk, we'll dive into the details of how various language features supported by Kotlin are translated to Java bytecode. We'll use the JMH microbenchmarking tool to study the relative performance of various constructs and to understand how we can ensure top performance of the Kotlin code that we write.
Dmitry Jemerov ,
Developer at JetBrains since 2003
Monitoring your production JVMs is extremely important. Though, not always you have a luxury of having direct access to production servers, which suffer from performance peaks, memory leaks or concurrency issues. Not always you are able to catch JVM issues without an ability to debug the code in-place. There are quite many tools that can help analyzing performance issues of your JVMs based on real-time monitoring data as well as on logs available only post-mortem. This presentation will give an overview of these tools.
View presentationAndrey Adamovich ,
Software craftsman
Kotlin 1.1 introduces coroutines - a compiler feature that lets you transform a method into a form that can be suspended and resumed later. This feature allows to support many different programming patterns, including async/await and Python style generators. Unlike implementations in other languages, Kotlin leaves the specific execution logic under the control of libraries, ensuring that the support can be used both for existing and future concurrent programming abstractions. The lightning talk will give a quick overview of the feature.
Dmitry Jemerov ,
Developer at JetBrains since 2003