About James Ward

Bio:
Professional software developer since 1997, with much of that time spent helping developers build software that doesn't suck. A Typed Pure Functional Programming zealot who often compromises on his ideals to just get stuff done. Currently the Kotlin Product Manager at Google.

Things I'm Proud Of:

View James Ward's profile on LinkedIn

Check out My YouTube Channel

My StackOverflow profile:
profile for James Ward at Stack Overflow, Q&A for professional and enthusiast programmers

Headshot:

GPG Key Fingerprint:

0xE0130A3ED5A2079E
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQENBFlMSXMBCADcgN0/57D/gU5cDobPiRuDT6qAxb/NWhQiqwAocKd274r4gPJm
RbffUEZEgKhjH6l0CQfilC4R4x2QtU9sNC9kB/D6zumoS1uI0Hmx1pC4UseUy55r
20WDxujUQ7OcJbpe2cDcQVKmMok2top7ZJqt4KVosQEeT9jjsgBBbEtg4cWb5ddR
5rf+aJw0v/6dMLef1r9YAo0ZtLc+g2dyacqw73tcWEd3oCH++SgE26NntN+GibZu
VXSE5u6xI4KwfT2vUT3jt5Fb29myX4sxsfB7n/xageuJYy5ms1ABS+WDO5ssEZC4
eQEVL7eyIb9YhNAW/WtjeAuOfOKNonoqKFGXABEBAAG0IEphbWVzIFdhcmQgPGph
bWVzQGphbWVzd2FyZC5jb20+iQE3BBMBCAAhBQJZTElzAhsDBQsJCAcCBhUICQoL
AgQWAgMBAh4BAheAAAoJEOATCj7VogeecsoH/AthoNYkuhDO0sSQsMWYHY5WBYl5
IklRRgeCvDGb9R+Sp/u3basG6FoJHUnZVW0RuQqmk/MEkFRcH5l9uTO4oe7N3BXx
sCD1DI/YKkPel4y/AffidNumTXpvIqrHbIIUXlKUw1YO1jHyZqBE1ItXDF7rt0h5
WCzh5x3fVtOwNItEpkwqD13I4SjRaIdbjr8AurXLiro5+BwPPC02Hi9iUCRzfkfx
82e3jdlGTxUQKku+YLP80/x9TwBe5ULo9wWbcuzbAmBwqYk7FtGNjSqZHyYcP5Zx
2ZTB462dllY63zMOnWnjX27NJkv7gdSfsN6emsg0foTiaPAWQWHW7pQhdh65AQ0E
WUxJcwEIAMgrP3U+7YCibxSQKOZrp63RaSUkv7mCvQ3Lx4P4ZD/sDEsLOiKkAc+Z
U7ETTIQkEpHaibvCZNrA+R0pfAj0LYBLstEIkUxtAaVM4DBQGN13Zdup46fI8rPZ
EyZVb2XpZ/qS4RYiStFyJzUdazBJs/IB7CT0xp4DUFUOrsykVy0aWzWt4z0QBe1x
3AmpAO/DdrDN5gvtmWzWbV3f783PuK3g41ju7F9XX5nuuatNSNHOHt65XL4vmhmS
fXuP6UFjK6MKzq9zpbZD4ipUPoKEId5ONDSucX4C8OydpC8+rFWJCDDDvocox3/l
6TzihQXf8MDDcB0u1TgDPz4M/S2vBh8AEQEAAYkBHwQYAQgACQUCWUxJcwIbDAAK
CRDgEwo+1aIHntk2B/42pBknUQB2YjkPryJ1B1ArcxaLO7gVo/lgT/rLGL7BuTYs
FIl9kJUD156EfkmSAkfsxPzwUNh/GyfVQt09F6wheprx1fLNJCFIYA9ZA0WVZGSw
bE3NdiuwEaJ3/HZ77IteQh5LKllqFuSlZ3u0xdtGJjnAUU9wHxWH+0W3RPm62piS
JcWUw7CSqEyuX+8Z+eq4HY0v74znfy6GyCiil7S1T9fdan22hP3xiJHgVKtyFmhh
rz6YxcZLa0fYl+R3mCQvt2FuiaLL3d/uH0z6EzWs+XZNbjRBTGI9VmO7siIy6rja
tdult3Sx1quBCixC4Ms2AWEA7bMqvUmCoB2M/0x8
=3ou5
-----END PGP PUBLIC KEY BLOCK-----

GPG Key Fingerprint:

82F94BBDF95C247BBD21396B9A0B94DEC0FFA7EE
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
dascGcm+EFTofUs37bZj2nBwer0P
=i0t2
-----END PGP PUBLIC KEY BLOCK-----

Contact Me:
Work: jamesward <at> google <dot> com
Personal: james <at> jamesward <dot> com