<!-- id is the same as the file name without the extension
     type is one of "committer" or "add-in-provider" -->
<boardmember id="resheim" type="add-in-provider">

	<name>Torkild Ulvøy Resheim</name>

	<title>Senior Software Engineer and Co-owner, Itema AS</title>

	<!-- Name of the file containing the image of the candidate; location relative to this file.  -->
	<image>resheim.jpg</image>

	<!-- eMail address will be modified before it is included on a webpage so that robots will not harvest it. -->
	<email>torkildr@gmail.com</email>

	
	<!-- What do you do with eclipse? -->
	<eclipse_affiliation>
		<![CDATA[
<p>
Since I got involved in the Eclipse Community I've had several roles. Most of the time as a committer, but also as a member of the Eclipse Science Working Group; member of the Board of the Directors; and the EclipseCon Europe Program Committee. I was the EclipseCon Europe Program Committee Chair for the 2018 and 2019 conferences.</p>
<p>
	Details can be found at the Eclipse <a href="https://accounts.eclipse.org/users/tresheim">profile page</a>
</p>
		]]>
	</eclipse_affiliation>

	<!-- Feel free to include html tags and what-not between the CDATA tags. -->
	<vision>
		<![CDATA[
<p>
Since I first joined the board five years ago, the Foundation has gone through many important changes. The organisation can now handle specification projects such as Jakarta EE and AsciiDoc. The Eclipse IDE Working Group has been established, forming an organization around the development and improvement of the Eclipse IDE and in extension the RCP Platform. We have established a new GitLab based software forge on neutral ground in Switzerland. We have moved the organization to Brussels and Europe. The Eclipse Foundation is now Europe's largest and most important open source foundation, allowing a new category of members such as the European Space Agency to join.
</p>

<p>
If reelected as a contributing member representative I would like to:
</p>

<p>
Continue to support efforts to establish the Eclipse Foundation as the premier open source foundation – based in Europe, and with a global reach. 
</p>

<p>
<b>Advance the use of Eclipse technologies</b>, particularly in scientific and industrial applications, where a diverse collection of our APIs is already suitably used.
</p>

<p>
<b>Improve the Eclipse Platform</b> — which is such an important part of all the various IDEs built on top. Not forgetting about RCP, which many companies are basing their products on.
</p>

<p>
<b>Take care of committers and community.</b> It should be easy and fun to work with Foundation tools and infrastructure. Providing excellent service and lowering the bar will also encourage outside contributions. Developing the community also means being open and inclusive towards all; regardless of religion, colour, culture or gender. This is something I would like the Eclipse Community to become famously known for.
<p/>
		]]>
	</vision>

	<!-- Tell us a little bit about yourself. -->
	<bio>
		<![CDATA[
<p>
I have a background from electronics, but started at the Trondheim College of Engineering (now NTNU) in 1994 to study software engineering. I have built on the Eclipse Platform since 2004, and have as a contractor and consultant helped companies use various Eclipse technologies for more than a decade. Most of this time I have spent developing industrial solutions for the semiconductor, maritime and offshore energy sectors.
</p>

<p>
	I work for and are a co-owner of Itema, a small software consultancy with 32 highly skilled and dedicated people, all also co-owners. We do everything from prize winning web sites to marine operations simulation tools and games for iOS and Android. We are based in Trondheim, Norway — a university city with around 33,000 students, about half of those with a STEM curriculum. Much of the work we do is for technology companies that are spin-offs from the university and SINTEF, the largest independent research organisation in Scandinavia.
</p>
 
</p>
<p>
I founded the <a href="https://www.meetup.com/Trondheim-Eclipse-User-Group/">Trondheim Eclipse User Group</a> in 2013 and have with Itema hosted a number of Eclipse DemoCamps.
</p>
<p>
I can be reached on Twitter using the <a href="https://twitter.com/torkildr">@torkildr</a> handle.
</p>
		]]>
	</bio>

	<!-- Who do you work for? -->
	<affiliation>
		<![CDATA[
<a href="https://www.itema.no/?lang=en">Itema AS</a>
		]]>
	</affiliation>

</boardmember>
