# Gerrit User Summit 2017 - Speakers

### Arnab Banerjee - Google {#arnabb}

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

Arnab Banerjee is a User Experience designer for Polygerrit and is based in
Seattle.

### Dave Borowitz - Google {#dborowitz}

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

Dave Borowitz is Staff Software Engineer at Google and principal
project maintainer.

### David Pursehouse - CollabNet {#dpursehouse}

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

David is a contributor to Gerrit since 2011 and a maintainer/committer
since 2012. He is based in Japan and works remotely as part of
CollabNet's Teamforge Git Engineering team in Berlin.

### Dustin Smith - Google {#smithdc}

[LinkedIn](https://www.linkedin.com/in/dustin-smith-b0525458)

Dustin is a User Experience Research at Google for the PolyGerrit UX team in
Seattle.

### Eryk Szymanski - CollabNet {#eszymanski}

[LinkedIn](https://www.linkedin.com/in/eryk-szymanski-94b92ba/)

Eryk is leading CollabNet's TeamForge Git Engineering team in Berlin.

### Han-Wen Nienhuys - Google {#hanwen}

[LinkedIn](https://de.linkedin.com/in/han-wen-nienhuys-794735/)

Han-Wen has been managing Google's Gerrit team in Munich, Germany since 2015.


### Jacek Centkowski - CollabNet {#jcentkowski}

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

Jacek is a contributor to Gerrit since 2013 but mostly works on
TeamForge Git/Gerrit Integration for CollabNet's team in Berlin.

### Logan Hanks - Google {#logan}

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

Logan manages Google's PolyGerrit team in San Francisco.

### Luca Milanesio - GerritForge {#lmilanesio}

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

Luca is co-founder of GerritForge and has over 20 years of software development
and application lifecycle management experience.
He is a Gerrit Contributor for over five years and is the maintainer
of [GerritHub.io](https://gerrithub.io), the Open Service for Gerrit Code Review
on top of GitHub repositories.

### Martin Fick - Qualcomm {#mfick}

[LinkedIn](https://www.linkedin.com/in/martin-fick-8637611/)

Martin is a Software Engineer at Qualcomm.

### Patrick Hiesel - Google {#hiesel}

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

Patrick Hiesel is a maintainer of Gerrit and Software Engineer at Google
in Munich.

### Shane McIntosh - McGill University {#smcintosh}

[LinkedIn](https://www.linkedin.com/in/shane-mcintosh-94a6971b/)

Shane McIntosh is an assistant professor in the Department of Electrical and
Computer Engineering at McGill University, where he leads the Software
Repository Excavation and Build Engineering Labs (Software REBELs). He received
his Bachelor's degree in Applied Computing from the University of Guelph and
his MSc and PhD in Computer Science from Queen's University, for which he was
awarded the Governor General of Canada's Academic Gold Medal. In his research,
Shane uses empirical software engineering techniques to study software build
systems, release engineering, and software quality. More info about Shane and
the REBELs is available [online](http://rebels.ece.mcgill.ca/).

# Q&A with the maintainers

### Alice Kober-Sotzek - Google {#aliceks}

[LinkedIn](https://www.linkedin.com/in/alice-kober-sotzek-23024133/)

### Becky Siegel - Google {#beckysiegel}

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

### Edwin Kempin - Google {#ekempin}

[LinkedIn](https://www.linkedin.com/in/edwin-kempin-215234b4/)

### Wyatt Allen - Google {#wyattallen}

[LinkedIn](https://www.linkedin.com/in/wyatt-allen-02547922/)
