<?xml version="1.0"?>
<staffmembers version="1.0">

  <staffmember id="mike">
    <name>Mike Milinkovich</name>
    <username>mmilinkovich</username>
    <title>Executive Director</title>
    <twitter>mmilinkov</twitter>
    <image>images_staff/mike-milinkovich.jpg</image>
    <description>
      <![CDATA[<p>Outside of work, Mike's passions are his family, the family cottage and hockey (as a
      coach, player and fan)
      in pretty much that order. When he's not working, or traveling for work, you will probably
      find him involved in one of those three things. </p>
      <p>You can read Mike's blog at
 <a href="http://mmilinkov.wordpress.com/" target="blank">mmilinkov.wordpress.com/</a>.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="mikael">
    <name>Mikaël Barbero</name>
    <username>mbarbero</username>
    <title>Head of Security</title>
    <twitter>mikbarbero</twitter>
    <image>images_staff/mikael.jpg</image>
    <description><![CDATA[
      <p>Mika&euml;l is passionate for software engineering. He enjoys building
        <a href="https://en.wikipedia.org/wiki/The_Design_of_Everyday_Things" target="blank">user-centered</a> software
        and solutions. His experience is diverse and includes things from architecture to team management.
        He started programming at the age of 8 in ST Basic and hasn't stopped ever since (he changed language
        though). His constant questioning of <a href="https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_ReflectionsonTrustingTrust.pdf" target="blank">Trust</a>
        has lead him to its current position.</p>
        <p>You can read Mika&euml;l's blog at <a href="https://mikael.barbero.tech" target="blank">mikael.barbero.tech</a></p>
    ]]></description>
  </staffmember>

  <staffmember id="wayne">
    <name>Wayne Beaton</name>
    <username>wbeaton</username>
    <title>Director of Open Source Projects</title>
    <image>images_staff/wayne-beaton.jpg</image>
    <description><![CDATA[
      <p>Wayne works for the Eclipse Foundation where he fills the dual roles of
      Director of Open Source Projects and Evangelist. He spends his days working
      with the many Eclipse open source project teams, learning about Eclipse technology,
      and making sure that everybody knows just how cool it all really is. In 1982,
      he received the prestigious Chief Scouts Award from then-Governor General Edward
      Schreyer. In 1984 his team was selected to represent beautiful British Columbia
      in the Kinsmen Voyageur Relay. In his spare time, he writes down meaningless
      accomplishments from his youth in a lame attempt to impress the reader.</p>
      <p>Wayne authors the
      <a href="http://waynebeaton.wordpress.com/" target="blank">Eclipse Hints, Tips, and Random Musings</a> blog.</p>
    ]]></description>
  </staffmember>

  <staffmember id="gael">
    <name>Gaël Blondelle</name>
    <username>gblondelle</username>
    <title>Chief Membership Officer and Managing Director, Eclipse Foundation Europe GmbH</title>
    <twitter>gblondelle</twitter>
    <image>images_staff/gael-blondelle.jpg</image>
    <description><![CDATA[
      <p>Gaël has been involved in Open Source for 15 years with the goal to help companies adopt and develop open source projects and collaborate better. He joined the Eclipse Foundation in 2013 to develop the ecosystem in Europe, and to support the development of Eclipse Working Groups.
      Outside of work, Gaël likes spending time with his family and travelling to visit beautiful places in the world.</p>
    ]]></description>
  </staffmember>

  <staffmember id="paulb">
    <name>Paul Buck</name>
    <username>pbuckd40</username>
    <title>Vice President, Community Development</title>
    <twitter>PaulBuck</twitter>
    <image>images_staff/paul-buck.jpg</image>
    <description><![CDATA[
      <p>Paul's responsible for the growth and well being of the projects, work groups and the diverse community of members, committers and contributors at Eclipse.
      Once his work day is complete, you can find him outside running, biking and cross-country skiing the vast network of trails in Gatineau Park... and consuming large post work-out snacks.</p>
    ]]></description>
  </staffmember>

  <staffmember id="sharonc">
    <name>Sharon Corbett</name>
    <username>scorbett</username>
    <image>images_staff/sharonc.jpg</image>
    <title><![CDATA[Program Director, Industry Collaborations Operations]]></title>
    <description>
    <![CDATA[
      <p>
        Following a successful career as the Intellectual Property Manager for
        the Foundation and part of the Eclipse IP Advisory Committee, Sharon has
        turned her attention and leadership to Eclipse Foundation Industry
        Collaborations and associated programs to ensure governance compliance
        and operational excellence! Outside of work, Sharon’s main focus
        continues to be Chihuahua rescue and her two adopted Chi fur babies!
      </p>
    ]]>
    </description>
  </staffmember>

  <staffmember id="mariad">
    <name>Maria-Teresa Delgado</name>
    <username>mdelgado624</username>
    <image>images_staff/maria-teresa-delgado.jpg</image>
    <title><![CDATA[Eclipse Project Community Manager]]></title>
    <twitter>mtdelgado</twitter>
    <description>
    <![CDATA[<p>Maria Teresa joined the Eclipse Foundation in 2018. Her role is to manage the Foundation
    activities within European Research Projects leveraging her experience in the IoT world with the
    Eclipse Open Source community. When she is not working, she enjoys spending time with family more
    than anything in the world!!</p>
    ]]>
    </description>
  </staffmember>

  <staffmember id="frederic">
    <name>Fr&#233;d&#233;ric Desbiens</name>
    <username>fdesbiens</username>
    <title>Program Manager - Embedded, IoT, and Edge Computing</title>
    <twitter>BlueberryCoder</twitter>
    <image>images_staff/frederic-desbiens.jpg</image>
    <description>
      <![CDATA[<p>Frédéric Desbiens joined the Eclipse Foundation in February 2019.
      As the IoT and Edge Computing Program Manager, his job is to help the community innovate by bringing devices and
      software together. After hours, Frédéric will typically be found reading a history book, playing video games or
      watching Anime. He also likes going outdoors and playing sports with his friends and family.</p>
      <p>You can follow his blog at:
      <a href="https://blog.blueberrycoder.com" target="blank">https://blog.blueberrycoder.com/</a>
      </p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="zahrafazli">
    <name>Zahra Fazli</name>
    <username>zfazli</username>
    <image>images_staff/zahra.jpg</image>
    <title>Membership Coordinator</title>
    <twitter>zahraeclipse</twitter>
    <description>
      <![CDATA[<p>Zahra is the Membership Coordinator at Eclipse Foundation. Outside of work, Zahra loves to spend time with her friends and family, enjoys writing and traveling. </p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="sgottardo">
    <name>Steph Gottardo</name>
    <username>sgottardo</username>
    <image>images_staff/steph.jpg</image>
    <title>Manager, Accounting and Reporting</title>
    <description>
      <![CDATA[<p>Stephanie joined the Eclipse Foundation in March 2021. Outside of work, Stephanie enjoys spending time with her two daughters, seeing friends, traveling and going to the gym.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="igrimstad">
    <name>Ivar Grimstad</name>
    <username>igrimstad</username>
    <title>Jakarta EE Developer Advocate</title>
    <image>images_staff/ivarg.png</image>
    <twitter>ivar_grimstad</twitter>
    <description><![CDATA[
      <p>Ivar Grimstad is the Jakarta EE Developer Advocate at Eclipse Foundation. He is a Java Champion, JUG Leader, and a frequent speaker at International developer conferences.</p>
      <p>In his spare time, Ivar is usually busy with all sorts of outdoor sports and activities. As a Norwegian, he is born with skis on his feet and when the water is ice-free, he enjoys swimrunning in the Scandinavian archipelagoes. </p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="chrisguindon">
    <name>Christopher Guindon</name>
    <username>cguindon</username>
    <image>images_staff/chris.jpg</image>
    <title>Manager, Web Development</title>
    <twitter>chrisguindon</twitter>
    <description>
      <![CDATA[<p> When he’s not at a computer, which is rare, Chris spends his time with his dog Winston, playing the drums, watching a Habs game or at the top of a hill snowboarding. </p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="fredgurr">
    <name>Frederic Gurr</name>
    <username>fgurr</username>
    <image>images_staff/fred.jpg</image>
    <title>Release Engineer</title>
    <twitter>fr3dg</twitter>
    <description>
      <![CDATA[<p>Fred is a java developer by trade, based out of Cologne, Germany. Responsible for supporting Eclipse projects, focusing on build and release processes.
      In his spare time, Fred can be found kite surfing off the coast of the Netherlands and Spain, or building quadcopters and testing their flight capabilities.</p>]]>
    </description>
  </staffmember>

  <staffmember id="gesine">
    <name>Gesine Freund</name>
    <username>gesinef220201</username>
    <image>images_staff/gesine.jpg</image>
    <title>Corporate Executive Assistant</title>
    <description>
      <![CDATA[<p>Gesine joined the Eclipse Foundation in February 2022. In her spare time, Gesine is an avid runner, who enjoys road and trail running throughout the seasons. She loves to travel, try new recipes, entertain family and friends, and relax in her forest garden.</p>]]>
    </description>
  </staffmember>

  <staffmember id="anne">
    <name>Anne Jacko</name>
    <username>ajacko</username>
    <image>images_staff/anne-jacko.jpg</image>
    <title>Conference Queen</title>
    <twitter>annejacko</twitter>
    <description>
      <![CDATA[<p>When not in front of a monitor, Anne prefers activities
      that involve wearing a helmet--horseback riding, skiing,
      and cycling. One of her favorite books is <i>The Chicago Manual
      of Style</i>, so if you need help with the nitpicking
      details of writing in English, she's happy to help.</p>]]>
    </description>
  </staffmember>

  <staffmember id="marco">
    <name>Marco Jahn</name>
    <username>mjahn0qp</username>
    <image>images_staff/marco.png</image>
    <title>Senior Research Project Manager</title>
    <description>
      <![CDATA[<p>Marco is part of the Eclipse Foundation research team where he helps to turn innovations into successful open source projects. Outside of work, he enjoys skiing, spending time with family and friends and making pizza in his wood-fired oven</p>]]>
    </description>
  </staffmember>

  <staffmember id="shawn">
    <name>Shawn Kilpatrick</name>
    <username>skilpatrick</username>
    <image>images_staff/shawn-kilpatrick.jpg</image>
    <title>Intellectual Property Analyst</title>
    <twitter>EclipseFdnShawn</twitter>
    <description>
      <![CDATA[<p>Shawn is a member of the Eclipse IP team. When he's not poring over code,
      Shawn enjoys spending time with his family, playing guitar and singing, fishing,
      hiking, and boating at the family cottage, and cheering on his beloved Ottawa Senators.</p>]]>
    </description>
  </staffmember>

  <staffmember id="serina">
    <name>Serina El Salibi</name>
    <username>serina</username>
    <title>Virtual Event Specialist</title>
    <image>images_staff/serina.jpg</image>
    <description>
      <![CDATA[
      <p>Serina has spent the majority of her career working at non-for-profit, tech-based organizations. After hours, Serina loves spending time with her growing family. She has a LOVE for food, travel, cars and surfing/scuba diving... a true thalassophile.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="philippe">
    <name>Philippe Krief</name>
    <username>pkriefrvi</username>
    <image>images_staff/philippe.jpeg</image>
    <title>Director, Research Programs</title>
    <twitter>phkrief</twitter>
    <description>
      <![CDATA[<p>Philippe manages the Eclipse Foundation contributions to European-funded research
      projects. When he is traveling, Philippe enjoys photographing the places he visits, and when
      he isn't on the road, he is having fun with his family, riding his motorcycle or playing
      jazz with some good friends.</p>]]>
    </description>
  </staffmember>

  <staffmember id="perri">
    <name>Perri Louise Lavergne</name>
    <username>pmisingnameu8g</username>
    <title>Membership Growth, Manager</title>
    <twitter>perrieclipse</twitter>
    <image>images_staff/perri-lavergne.jpg</image>
    <description> <![CDATA[
      <p>Perri joined the Eclipse Foundation in May 2010. Her focus is on membership retention, management and sales, including sales of our advertising portfolio and sponsorships for our conferences.
        Outside of work Perri enjoys spending time with family and friends, medical research, volunteer work for organizations dealing with children with special needs, running, cooking and baking.
        Perri hopes to one day accomplish her long time dream of a unique day program for young adults with special needs.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="martin">
    <name>Martin Lowe</name>
    <username>malowe</username>
    <title>Software Developer</title>
    <image>images_staff/martin.png</image>
    <description> <![CDATA[
      <p> Martin is a developer for the Foundation, working with the Web team and helping develop the
      Eclipse platform. When not working, Martin enjoys tabletop RPGs, video games, and music (both playing and listening).</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="sharonm">
    <name>Sharon Macdonald</name>
    <username>shmacdonald</username>
    <title>Trademarks Specialist</title>
    <image>images_staff/sharonm.jpg</image>
    <description>
      <![CDATA[<p>
      Sharon is a member of the Eclipse Projects team. She manages all aspects of the Eclipse Foundation's
      trademark portfolio; this includes prosecution, defence, and monitoring to ensure the marks are fully
      protected and up to date at all times. When she is not working,
      she likes to spend her time enjoying the outdoors with her family.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="jenn">
    <name>Jenn Martel</name>
    <username>jmartelb0n</username>
    <title>Director, Worldwide Operations</title>
    <twitter>jennmartel4</twitter>
    <image>images_staff/jenn.png</image>
    <description>
      <![CDATA[<p>
      Jenn joined the Eclipse Foundation in September 2016.
      Away from the office, she enjoys spending time with her family, watching her girls play sports and is also a fitness enthusiast.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="shabnam">
    <name>Shabnam Mayel</name>
    <username>smayel</username>
    <title>Senior Marketing Manager, Cloud Native Java</title>
    <twitter>mayelshabnam</twitter>
    <image>images_staff/shabnam-mayel.jpg</image>
    <description>
      <![CDATA[<p>
      Shabnam joined the Eclipse Foundation in June 2019 as the Senior Marketing Manager with focus on Jakarta EE, Eclipse MicroProfile and other Cloud native java projects.
      Her passion is in multimedia marketing, and brand management . Outside of work, she enjoys traveling, watching anime series, hiking and reading. </p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="tanja">
    <name>Tanja Obradovic</name>
    <username>tobradovic</username>
    <title>Jakarta EE Program Manager</title>
    <twitter>TanjaEclipse</twitter>
    <image>images_staff/tanja.jpg</image>
    <description>
      <![CDATA[<p>
      Tanja joined Eclipse Foundation as Jakarta EE Program Manager June 2018.
   		Having been involved with Java and Java EE for quite some time,
   		revitalizing Enterprise Java seems like a good challenge and a great fit for her!
   		Outside the office, she loves spending time with her family and friends,
   		enjoys art events, outdoor activities (even in the winter!),
   		visiting different countries and most of all spending summers on a beach.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="mplagge">
    <name>Michael Plagge</name>
    <username>mplagge</username>
    <title>Vice President, Ecosystem Development</title>
    <image>images_staff/michael-plagge.jpg</image>
    <description>
      <![CDATA[<p>
      Michael joined the Eclipse Foundation in 2021 as Director, Ecosystem
      Development. In a previous life, he started his career as a software
      developer in the area of automotive software before he changed to the
      dark side of business development.  Here he held various business
      development positions in companies like Elektrobit, Alibaba, and Alibaba
      Cloud, and spent 3 years as General Manager Elektrobit Automotive
      (Shanghai) Ltd. in China.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="eric">
    <name>Eric Poirier</name>
    <username>epoirier</username>
    <title>Web Developer</title>
    <twitter>ericpoir</twitter>
    <image>images_staff/eric.jpg</image>
    <description>
      <![CDATA[<p>
      Eric is part of the web development team! Other than working
      with web stuff, his other passions are mostly constituted
      of hockey, video games and tv shows.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="denis">
    <name>Denis Roy</name>
    <username>droy</username>
    <title>Director, IT Services</title>
    <image>images_staff/denis-roy.jpg</image>
    <twitter>droy_eclipse</twitter>
    <description>
            <![CDATA[<p>In the office, Denis spends his time in front of a Linux command prompt, helping manage the servers, networks and software that run the Eclipse websites. When not at work, Denis enjoys time with his family and friends.</p>]]>
    </description>
  </staffmember>

  <staffmember id="sandy">
    <name>Sandy Thompson</name>
    <title>Finance Specialist</title>
    <image>images_staff/sandy.png</image>
    <description>
      <![CDATA[
        <p>
          Sandy is the Finance Specialist. Outside of work, Sandy enjoys travel,
          hockey (Go Leafs Go) and spending as much time as possible with her
          family, especially her grandchildren.
        </p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="matt">
    <name>Matt Ward</name>
    <username>mward</username>
    <title>IT Manager</title>
    <image>images_staff/matt-ward.jpg</image>
    <description><![CDATA[
      <p>Matt spends his time triaging the Webmaster inbox and putting out
      fires.  If you can't take the heat, stay out of the data center.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="paul">
    <name>Paul White</name>
    <username>pwhited3w</username>
    <title>Secretary / Treasurer</title>
    <image>images_staff/paul.jpg</image>
    <description><![CDATA[
      <p>Paul’s role at the Foundation is to drive value for our members.
      His interests outside the Foundation are diverse, but all centre around family,
      friends, learning (and a bit of teaching) - all mixed with a heavy dose of travel.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="shanda">
    <name>Shanda Giacomoni</name>
    <username>sgiacomoni2as</username>
    <title>Marketing Team Lead</title>
    <image>images_staff/shanda-giacomoni.jpg</image>
    <description><![CDATA[
      <p>Shanda has spent the majority of her career working in the non-for-profit space, and has a particular interest in tech-based organizations. Outside of the office, she likes spending time with her growing family.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="silviamiles">
    <name>Silvia Miles</name>
    <title>Office Manager</title>
    <image>images_staff/silvia.jpg</image>
    <description><![CDATA[
      <p>Silvia joined the Eclipse Foundation in September 2020 as the Office Manager Europe.
Outside of work, Silvia loves to spend time with her family and friends, likes to travel around the world, enjoys sports like running, hiking and fitness.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="mkokabi">
    <name>Mehrnaz Kokabi</name>
    <username>mkokabi</username>
    <title>Creative Lead</title>
    <image>images_staff/mehrnaz-kokabi.jpg</image>
    <description><![CDATA[
      <p>Mehrnaz is a member of the Eclipse marketing team. With more than 10 years as a web and graphic designer, Mehrnaz has experience designing and implementing effective creative projects and services for a variety of large public and non-profit organizations. Outside of work, her hobbies include painting, photography, and antique collecting.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="samantha">
    <name>Samantha Carter</name>
    <username>samantha</username>
    <title>Office Manager</title>
    <image>images_staff/samantha-carter.jpg</image>
    <description><![CDATA[
      <p>Outside of the office, Samantha enjoys many hobbies such as music/singing, creating/trying new recipes, and riding her motorcycle. As an avid animal fan, she will always stop to pet any dog that’s willing, and loves her two cats!</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="zachary">
    <name>Zachary Sabourin</name>
    <username>zacharysabourin</username>
    <title>Web Developer</title>
    <image>images_staff/zachary_sabourin.jpg</image>
    <description><![CDATA[
      <p>Zachary is an avid learner who is fascinated by the power of technology. When he's not working, learning, or out on a walk, he enjoys exploring his many interests, such as video games, bass guitar, music, Magic: the Gathering, and listening to podcasts on various topics.
      <br /><br /><q>Be yourself; everyone else is already taken</q> -Oscar Wilde</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="olivier">
    <name>Olivier Goulet</name>
    <username>oliviergoulet</username>
    <title>Front End Web Developer</title>
    <image>images_staff/olivier-goulet.jpg</image>
    <description><![CDATA[
      <p>Olivier is a member of the web development team. He enjoys building web applications. His hobbies include watching hockey, playing games, and most recently got into cycling.</p>
      ]]>
    </description>
  </staffmember>

  <staffmember id="paulina">
    <name>Paulina Gueorguieva</name>
    <username>paulinagueorguieva</username>
    <title>Product Marketing Manager, SDV</title>
    <image>images_staff/paulina-gueorguieva.jpg</image>
    <description><![CDATA[
        <p>I am a marketer with an abundance of experience covering wide fields of marketing - from CRM, content, email and digital marketing placing a strong focus on product marketing and product development.
        My passion is everything related to technology, innovation and sustainability in the mobility and automotive industries. My strongest skills include excellent communication, storytelling via engaging content, hosting and managing events and executing customer-first focused media strategies for brand awareness, relevancy and increased engagement.
        In my free time I find comfort in reading, traveling and doing yoga.
        </p>]]>
      </description>
  </staffmember>

  <staffmember id="heurtemattes">
    <name>Sébastien Heurtematte</name>
    <username>heurtemattes</username>
    <title>Release Engineer</title>
    <image>images_staff/sebastien-heurtematte.jpg</image>
    <description><![CDATA[
        <p>As a member of the release engineer team, his leitmotif is to help the community by providing expertise/advice/support and thus unlocking their full potential. In his spare time, he likes to push the knobs on his guitar amps, metal concerts, music festivals, and enjoys sports like running.</p>
        ]]>
      </description>
  </staffmember>

  <staffmember id="boris">
    <name>Boris Baldassari</name>
    <username>bbaldassari2kd</username>
    <title>Open Source Consultant</title>
    <image>images_staff/boris-baldassari.jpg</image>
    <description><![CDATA[
        <p>Boris is a long time open source enthusiast and contributor. Previously a methods and tools consultant for the industry, he joined the Eclipse Foundation in 2021 to help people and organisations adopt, understand and apply open source principles and best practices to their own projects. He is also a juggler, musician, and nature lover. He is moored in Europe.</p>
        ]]>
      </description>
  </staffmember>

  <staffmember id="jacob">
    <name>Jacob Harris</name>
    <username>jharrisj1m</username>
    <title>Marketing Campaign Manager</title>
    <image>images_staff/jacob-harris.jpg</image>
    <description><![CDATA[
        <p>
          Jacob joined the Eclipse Foundation's marketing team in 2020, where he
          contributes to digital campaigns that include social media, web
          content, online ads, and emails. When he isn't working, he enjoys
          playing and watching hockey, spending time outside, and planning his
          next trip.
        </p>
        ]]>
      </description>
  </staffmember>

  <staffmember id="jakub">
    <name>Jakub Mazanek</name>
    <username>jmazanek4ep</username>
    <title>European Senior Systems Administrator</title>
    <image>images_staff/jakub-mazanek.jpg</image>
    <description><![CDATA[
        <p>Jakub joined the Eclipse Foundation in March 2021. He is a sysadmin spending most of the time in the Linux command line. In his free time he enjoys trekking in mountains.</p>
        ]]>
      </description>
  </staffmember>

  <staffmember id="john">
    <name>John Kellerman</name>
    <username>kineticSquid</username>
    <title>Program Manager - Cloud Development Tools and Open VSX</title>
    <image>images_staff/john-kellerman.jpg</image>
    <description><![CDATA[
        <p>John is part of the Community Development team at Eclipse working closely with the Cloud DevTools and Open Research working groups. He also spends time volunteering with the People Not Property project in North Carolina. Outside of work John enjoys hiking, swimming, gardening and a good practical joke.</p>
        ]]>
        </description>
  </staffmember>

  <staffmember id="dennisl">
    <name>Dennis Leung</name>
    <username>dennisl</username>
    <title>Vice President, Program Development</title>
    <image>images_staff/dennis-leung.jpg</image>
    <description><![CDATA[
        <p>Dennis has been involved with open source since 2007 when Oracle made its initial contribution to the Eclipse Foundation and joined as a strategic member. He served on the Eclipse Foundation board for over 10 years. He resides in Ottawa where he enjoys an active lifestyle playing golf, hockey and spending time at the lake.</p>
        ]]>
        </description>
  </staffmember>

  <staffmember id="carmen">
    <name>Carmen Delgado</name>
    <username>carmendelgado</username>
    <title>Community Manager</title>
    <image>images_staff/carmen-delgado.jpg</image>
    <description><![CDATA[
        <p>Carmen joined the Eclipse Foundation in October 2022 as a Community Manager having a background in project, operations, and financial management. She also volunteers as group manager and mentor at Step4ward, a mentoring program for women starting in the tech world. During her free time, she enjoys traveling to visit her family and exploring new places, cooking, and reading.</p>
      ]]></description>
  </staffmember>

  <staffmember id="rosaria">
    <name>Rosaria Rossini</name>
    <username>rosariarossini</username>
    <title>Research Project Manager</title>
    <image>images_staff/rosaria-rossini.jpg</image>
    <description><![CDATA[
        <p>Rosaria is a computer scientist and part of the Eclipse Foundation research team. Passionate about technology, she joined the community to help spread "open source" best practices and assist in putting them in place. She is very curious about the world and loves nature. In her spare time, she enjoys traveling and learning about new cultures, as well as playing and trying different sports.</p>
      ]]></description>
  </staffmember>

  <staffmember id="sara">
    <name>Sara Gallian</name>
    <username>sgallian</username>
    <title>SDV Program Manager</title>
    <image>images_staff/sara-gallian.jpg</image>
    <description><![CDATA[
        <p>Sara joined the Eclipse Foundation in October 2022 as SDV Program Manager. She started her career as a researcher in the field of plasma physics, but quickly changed her mind and moved to the Automotive world where she worked as a developer for ADAS functions. After a few years of coding, Sara discovered her interest for managing people and projects, and moved to team and group leading in the field of Intelligent Mobility. After 12+ years in the US and Germany, she finally found her way back to Italy where she enjoys mountain biking and climbing.</p>
      ]]></description>
  </staffmember>

  <staffmember id="pawel">
    <name>Pawel Stankiewicz</name>
    <username>pastanki</username>
    <title>Open Source Software Release Engineer</title>
    <image>images_staff/pawel-stankiewicz.jpg</image>
    <description><![CDATA[
        <p>Paweł is an IT technology enthusiast, and has been working in Operations and Devops for a long time for different companies. As a natural consequence, remote working became part of the job and he’s been trying to make that process better and more efficient while appreciating “Anywhere Operations”, and gaining knowledge of new technologies and how developers use them. To balance limited physical activity at his keyboard, he enjoys riding his bike almost every day, especially if they're on interesting routes. Outside of work, he likes spending time with his family and playing with low level electronics.</p>
      ]]></description>
  </staffmember>

  <staffmember id="florent">
    <name>Florent Zara</name>
    <username>flzara</username>
    <title>Open Source Services Team Lead</title>
    <image>images_staff/florent-zara.jpg</image>
    <description><![CDATA[
        Florent has French and Canadian engineering degrees, and has been involved (both personally and professionally) in the FLOSS community since 1999. Professionally, Florent has worked for nearly 20 years in a consulting company, first as a software quality consultant, then as an Open Source advisor for large companies, helping them with governance, licensing, Innersource, as well as change management. Today, as Open Source Services Team Lead, he's helping (new) Eclipse members and projects better understand, manage and master Open Source. On his personal side, he's an administrator and board member at LinuxFr.org (reference french-speaking, community driven website about Free and Open Source software).
      ]]></description>
  </staffmember>

  <staffmember id="rahul">
    <name>Rahul Mohan Geetha</name>
    <username>rahulmohang</username>
    <title>Open Source Compliance Engineer</title>
    <image>images_staff/rahul-mohan-geetha.jpg</image>
    <description><![CDATA[
        Rahul works as an open source license compliance engineer with the Eclipse Foundation. He likes to spend his free time with family or friends, enjoying a variety of food items.
      ]]></description>
  </staffmember>

  <staffmember id="marta">
    <name>Marta Rybczynska</name>
    <username>mrybczyn</username>
    <title>Technical Program Manager</title>
    <image>images_staff/marta-rybczynska.jpg</image>
    <description><![CDATA[
      <p>Marta has engaged in various open-source projects for 20 years. She holds a Ph.D. in network security and has developed embedded software (including a Linux kernel port to a new architcture) and tooling. At the same time, for her, communication is at least as crucial as the development itself. Because of this, she is currently a frequent speaker at various open-source conferences. In her free time, Marta hikes in the mountains, writes, reads all types of books, and takes care of her garden.</p>
    ]]></description>
  </staffmember>

  <staffmember id="theodoreb">
    <name>Th&#233;odore Biadala</name>
    <username>theodoreb</username>
    <title>Drupal engineer</title>
    <twitter>nod_</twitter>
    <image>images_staff/theodore-biadala.jpg</image>
    <description><![CDATA[
    <p>Théodore has been working with Drupal for <a href="https://www.drupal.org/u/nod_">more than 12 years</a> and has joined the Eclipse Foundation to help improve the various websites managed for the community. He enjoys spending time with his family and eating delicious food.</p>
    ]]></description>
  </staffmember>

  <staffmember id="thomas">
    <name>Thomas Neidhart</name>
    <username>netomi</username>
    <title>Software Engineer</title>
    <image>images_staff/thomas-neidhart.png</image>
    <description><![CDATA[
    <p>Thomas is passionate about Open Source development and has been a long time contributor to various Open Source projects. Since joining the Eclipse Foundation in 2023, he helps in building tools and processes to strengthen the software supply chain security of the Foundation's projects.</p>
    ]]></description>
  </staffmember>

  <staffmember id="david">
    <name>David Remon</name>
    <username>davidremon</username>
    <title>Research Project Manager</title>
    <image>images_staff/david-remon.jpeg</image>
    <description><![CDATA[
    <p>David joined the Eclipse Foundation in January 2023, bringing experience in industry and research projects in IoT, smart cities, or environment. David enjoys spending time in the mountains, traveling, and practicing any kind of sport.</p>
    ]]></description>
  </staffmember>

  <staffmember id="emerks">
    <name>Ed Merks</name>
    <username>emerks</username>
    <title>Release Engineer for Eclipse SimRel</title>
    <image>images_staff/ed-merks.jpg</image>
    <description><![CDATA[
    <p>Ed Merks founded his own small consulting company, macromodeling. He is a coauthor of the authoritative book EMF: Eclipse Modeling Framework which is published as a second expanded edition. He has been an elected member of the Eclipse Foundation Board of Directors for the past fifteen years and has been recognized by the Eclipse Community Awards as Top Newcomer Evangelist, Top Ambassador, and Top Committer, as well as for Lifetime Achievement. 
      Ed is well known for his dedication to the Eclipse community since 2002, having posted more than 32,000 forum answers. He spent 16 years at IBM, achieving the level of Senior Technical Staff Member after completing his Ph.D. at Simon Fraser University. 
      He is currently living in Switzerland and has learned to speak German. His experience in modeling technology spans more than thirty years.</p>
    ]]></description>
  </staffmember>

  <staffmember id="croundy">
    <name>Clark Roundy</name>
    <username>croundy</username>
    <title>Head of Outreach and Engagement</title>
    <image>images_staff/clark-roundy.jpg</image>
    <description><![CDATA[
      <p>
         As the head of product marketing for the Eclipse Foundation, Clark is the guy to talk to 
         if you are looking for ways to raise awareness for your project. Prior to joining the 
         Foundation, for more than 25 years Clark worked within the technology industry in a broad 
         range of marketing, product management, sales and executive roles, many of which were 
         closely aligned with the open source industry. In his spare time, Clark likes spending 
         time with his family, exploring the world, playing golf, and hiking in the beautiful 
         mountains of Utah.
      </p>
    ]]></description>
  </staffmember>

  <staffmember id="mariorodriguez">
    <name>Mario Rodriguez</name>
    <username>mariorodriguez</username>
    <title>Verification Engineer</title>
    <image>images_staff/mario-rodriguez.jpg</image>
    <description><![CDATA[
      <p>
         Mario joined the Eclipse foundation in March 2023. He is passionate about Verification, and enjoys catching the bugs in the designs he works with. He is also interested in open-source projects that are related to home domotics.
      </p>
    ]]></description>
  </staffmember>

  <staffmember id="olgatimakova">
    <name>Olga Timakova</name>
    <username>olgatimakova</username>
    <title>Conference Coordinator</title>
    <image>images_staff/olga-timakova.jpg</image>
    <description><![CDATA[
      Olga is a Conference Coordinator and a member of the Marketing team.
      Outside of work, Olga enjoys traveling with her family, exploring
      beautiful places in the world, sports, and fashion.
    ]]></description>
  </staffmember>

  <staffmember id="tiagolucas">
    <name>Tiago Lucas</name>
    <username>tiagolucas</username>
    <title>Open Source Software Engineer</title>
    <image>images_staff/tiago-lucas.jpg</image>
    <description><![CDATA[
      Tiago has been staring at computers for most of his life, wondering how
      every little thing works. With a passion for open-source and a mission for
      security, he joined the Eclipse Foundation in 2023 to make a difference.
      His cat is named after an operating system, but he'll tell you he's a dog
      person.
    ]]></description>
  </staffmember>

  <staffmember id="dana">
    <name>Dana Vede</name>
    <username>dana</username>
    <title>Automotive Process Engineer</title>
    <image>images_staff/monica-daniela-vede.jpg</image>
    <description><![CDATA[
      <p>
        Dana is passionate about Software and Innovation. She has worked in the
        automotive industry for over 20 years, where she experienced all the SW
        related roles of a project.
      </p>
      <p>
        Outside of work, Dana enjoys music, photography, travel, hiking, riding
        motorcycles, reading, and laughing. She'll always stop to pet a cat, dog
        or horse. She also takes a high interest in mental health topics and any
        related techniques and mechanisms, and is keen on further improving
        herself and helping others through her knowledge and experiences.
      </p>
    ]]></description>
  </staffmember>

  <staffmember id="mekhan">
    <name>Maira Khan</name>
    <username>mekhan</username>
    <title>Graphic Design Assistant</title>
    <image>images_staff/maira-khan.jpg</image>
    <description><![CDATA[
      <p>
        Maira joined Eclipse Foundation in February 2023. Her passion is
        graphic designing, and she loves to explore and learn new things
        everyday. In her free time, she loves painting and doing arts and
        crafts projects; art in any form inspires Maira. Traveling with her
        family makes her happy!
      </p>
    ]]></description>
  </staffmember>

  <staffmember id="tmashologu">
    <name>Thabang Mashologu</name>
    <username>tmashologu</username>
    <title>VP Community &amp; Outreach</title>
    <image>images_staff/thabang-mashologu.jpg</image>
    <description><![CDATA[
        <p>
          Thabang is the Vice President, Marketing and Community Programs at the
          Eclipse Foundation. He is responsible for global marketing and program
          management for our working groups and industry collaborations.
          Outside of work, you can find Thabang anywhere his family is &mdash; which
          is usually a hockey arena. You can learn more about Thabang at
          <a href="https://thabang.ca">thabang.ca</a>.
        </p>
    ]]></description>
  </staffmember>

  <staffmember id="jricoeclipse">
    <name>Juan Rico</name>
    <username>jricoeclipse</username>
    <title>Oniro Program Manager</title>
    <image>images_staff/juan-rico.jpg</image>
    <description><![CDATA[
      <p>
        Juan joined the Eclipse Foundation in July 2023 as Oniro Program
        Manager. He started his career as a researcher in the field of wireless
        communications and IoT applied to embedded systems. His path evolved
        from developer to manager in domains like smart home, smart cities, and
        smart energy, combining massive device deployment and data collection to
        deliver consumer focused services. He is based in the north of Spain,
        enjoys spending his free time with his family, hiking/running through
        the mountains and beaches surrounding his hometown, and reading about
        innovation.
      </p>
    ]]></description>
  </staffmember>

  <staffmember id="chills2023">
    <name>Christopher Hills</name>
    <username>chills2023</username>
    <image>images_staff/christopher-hills.jpg</image>
    <title>Senior Systems Engineer</title>
    <description>
      <![CDATA[<p>When not working, Christopher spends his time with his kids, rebuilding motorcycles, and car bodywork/paint.</p>]]>
    </description>
  </staffmember>

  <staffmember id="aurelie">
    <name>Aurélie Caron</name>
    <username>aurelie</username>
    <title>Senior Manager, Event Operations and Strategy</title>
    <image>images_staff/aurelie-caron.jpg</image>
    <description><![CDATA[
      <p>
        Aurélie is leading the Eclipse Foundation’s Events team. Over the last
        10 years, she has developed a deep knowledge of event management and
        marketing in the software and IT world, as she has managed event projects
        for major companies such as IBM, Salesforce, Adobe, Red Hat, Wipro, and
        many more. She has a very multi-cultural mindset as she has travelled the
        world and lived abroad for many years across three different continents.
        She loves challenges and her mantra is: <q>If it doesn’t challenge you,
        it doesn’t change you.</q>
      </p>
    ]]></description>
  </staffmember>
  
  <staffmember id="enzoribagnac">
    <name>Enzo Ribagnac</name>
    <username>enzoribagnac</username>
    <title>Associate Director, European Public Policy</title>
    <image>images_staff/enzo-ribagnac.jpg</image>
    <twitter>EnzoRbgnc</twitter>
    <description><![CDATA[
      <p>
        Enzo is responsible for the advocacy activities of Eclipse Foundation
        in Europe. To do so, he is interacting with policy makers and
        representatives from civil society organizations, research, and
        industry.
      </p>
      <p>
        Before joining Eclipse Foundation, Enzo alternated between private and
        public sector organizations working on international relations, trade
        policy, and digital policy, including open source. Enzo speaks 5
        languages, enjoys cooking, and is a cat person.
      </p>
    ]]></description>
  </staffmember>

  <staffmember id="franciscocarneiro">
    <name>Francisco Carneiro</name>
    <username>franciscocarneiro</username>
    <title>Manager of Ecosystem Development</title>
    <image>images_staff/francisco-carneiro.jpg</image>
    <description><![CDATA[
      <p>
        Residing in Finland, Francisco assumed the position of Manager of
        Ecosystem Development at the Eclipse Foundation in 2024. He has expertise
        in IT engineering and business development. Outside of work, he cherishes
        family moments, takes leisurely walks with his dog, plays the guitar,
        explores creative pursuits such as painting, and enjoys cross-country
        skiing.
      </p>
    ]]>
    </description>
  </staffmember>

  <staffmember id="thomasfroment">
    <name>Thomas Froment</name>
    <username>thomasfroment</username>
    <title>Eclipse IDE Program Manager</title>
    <image>images_staff/thomas-froment.jpg</image>
    <description><![CDATA[
      <p>
        Thomas joined the Eclipse Foundation in February 2024 as the Eclipse IDE
        Program Manager. He was a diligent practitioner of classical music
        throughout his childhood, playing the bassoon in symphonic orchestras,
        but ultimately pivoted due to his passion for software development.
        Today, he enjoys taking care of his three children, and inviting
        everyone he meets to come for a run/go on trail runs with him...
      </p>
    ]]></description>
    <twitter>tfroment</twitter>
  </staffmember>

  <staffmember id="javiervalino">
    <name>Javier Valiño Llamazares</name>
    <username>javiervalino</username>
    <title>Eclipse Dataspace Program Manager</title>
    <image>images_staff/javier-valino-llamazares.jpg</image>
    <description><![CDATA[
      <p>
        Javier has been involved in innovation for over 16 years, touching upon
        several topics such as IoT, cellular networks, energy, decarbonisation,
        and sovereign data sharing. As part of this endeavour, open source and
        standardisation emerged always as the way forward. Outside the work
        place, Javier is usually spending time with his family, and is always
        keen on practising and discussing sports of any kind.
      </p>
    ]]>
    </description>
  </staffmember>
</staffmembers>
