Notice Day 1: The agenda is delayed with 10-15 minutes before the lunch break. After the lunch break the agenda will return to normal

Day 1 – 10th Dec Main Hall #Influencers

StartEndSpeakersTopic
08:0009:30Registration
09:3010:30Opening @ #MainHall
10:4011:30Subho HalderSecuring your Mobile Apps during development

Mobile adoption is strategic in every industry today. Although it can be a great catalyst for growth, the security risks that come with it cannot be overlooked. Even though this fact is established, many companies are still not following some of the mobile application security best practices. The goal of this is to raise awareness about application security by identifying some of the most critical risks facing organizations during development.

We will be covering from basic OWASP top 10 security issues to live demos on different use-case scenarios on how a hacker can hack your application, and how to prevent them

We will also be talking about how to set your own mDevSecOps framework to make sure you can catch those security issues early in your development cycle.

11:3011:40Coffee Break
11:4012:30Dr. Pavlin Dobrev
Kai Hackbarth
Internet of Connected Everything

Connectivity is transforming all kind of domains – not just smart homes but also industry, buildings, agriculture and mobility. IoT has finally reached the corporate sector and is now being increasingly commercialized. As predicted Bosch alone already has more than 50 million of connected devices! . In 2025 all our products either possess intelligence themselves, or AI will have played a key role in their creation.  In their keynote address, Dr. Pavlin Dobrev and Kai Hackbarth traces Bosch’s evolution to an IoT company.  We will dive into the reference architecture for IoT domains like connected building, retail, smart architecture. For Bosch, Things are the most essential part in IoT. We design them to the requirements of IoT: Aware, Autonomous and Actionable.

Key findings:

  • Bosch transformation from a traditional manufacturer to an IoT and high-tech company: Challenge accepted
  • Innovation is part of our DNA
  • Bosch embraces sustainability:  climate neutrality worldwide by 2020 and new solutions for better air in cities
  • Nobody can do IoT alone: IoT platforms, software, and developers
  • The impact of open source and agile organization
12:3013:30Lunch Break
13:3014:20Ahmad GoharMicroservices with Docker and Kubernetes: Best Practices for Java Developers

This session is for Java developers and architects interested in developing microservices. It starts with the high-level understanding and fundamental prerequisites that should be in place to be successful with a microservice architecture. Unfortunately, just using new technology doesn’t magically solve distributed systems’ problems. The presentation takes a look at some of the forces involved and what successful companies have done to make microservices work for them, including culture, organizational structure, and market pressures. Then it takes a deep dive into a few Java frameworks for implementing microservices. The accompanying source code repository can be found on GitHub.

14:2014:30Coffee Break
14:3015:10TOP SPEAKERS TEAMSecure Code: Security Trends in IoT, AI and Cloud / The Secrets of Writing Secure Code / Most Secure Programming Languages

The discussion covers the following topics:

  • The Secrets of Writing Secure Code
  • Most Secure Programming Languages
  • Security Trends in IoT, AI and Cloud
15:1015:20Coffee Break
15:2016:10Alan CookeRobots, the best testers you will ever build

The talk will bring attendees on a journey from the current out of the box approach to UI automation testing, talk about the pitfalls and then introduce through Swift, the Robot pattern. The Robot pattern is a pattern commonly applied to test automation which allows an abstraction layer that is easy to write and easy to understand, so much so that even a product manager could write the tests. Moving beyond the basics of the pattern and show it running in action with a real app, we will evolve the pattern to leverage the latest function builders offered in Swift 5 to make our tests even more expressive, terse and easy to write.

Attendees will leave, having a new found love for test automation and how to put a strong pattern to use in their own code bases.

Slides

16:1016:20Coffee Break
16:3018:30Startup Judges
TOP 15 Startups
Startup World Cup – Regional Final Bulgaria, organized by GTS and Pegasus Tech Ventures

Startup World Cup partners with GTS to host a Bulgarian regional competition. The 2020 regional competition will be held on December 10 and 11, 2019 as a part of the annual GTS event in Sofia.

Startup World Cup is a global conference and competition with the goal of bridging startup ecosystems worldwide. It is organized by Pegasus Tech Ventures, a Silicon Valley-based multinational VC firm. There will be 40+ regional events across North America, South America, Europe, Africa, Asia, and Australia, leading up to the Grand Finale in US Silicon Valley, where the global champion will be awarded a $1 million investment prize.

As part of the program, Startup World Cup Bulgaria Regional judges attend GTS and select a winner from the GTS Top 15, who represents Bulgaria at the Startup World Cup Grand Finale in San Francisco in May.

18:3020:00Global Tech Summit Technology Awards 2019

The GTS Technology Awards are dedicated to all tech companies, software developers and IT professionals who are developing revolutionary solutions, establishing and refining best practices, contributing success to IT industry and becoming thought technology and business leaders.

GTS Technology Awards celebrate their wins, honor their achievements and encourage them to achieve greater success in the future.

Day 1 – 10th Dec Hall 3.1 #J2D Advanced

StartEndSpeakersTopic
08:0009:30Registration
09:3010:30Opening @ #MainHall
10:4011:30Josef CacekKeep Your Secrets Secret – TLS for Java developers

Hackers, spies and Sofia never sleep. It became a custom that network communication is protected by a TLS protocol. TLS provides data confidentiality, integrity and authenticity.

The TLS is not just great, it’s also complex with a bunch of extensions. It’s not hard to use it in the wrong way and stay vulnerable against different types of attacks. What happens when your certificates expire? Do you validate hostnames? Which certificate authorities are trusted in your setup?

Let’s look together what support Java runtime provides out-of-the-box and what developers have to handle manually. The presentation will cover the performance consequences of using TLS and how the certificate validation works. We will also talk about the common implementation flaws and TLS communication debugging.

After the talk, attendees will be able to identify issues in their TLS usage and fix them.

Slides

11:3011:40Coffee Break
11:4012:30Konrad KamińskiCoroutines and Reactive Programming – friends or foes?

Coroutines may be seen as a replacement of reactive programming. Both of them offer the possibility to create asynchronous applications although in a very different way.
Does it still make sense to use reactive programming in Kotlin? Or can we just stick with coroutines and forget all about other asynchronous applications approaches?
Or maybe we can mix both of them, take their best parts and come up with a solution which is superior to any of the two?

In this session we’ll learn the differences between coroutines and reactive programming. We’ll see when one shines and the other… is not so great. We’ll look under the hood
to find out the reasons behind some design decisions and how those decisions affect performance and interoperability. We’ll try to decide when we should use coroutines
and when the reactive programming model is better.

12:3013:30Lunch Break
13:3014:20Pavel Chernyshov
Vladislav Khomyakov
Take no objections to Java for iOS

To a certain extent you can reuse the code when building mobile applications both for iOS and Android. Ideally, you want to reuse as much as possible to save time. In client-server apps, shared logic can be moved to the server-side, and most of the time, it’s acceptable. But what if it’s not in favor of the UX? What if it’s the kind that can’t be moved? What if you don’t even have a server? Can you optimize, or is it time to double the work and time spent fixing bugs to account for different platforms?

This is where J2ObjC comes into play. J2ObjC is an open-source tool from Google that can translate source code written in Java into Objective-C. This way, Java source can become a part of the iOS builds.

Devexperts have been tailoring code translation from Java to ObjC for years, and this approach is integrated deeply into our development process. We’re here to inspire you to give it a try yourself by showcasing some of our biggest wins with J2ObjC. The road ahead is scary. Fear not, we’ve got the painkiller for easily integrating J2ObjC into the development pipeline.

14:2014:30Coffee Break
14:3015:10TOP SPEAKERS TEAMSecure Code: Security Trends in IoT, AI and Cloud / The Secrets of Writing Secure Code / Most Secure Programming Languages

The discussion covers the following topics:

  • The Secrets of Writing Secure Code
  • Most Secure Programming Languages
  • Security Trends in IoT, AI and Cloud
15:1015:20Coffee Break
15:2016:10Filip ŁazarskiContract testing in microservices environment with Judge-d

Typical microservices environment consists of many services. In order to provide business value, they need to cooperate. Therefore, it is crucial to ensure that the services are always able to communicate with each other. What if by accident a developer introduces a change to one service, which will make inter-service communication impossible? It is necessary to prevent such situations from happening. Therefore, HL Tech developed an open source project called Judge-d. Judge-d verifies if a change introduced to a service would pose a threat to communication within any environment.

In my presentation I briefly discuss threats to communication in microservices environment, contract testing as a typical solution and how Judge-d realizes contract testing. I describe how REST and JMS contracts are represented in Judge-d. I will present possible alternatives and their disadvantages as well.

16:1016:20Coffee Break
16:2017:10Emily JiangCreating a cloud-native microservice – which programming model should I use?

Creating cloud-native microservices is common but which programming model to choose from.

At the moment, MicroProfile and Spring are two popular programming models for developing microservices. What are the differences or commonalities between them?

This session is to focus on comparing the two programming model side by side. If you are Spring developer, after this session, you should be able to grasp MicroProfile very quickly and vice versa.

This session also contains a live demo of developing microservices using MicroProfile specifications and then deploy them onto Open Liberty.

17:2018:10Lachezar Balev
Georgi Peychev
Deploying containerized applications into a Kubernetes cluster

Our fantastic apps deserve the right infrastructure! In this talk we will make a short introduction to Kubernetes (K8s). Next we will dockerize and deploy two simple applications into a k8s cluster.

Our ambitious goal is that the audience will feel comfy with what we are doing and will be able to easily follow us. No prior knowledge of k8s is required! The apps and the scripts that we are going to use will be available at Github.

The talk will begin with a quick glimpse into the k8s architecture. Then we will go a bit deeper with some of the most important k8s objects like Nodes, Controllers, Services. When we lay down the foundations it will be time to introduce our sample applications – a small Spring Boot backend and an Angular frontend which offers the possibility for amusing interaction with the attendees (e.g. by scanning a QR Code). At the end we will deploy these apps in GClould and/or Minikube and see them up and running.

Day 1 – 10th Dec Hall 3.2 #J2D Novice

StartEndSpeakersTopic
08:0009:30Registration
09:3010:30Opening @ #MainHall
10:4011:30Rudy De BusscherTransactions in your micro-services architecture

How can you make different pieces of your unit of work consistent in the distributed setup of your micro-service application?
You associate the term transaction probably with a database, but the data source can be anything including a database in the micro-service world.
The MicroProfile Long Running Actions specification is based on sagas and the OASIS LRA transaction model specification. It defines the framework to guarantee the eventual consistency requirement using compensating actions for example.
This session will explain you the challenges and concepts of the MP LRA framework. And of course, you can see it in action with various demos.

Slides

11:3011:40Coffee Break
11:4012:30Marcin MoskałaYour first multiplatform Kotlin application

Learn how to make your first truly multiplatform project and explore how much these capabilities can save you time and effort during everyday work. During this presentation, we will take a step-by-step approach, and by exploring what needs to be done to make more and more advanced usage possibilities, we will discover how to start and how to operate on multiplatform Kotlin projects.

Slides

12:3013:30Lunch Break
13:3014:20Marcin MoskałaKotlin not-to-do list

Kotlin gives us a lot of possibilities, but with every power comes responsibility. What should we avoid doing in Kotlin? What are Kotlin internal contracts in terms of different features and functions? What is dangerous and should be avoided? How to code responsively?

Slides

14:2014:30Coffee Break
14:3015:10TOP SPEAKERS TEAMSecure Code: Security Trends in IoT, AI and Cloud / The Secrets of Writing Secure Code / Most Secure Programming Languages

The discussion covers the following topics:

  • The Secrets of Writing Secure Code
  • Most Secure Programming Languages
  • Security Trends in IoT, AI and Cloud
15:1015:20Coffee Break
15:2016:10Andres Cespedes Morales7 Architecture Patterns Implemented in Java

Often times, you can find explanations about software design and architectural patterns but it is not that common to see those patterns implemented along with its definition.

In this session, we’re going to learn some of the top 7 architectural patterns for microservices implemented in Java, with frameworks as Spring, Microprofile, and many other open-source tools.

These patterns are very well suited for a microservices architecture, such as Event-based microservices, distributed transactions (sagas), service discovery, asynchronous inter-process communication using gRPC, distributed tracing, and much more.

16:1016:20Coffee Break
16:2017:10Ivar GrimstadMicroservice Patterns – implemented by Eclipse MicroProfile

Eclipse MicroProfile provides specifications for the most commonly used microservice patterns. This session presents a group of patterns that will be in explained and demoed live in a down-to-earth and easily understandable way. Patterns covered include Service per Container, Externalized Configuration, Health Check API, Application Metrics, Circuit Breaker, Access Token, Distributed Tracing. There will be live coding and demo of all technologies implementing the patterns.

Slides

17:2018:10Ioannis KolaxisHow to Improve the Quality of Your Application (I Wish I’d Known This Earlier!)

Do your customers keep complaining about bugs in your software application? Does it take you too long to fix bugs and implement new features? If yes, then you may have issues with the quality of your application. This session provides practical advice on how you can improve the quality of your software application. The speaker shares with you all the lessons he learned while working as a software engineer for a big, complex enterprise application, discussing which techniques worked and which ones failed and providing actual examples and metrics from that application. It’s assumed that you have already experienced the struggle of maintaining a defective software application and that you aspire to building software of top quality.

Slides

Day 1 – 10th Dec Hall 7 #CM Advanced

StartEndSpeakersTopic
08:0009:30Registration
09:3010:30Opening @ #MainHall
10:4011:30Dr. Stephen Robinson
Tom Mladenov
Scaling up a banking challenger with event driven architecture

Microservices have saved us from the crushing pain of monoliths, only to raise a whole raft of questions about how microservices can work together to achieve meaningful features for end users.

One approach promoted by some famous names (LinkedIn, Netflix etc.) is to adopt a message driven architecture. This talk will introduce message driven architecture and discuss some of the advantages, risks and how to mitigate them, as well as some patterns which can help you take full advantage of the shift. We’ll also touch on Tide’s experience of moving to messaging as part of scaling up our development organization.

11:3011:40Coffee Break
11:4012:30Marc GregoireWriting Modern C++ Code

Since the release of C++11 in 2011, modern C++ code does not look at all like C++ code written before 2011. If you know the old C++ language, then you will have to unlearn certain things to write truly modern C++ code. Recent versions of the C++ standard have introduced new features to make your live as a developer easier. These features allow you to write code that is less error-prone, that is more easy to read and understand, that allow you to more easily use other aspects of the languages such as the Standard Library algorithms, that make it easier to write multithreaded code, and so on. This session will give an overview of these modern C++ features.

Slides

12:3013:30Lunch Break
13:3014:20Simon StoneBuilding smart contracts and applications with Hyperledger Fabric

Hyperledger Fabric is a permissioned blockchain technology where developers can build smart contracts, and applications that interact with deployed smart contracts. Smart contracts and applications can be developed in a range of programming languages, including Go, Java, and JavaScript, allowing developers to easily get started with this technology by taking advantage of their existing skills.

In this talk, you will learn the basics of smart contract development. You will learn how to build your first smart contract, how to write a transaction function, and how to interact with the ledger using the available APIs.

You will also learn the basics of application development. You will learn how to build your first application by using a connection profile and a wallet/identity to connect to a gateway peer, and how to submit a transaction to a smart contract.

Developers already familiar with Hyperledger Fabric will be able to learn about the significant enhancements that we’ve been delivering to the smart contract and application programming model since Hyperledger Fabric v1.4, including an update on our current plans.

14:2014:30Coffee Break
14:3015:10TOP SPEAKERS TEAMSecure Code: Security Trends in IoT, AI and Cloud / The Secrets of Writing Secure Code / Most Secure Programming Languages

The discussion covers the following topics:

  • The Secrets of Writing Secure Code
  • Most Secure Programming Languages
  • Security Trends in IoT, AI and Cloud
15:1015:20Coffee Break
15:2016:10Roman TsypukAWS Alexa: How to talk with your Smart Home Devices

AWS Alexa is a new Amazon web service that allows you integrate voice control into existing systems, by sending voice commands to control your smart home/ IoT devices, cars or integrated SW. I will explain it architecture, show how to develop custom skill for AWS Alexa from the scratch and run it using AWS Echo Dot. Also we will talk about AWS Lambdas, as they are used under the hood to operate with logic and commands.

Slides

16:1016:20Coffee Break
17:2018:10Anton SutarminBuild frontend apps that never crash with fp-ts ecosystem

One of the most important properties of modern frontend applications is reliability. Want to learn how to build frontend applications that never crash? Join me and let’s dive into the know-how of making your apps more reliable and your development process more focused with the help of our fp-ts library and its large ecosystem. I’ll share insights on true type safety with Typescript, runtime exception safety, IO safety, and much more.

Slides

Day 1 – 10th Dec Hall 8 #AIST

StartEndSpeakersTopic
08:0009:30Registration
09:3010:30Opening @ #MainHall
10:4011:30Fabien VauchellesMachine Learning for the Busy Developer

Random Forest, Cross Validation, Clustering, … a whole new vocabulary for a developer, who is already busy!

When you have a closer look, Machine Learning is very simple: you prepare the data, you assemble the datasets, and you model the algorithms. It’s mostly experimentation.

Come and discover how a machine predicts the future!

Through examples and live-coding, we will see:
– how to build our datasets?
– how to choose the right algorithm?
– how to evaluate the performance of a predictive model?

Now, Machine Learning will be your best friend!

Slides

11:3011:40Coffee Break
12:3013:30Lunch Break
13:3014:20Thomas MetcalfeTransformers: how machines have learned context

Keywords have been timelessly important in natural language processing. However, over the past 10 years we have made vast improvements in the field by leveraging not just the words, but the context in which they are found. Subsequently, there has been a significant shift in the way machines understand the underlying meaning in language. This talk will cover the history of approaches to context encoding, with a particular highlight on the most recent innovation: the transformer. We showcase how this state-of-the-art technique allows us at Chattermill to gain insight from customer feedback and uncover what decisions will drive the greatest impact.

14:2014:30Coffee Break
14:3015:10TOP SPEAKERS TEAMSecure Code: Security Trends in IoT, AI and Cloud / The Secrets of Writing Secure Code / Most Secure Programming Languages

The discussion covers the following topics:

  • The Secrets of Writing Secure Code
  • Most Secure Programming Languages
  • Security Trends in IoT, AI and Cloud
15:1015:20Coffee Break
15:2016:10Nikolay AngelovAchieving Privacy in Public Blockchains

In the recent years we started understanding more and more why our Privacy is important and we need to start thinking about how we can achieve Privacy in the Public Blockchains so they can get more adoption.
In this talk we will see how this is possible and how we can use cleaver cryptography to achieve Confidential transactions and Data Privacy in Public Blockchains

16:1016:20Coffee Break
16:2016:45Fabien VauchellesHow to organise a Datascience competition?

For the last 4 years, we organized the Data Science Olympics. This competition happens every year, on multiple locations and lasts only 2 hours! Last year, we gathered 1000 datascientists in Berlin and Paris.

If you are asking yourself theses questions:
– Why should you come to a Data Science competition?
– How can I win this kind of competition?
– How can I organise a machine learning challenge?

This talk is for you!

We will share with you our experience on the past 4 year about the challenges, the solutions and you will discover some easy tricks!

Slides

Day 1 – 10th Dec Hall 8.2 (Master Class 2)

StartEndSpeakersTopic
11:4012:30Paul KingGroovy and Data Science

Groovy is a powerful multi-paradigm programming language for the JVM that offers a wealth of features that make it ideal for many data science and big data scenarios.

Groovy has a dynamic nature like Python, which means that it is very powerful, easy to learn, and productive. The language gets out of the way and lets data scientists write their algorithms naturally.

It has a static nature like Java and Kotlin, which makes it fast when needed. Its close alignment with Java means that you can often just cut-and-paste the Java examples from various big data solutions and they’ll work just fine in Groovy.

And it has first-class functional support, meaning that it offers features and allows solutions similar to Scala. Functional and stream processing with immutable data structures can offer many advantages when working in parallel processing or clustered environments.

These slides review the key benefits of using Groovy to develop data science solutions, including integration with various JDK libraries commonly used in data science solutions including libraries for data manipulation, machine learning, plotting and various big data solutions for scaling up these algorithms.

Math/Data Science libraries covered include:
Weka, Smile, Apache Commons Math, beakerx notebooks, Deep Learning4J.

Libraries for scaling/concurrency include:
Apache Spark, Apache Ignite, Apache MXNet, GPars, Apache Beam.

Day 2 – 11th Dec Main Hall #Influencers

StartEndSpeakersTopic
09:3010:20Werner Keil
Thodoris Bais
Securing E-Health and E-Government with Java

The EU increases its cooperation on cyber defense to strengthen its resilience to cyber-attacks through the EU Cybersecurity Act and certification of products, services or applications. To be as well prepared as possible against hacker attacks or the distribution of “fake news”, fake documents and information. Like a One Trillion Amazon refund or fake tax returns. The IT industry may use this mechanism to certify products like connected vehicles, government services or smart medical devices. Due to its platform independence, Java plays an important role, especially in web, cloud or enterprise environments.

This session introduces the DSS Framework and solutions based on it, such as Digidoc4J. DSS (Digital Signature Services) is a Java framework for the creation and validation of electronic signatures. DSS supports the creation and validation of interoperable and secure electronic signatures in accordance with European legislation, in particular the eIDAS Regulation, as well as IT standards like OASIS DSS.
The framework may be used anywhere from embedded devices to desktop applications, like practice management software or services in the cloud wherever a JVM runs. It supports a variety of document formats like XML, PDF, Word, Plain Text or compressed archives, as well as various digital signatures, including XAdES, CAdES, PAdES or ASiC. It provides an abstraction layer over low-level signature libraries like Bouncy Castle, OpenPDF, Apache PDFBox or Sanctuario. DSS is used in many European countries for document exchange and security, e-health or e-government, with digital ID cards in more than a dozen countries across the European Economic Area.
An overview of the DSS Framework is followed by a live demo, showing how different documents can be signed and their signature subsequently verified.

Slides

10:2010:30Coffee Break
10:3011:20Teodor DimitrovVertical scaling with Spring WebFlux

TBD

11:2011:30Coffee Break
11:3012:20Jack ShiraziPractical Garbage Collection Tuning For Anyone

From this talk you’ll learn how to tune your JVM Garbage Collector (GC) in a straightforward way, regardless of the OpenJDKs more than 120 GC tuning flags, 7 different garbage collectors, multiple memory spaces, pools and insanely varied GC logs

12:2013:30Lunch Break
13:3014:00Andrew LombardiPrivacy in the Age of Analytica

You are the product. The digital age has brought us many conveniences with the very real cost of our privacy as payment. The terms and conditions that none of us read have allowed companies to build a persona of who we are, and possibly better than we even know ourselves. Learn what your privacy looks like today, and how you can take very real steps toward reclaiming the anonymity that allows you to move through the world without being constantly sold.

Slides

14:0014:30Shenol Mustafov/e/ – Android without Google

We are living in the era of mass surveillance and monetization of personal data by big companies. Convenience of using a mobile phone and personal data privacy can be hard to achieve at the same time. At e Foundation we are creating a privacy-enabled mobile OS ecosystem, free of Google surveillance. We are leveraging open source and community support to create an easy to use mobile OS, designed with privacy in mind.

14:3015:10TOP SPEAKERS TEAM#Privacy

How to be a part of the social Internet and keep “privacy” at the same time.

15:1015:20Coffee Break
15:2016:10Christian HegerSurviving IoT

Christian is creating the environment to develop, innovate and truly collaborate at Zühlke Engineering in Munich. He comes from a software development and architecture background. Currently, he does a lot of interesting things: team leadership – being responsible for the team in Munich and building up our team in Sofia. Christian is constantly thinking how to improve the way his teams work together. He is also consulting clients on how to get going with innovation, and how to adopt agility and technology on the way.

16:1016:20Coffee Break
16:2017:10Tamaghna BasuPreventing Identity Thefts and Impersonation Frauds using AI and Behavioral Biometrics
As fraudsters continually refine their techniques to steal customer’s credentials, organizations have found new ways to fight back with new tools that use behavioral bio-metrics and cognitive fraud detection. It is critical to know how cognitive abilities would help in managing risks, compliance and governance as well as help in maximizing detection, reducing false positives and optimizing strong authentication. The session will describe various models used for behavior pattern analysis and demonstrate how this may be integrated into a real-world SOC to achieve a proactive posture. It will address:
  • Developing a risk framework with cognitive security;
  • The technological expertise available to detect these anomalies and patterns.
17:1017:20Coffee Break
17:2018:10Emily Jiang
Werner Keil
Ivar Grimstad
Otavio Goncalves de Santana
Jakarta EE – ask the Experts

Day 2 – 11th Dec Hall 3.1 #J2D Advanced

StartEndSpeakersTopic
09:3010:20Denis TsyplakovTypical bugs in technical architecture of Java based services

There is a joke. A fireman is complaining, “What the hell, each and every time people call us to say that their house is on fire”. As a solution architect in DataArt, I can say that 80% of my job is to help different companies to solve problems with their systems. So, when I see a project, it is usually “on fire”. Sometimes problems lie with requirements, sometimes with management, sometimes they are caused by a wrong choice of tools. But lots of problems lie with the technical architecture. I want to discuss with you several most typical problems in the technical architecture that I have seen in more than half of the projects.

Slides

10:2010:30Coffee Break
10:3011:20Svetlin NakovMobile Device Security

In this talk Dr. Svetlin Nakov will review the biggest cybersecurity threats for the modern mobile devices and will demonstrate how easily an Android mobile phone can be hijacked by non-professional attacker, using trivial remote administration tools and screen recording apps from the official Android app store. Finally, the speaker will give recommendations and best practices for improving the security of iOS and Android mobile devices.

11:2011:30Coffee Break
11:3012:20Wlodek KrakowskiPyramid of Refactoring

Everyone has heard about test pyramid… and refactoring pyramid is its twin. Using Pyramid of testing we can set up the tests coverage of the existing functionality reaching given level (UI, modules, packages, classes, methods). This allows us to have a look at corresponding pyramid of refactoring and figure out what kind of refactorings can be performed safely. We start from the bottom of refactoring pyramid (simpler conditions, smaller methods) and climb up towards the highest level that is covered by tests.

Slides

12:2013:30Lunch Break
13:3014:20Werner Keil
Otavio Goncalves de Santana
Jakarta EE Meets NoSQL at the Cloud Age

Let’s be honest: the amount of data collected by applications nowadays is growing at a scary pace. Many of them need to handle billions of users generating and consuming data at an incredible speed. Maybe you are wondering how to create an application like this? What is needed? What benefits can you take from this reality to your project? This session shows how Jakarta EE can meet these needs when you’re working with NoSQL databases in the cloud. It’s the same approach used by some of the biggest companies in the world to store, analyze, and get results from really crazy amounts of data. No matter your project size, you can take it to the next level today.

Slides

Code Sample

14:3015:10TOP SPEAKERS TEAM#Privacy

How to be a part of the social Internet and keep “privacy” at the same time.

15:1015:20Coffee Break
15:2016:10Nicolas FränkelDesigning a DSL with Kotlin

Kotlin is one of those “new” JVM languages that are currently rocking the boat. Although it’s made a great impact on Android, it’s equally good on the server side. As Domain-Specific Languages are constrained by the language they run on, Kotlin frees developers from Java fluent builders to propose something better.

Using the Vaadin web framework as an example, I’ll demo how one could design its own DSL with Kotlin.

Slides

16:1016:20Coffee Break
16:2017:10Ioannis Canellos
Georgios Andrianakis
Quarkus: Supersonic, subatomic Java

The Cloud Native Era has changed a lot about what we expect from our applications making it challenging for traditional server side Java technologies. This talk will introduce you to Quarkus, a Kubernetes native Java stack that can tailor your application for GraalVM & Hotspot providing amazingly fast boot times and incredibly low RSS memory usage, making Java more than relevant in this brave new world.

17:1017:20Coffee Break
17:2018:10Ondrej Stastny
Tom Mueller
Journey from On-prem to the Cloud, the Field Guide

This presentation will introduce VMWare Identity Manager and it’s multi-year transformation from on-prem only product to Software-as-a-Service with multiple deployments per day, serving customers around the globe.
This “field guide” will focus on concrete learnings and practical examples of moving an on-prem monolith to AWS-hosted set of micro-services built on Java Stack. We will talk about a monolith decomposition, patterns and practices for SaaS and also about the path to achieving 99.99% availability.

Day 2 – 11th Dec Hall 3.2 #J2D Novice

StartEndSpeakersTopic
09:3010:20Ali OkKubernetes Operators 101

Kubernetes does all the boring yet critical tasks like horizontal scaling and zero down-time deployments, but what about more complex tasks like database sharding and agent registration?
Kubernetes operators are capable of automating complex tasks, reducing the human factor even more. The barrier to entry is not as high as you think!

Slides

10:2010:30Coffee Break
10:3011:20Jeronimo MartinezSurvival guide for maintaining legacy systems

All systems have some degree of legacy, starting from the new one that you are creating just now, up to the one that has been abandoned for years but still keeps one critical active user somewhere. At some point in your career as a developer, you will inevitably end up maintaining a system that you didn’t write, and which you don’t know much about. What are your options? Are there tools and techniques that can make you work easier? Yes, there are! In this talk I’ll go over different approaches that will improve your experience dealing with a legacy system, and also, a set of recommendations for preventing future systems becoming legacy.

Slides

11:2011:30Coffee Break
11:3012:20Rudy De BusscherFinally, easy integration testing with Testcontainers

Integration testing is always a difficult area. You need to make sure that all system are connected, data is correctly initialised for each run and test runs do not interfere with each other.
You can do integration testing today, but sometimes these tests are flaky for various reasons or they cannot cover all the cases that you would like to test.
With the Testcontainers project, this issue can be a thing of the past. It allows you to create reliable integration tests covering a wide range of scenarios like database usages, micro services interaction and GUI testing. One of the important factors for the success of this framework is the usage of Docker containers to create a reproducible environment for the test.

This presentation shows you the basics of Testcontainers and within demos gives you examples of testing database integration, microservices integration and testing the UI with Selenium.

Slides

12:2013:30Lunch Break
13:3014:20Emily JiangReactive Microservices in Action

After creating your first microservice and putting it into production, you heard a lot of people talking about reactive. You’d like to find out more about reactive and have several questions: Why should I care? What I can do to make my microservice reactive, nonblocking? How can I use CompletionStage in my microservices? Should I consider using Reactive Streams? Come to this session to find out what reactive means. It explains reactive programming and then Reactive Streams, followed by a demo of using MicroProfile Fault Tolerance, MicroProfile Reactive Streams Operators, and MicroProfile Reactive Messaging to create a truly reactive microservice and integrate with Kafka.

14:3015:10TOP SPEAKERS TEAM#Privacy

How to be a part of the social Internet and keep “privacy” at the same time.

15:1015:20Coffee Break
15:2016:10Naresha KEffective Java with Groovy & Kotlin – How Languages Influence Adoption of Good Practices

‘Effective Java’ is probably the best book ever written for Java programmers. It presents the most effective ways of using language. Since Groovy and Kotlin run on JVM, most of the suggestions from Effective Java are equally relevant for Groovy and Kotlin developers. However, one has to take caution before using the corresponding Java implementations. Moreover, these languages provide out of the box constructs for many of the recommended practices which can boost developer productivity.

In this talk, I walk you through code examples that follow these good practices, highlighting the Groovy and Kotlin way of implementing the ‘Effective Java’ suggestions. There are several instances where Groovy and Kotlin take different approaches. As a participant, you walk away appreciating the simplicity with which these JVM languages empower the developers. The talk also provides food for thought – how programming languages can influence their users to adopt good practices.

Slides

16:1016:20Coffee Break
16:2017:10Tushka Dermendzhieva
Georgi Sotirov
gRPC: A Modern Toolkit for Microservice Communication

We are living in a world where modern applications are consistently moving towards microservice-based architecture. Thus, internal service communication is becoming a vital part of any system. gRPC is a modern framework, developed initially at Google, which aims to solve many issues that we face using traditional means of communication such as REST. In its shell, it is an open source RPC framework which passes data through efficient protocol buffers. The framework is based on a client-server model of remote procedure calls and Interface Definition Language code generation. It supports languages, such as Java, C++, Python, Node.js, Go, and many others.

Here is a list with topics we are going to discuss during the talk:
1. What is gRPC?
2. Problems with REST and how gRPC can solve them
3. When to use gRPC over REST
4. Comparison to other communication technologies
5. Demo
6. Conclusion

17:1017:20Coffee Break
17:2018:10Vasil ChomakovA Web App That Can Fit in a Tweet… Or Building Production-ready Enterprise Java Applications with Spring Boot

Day 2 – 11th Dec Hall 7 #CM Advanced

StartEndSpeakersTopic
09:3010:20Andrew LombardiThe Three Keys of Remote Team Success

It has become increasingly easy to connect with talent across the globe. With the ubiquitous nature of the internet in increasingly remote locations, your team may even consist of people you’ve never met. While this is enticing, it comes with it’s own set of challenges. Learn the three keys to success as a remote team and utilize effective tools for achieving a smooth means of delivering solutions for your customers.

Slides

10:2010:30Coffee Break
10:3011:20Rafał LeszkoWhere is my cache? Architectural patterns for caching microservices

Everybody needs caching! However, where exactly to place it in your system? Inside your application or as a layer in front of it? Inside or outside the container? In the era of Cloud Native and Microservices these questions get even more complicated. In this session I’ll present different architectural patterns for distributed caching: Embedded, Client-Server, (Kubernetes) Sidecar, and Reverse HTTP Proxy Caching.

During this talk you’ll learn:
– What are the design options for including the caching layer
– How to apply caching layer in Istio (and Service Mesh in general)
– How to use distributed HTTP caching without updating your microservices
– Common pitfalls when setting up caching for your system

Slides

11:2011:30Coffee Break
11:3012:20Luis WeirEvent-driven API strategies: from WebHooks to GraphQL Subscriptions

This talk explores different strategies to get around common constraints imposed by synchronous (request/response) APIs when it comes to supporting asynchronous and event-driven communication between server and clients thus avoiding inefficient and infective API pooling techniques.

Through a comprehensive architectural overview and a series of hands-on demonstrations, this presentation will illustrate how different asynchronous API strategies such as the above mentioned can be applied in order to deliver event-driven architectures in the web.

Slides

12:2013:30Lunch Break
13:3014:20Serhii RomaniukQA Automation evolution. The new SEiT role breaks borders and limitations.

Insatiable market hunger for the new features and the ever-increasing development speed, as well as the complexity of the applications being created, require the team to make the product testable by design.

How to manage application quality with limited resources?
How to make auto tests decrease business risks?
How to create optimal auto test coverage and naturally maintain it throughout the entire application development cycle?
How to create the most understandable and maintainable user documentation?
How to build auto tested release process?
How much does full test coverage cost?

Get the answers to these and other important questions in this presentation.

Slides

14:3015:10TOP SPEAKERS TEAM#Privacy

How to be a part of the social Internet and keep “privacy” at the same time.

15:1015:20Coffee Break
15:2016:10Goran KolevskiYou Know, For Search: Deep Dive into ElasticSearch

ElasticSearch is one of the most popular datastores nowadays. Starting just as a distributed version of Lucene it has became a favourite full-text search, data analytics, anomaly detection tool, log aggregation framework etc. But how all this magic happens? In this talk we will dive deep into ElasticSearch and see some of its internals.

16:1016:20Coffee Break
16:2017:10Trayan IlievDistributed Pub-Sub Messaging and Logging beyond Kafka with Apache Pulsar

Apache Pulsar is an enterprise grade distributed pub-sub messaging platform, with a very flexible messaging model and an intuitive client API. It was initially developed by Yahoo and currently powers major Yahoo applications like Yahoo Mail, Finance, and Sports. It combines capabilities of a horizontally scalable distributed pub-pub messaging system (like RabbitMQ, ActiveMQ, ZeroMq, etc.), with that of persistent logging platform like Apache Kafka. The presentation introduces to Apache Pulsar and its major features:

  • horizontal scalability (millions of topics and millions of messages per second)
  • strong ordering and consistency guarantees
  • low latency durable storage
  • load balancing
  • multi-tenancy
  • authentication and authorization
  • quotas
  • supporting mix of very different workloads
  • optional hardware isolation
  • REST API for provisioning, admin and stats
  • geo replication
  • transparent partitioning
  • transparent message batching

Presentation finishes with a comparison between Kafka and Pulsar and a short demo.

17:1017:20Coffee Break
17:2018:10Thodoris BaisDeveloper Career: Own it

Software Engineering is undoubtedly one of the best-paid jobs nowadays, which implies that the market for Software Engineers is large enough for all levels of expertise.

However, when a market is large it’s not always that easy to find good engineers; because in the end, this is what companies want, exceptional engineers.

Are you happy enough with your current position? Do you often find yourself in dilemmas like “am I doing the right thing?”, “how can I improve my skills?”, “how could I be seen as a strong technical person?” ?
Besides answering the aforementioned questions, this session will actually help you to drive your career in the direction you want, improve your productivity and make the right decisions at the right time.

Day 2 – 11th Dec Hall 8 #AIST

StartEndSpeakersTopic
09:3010:20Andres Cespedes Morales10 Steps to become a Software Architect

Have you ever thought about becoming a Software Architect? Is it still a bit unclear what is needed to do it so? Also, why would it ever be good to step into Software Architecture?

In this session, we’re going to learn the what, why, and how of Software Architecture from a point of view based on lessons, academics, and the enterprise, and also how you can transform yourself from a developer role into an architect one, describing the different steps and challenges that you may find throughout this journey.

10:2010:30Coffee Break
10:3011:20Martin ToshevBuilding highly scalable data pipelines with Apache Spark

Many modern world software systems face the need to process increasing volumes of data in a reasonable amount of time. To achieve that one can think of different ways to build a highly-scalable data pipeline which is a non-trivial activity especially in terms of the different operations, performance through various optimizations and scalability that need to be taken into consideration during the implementation. In order to avoid that we typically fall back to a framework like Apache Spark that provides the necessary primitives to build such a data pipeline. During this topic we will demonstrate how does Apache Spark achieves that by implementing a realtime event management system that aggregates events from a number of data sources in a single application implemented with the help of Apache Spark.

11:2011:30Coffee Break
11:3012:20Josef CacekStandard Java structures distributed

Java offers a wide set of data structure implementations ready for developers. Collections are a great and powerful example.

These standard data structures are limited by borders of a single JVM. They depend on available memory within one server. They don’t scale during high loads.

In-memory data grids (IMDG) may help to solve this problem. They offer distributed versions of Java data structures. Data is spread across multiple servers. Data grids provide failover features and prevent data loss when a server crashes. And you can simply scale them up and down. Let’s go through the most popular Java native IMDG implementations and compare distributed data structures provided.

Slides

Demo Code

12:2013:30Lunch Break
13:3014:20Tihomir MateevMicrofrontends in practice

Contemporary applications often employ the usage of distributed services that work together to allow complex workflows.
The notion of many services with different lifecycles and different availability poses great challenges to a centralized user interface.
What should the design of such front end be? How should it stitch up the different pieces together?
How would it react to change and downtime for each service individually and for the bulk of them?

This presentation aims to give a quick overview of what micro frontends are and how they are applied in various applications like Facebook, Spotify and such as the VMware’s vSphere Suite.

14:3015:10TOP SPEAKERS TEAM#Privacy

How to be a part of the social Internet and keep “privacy” at the same time.

15:1015:20Coffee Break
15:2016:10Tsanko StoykovMasking your data the right way

Data masking has many uses – from preparing good test data based on real data to sharing data for analysis. In the presentation I’ll share my study as examples on CSV files

16:1016:20Coffee Break
16:2017:10Dimitar KrastevYou are a consultant, you just don’t know it yet

In this fast changing world and the adoption of Agile processes, the customer exposure of the developers is increasing. This introduces a demand for new set of skills. Developers are expected to communicate and collaborate with the customer closely. This creates a new set of challenges every developer will face. Soft skills are now becoming a common asset for every developer.

17:1017:20Coffee Break
17:2017:45Kaloyan DimitrovReactive, one year later – a case study

If you have been on a Java conference in the past several years, there is no way you haven’t heard about Reactive. This talk is a case study of the project I have been working on during the past year (and a half). It will show you our journey through a new framework, technology, and mindset. Because, as everybody will tell you, Reactive requires a different mindset. In the end, you will, hopefully, get a better idea of what Reactive is and for what it is good or bad.

17:4518:10Radoslav MarkovJazz Singer (1929) in holographic and immersive sound – Why not (or why yes)?

This presentation have two parts. First is possibilities of current scientific achievement with application of computer vision algorithms and ML for restoration of image of the old movies – from digitization to multidimentialisation (holographic) and from mono to immersive sound. Second part is: did we have right to this – legal, ethical, aesthetic, rights and financial problems of doing such perfect improvement of the old audiovisual heritage.

Day 2 – 11th Dec Hall Europa (6th Floor)

StartEndSpeakersTopic
10:3012:20Kai Hackbarth
Dr. Pavlin Dobrev
Martin Tsarev
Dimitar Krastev
Prototyping platforms for any IoT use case

Internet of Things is becoming the heart of more and more projects. Each IoT project starts with a PoC prototype. This workshop will walk you through what a prototyping platform is and how it impacts the development of a project. Using the Bosch XDK, we will go through what such a board offers as sensors, connectivity, functionality and extensions and interesting examples from the real world. Bosch and Zuhlke developed the platform to encourage community development and open source coding thus we will see some live coding on the stop.

12:2013:30Lunch Break
13:3015:20Stanimir Iliev
Zdravko Kostadinov
Rumen Papukchiev
Ivan Mashalov
Georgi Manev
Teodor Dimitrov
Reactive backend with RDBMS

TBD

15:3017:20Otavio Goncalves de SantanaModern Data Streaming and Processing with Apache Kafka and NoSQL

Modern microservice-based architecture needs to exchange data in a fast and reliable way. The use of distributed streaming platforms such as Apache Kafka makes the job easier, but it’s often not enough. Applications also use NoSQL databases to store information that comes from multiple sources, so it makes perfect sense to use Kafka and NoSQL to create a distributed streaming and processing pipeline between applications. This hands-on lab explores such an architecture, deploying applications with Oracle Cloud and Jakarta EE technologies – Oracle NoSQL, Kafka, and JNoSQL – that are used to connect to the database and receive Kafka messages as CDI events.

Day 2 – 11th Dec Hall 8.2 (Master Class 2)

StartEndSpeakersTopic
16:2017:10Ioannis Canellos
Georgios Andrianakis
Quarkus: Supersonic, subatomic Java

The Cloud Native Era has changed a lot about what we expect from our applications making it challenging for traditional server side Java technologies. This talk will introduce you to Quarkus, a Kubernetes native Java stack that can tailor your application for GraalVM & Hotspot providing amazingly fast boot times and incredibly low RSS memory usage, making Java more than relevant in this brave new world.

Day 3 - 12th Dec Hall 8.1 (Master Class 1)

StartEndSpeakersTopic
10:0014:00Vladimir Schreiner
Nicolas Fränkel
Stream Processing Essentials Training

Take your first steps to understanding and start working with stream processing! By the end of the course, you will be able to build and run distributed streaming pipelines in Java:

  • Explain when to use streaming
  • Design a streaming application from the building blocks
  • Transform, match, correlate and aggregate continuous data
  • Scale, deploy, and operate streaming apps

We will also cover the advantages and disadvantages of the stream processing technologies available when approaching real-world problems.

Slides

14:0015:50Otavio Goncalves de Santana
Thodoris Bais
Jakarta NoSQL: Meet the first Jakarta EE specification in the Cloud

Jakarta NoSQL is the first specification of the new era of Java EE now in the Eclipse Foundation home as Jakarta EE. The goal of this specification is to ease integration to Java applications with a standard API that supports more than 30 NoSQL vendors and rising. This presentation will show Jakarta NoSQL with MongoDB and introduce an easy way to move your application to the cloud age.

Day 3 - 12th Dec Hall 8.2 (Master Class 2)

StartEndSpeakersTopic
10:0011:50Paul KingGroovy and Data Science

Groovy is a powerful multi-paradigm programming language for the JVM that offers a wealth of features that make it ideal for many data science and big data scenarios.

Groovy has a dynamic nature like Python, which means that it is very powerful, easy to learn, and productive. The language gets out of the way and lets data scientists write their algorithms naturally.

It has a static nature like Java and Kotlin, which makes it fast when needed. Its close alignment with Java means that you can often just cut-and-paste the Java examples from various big data solutions and they’ll work just fine in Groovy.

And it has first-class functional support, meaning that it offers features and allows solutions similar to Scala. Functional and stream processing with immutable data structures can offer many advantages when working in parallel processing or clustered environments.

These slides review the key benefits of using Groovy to develop data science solutions, including integration with various JDK libraries commonly used in data science solutions including libraries for data manipulation, machine learning, plotting and various big data solutions for scaling up these algorithms.

Math/Data Science libraries covered include:
Weka, Smile, Apache Commons Math, beakerx notebooks, Deep Learning4J.

Libraries for scaling/concurrency include:
Apache Spark, Apache Ignite, Apache MXNet, GPars, Apache Beam.

12:0013:50Georgios Andrianakis
Ioannis Canellos
Get your hands dirty with Quarkus: The Container First Cloud Native Java framework

Breaking news: You no longer need a PhD in quantum physicist to write Java that breaks the sound barrier! Join us live tonight and we are going to walk you through writing supersonic subatomic java with Quarkus!

Georgios and Ioannis are going to deliver a “deep dive” session into Quarkus structured into two ‘self-contained’ parts. The first part is going to cover application development essentials. The second part is going to be about cloud and integration

Please download the following before attending: https://github.com/iocanel/java2days-sofia-2019#Requirements

14:0015:50Wlodek KrakowskiPoker Hands – Refactoring into Chain of Responsibility

Poker Hands are are put into sequential order and the player who holds the highest one wins. Let’s make fun of it then and perform some refactoring of code that identifies what poker figure given player holds. We will transform a set of nested if-else statements into a nice chain of responsibility classes (Straight Flush, Four of a Kind, Full House, …) . This way the chain of classes put into sequential order will figure out the score given player holds. Proxy design patterns will come into the picture as well. All I can promise during this refactoring workshop is definitely no bluffing – just pure focus on code transformations. BTW : Did you know that real poker players are bluffing very rarely…? Prerequisite : become acquainted with poker rules if you haven’t played it so far, as business perspective and understanding existing code is the initial step for any refactoring. And don’t forget to install IntelliJ IDE – our master refactoring tool!

Please download the following sources prior to attending the Master Class: https://github.com/wlodekkr/chain-of-responsibility