ODK Aggregate, Google Apps Install

I'm trying to set up ODK Aggregate with Google Apps with these
instructions https://opendatakit.org/use/aggregate/. After the install of
ODK Aggregate is complete and I attempt to upload the connection to google
apps I get the following errors after posting the token.

I have changed. Allow less secure apps: ON

listBackends!: Dec 12, 2016 11:29:46 AM com.google.appengine.tools.info.
RemoteVersionFactory getVersion
listBackends!: INFO: Unable to access https:
//appengine.google.com/api/updatecheck?runtime=java&release=1.9.42&timestamp=1468608347&api_versions=['1.0']
listBackends!: javax.net.ssl.SSLHandshakeException: sun.security.validator.
ValidatorException: PKIX path building failed: sun.security.provider.
certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target
listBackends!: at sun.security.ssl.Alerts.getSSLException(Unknown Source)
listBackends!: at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
listBackends!: at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
listBackends!: at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
listBackends!: at sun.security.ssl.ClientHandshaker.serverCertificate(
Unknown Source)
listBackends!: at sun.security.ssl.ClientHandshaker.processMessage(Unknown
Source)
listBackends!: at sun.security.ssl.Handshaker.processLoop(Unknown Source)
listBackends!: at sun.security.ssl.Handshaker.process_record(Unknown
Source)
listBackends!: at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source
)
listBackends!: at sun.security.ssl.SSLSocketImpl.performInitialHandshake(
Unknown Source)
listBackends!: at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown
Source)
listBackends!: at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown
Source)
listBackends!: at sun.net.www.protocol.https.HttpsClient.afterConnect(
Unknown Source)
listBackends!: at sun.net.www.protocol.https.
AbstractDelegateHttpsURLConnection.connect(Unknown Source)
listBackends!: at sun.net.www.protocol.http.HttpURLConnection.
getInputStream0(Unknown Source)
listBackends!: at sun.net.www.protocol.http.HttpURLConnection.
getInputStream(Unknown Source)
listBackends!: at sun.net.www.protocol.https.HttpsURLConnectionImpl.
getInputStream(Unknown Source)
listBackends!: at java.net.URL.openStream(Unknown Source)
listBackends!: at com.google.appengine.tools.info.RemoteVersionFactory.
getVersion(RemoteVersionFactory.java:76)
listBackends!: at com.google.appengine.tools.info.UpdateCheck.
getApplicationVersionInfo(UpdateCheck.java:153)
listBackends!: at com.google.appengine.tools.info.UpdateCheck.
maybePrintNagScreen(UpdateCheck.java:361)
listBackends!: at com.google.appengine.tools.admin.AppCfg.(AppCfg.
java:180)
listBackends!: at com.google.appengine.tools.admin.AppCfg.(AppCfg.
java:119)
listBackends!: at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java
:115)
listBackends!: Caused by: sun.security.validator.ValidatorException: PKIX
path building failed: sun.security.provider.certpath.
SunCertPathBuilderException: unable to find valid certification path to
requested target
listBackends!: at sun.security.validator.PKIXValidator.doBuild(Unknown
Source)
listBackends!: at sun.security.validator.PKIXValidator.engineValidate(
Unknown Source)
listBackends!: at sun.security.validator.Validator.validate(Unknown Source
)
listBackends!: at sun.security.ssl.X509TrustManagerImpl.validate(Unknown
Source)
listBackends!: at sun.security.ssl.X509TrustManagerImpl.checkTrusted(
Unknown Source)
listBackends!: at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted
(Unknown Source)
listBackends!: ... 20 more
listBackends!: Caused by: sun.security.provider.certpath.
SunCertPathBuilderException: unable to find valid certification path to
requested target
listBackends!: at sun.security.provider.certpath.SunCertPathBuilder.build(
Unknown Source)
listBackends!: at sun.security.provider.certpath.SunCertPathBuilder.
engineBuild(Unknown Source)
listBackends!: at java.security.cert.CertPathBuilder.build(Unknown Source)
listBackends!: ... 26 more
listBackends!:
listBackends : The following URL can be used to authenticate:
listBackends : https:
//accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force&client_id=550516889912.apps.googleusercontent.com&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&scope=https://www.googleapis.com/auth/appengine.admin%20https://www.googleapis.com/auth/cloud-platform
listBackends : Attempting to open it in your browser now.
listBackends : Please enter code:
listBackends!: javax.net.ssl.SSLHandshakeException: sun.security.validator.
ValidatorException: PKIX path building failed: sun.security.provider.
certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target
listBackends :
listBackends!:
status : Action failed or aborted by user

Hi there,

This error suggests that something has gone wrong with your Java SSL
certificates. Try a total uninstall and reinstall the latest version
of Java. You can also try doing the Aggregate install on a different
machine.

Yaw

··· On Mon, Dec 12, 2016 at 2:25 PM, wrote: > I'm trying to set up ODK Aggregate with Google Apps with these instructions > https://opendatakit.org/use/aggregate/. After the install of ODK Aggregate > is complete and I attempt to upload the connection to google apps I get the > following errors after posting the token. > > I have changed. Allow less secure apps: ON > > > > > listBackends!: Dec 12, 2016 11:29:46 AM > com.google.appengine.tools.info.RemoteVersionFactory getVersion > listBackends!: INFO: Unable to access > https://appengine.google.com/api/updatecheck?runtime=java&release=1.9.42&timestamp=1468608347&api_versions=['1.0'] > listBackends!: javax.net.ssl.SSLHandshakeException: > sun.security.validator.ValidatorException: PKIX path building failed: > sun.security.provider.certpath.SunCertPathBuilderException: unable to find > valid certification path to requested target > listBackends!: at sun.security.ssl.Alerts.getSSLException(Unknown Source) > listBackends!: at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source) > listBackends!: at sun.security.ssl.Handshaker.fatalSE(Unknown Source) > listBackends!: at sun.security.ssl.Handshaker.fatalSE(Unknown Source) > listBackends!: at > sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source) > listBackends!: at sun.security.ssl.ClientHandshaker.processMessage(Unknown > Source) > listBackends!: at sun.security.ssl.Handshaker.processLoop(Unknown Source) > listBackends!: at sun.security.ssl.Handshaker.process_record(Unknown > Source) > listBackends!: at sun.security.ssl.SSLSocketImpl.readRecord(Unknown > Source) > listBackends!: at > sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) > listBackends!: at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown > Source) > listBackends!: at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown > Source) > listBackends!: at > sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source) > listBackends!: at > sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown > Source) > listBackends!: at > sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source) > listBackends!: at > sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) > listBackends!: at > sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown > Source) > listBackends!: at java.net.URL.openStream(Unknown Source) > listBackends!: at > com.google.appengine.tools.info.RemoteVersionFactory.getVersion(RemoteVersionFactory.java:76) > listBackends!: at > com.google.appengine.tools.info.UpdateCheck.getApplicationVersionInfo(UpdateCheck.java:153) > listBackends!: at > com.google.appengine.tools.info.UpdateCheck.maybePrintNagScreen(UpdateCheck.java:361) > listBackends!: at > com.google.appengine.tools.admin.AppCfg.(AppCfg.java:180) > listBackends!: at > com.google.appengine.tools.admin.AppCfg.(AppCfg.java:119) > listBackends!: at > com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:115) > listBackends!: Caused by: sun.security.validator.ValidatorException: PKIX > path building failed: > sun.security.provider.certpath.SunCertPathBuilderException: unable to find > valid certification path to requested target > listBackends!: at sun.security.validator.PKIXValidator.doBuild(Unknown > Source) > listBackends!: at > sun.security.validator.PKIXValidator.engineValidate(Unknown Source) > listBackends!: at sun.security.validator.Validator.validate(Unknown > Source) > listBackends!: at sun.security.ssl.X509TrustManagerImpl.validate(Unknown > Source) > listBackends!: at > sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source) > listBackends!: at > sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) > listBackends!: ... 20 more > listBackends!: Caused by: > sun.security.provider.certpath.SunCertPathBuilderException: unable to find > valid certification path to requested target > listBackends!: at > sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source) > listBackends!: at > sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown > Source) > listBackends!: at java.security.cert.CertPathBuilder.build(Unknown Source) > listBackends!: ... 26 more > listBackends!: > listBackends : The following URL can be used to authenticate: > listBackends : > https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force&client_id=550516889912.apps.googleusercontent.com&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&scope=https://www.googleapis.com/auth/appengine.admin%20https://www.googleapis.com/auth/cloud-platform > listBackends : Attempting to open it in your browser now. > listBackends : Please enter code: > listBackends!: javax.net.ssl.SSLHandshakeException: > sun.security.validator.ValidatorException: PKIX path building failed: > sun.security.provider.certpath.SunCertPathBuilderException: unable to find > valid certification path to requested target > listBackends : > listBackends!: > status : Action failed or aborted by user > > -- > -- > Post: opendatakit@googlegroups.com > Unsubscribe: opendatakit+unsubscribe@googlegroups.com > Options: http://groups.google.com/group/opendatakit?hl=en > > --- > You received this message because you are subscribed to the Google Groups > "ODK Community" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to opendatakit+unsubscribe@googlegroups.com. > For more options, visit https://groups.google.com/d/optout.

Also, please note that we use Java 7 for Google AppEngine and Java 7 or
Java 8 for Tomcat 8 installs.

You appear to be using Java 9, which has not been tested.

··· On Sat, Dec 24, 2016 at 1:41 PM, Yaw Anokwa wrote:

Hi there,

This error suggests that something has gone wrong with your Java SSL
certificates. Try a total uninstall and reinstall the latest version
of Java. You can also try doing the Aggregate install on a different
machine.

Yaw

On Mon, Dec 12, 2016 at 2:25 PM, peostatom@gmail.com wrote:

I'm trying to set up ODK Aggregate with Google Apps with these
instructions
https://opendatakit.org/use/aggregate/. After the install of ODK
Aggregate
is complete and I attempt to upload the connection to google apps I get
the
following errors after posting the token.

I have changed. Allow less secure apps: ON

listBackends!: Dec 12, 2016 11:29:46 AM
com.google.appengine.tools.info.RemoteVersionFactory getVersion
listBackends!: INFO: Unable to access
https://appengine.google.com/api/updatecheck?runtime=java&
release=1.9.42&timestamp=1468608347&api_versions=['1.0']
listBackends!: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to
find
valid certification path to requested target
listBackends!: at sun.security.ssl.Alerts.getSSLException(Unknown
Source)
listBackends!: at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
listBackends!: at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
listBackends!: at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
listBackends!: at
sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
listBackends!: at sun.security.ssl.ClientHandshaker.
processMessage(Unknown
Source)
listBackends!: at sun.security.ssl.Handshaker.processLoop(Unknown
Source)
listBackends!: at sun.security.ssl.Handshaker.process_record(Unknown
Source)
listBackends!: at sun.security.ssl.SSLSocketImpl.readRecord(Unknown
Source)
listBackends!: at
sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
listBackends!: at sun.security.ssl.SSLSocketImpl.startHandshake(
Unknown
Source)
listBackends!: at sun.security.ssl.SSLSocketImpl.startHandshake(
Unknown
Source)
listBackends!: at
sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
listBackends!: at
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnec
tion.connect(Unknown
Source)
listBackends!: at
sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown
Source)
listBackends!: at
sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown
Source)
listBackends!: at
sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown
Source)
listBackends!: at java.net.URL.openStream(Unknown Source)
listBackends!: at
com.google.appengine.tools.info.RemoteVersionFactory.getVersion(
RemoteVersionFactory.java:76)
listBackends!: at
com.google.appengine.tools.info.UpdateCheck.getApplicationVersionInfo(
UpdateCheck.java:153)
listBackends!: at
com.google.appengine.tools.info.UpdateCheck.maybePrintNagScreen(
UpdateCheck.java:361)
listBackends!: at
com.google.appengine.tools.admin.AppCfg.(AppCfg.java:180)
listBackends!: at
com.google.appengine.tools.admin.AppCfg.(AppCfg.java:119)
listBackends!: at
com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:115)
listBackends!: Caused by: sun.security.validator.ValidatorException:
PKIX
path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to
find
valid certification path to requested target
listBackends!: at sun.security.validator.PKIXValidator.doBuild(Unknown
Source)
listBackends!: at
sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
listBackends!: at sun.security.validator.Validator.validate(Unknown
Source)
listBackends!: at sun.security.ssl.X509TrustManagerImpl.validate(
Unknown
Source)
listBackends!: at
sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
listBackends!: at
sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
listBackends!: ... 20 more
listBackends!: Caused by:
sun.security.provider.certpath.SunCertPathBuilderException: unable to
find
valid certification path to requested target
listBackends!: at
sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source)
listBackends!: at
sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown
Source)
listBackends!: at java.security.cert.CertPathBuilder.build(Unknown
Source)
listBackends!: ... 26 more
listBackends!:
listBackends : The following URL can be used to authenticate:
listBackends :
https://accounts.google.com/o/oauth2/auth?access_type=
offline&approval_prompt=force&client_id=550516889912.apps.
googleusercontent.com&redirect_uri=urn:ietf:wg:
oauth:2.0:oob&response_type=code&scope=https://www.
googleapis.com/auth/appengine.admin%20https://www.
googleapis.com/auth/cloud-platform
listBackends : Attempting to open it in your browser now.
listBackends : Please enter code:
listBackends!: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to
find
valid certification path to requested target
listBackends :
listBackends!:
status : Action failed or aborted by user

--

Post: opendatakit@googlegroups.com
Unsubscribe: opendatakit+unsubscribe@googlegroups.com
Options: http://groups.google.com/group/opendatakit?hl=en


You received this message because you are subscribed to the Google Groups
"ODK Community" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to opendatakit+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--

Post: opendatakit@googlegroups.com
Unsubscribe: opendatakit+unsubscribe@googlegroups.com
Options: http://groups.google.com/group/opendatakit?hl=en


You received this message because you are subscribed to the Google Groups
"ODK Community" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to opendatakit+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
Mitch Sundt
Software Engineer
University of Washington
mitchellsundt@gmail.com

Er.. perhaps not. But check that you have Java properly installed.

··· On Tue, Jan 3, 2017 at 3:24 PM, Mitch Sundt wrote:

Also, please note that we use Java 7 for Google AppEngine and Java 7 or
Java 8 for Tomcat 8 installs.

You appear to be using Java 9, which has not been tested.

On Sat, Dec 24, 2016 at 1:41 PM, Yaw Anokwa yanokwa@nafundi.com wrote:

Hi there,

This error suggests that something has gone wrong with your Java SSL
certificates. Try a total uninstall and reinstall the latest version
of Java. You can also try doing the Aggregate install on a different
machine.

Yaw

On Mon, Dec 12, 2016 at 2:25 PM, peostatom@gmail.com wrote:

I'm trying to set up ODK Aggregate with Google Apps with these
instructions
https://opendatakit.org/use/aggregate/. After the install of ODK
Aggregate
is complete and I attempt to upload the connection to google apps I get
the
following errors after posting the token.

I have changed. Allow less secure apps: ON

listBackends!: Dec 12, 2016 11:29:46 AM
com.google.appengine.tools.info.RemoteVersionFactory getVersion
listBackends!: INFO: Unable to access
https://appengine.google.com/api/updatecheck?runtime=java&re
lease=1.9.42&timestamp=1468608347&api_versions=['1.0']
listBackends!: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to
find
valid certification path to requested target
listBackends!: at sun.security.ssl.Alerts.getSSLException(Unknown
Source)
listBackends!: at sun.security.ssl.SSLSocketImpl.fatal(Unknown
Source)
listBackends!: at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
listBackends!: at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
listBackends!: at
sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
listBackends!: at sun.security.ssl.ClientHandsha
ker.processMessage(Unknown
Source)
listBackends!: at sun.security.ssl.Handshaker.processLoop(Unknown
Source)
listBackends!: at sun.security.ssl.Handshaker.process_record(Unknown
Source)
listBackends!: at sun.security.ssl.SSLSocketImpl.readRecord(Unknown
Source)
listBackends!: at
sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
listBackends!: at sun.security.ssl.SSLSocketImpl
.startHandshake(Unknown
Source)
listBackends!: at sun.security.ssl.SSLSocketImpl
.startHandshake(Unknown
Source)
listBackends!: at
sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
listBackends!: at
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnectio
n.connect(Unknown
Source)
listBackends!: at
sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown
Source)
listBackends!: at
sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown
Source)
listBackends!: at
sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputSt
ream(Unknown
Source)
listBackends!: at java.net.URL.openStream(Unknown Source)
listBackends!: at
com.google.appengine.tools.info.RemoteVersionFactory.getVers
ion(RemoteVersionFactory.java:76)
listBackends!: at
com.google.appengine.tools.info.UpdateCheck.getApplicationVe
rsionInfo(UpdateCheck.java:153)
listBackends!: at
com.google.appengine.tools.info.UpdateCheck.maybePrintNagScr
een(UpdateCheck.java:361)
listBackends!: at
com.google.appengine.tools.admin.AppCfg.(AppCfg.java:180)
listBackends!: at
com.google.appengine.tools.admin.AppCfg.(AppCfg.java:119)
listBackends!: at
com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:115)
listBackends!: Caused by: sun.security.validator.ValidatorException:
PKIX
path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to
find
valid certification path to requested target
listBackends!: at sun.security.validator.PKIXVal
idator.doBuild(Unknown
Source)
listBackends!: at
sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
listBackends!: at sun.security.validator.Validator.validate(Unknown
Source)
listBackends!: at sun.security.ssl.X509TrustMana
gerImpl.validate(Unknown
Source)
listBackends!: at
sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
listBackends!: at
sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown
Source)
listBackends!: ... 20 more
listBackends!: Caused by:
sun.security.provider.certpath.SunCertPathBuilderException: unable to
find
valid certification path to requested target
listBackends!: at
sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source)
listBackends!: at
sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown
Source)
listBackends!: at java.security.cert.CertPathBuilder.build(Unknown
Source)
listBackends!: ... 26 more
listBackends!:
listBackends : The following URL can be used to authenticate:
listBackends :
https://accounts.google.com/o/oauth2/auth?access_type=offlin
e&approval_prompt=force&client_id=550516889912.apps.googleus
ercontent.com&redirect_uri=urn:ietf:wg:oauth:2.0:oob&
response_type=code&scope=https://www.googleapis.com/
auth/appengine.admin%20https://www.googleapis.com/auth/cloud-platform
listBackends : Attempting to open it in your browser now.
listBackends : Please enter code:
listBackends!: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to
find
valid certification path to requested target
listBackends :
listBackends!:
status : Action failed or aborted by user

--

Post: opendatakit@googlegroups.com
Unsubscribe: opendatakit+unsubscribe@googlegroups.com
Options: http://groups.google.com/group/opendatakit?hl=en


You received this message because you are subscribed to the Google
Groups
"ODK Community" group.
To unsubscribe from this group and stop receiving emails from it, send
an
email to opendatakit+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--

Post: opendatakit@googlegroups.com
Unsubscribe: opendatakit+unsubscribe@googlegroups.com
Options: http://groups.google.com/group/opendatakit?hl=en


You received this message because you are subscribed to the Google Groups
"ODK Community" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to opendatakit+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
Mitch Sundt
Software Engineer
University of Washington
mitchellsundt@gmail.com

--
Mitch Sundt
Software Engineer
University of Washington
mitchellsundt@gmail.com