# Gerrit User Summit 2024 - Speakers

### Daniele Sassoli - GerritForge {#dsassoli}

Daniele is a Senior Software Engineer with a long experience in highly scalable
systems hosted in the cloud. As a member of the GerritForge team he has had the
chance to design, mantain and improve high throughput multi-site installations.
He also gets to learn from the team's wealth of experience in all things Gerrit
and contribute to the long list of plugin's maintained by them.

[LinkedIn](https://www.linkedin.com/in/danielesassoli/)

### Nasser Grainawi - Qualcomm Innovation Center, Inc {#nasser}

Nasser is a Senior Staff Software Engineer who has been working with Gerrit
since the beginning. Initially posting to the repo-discuss list, he made his
first contribution in 2011, became a Maintainer in 2020, and has been a
Community Manager since 2021. He enjoys understanding and solving performance
and other "big system" challenges, both in Gerrit and in other systems
integrating with Gerrit.

[LinkedIn](https://www.linkedin.com/in/nassergrainawi/)

### Kaushik Lingarkar - Qualcomm Technologies, Inc {#kaushikl}

Kaushik joined Qualcomm over 15 years ago and has had a variety of
roles, often related to Gerrit or workflows using Gerrit. He made his
first Gerrit contribution in 2013 and has made many more since 2020 as a
full-time member of the Qualcomm Gerrit team. He became a Gerrit Maintainer in
2022.

[LinkedIn](https://www.linkedin.com/in/kaushiklingarkar/)

### Vasdev Gullapalli - Qualcomm Technologies, Inc {#vasdevg}

Vasdev joined Qualcomm in 2013, and he is a senior staff Devops/SRE engineer.
He has worked in various teams and currently managing various git based
systems as a Technical Lead / Platform Owner.

[LinkedIn](https://www.linkedin.com/in/vasdev-gullapalli-b3450374/)

### Tushar Himmat Dahibhate - Qualcomm Technologies, Inc {#tdahibha}

Tushar joined Qualcomm over four years ago and is a Senior DevOps/SRE Engineer.
He has been involved in various development activities, such as migrating
on-premise systems to Kubernetes, designing and developing automated
deployment pipelines, and enabling monitoring and alerting via Datadog etc

[LinkedIn](https://www.linkedin.com/in/tushar-dahibhate/)

