Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ It is a static website, built with Zola and hosted at Cloudflare pages.
- If css was changed: rebuild with tailwind by running `just css`
- Preview website locally with `zola serve`

## Scripts

- `./scripts/geocode.sh` — Resolves coordinates for ecosystem entities that have an `address` but no `lat`/`lon`. Uses OpenStreetMap Nominatim. Pass `-f` to re-geocode all entries. Requires `curl` and `jq`.

***
Systemscape GmbH | 2025\
https://www.systemscape.com
2 changes: 2 additions & 0 deletions config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ all_rights_reserved = "All rights reserved"
conference = "Conference"
archive = "Archive"
community = "Community"
ecosystem = "Ecosystem"

[translations]
linkedin_tooltip = "Unserer LinkedIn Seite folgen"
Expand All @@ -40,6 +41,7 @@ all_rights_reserved = "Alle Rechte vorbehalten"
conference = "Konferenz"
archive = "Archiv"
community = "Community"
ecosystem = "Ökosystem"

[markdown.highlighting]
light_theme = "github-light-default"
Expand Down
52 changes: 52 additions & 0 deletions content/ecosystem/_index.en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
+++
title = "Ecosystem"
template = "ecosystem.html"

[[extra.groups]]
title = "Large Business"
entities = [
{ name = "Analog Devices", url = "https://www.analog.com", description = "Global semiconductor leader bridging the physical and digital worlds to enable breakthroughs at the Intelligent Edge.", address = "Otl-Aicher-Straße 60-64, 80807 München" , lat = 48.1818, lon = 11.5872 },
{ name = "Apple", url = "https://www.apple.com", description = "Designing and manufacturing consumer electronics, computer software, and online services.", address = "Katharina-von-Bora-Straße 3, 80333 München" , lat = 48.1431, lon = 11.5649 },
{ name = "Google", url = "https://about.google/", description = "Organizing the world's information and making it universally accessible and useful.", address = "Erika-Mann-Straße 33, 80636 München" , lat = 48.1429, lon = 11.5408 },
{ name = "Intel", url = "https://www.intel.com", description = "Creating world-changing technology that improves the life of every person on the planet.", address = "Dornacher Str. 1, 85622 Feldkirchen", lat = 48.1485, lon = 11.7185 },
{ name = "Red Hat", url = "https://www.redhat.com", description = "The world's leading provider of enterprise open source solutions.", address = "Werner-von-Siemens-Ring 12, 85630 Grasbrunn" , lat = 48.1012, lon = 11.7587 },
{ name = "Rohde & Schwarz", url = "https://www.rohde-schwarz.com", description = "Global leader in test and measurement, broadcast and media, cybersecurity, and radio communications.", address = "Mühldorfstraße 15, 81671 München" , lat = 48.1278, lon = 11.6127 }
]

[[extra.groups]]
title = "Medium/Small Business"
entities = [
{ name = "Alpitronic", url = "https://www.alpitronic.it/", description = "High power charging for e-mobility.", address = "Alte Landstraße 29, 85521 Ottobrunn" , lat = 48.0746, lon = 11.6522 },
{ name = "Codasip", url = "https://codasip.com/", description = "Leading provider of RISC-V processor IP.", address = "Paul-Gerhardt-Allee 50, 81245 München" , lat = 48.1539, lon = 11.4788 },
{ name = "Helsing", url = "https://helsing.ai/", description = "AI company for defense and national security.", address = "Mühldorfstraße 8, 81671 München" , lat = 48.1280, lon = 11.6100 },
{ name = "Isar Aerospace", url = "https://www.isaraerospace.com/", description = "Offering flexible and sustainable access to space for small and medium satellites.", address = "Caroline-Herschel-Straße 2, 85521 Ottobrunn" , lat = 48.0527, lon = 11.6603 },
{ name = "Zerophase", url = "https://zerophase.de/", description = "Specialized in embedded systems and software engineering.", address = "Max-Planck-Straße 5, 85716 Unterschleißheim" , lat = 48.2841, lon = 11.5671 }
]

[[extra.groups]]
title = "Consulting"
entities = [
{ name = "DENX", url = "https://www.denx.de/", description = "Embedded Linux and U-Boot experts.", address = "Kirchenstr. 5, 82194 Gröbenzell" , lat = 48.1950, lon = 11.3730 },
{ name = "Embedded Ocean (Xentara)", url = "https://xentara.io/", description = "Industrial IoT solutions and Xentara platform.", address = "Steinerstr. 15, 81369 München" , lat = 48.1028, lon = 11.5371 },
{ name = "Ilbers", url = "https://ilbers.de/", description = "Consulting and development for embedded Linux systems.", address = "Maria-Merian-Str. 8, 85521 Ottobrunn" , lat = 48.0532, lon = 11.6570 },
{ name = "nabla", url = "https://nabladev.com/", description = "Engineering services for embedded systems.", address = "Hirschstr. 111a, 86156 Augsburg", lat = 48.3715, lon = 10.8985 },
{ name = "Systemscape", url = "https://www.systemscape.com/", description = "Rust for embedded systems.", address = "Bergmannstr. 12, 80339 München" , lat = 48.1387, lon = 11.5377 }
]

[[extra.groups]]
title = "Non-profit"
entities = [
{ name = "Erfindergarden", url = "https://erfindergarden.de/", description = "Open workshop and community space.", address = "Rosenheimer Str. 5, 81667 München" , lat = 48.1316, lon = 11.5908 },
{ name = "FabLab München", url = "https://www.fablab-muenchen.de/", description = "Open workshop with digital fabrication tools.", address = "Gollierstraße 70, 80339 München" , lat = 48.1369, lon = 11.5341 },
{ name = "Freifunk München (ffmuc)", url = "https://ffmuc.net/", description = "Community network for free wireless internet.", address = "Parkstraße 28, 82131 Gauting" , lat = 48.0689, lon = 11.3721 }
]

[[extra.groups]]
title = "Meet-ups"
entities = [
{ name = "Zephyr Project Meetup", url = "https://www.zephyrproject.org/event/zephyr-project-meetup-november-20-2025-garching-munich-germany/", description = "Local community for the Zephyr RTOS project.", address = "Friedrich-Ludwig-Bauer-Straße 3, 85748 Garching bei München" , lat = 48.2650, lon = 11.6610 }
]
+++

Collection of companies in and around Munich that are active in the embedded sector. This list is not exhaustive.
There is no connection whatsoever between the companies listed and Munich Embedded or Systemscape.
52 changes: 52 additions & 0 deletions content/ecosystem/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
+++
title = "Ökosystem"
template = "ecosystem.html"

[[extra.groups]]
title = "Großunternehmen"
entities = [
{ name = "Analog Devices", url = "https://www.analog.com", description = "Weltweit führender Halbleiterhersteller, der die physische und digitale Welt verbindet.", address = "Otl-Aicher-Straße 60-64, 80807 München" , lat = 48.1818, lon = 11.5872 },
{ name = "Apple", url = "https://www.apple.com", description = "Entwicklung und Herstellung von Unterhaltungselektronik, Software und Online-Diensten.", address = "Katharina-von-Bora-Straße 3, 80333 München" , lat = 48.1431, lon = 11.5649 },
{ name = "Google", url = "https://about.google/", description = "Organisiert die Informationen der Welt und macht sie allgemein zugänglich und nutzbar.", address = "Erika-Mann-Straße 33, 80636 München" , lat = 48.1429, lon = 11.5408 },
{ name = "Intel", url = "https://www.intel.com", description = "Entwickelt Technologien, die das Leben jedes Menschen auf der Welt verbessern.", address = "Dornacher Str. 1, 85622 Feldkirchen", lat = 48.1485, lon = 11.7185 },
{ name = "Red Hat", url = "https://www.redhat.com", description = "Weltweit führender Anbieter von Enterprise-Open-Source-Lösungen.", address = "Werner-von-Siemens-Ring 12, 85630 Grasbrunn" , lat = 48.1012, lon = 11.7587 },
{ name = "Rohde & Schwarz", url = "https://www.rohde-schwarz.com", description = "Weltweit führend in Messtechnik, Broadcast, Cybersicherheit und Funkkommunikation.", address = "Mühldorfstraße 15, 81671 München" , lat = 48.1278, lon = 11.6127 }
]

[[extra.groups]]
title = "Mittelstand / KMU"
entities = [
{ name = "Alpitronic", url = "https://www.alpitronic.it/", description = "Hochleistungsladetechnik für Elektromobilität.", address = "Alte Landstraße 29, 85521 Ottobrunn" , lat = 48.0746, lon = 11.6522 },
{ name = "Codasip", url = "https://codasip.com/", description = "Führender Anbieter von RISC-V-Prozessor-IP.", address = "Paul-Gerhardt-Allee 50, 81245 München" , lat = 48.1539, lon = 11.4788 },
{ name = "Helsing", url = "https://helsing.ai/", description = "KI-Unternehmen für Verteidigung und nationale Sicherheit.", address = "Mühldorfstraße 8, 81671 München" , lat = 48.1280, lon = 11.6100 },
{ name = "Isar Aerospace", url = "https://www.isaraerospace.com/", description = "Flexibler und nachhaltiger Zugang zum Weltraum für kleine und mittlere Satelliten.", address = "Caroline-Herschel-Straße 2, 85521 Ottobrunn" , lat = 48.0527, lon = 11.6603 },
{ name = "Zerophase", url = "https://zerophase.de/", description = "Spezialisiert auf Embedded-Systeme und Softwareentwicklung.", address = "Max-Planck-Straße 5, 85716 Unterschleißheim" , lat = 48.2841, lon = 11.5671 }
]

[[extra.groups]]
title = "Beratung / Dienstleistung"
entities = [
{ name = "DENX", url = "https://www.denx.de/", description = "Experten für Embedded Linux und U-Boot.", address = "Kirchenstr. 5, 82194 Gröbenzell" , lat = 48.1950, lon = 11.3730 },
{ name = "Embedded Ocean (Xentara)", url = "https://xentara.io/", description = "Industrielle IoT-Lösungen und Xentara-Plattform.", address = "Steinerstr. 15, 81369 München" , lat = 48.1028, lon = 11.5371 },
{ name = "Ilbers", url = "https://ilbers.de/", description = "Beratung und Entwicklung für Embedded-Linux-Systeme.", address = "Maria-Merian-Str. 8, 85521 Ottobrunn" , lat = 48.0532, lon = 11.6570 },
{ name = "nabla", url = "https://nabladev.com/", description = "Engineering services for embedded systems.", address = "Hirschstr. 111a, 86156 Augsburg", lat = 48.3715, lon = 10.8985 },
{ name = "Systemscape", url = "https://www.systemscape.com/", description = "Rust für eingebettete Systeme.", address = "Bergmannstr. 12, 80339 München" , lat = 48.1387, lon = 11.5377 }
]

[[extra.groups]]
title = "Gemeinnützige Organisationen"
entities = [
{ name = "Erfindergarden", url = "https://erfindergarden.de/", description = "Offene Werkstatt und Gemeinschaftsraum.", address = "Rosenheimer Str. 5, 81667 München" , lat = 48.1316, lon = 11.5908 },
{ name = "FabLab München", url = "https://www.fablab-muenchen.de/", description = "Offene Werkstatt mit digitalen Fertigungswerkzeugen.", address = "Gollierstraße 70, 80339 München" , lat = 48.1369, lon = 11.5341 },
{ name = "Freifunk München (ffmuc)", url = "https://ffmuc.net/", description = "Gemeinschaftsnetzwerk für freies WLAN.", address = "Parkstraße 28, 82131 Gauting" , lat = 48.0689, lon = 11.3721 }
]

[[extra.groups]]
title = "Meetups"
entities = [
{ name = "Zephyr Project Meetup", url = "https://www.zephyrproject.org/event/zephyr-project-meetup-november-20-2025-garching-munich-germany/", description = "Lokale Community für das Zephyr-RTOS-Projekt.", address = "Friedrich-Ludwig-Bauer-Straße 3, 85748 Garching bei München" , lat = 48.2650, lon = 11.6610 }
]
+++

Sammlung von Unternehmen in und um München, die im Embedded Bereich aktiv sind. Ohne Anspruch auf Vollständigkeit.\
Es besteht keinerlei Verbindung zwischen den aufgeführten Unternehmen und Munich Embedded bzw. Systemscape.
6 changes: 6 additions & 0 deletions content/privacy.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ The processing of the data specified in this section is neither legally nor cont

Cloudflare has implemented compliance measures for international data transfers. These apply to all worldwide activities where Cloudflare processes personal data of natural persons in the EU. These measures are based on the EU Standard Contractual Clauses (SCCs) and participation in the EU-US Data Privacy Framework. For more information, visit: [https://www.cloudflare.com/cloudflare_customer_SCCs.pdf](https://www.cloudflare.com/cloudflare_customer_SCCs.pdf)

## Map Display with OpenStreetMap

On our ecosystem page, we use an interactive map that loads map tiles from the German OpenStreetMap tile server (`tile.openstreetmap.de`). This server is operated by FOSSGIS e.V. (a registered association based in Germany). When loading the map tiles, your IP address is transmitted to the servers of FOSSGIS e.V. No data transfer to third countries takes place.

The use is based on our legitimate interest pursuant to Art. 6(1)(f) GDPR in providing an appealing presentation of locations on our website. Further information on the data protection of FOSSGIS e.V. can be found at: [https://www.fossgis.de/datenschutzerkl%C3%A4rung](https://www.fossgis.de/datenschutzerkl%C3%A4rung)

## Your Rights as a Data Subject

As a data subject, you have the right to information, the right to rectification or erasure, the right to restriction of processing, and the right to object to the processing of your data. If you have given us consent, you can revoke it at any time with effect for the future.
Expand Down
6 changes: 6 additions & 0 deletions content/privacy.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ Die Verarbeitung der in diesem Abschnitt genannten Daten ist weder gesetzlich no

Cloudflare hat Compliance-Maßnahmen für internationale Datenübermittlungen umgesetzt. Diese gelten für alle weltweiten Aktivitäten, bei denen Cloudflare personenbezogene Daten von natürlichen Personen in der EU verarbeitet. Diese Maßnahmen basieren auf den EU-Standardvertragsklauseln (SCCs) und der Teilnahme am EU-US Data Privacy Framework. Weitere Informationen finden Sie unter: [https://www.cloudflare.com/cloudflare_customer_SCCs.pdf](https://www.cloudflare.com/cloudflare_customer_SCCs.pdf)

## Kartendarstellung mit OpenStreetMap

Auf unserer Ökosystem-Seite verwenden wir eine interaktive Karte, die Kartenkacheln vom deutschen OpenStreetMap-Tileserver (`tile.openstreetmap.de`) lädt. Dieser wird vom FOSSGIS e.V. (ein eingetragener Verein mit Sitz in Deutschland) betrieben. Beim Laden der Kartenkacheln wird Ihre IP-Adresse an die Server des FOSSGIS e.V. übermittelt. Es findet keine Datenübermittlung in Drittländer statt.

Die Nutzung erfolgt auf Grundlage unseres berechtigten Interesses gem. Art. 6 Abs. 1 lit. f DSGVO an einer ansprechenden Darstellung der Standorte auf unserer Website. Weitere Informationen zum Datenschutz des FOSSGIS e.V. finden Sie unter: [https://www.fossgis.de/datenschutzerkl%C3%A4rung](https://www.fossgis.de/datenschutzerkl%C3%A4rung)

## Ihre Rechte als betroffene Person

Als betroffene Person haben Sie das Recht auf Auskunft, das Recht auf Berichtigung oder Löschung, das Recht auf Einschränkung der Verarbeitung und das Recht auf Widerspruch gegen die Verarbeitung Ihrer Daten. Sofern Sie uns eine Einwilligung erteilt haben, können Sie diese jederzeit mit Wirkung für die Zukunft widerrufen.
Expand Down
78 changes: 78 additions & 0 deletions scripts/geocode.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#!/usr/bin/env bash
# Geocodes entities in ecosystem markdown files that have an address but no lat/lon.
# Uses OpenStreetMap Nominatim (free, no API key needed).
# Usage: ./scripts/geocode.sh [-f] [file ...]
# -f Force: re-geocode all entities, even those that already have lat/lon
# If no files given, processes all ecosystem _index*.md files.

set -euo pipefail
export LC_NUMERIC=C

force=false
if [ "${1:-}" = "-f" ]; then
force=true
shift
fi

if [ $# -gt 0 ]; then
files=("$@")
else
files=(content/ecosystem/_index*.md)
fi

if ! command -v jq &>/dev/null; then
echo "Error: jq is required. Install it with: sudo apt install jq" >&2
exit 1
fi

for file in "${files[@]}"; do
echo "Processing $file ..."
tmpfile=$(mktemp)
changed=false

while IFS= read -r line; do
# Match lines with address (skip if lat exists, unless -f)
if echo "$line" | grep -q 'address\s*=' && { [ "$force" = true ] || ! echo "$line" | grep -q 'lat\s*='; }; then
# Strip existing lat/lon if forcing
if [ "$force" = true ]; then
line=$(echo "$line" | sed 's/,\s*lat\s*=\s*[0-9.-]*//; s/,\s*lon\s*=\s*[0-9.-]*//')
fi
# Extract the address value
address=$(echo "$line" | sed -n 's/.*address\s*=\s*"\([^"]*\)".*/\1/p')
if [ -n "$address" ]; then
echo " Geocoding: $address"
# Query Nominatim with 1s delay to respect usage policy
sleep 1
result=$(curl -sG "https://nominatim.openstreetmap.org/search" \
--data-urlencode "q=$address" \
-d "format=json" \
-d "limit=1" \
-H "User-Agent: munich-embedded-geocoder")

lat=$(echo "$result" | jq -r '.[0].lat // empty')
lon=$(echo "$result" | jq -r '.[0].lon // empty')

if [ -n "$lat" ] && [ -n "$lon" ]; then
# Round to 4 decimal places
lat=$(printf "%.4f" "$lat")
lon=$(printf "%.4f" "$lon")
echo " -> lat = $lat, lon = $lon"
# Insert lat and lon before the closing }
line=$(echo "$line" | sed "s/}/, lat = $lat, lon = $lon }/")
changed=true
else
echo " -> No result found, skipping" >&2
fi
fi
fi
echo "$line" >> "$tmpfile"
done < "$file"

if [ "$changed" = true ]; then
mv "$tmpfile" "$file"
echo " Updated $file"
else
rm "$tmpfile"
echo " No changes needed"
fi
done
Loading
Loading