---
layout: page
title: Powered By
exclude_from_loop: true
---
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

A list of companies powered by Samza

<ul class="powered-by">
{% assign sorted = site.powered-by | sort: 'priority' %}

  {% for company in sorted %} 
    {% if company.exclude_from_loop %}
        {% continue %}
    {% endif %}

  <li>
    <span title="{{ company.name }}">
      <span style="background-image: url('https://logo.clearbit.com/{{ company.domain }}?size=256');"></span>
    </span>
    <div>
      <a href="https://{{ company.domain }}" class="external-link" rel="nofollow">
        <i class="icon ion-md-share-alt"></i> {{ company.name }}
      </a>
      <p>
      {{ company.content }}
      </p>
    </div>
  </li>

  {% endfor %}

</ul>