<!-- 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 Developer 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 for the past three years; 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>
		Starting with the Java IDE, Eclipse has become one of the best places for cooperating on developing open source software. A rich ecosystem has evolved, including everything from basic libraries to advanced tools. When I first started out building on the Eclipse Platform in 2004, I was awed by the excellent quality of code, the welcoming community and how well organised everything was. I would like many others to share that experience.
</p>

<p>
		If elected as a sustaining member representative I would like to:
</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>Make Eclipse binaries consumable for the world.</b> There is an increasing number of projects not related to the Platform or derived solutions. These should be easily available to those without the Eclipse know-how. 
</p>

<p>
	<b>Improve on infrastructure</b>. While a lot have been done in the past few years, we still need to ensure that the infrastructure continues to deliver a good quality service.
</p>

<p>
	<b>Improve the Eclipse Platform</b> &mdash; 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>Encourage and support new projects.</b> The move of Java EE to the Eclipse Foundation, forming Jakarta EE, has been and continues to be a large effort by the Foundation. Because of it, the Foundation has adapted and is now for example in a position where we can do specifications, and thanks to the Architecture Council, more agile releases. I believe this is just the start and that such efforts will benefit all projects, old and new.</p>
<p>
		<b>Take care of committers and community.</b> It should be easy and fun to work with Foundation tools and use infrastructure such as Git, JIPP and Bugzilla. 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 27 dedicated engineers and three equally dedicated managers. 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 39,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 organization in Scandinavia.
 
</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 an Eclipse DemoCamp for a few years before that.
</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>
