
<b>Bio:</b><br/>
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 a Developer Advocate for AWS and AAIF Technical Committee member.
<br/>
<br/>
<div>
<b>Things I'm Really Proud Of:</b>
<ul>
<li>Presented at numerous developer conferences around the world</li>

<li>Created <a href="https://skillsjars.com">SkillsJars</a>, <a href="https://ai4jvm.com">ai4jvm.com</a>, and the <a href="https://javadocs.dev">Agent-Friendly / MCP JavaDocs server</a> in 2026</li>

<li>Co-Authored <a href="https://effectorientedprogramming.com">Effect Oriented Programming</a> with Bruce Eckel &amp; Bill Frasure</li>

<li><a href="https://kotlinfoundation.org">Kotlin Foundation</a> Treasurer 2023 - July 2026</li>

<li>Recognized as a <a href="https://testcontainers.com/community-champions/james-ward/">Testcontainers Community Champion</a> in 2023</li>

<li>Recognized as a <a href="https://javachampions.org/members.html">Java Champion</a> in 2021</li>

<li>Issued patent for <a href="https://patents.google.com/patent/US11086651B2/en">Workflow version management</a> in 2019

<li>Led <a href="https://opensource.salesforce.com">Salesforce's Open Source Program Office</a> 2017-2018</li>

<li>Helped define <a href="https://www.reactivemanifesto.org">The Reactive Manifesto</a> in 2014</li>

<li>Created <a href="https://webjars.org">WebJars</a> in 2012</li>

<li>Co-authored <a href="http://www.firststepsinflex.com">First Steps in Flex</a> with Bruce Eckel in 2008</li>

<li>Created the first Java hosting service in 1997</li>
</ul>
</div>

<p style="display: flex; align-items: center; gap: 4px;">
<svg fill="none" viewBox="0 0 64 57" width="28" style="width: 28px; height: 24.9375px;"><path fill="#0085ff" d="M13.873 3.805C21.21 9.332 29.103 20.537 32 26.55v15.882c0-.338-.13.044-.41.867-1.512 4.456-7.418 21.847-20.923 7.944-7.111-7.32-3.819-14.64 9.125-16.85-7.405 1.264-15.73-.825-18.014-9.015C1.12 23.022 0 8.51 0 6.55 0-3.268 8.579-.182 13.873 3.805ZM50.127 3.805C42.79 9.332 34.897 20.537 32 26.55v15.882c0-.338.13.044.41.867 1.512 4.456 7.418 21.847 20.923 7.944 7.111-7.32 3.819-14.64-9.125-16.85 7.405 1.264 15.73-.825 18.014-9.015C62.88 23.022 64 8.51 64 6.55c0-9.818-8.578-6.732-13.873-2.745Z"></path></svg>
<a href="https://bsky.app/profile/jamesward.com">@jamesward.com</a>
</p>

<p>
<a href="https://twitter.com/JamesWard?ref_src=twsrc%5Etfw" class="twitter-follow-button" data-size="large">Follow @JamesWard</a><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</p>

<p>
<a href="http://www.linkedin.com/in/jamesward" ><img src="http://www.linkedin.com/img/webpromo/btn_viewmy_160x33.gif" width="160" height="33" border="0" alt="View James Ward's profile on LinkedIn"></a>
</p>

<p>
Check out <a href="https://www.youtube.com/user/jlward4th">My YouTube Channel</a>
</p>

<p>
My StackOverflow profile:<br/>
<a href="http://stackoverflow.com/users/77409/james-ward">
<img src="http://stackoverflow.com/users/flair/77409.png" width="208" height="58" alt="profile for James Ward at Stack Overflow, Q&amp;A for professional and enthusiast programmers" title="profile for James Ward at Stack Overflow, Q&amp;A for professional and enthusiast programmers">
</a>
</p>

<p>
Headshot:
<a href="https://d3o2fl8o7m2ury.cloudfront.net/uploads/2016/04/02094535/james_ward_2015.jpg"><img src="https://d3o2fl8o7m2ury.cloudfront.net/uploads/2016/04/02094535/james_ward_2015.jpg" width="600" height="600" class="alignnone size-full wp-image-2131"/></a>
</p>

<p>
GPG Key Fingerprint:
<pre><code>0xE0130A3ED5A2079E</code></pre>
<pre><code>-----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-----</pre></code>
</p>

<p>
GPG Key Fingerprint:
<pre><code>82F94BBDF95C247BBD21396B9A0B94DEC0FFA7EE</code></pre>
<pre><code>-----BEGIN PGP PUBLIC KEY BLOCK-----
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
dascGcm+EFTofUs37bZj2nBwer0P
=i0t2
-----END PGP PUBLIC KEY BLOCK-----</pre></code>
</p>

<p>
Contact Me:<br/>
Work: jwdev &lt;at&gt; amazon &lt;dot&gt; com<br/>
Personal: james &lt;at&gt; jamesward &lt;dot&gt; com
</p>

