{{ define "page_scripts" }}
  <script type="text/javascript" src="https://widgets.twimg.com/j/2/widget.js"></script>
{{ end }}

{{ define "page_style" }}
  <link rel="stylesheet" href="static/main.css"/>
{{ end }}

{{ define "title" }}About Warsaw Hackerspace{{ end }}

{{ define "content" }}
  <div id="left">
      <div id="about">
          <h2><a href="about">Poczytaj o nas po polsku</a></h2>
      <h1>About the Warsaw Hackerspace</h1>
      <p>
        A hackerspace is a place created and maintained by a group of people whish combines fascination
        about new technologies with a broadly understood creativity and hacker spirit. A hackerspace stimulates
        the development of interesting projects by supplying necessary tools and attracting people with knowledge to
        use them. A hackerspace know no limits, if you have an interesting idea and you are looking for people to help you
        with it's development or simply a place to work - you are most welcome!
      </p>
      <p>
        If you want to join us, read about our goals and join one of our mailing lists. We meet live at the Hackerspace every Thursday from 6pm. We also have a contact email address: <img src="static/kontakt.png"/>.
      </p>
      <h3>Warsaw Hackerspace Goals</h3>
      <ul>
        <li>We want to maintain a place in which people interested in technology, electronics, informatics, mechanics, art and related activities can meet to talk, exchange ideas, solutions and work together on their projects.</li>
        <li>We want a Hackerspace to be located in Warsaw, in an easily accessbile place, especially using public transport.</li>
        <li>We want independence, thats why we think that member fees are the best financial model for us. The collected money is used to rent physical space and buy necessary tools and equipment.</li>
        <li>We want the Warsaw Hackerspace to be a friendly and open place for new people and ideas.</li>
        <li>We want to maintain tools and knowledge about their usage in a place which allow for their safe use.</li>
        <li>We want to develop and explore new areas of interest.</li>
        <li>We want to have fun.</li>
      </ul>
      <h3>Location</h3>
      <p>
        The Warsaw Hackerspace is located on the ground floor at Wolność 2A road in Warsaw. The main entrance is from ul. Żelazna. After getting to the parking lot, use the tunnel under the building and enter the stairwell on the left side. 
	<pre>
          Warszawski Hackerspace
	  ul. Wolność 2A
	  01-018 Warszawa 
	  52°14'29.8"N 20°59'5.5"E
        </pre>
      </p>
      <div style="align:center, text-align:center"><iframe width="90%" height="550" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.openstreetmap.org/export/embed.html?bbox=20.983859896659855%2C52.24110833176657%2C20.985909104347233%2C52.24213811954793&amp;layer=mapnik&amp;marker=52.241623228644364%2C20.98488450050354" style="border: 1px solid black"></iframe><br /></div><small><a href="https://www.openstreetmap.org/?mlat=52.24162&amp;mlon=20.98488#map=19/52.24162/20.98488">View Larger Map</a></small>
      <h3>Membership</h3>
      <ul>
        <li>The Hackerspace is by and for members.</li>
        <li>All members are required to pay a monthly fee.</li>
        <li>All members are allowed to be in the Hackerspace 24/7.</li>
        <li>All members are equal.</li>
      </ul>
      <h3>Contributions</h3>
      <ul>
        <li><b>Starving Hacker</b>, at least 50 PLN per month. Limited to students (and other special financial situations).</li>
        <li><b>Fatty Hacker</b>, at least 100 PLN per month.</li>
        <li><b>Super-Fatty Hacker</b>, 150 PLN or more - for rich Hackers who want to support our Hackerspace.</li>
      </ul>
      <p>We need at least 6000 PLN per monts to be able to pay the rent and bills. Additional funding is especially needed for further remodelling and adaption of our space, and for investments in gadgets, promotion and infrastructure.</p>
      <h3>More informations:</h3>
      <ul>
        <li>Our <a href="https://wiki.hackerspace.pl/faq">Frequently Asked Questions (FAQ)</a></li>
        <li>Information for people who wants to <a href="https://wiki.hackerspace.pl/jak-dolaczyc">join us</a></li>
        <li>Tutorial <a href="http://catb.org/~esr/faqs/hacker-howto.html">How To Become A Hacker</a> by ESR</li>
      </ul>
  </div>
  <div id="right">
    <!-- TODO(q3k): add this {% include "subscribe_en.html" %} -->
    <h1 class="twitter">Twitter</h1>
    <script type="text/javascript">
    new TWTR.Widget({
      version: 2,
      type: 'profile',
      rpp: 5,
      interval: 6000,
      theme: {
        shell: {
          background: '#eee',
          color: '#222'
        },
        tweets: {
          background: '#eee',
          color: '#222',
          links: '#001ea6'
        }
      },
      features: {
        scrollbar: false,
        loop: false,
        live: false,
        hashtags: true,
        timestamp: true,
        avatars: true,
        behavior: 'all'
      }
    }).render().setUser('hackerspacepl').start();
    </script>
  </div>
{{ end }}
