Mary Grygleski

Information & Communications Technology

java reactive systems Reactive Programming OpenSource Web Services Cloud Computing IBM Cloud Mobile Development Emerging Technologies Java and Server-side

Chicago, Illinois, United States

Mary Grygleski

Senior Developer Advocate at IBM and President of Chicago-JUG

Mary is a Senior Developer Advocate at IBM, specializing in Reactive Java, Open Source, Cloud, and Distributed Systems. She started working as a software engineer with C and Unix, then got into Java, Open Source, and web development in the new Millennium, and now she has ventured into Reactive, Mobile, and the DevOps space. In her previous incarnations, she worked for several technology product companies in the Route 128 Boston Technology Corridor as well the San Francisco Bay Area. She now resides in the Greater Chicago area, and is the President and Executive Board Member of the Chicago Java Users Group (CJUG). She is also an active co-organizers for the Data, Cloud and AI In Chicago, Chicago Cloud, and IBM Cloud Chicago meetup groups. Mary continues to be amazed by how software innovations can dramatically transform our lives. Despite the many challenges in an ever-evolving technical world, she gets energized by the constant change and believes that she has uncovered the pathway to staying young. She can’t wait to see what the next tech wave will be like.

Mary Grygleski

Current sessions

Deploying a Modern Serverless Reactive Microservice to the Cloud

We have been hearing a lot about the benefits of using the reactive approach to solving concurrency problems in distributed systems. While reactive programming refers to the implementation techniques being used on the coding level, on the systems deployment and runtime level, we can leverage on a robust yet very flexible and lightweight framework such as Vert.x to deliver. In this session, we will first learn about what the missions of a reactive system are, which, among many things, include handling multiple concurrent data stream flows and being able to control back pressure as well as managing errors in an elegant manner. The very loosely-coupled nature of a reactive system also lends itself very well to building microservices that can communicate well within its messaging infrastructure. We will also discuss the special polyglot nature of Vert.x, its event loop, and its use of the Vertical model. Live coding will accompany this session to illustrate how to program a simple use case using multiple JVM languages such as Java and Kotlin, we will then build and dockerize it to be deployed as a serverless container to the Knative cluster on the cloud in a delightful manner.


Growing the Technical Community

Development work is a very complicated activity especially for large projects with multiple teams, or even if it's just one team with multiple developers, things can get out of hand especially when people do not collaborate well or if someone refuses to cooperate. As much as the coding work itself and all of the other related tasks are technical in nature, and as developers we would be running into technical issues that can cause us headaches, we are also working with other developers and folks from other functional areas in a social environment, which can be the source of our frustrations sometimes (or for some, a lot of times). While we are all working to make a living, it is also in our nature that we would like to see ourselves keep learning and growing professionally. This talk aims at sharing the experience that I have as the organizer of the 3000+ member technical community of the Chicago Java Users Group. I started as the meeting director in 2017, and this year, 2020, I was voted as the president, and, with the untimely pandemic situation, CJUG is still growing in numbers of the community. What are some of the strategies that I have in growing the community? I would love to share my experiences with the audience.


Introduction to Machine Learning and Cloud Computing

Machine Learning and Cloud computing are quickly growing in popularity. In this presentation, shaped as a dialog of the two presenters, we will discuss basics and practical examples of both and provide suggestions for further learning.

We will be providing answers to questions such as:
* Examples of machine learning around us
* What types of data and models are used in machine learning
* Explanations of Deep Learning and Neural Networks
* Machine learning pipelines and how to deploy them
* Key characteristics of a Cloud environment
* How to use Cloud Computing for different types of applications such as IoT, AI, and databases


Reactive in Practice

So you're a Developer and you've heard of Reactive and are excited to see how you can use its guiding principles to make your application more responsive and resilient. In this workshop we'll take you through step by step how to transform your application into a truly reactive system that gracefully handles failure, elastically distributes resources and is responsive to your end users.

With the advances in hardware, containerization, and virtualization technology within the past decade, software such as reactive systems is catching up to take advantage of such. Implementing reactive systems and writing code using the reactive approach may sound difficult, but we will illustrate that this can be done in a very manageable manner. While reactive system is not a "one-size-fits-all" cure to all problems, it does seem promising to be a solution to computing challenges such as system responsiveness, resiliency, and scalability.

This workshop will provide a guidance on how to transform a legacy, monolithic, on-premise application into a modern, highly responsive, microservices and cloud-based system. We will utilize a series of "Quick Labs" from the IBM Developer resource library (https://developer.ibm.com/) and work through building a few sample microservices together using an open-source reactive library (such as Eclipse Microprofile, Vert.x).


Thirst-Quenching Streams for the Reactive Mind

With the advances in multicore hardware and virtualization technologies, and the demand for highly responsive, resilient, and elastic systems and increasingly sophisticated applications, an array of reactive data stream processing libraries have been born to address the needs. Reactive Streams is an initiative to provide a standard for asynchronous stream processing with non-blocking back pressure. This encompasses efforts aimed at runtime environments that include JVM and Javascript, as well as network protocols. So how do the various library implementations of Reactive Streams, such as Spring Reactor, Reactive Extension (Rx)'s Observables, and RSocket, stack up against each other?


This presentation will go into some details on how streams leverage on the underlying multicore processor to achieve parallelism. It will then explain the push vs the pull streaming model. It will then use a simple use case with code examples to illustrate the different API usages, as well as runtime processing analysis between a few popular Java implementations of Reactive Streams.


Reactive in Practice - Transforming a Legacy Application

So you're a Developer and you've heard of Reactive and are excited to see how you can use its guiding principles to make your application more responsive and resilient. In this workshop we'll take you through step by step how to transform your application into a truly reactive system that gracefully handles failure, elastically distributes resources and is responsive to your end users.

With the advances in hardware, containerization, and virtualization technology within the past decade, software such as reactive systems is catching up to take advantage of such. Implementing reactive systems and writing code using the reactive approach may sound difficult, but we will illustrate that this can be done in a very manageable manner. While reactive system is not a "one-size-fits-all" cure to all problems, it does seem promising to be a solution to computing challenges such as system responsiveness, resiliency, and scalability.

This workshop will provide a guidance on how to transform a legacy, monolithic, on-premise application into a modern, highly responsive, microservices and cloud-based system. We will utilize the IBM Stock Trader application (https://developer.ibm.com/blogs/introducing-stocktrader/) and work through building a few sample microservices together using an open-source reactive library (such as Eclipse Vert.x or RxJava).

We will first have a quick study of the Stock Trader application in its legacy monolithic form, which can only be deployed as an on-premise app. This will help us to understand the common issues that face a lot of the legacy applications today.

Next, we will discuss about how to redesign the monolithic Stock Trader application, and break up the different components of the system into microservices, using a reactive approach where appropriate.

Participants will then get some hands-on reactive implementation experience by selecting one or more microservices, and work on their implementations with guided examples.

Participants will be able to also deploy their transformed application to Minishift or OpenShift on an open Cloud platform (such as the IBM Cloud). For ease of deployment, the workshop materials will include a fully implemented solution, so that the participant can utilize any of the sample microservices that s/he will need, or simply take the entire sample application, in order to try out the cloud deployment.


Reactive Streams - Kotlin Style!

We have heard a lot about the reactive buzzword since the early 2010's, but what exactly does it mean for Kotlin? What kind of support and capabilities do we currently have in Kotlin which supports, for example, the Reactive Streams? This short talk introduces the audience to asynchronous processing in Kotlin coroutines, and discusses the support of Reactive Streams with backpressure capabilities in Kotlin through Spring Reactor


How to calm down your boss when he needs native mobile apps in less than 24 hours

This session shows the audience how to develop and run native mobile apps without the need to know much about the native platforms, such as Android and iOS, by leveraging on hybrid development framework like Ionic, which is built on top of Apache Cordova. We will be discussing, with humor, about a real-life enterprise-level mobile app that was developed under pressure for a wireless service provider. We will talk about some of the technical details of the app, as well as how to perform device-level debugging of the Android app using adb. We will also offer some practical tips on what to watch out for.


Enterprise Hybrid Mobile App Development

This session shows how to develop and run native mobile apps without needing to know much about the native platforms such as Android and iOS, by leveraging a hybrid development framework such as Ionic, which is built on top of Apache Cordova and is capable of transforming an ordinary web app into a mobile app. The presentation discusses a real-life enterprise-level Android and iOS mobile app developed under pressure for a wireless service provider. It covers some of the technical details of the app as well as how to perform device-level debugging of the Android app, using adb. You’ll get practical tips on what to watch out for, and an understanding of the differences of the hybrid approach versus other frameworks such as React Native and Kotlin/Native.


Reactive for the impatient

As Java is an object-oriented language that inherently supports the imperative programming style, asynchronicity presents a challenge that can turn the code into nightmare. One way to deal with the complexity of asynchronicity is to introduce reactivity onto the coding level (reactive programming), and/or to handle it on the design and architecture level (reactive systems design).

This talk presents to the audience a few of the major Java-based reactive frameworks and toolkits in the market today, such as RxJava, Spring Reactor, Akka, and Vet.x. It will start by going over the basic tenets of reactive systems, and some examples of the problems that these systems aim to solve. It will discuss the 2 most commonly used Java frameworks for implementing reactive coding - RxJava and Spring Reactor, and will show some code samples. It will then bring the audience to the next level of "reactivity' by introducing 2 reactive frameworks - Akka and Vert.x, which are usually used for implementing reactive microservices. It will draw some comparisons between these 2 frameworks and cite some real-life examples of their usages.

The takeaways for the audience will be an understanding of the key differences between reactive programming versus reactive systems, and the strength and weaknesses of each of the surveyed frameworks.


A Gentle Intro to Akka and the Actor Model

Akka is a set of open-source libraries for designing scalable, resilient systems that span processor cores and networks. Akka allows developers to focus on meeting business needs instead of writing low-level code to provide reliable behavior, fault tolerance, and high performance.

Akka’s use of the actor model provides a level of abstraction that makes it easier to write correct concurrent, parallel and distributed systems. The actor model spans the full set of Akka libraries that provides a consistent way of understanding and using them.

This presentation introduces the audience to Akka and the Actor Model. We will be using an IoT example use case that reports data from sensor devices, and will demonstrate Akka as a very powerful choice to build reactive systems that are highly responsive, elastic, and resilient, which also fulfills the principles as outlined in the Reactive Manifesto.


Thirst-quenching Streams for the Reactive Mind

With the advances in multicore hardware and virtualization technologies, and the demand for highly responsive, resilient, and elastic systems and increasingly sophisticated applications, an array of reactive data stream processing libraries have been born to address the needs. Reactive Streams is an initiative to provide a standard for asynchronous stream processing with non-blocking back pressure. This encompasses efforts aimed at runtime environments that include JVM and Javascript, as well as network protocols. So how do the various library implementations of Reactive Streams, such as Spring Reactor, Reactive Extension (Rx)'s Observables, and Akka Stream, stack up against each other?

This presentation will go into some details on how streams leverage on the underlying multicore processor to achieve parallelism.  It will then explain the push vs the pull streaming model.  It will then use a simple use case with code examples to illustrate the different API usages, as well as runtime processing analysis between a few popular Java implementations of Reactive Streams.


Teach your Pacman to play with Machine Learning and Reactive Streams

Today the adoption of Machine Learning is enormous. We use it almost everywhere: on clusters, on our phones, on hand watches and even on the teapots. But, who knows how challenging could be the development of the continuously improved (or even real-time) machine learning. Servers' capacity, stability, performance, along with a proper ML algorithm selection and many other properties must be taken into account. In this presentation, we will be demonstrating bots education for multiplayer Pacman game. We will show how elegant could be the development of such a problem with Kafka, Akka, RSocket and Reinforcement/Q Learning.

Co-presentation with International speaker, Oleh Dokuka. First presentation at Codemotion Berlin 2019, subsequent presentations include JFuture Minsk 2019 (voted second favorite by audience).


Past and future events

Build Stuff 2020 Lithuania

10 Nov 2020 - 14 Nov 2020

DevFest WI 2020

24 Oct 2020

CodeMash 2020

6 Jan 2020 - 10 Jan 2020
Sandusky, Ohio, United States

Vermont Code Camp 11 (2019)

28 Sep 2019
Burlington, Vermont, United States

KCDC 2019

17 Jul 2019 - 19 Jul 2019
Kansas City, Missouri, United States

Beer City Code 2019

31 May 2019 - 1 Jun 2019
Grand Rapids, Michigan, United States

CodeStock 2019

12 Apr 2019 - 13 Apr 2019
Knoxville, Tennessee, United States

Greach 2019

28 Mar 2019 - 30 Mar 2019
Madrid, Spain

Codemotion Rome

22 Mar 2019 - 23 Mar 2019
Rome, Latium, Italy

Devnexus 2019

Reactive for the Impatient
6 Mar 2019 - 8 Mar 2019
Atlanta, Georgia, United States

Google DevFest Florida 2019

Enterprise Hybrid Mobile App Development
19 Jan 2019
Orlando, Florida, United States

Devoxx Ukraine

Enterprise Hybrid Mobile App Development
23 Nov 2018 - 24 Nov 2018
Kyiv, Kyiv City, Ukraine

Google DevFest Hong Kong 2018

What to do when your boss needs a native mobile app within 24 hours?
3 Nov 2018
Hong Kong, Central and Western, Hong Kong

Oracle Code One

What to do when you boss needs a native mobile app within 24 hours?
22 Oct 2018 - 25 Oct 2018
San Francisco, California, United States

Devnexus 2018

Enterprise Hybrid Mobile App Development
21 Feb 2018 - 23 Feb 2018
Atlanta, Georgia, United States

Java One

How to run a Successful Java Users Group
1 Oct 2017 - 5 Oct 2017
San Francisco, California, United States