{"$schema":"https://raw.githubusercontent.com/jsonresume/resume-schema/v1.2.1/schema.json","basics":{"name":"Robert Schäfer","label":"Full-Stack-Entwickler","image":"https://avatars.githubusercontent.com/u/2110676","email":"hello@roschaefer.de","url":"https://roschaefer.de/","signal":"https://signal.me/#eu/DI0Crg8ktbRKrFyKqMRVJeMO-ecjH3Xa9I6wu8QWkQRUUzGBm-lPwJh0xlrvFb00","summary":"Ich arbeite remote als freiberuflicher Full-Stack-Entwickler an Webanwendungen, Produktentwicklung und Infrastruktur und investiere zusätzliche Zeit in Open Source. Mein Fokus liegt auf wartbarer Software, hoher Testabdeckung und der Modernisierung fragiler Systeme, indem ich Deployment- und Betriebsprozesse vereinfache und Qualität durch verlässliche Zusammenarbeit, Code Reviews, Pair Programming und technische Mentoring-Arbeit absichere.","location":{"address":"kein fester Wohnsitz","city":"Köln","region":"NRW","countryCode":"DE"},"profiles":[{"network":"LinkedIn","username":"Robert Schäfer","url":"https://www.linkedin.com/in/roschaefer/"},{"id":"11444f76-fbdb-4461-8f30-54bfbcf452df","url":"https://github.com/roschaefer","network":"Github","username":"roschaefer"},{"id":"19f445bb-b77e-4a45-9be3-15d905a99e6e","url":"https://www.youtube.com/channel/UCyrLYmvmLzWxnPHxt4n5aPw","network":"YouTube","username":"Robert Schäfer"},{"id":"eefa7b2c-5246-41d1-a344-5ee600f55d92","url":"https://twitter.com/roschaeferDE","network":"Twitter","username":"roschaeferDE"},{"id":"mastodon-roschaefer","url":"https://mastodon.social/@roschaefer","network":"Mastodon","username":"roschaefer"},{"id":"fcb53294-762d-4d77-881b-e379bf574407","url":"https://www.codementor.io/@roschaefer","network":"CodeMentor","username":"roschaefer"}]},"work":[],"volunteer":[],"awards":[{"title":"Grimme Online Award (nominiert)","date":"2020-06-25","summary":"Automatisiertes Sensor-Storytelling-Format (Bienen)","awarder":"Grimme-Institut","links":[{"label":"Automatisiertes Sensor-Storytelling-Format (Bienen)","url":"https://www.grimme-online-award.de/archiv/2020/nominierte/n/d/bienenlive-folge-den-koeniginnen","kind":"award"}]},{"title":"Deutscher Reporterpreis 2019","date":"2019-12-02","summary":"Automatisiertes Sensor-Storytelling-Format (Bienen)","awarder":"Reporter-Forum e. V.","links":[{"label":"Automatisiertes Sensor-Storytelling-Format (Bienen)","url":"https://de.wikipedia.org/wiki/Deutscher_Reporter:innenpreis#Deutscher_Reporterpreis_2019","kind":"award"}]},{"title":"Deutscher Reporterpreis 2017 (nominiert)","date":"2017-12-11","summary":"Automatisiertes Sensor-Storytelling-Format (Milchkühe)","awarder":"Reporter-Forum e. V.","links":[{"label":"Automatisiertes Sensor-Storytelling-Format (Milchkühe)","url":"https://archiv.reporter-forum.de/index.php%3Fid=231.html#c2904","kind":"award"}]},{"title":"Gewinner des MIZ Formatfestivals 2015","summary":"#ursuppe","date":"2015-11-12","awarder":"MIZ Babelsberg","links":[{"label":"#ursuppe","url":"https://www.mabb.de/uber-die-mabb/aktuelles/veranstaltungen-details/miz-formatfestival-2015-preisverleihung-im-miz-babelsberg","kind":"award"}]}],"languages":[{"language":"Deutsch","fluency":"Muttersprache"},{"language":"Englisch","fluency":"Verhandlungssicher"},{"language":"Spanisch","fluency":"Fließend"}],"certificates":[],"references":[],"education":[{"id":"hpi-msc","institution":"Hasso Plattner Institute","url":"https://hpi.de/","area":"IT-Systems Engineering","studyType":"Master of Science","startDate":"2014-10-01","endDate":"2018-03-31","score":"1.6","courses":[]},{"id":"hpi-bsc","institution":"Hasso Plattner Institute","url":"https://hpi.de/","area":"IT-Systems Engineering","studyType":"Bachelor of Science","startDate":"2009-09-01","endDate":"2012-07-01","score":"1.7","courses":[]},{"id":"gymnasium-lohmar-abitur","institution":"Gymnasium Lohmar","area":"","studyType":"Abitur","startDate":"1999-08-01","endDate":"2008-06-30","courses":[]}],"interests":[{"name":"Moderne kompilierte Sprachen","keywords":["Rust","Go","Zig"]},{"name":"Cross-Plattform-Entwicklung","keywords":["Flutter"]},{"name":"Infrastructure as Code","keywords":["Terraform"]}],"projects":[{"id":"ai-interview-platform","name":"KI-gestützte Interviewplattform","entity":"tactile.news GmbH","engagement":"freelance","codeVisibility":"open-source","roles":["Full-Stack-Entwickler"],"startDate":"2026-03-23","keywords":["TypeScript","Svelte","SvelteKit","Tailwind","Better Auth","Drizzle ORM","Neon DB","PostgreSQL","Playwright","Vitest","Netlify","Sentry","Serverless","Infisical","ElevenLabs"],"description":"Bei dieser SvelteKit-Anwendung für KI-gestützte Interviews und redaktionelle Veröffentlichung arbeite ich an der Ablösung einer fragilen, auf Airtable, Voiceflow und weiteren eigenen Diensten verteilten Infrastruktur durch eine einheitliche serverlose Anwendung. Durch die Nutzung der integrierten Workflows von ElevenLabs AI Agents sinken Wartungsaufwand und Komplexität deutlich, während sich die Antwortzeit des Telefonagenten um mehrere Sekunden verbessert, was für eine gute Nutzererfahrung entscheidend ist.","url":"https://github.com/tactilenews/dialogbank-app/","type":"product"},{"id":"roschaefer-portfolio","name":"roschaefer.de","entity":"Robert Schäfer","engagement":"independent","codeVisibility":"open-source","roles":["Entwicklung und Design"],"startDate":"2026-03-16","keywords":["TypeScript","Svelte","SvelteKit","Tailwind","Paraglide","Typst","Vitest","Playwright","Netlify"],"description":"Meine persönliche Portfolio-Website und ein druckoptimierter Lebenslauf aus einer gemeinsamen Datenquelle. Das Projekt verbindet eine zweisprachige SvelteKit-Oberfläche, PDF-Erzeugung mit Typst und standardkonformes `resume.json` zu einer zugänglichen, datensparsamen Darstellung für Web und Druck.","url":"https://roschaefer.de/","type":"portfolio"},{"id":"entrepreneur-social-platform","name":"Social-Media-Plattform für Unternehmerinnen und Unternehmer","entity":"IT4C","engagement":"freelance","codeVisibility":"open-source","roles":["Full-Stack-Entwickler"],"startDate":"2024-06-21","endDate":"2025-06-09","keywords":["TypeScript","Docker","Vue","Vike","Vuetify","Jest","Authentik","Apollo GraphQL","Terraform","Helm","Kubernetes","Hetzner","PostgreSQL"],"description":"Bei dieser freien und quelloffenen Social-Media-Plattform für Unternehmerinnen und Unternehmer habe ich die Auslieferungs- und Infrastrukturarchitektur grundlegend überarbeitet, nachdem Deployments zuvor manuell über einen Remote-Desktop auf dem Zielserver durchgeführt wurden und regelmäßig zu Ausfällen führten. Durch die Umstellung auf ein selbst betriebenes Kubernetes-Setup auf Hetzner mit Terraform konnte jedes Teammitglied eigene Branches in produktionsnahen Umgebungen testen, während die Betriebskosten mit unter 20 Euro pro Monat sehr niedrig blieben.","url":"https://dreammall.earth/","type":"product"},{"id":"audience-engagement-platform","name":"Publikumsdialog-Plattform für Redaktionen","entity":"tactile.news GmbH","engagement":"freelance","codeVisibility":"open-source","roles":["Full-Stack-Entwickler"],"startDate":"2020-03-30","endDate":"2025-04-16","keywords":["Ruby","TypeScript","Ruby on Rails","RSpec","Stimulus","Docker","Ansible","Digital Ocean","Sentry","Postmark"],"description":"Bei dieser Plattform für Publikumsdialog und crowd-basierte Recherche im Journalismus habe ich an einer Ruby-on-Rails-Anwendung gearbeitet, die Messenger wie WhatsApp, Telegram, Signal, Threema und E-Mail integriert, damit Redaktionen Menschen in den Kanälen erreichen können, die sie bereits nutzen. Das zentrale Alleinstellungsmerkmal ist die direkte 1:1-Kommunikation zwischen Journalistinnen oder Journalisten und ihrem Publikum, wodurch die eigene Community zu einer belastbaren Quelle für Recherche und Berichterstattung wird.","url":"https://tactile.news/","links":[{"label":"GitHub","url":"https://github.com/tactilenews/100eyes","kind":"repository"}],"type":"product"},{"id":"remote-telescope-platform","name":"Fernsteuerung für Teleskope","entity":"Bosse Consulting GmbH","engagement":"freelance","roles":["Full-Stack-Entwickler"],"startDate":"2025-03-25","keywords":["TypeScript","Nuxt","Vue","Fly.io","Docker","AWS","Terraform","Playwright","Cucumber","Tailwind","NINA","Tailscale"],"description":"Mit dieser Plattform zur Fernsteuerung von Teleskopen über die Astrofotografie-Software NINA wird Astrofotografie für alle zugänglich, ohne eigenes Equipment oder Fachwissen. Nutzerinnen und Nutzer wählen ein Himmelsobjekt und buchen Beobachtungszeit; die Anwendung überträgt Aufnahmesequenzen per Tailscale an NINA, die diese in der Nacht autonom ausführt und die Ergebnisse bereitstellt. Die zentrale Herausforderung besteht darin, eine primär interaktive Windows-Software in eine vollständig autonome Pipeline zu überführen.","type":"product"},{"id":"automotive-price-comparison","name":"Preisvergleichsplattform für den Automotive Aftermarket","entity":"auteon GmbH","engagement":"freelance","codeVisibility":"closed-source","roles":["Full-Stack-Entwickler"],"startDate":"2021-06-30","endDate":"2023-09-01","keywords":["TypeScript","Docker","Vue","Tailwind","Jest","Testing-Library","Auth0","Apollo GraphQL","Hasura","Google Cloud","Vercel"],"description":"Bei dieser Software für den Automotive Aftermarket, mit der Werkstätten Preise verschiedener Großhändler vergleichen können, haben wir eine Electron-Desktop-Anwendung in eine cloudbasierte Plattform auf Google Cloud, Auth0 und Hasura überführt. Das verbesserte die Softwarequalität deutlich und erhöhte die Zahl angebundener Großhändler von drei auf 240.","url":"https://www.auteon.com","type":"product"},{"id":"retail-website-relaunch","name":"Website-Relaunch mit SvelteKit und Hygraph","entity":"Johannes Schäfer","engagement":"freelance","codeVisibility":"closed-source","roles":["Full-Stack-Entwickler"],"startDate":"2021-12-09","endDate":"2023-06-28","keywords":["TypeScript","Svelte","SvelteKit","HyGraph","Netlify","Serverless"],"description":"Ich habe die Website eines Einzelhandelskunden mit SvelteKit und Hygraph neu aufgebaut und statisch auf Netlify ausgerollt. Serverseitige Logik läuft in Serverless Functions, Inhalte werden per GraphQL aus dem Headless CMS geladen. Der Relaunch verbesserte Performance, SEO und Pflegbarkeit.","url":"https://rhenania-computer.de/de","type":"client-platform"},{"id":"course-booking-system","name":"Buchungssystem für Kursanbieter","entity":"Johannes Schäfer","engagement":"freelance","codeVisibility":"closed-source","roles":["Full-Stack-Entwickler"],"startDate":"2020-08-11","endDate":"2023-05-02","keywords":["TypeScript","Netlify","Vue","Nuxt","HyGraph"],"description":"Ich habe für einen Kursanbieter ein individuelles Buchungssystem für Nähkurse entwickelt und in die Website integriert. Kurse für Erwachsene, Jugendliche und Kinder lassen sich online verwalten, inklusive Anmeldung und Warteliste.","url":"https://werkhof-ichen.de/","type":"client-platform"},{"id":"continuing-education-booking-system","name":"Buchungssystem für Weiterbildungsanbieter","entity":"Johannes Schäfer","engagement":"freelance","codeVisibility":"closed-source","roles":["Full-Stack-Entwickler"],"startDate":"2021-05-12","endDate":"2022-12-10","keywords":["TypeScript","Netlify","Svelte","SvelteKit","Tailwind"],"description":"Ich habe für einen Anbieter berufsbegleitender Weiterbildungen ein individuelles Buchungssystem entwickelt. Die Lösung umfasst E-Mail-Bestätigungen, Wartelisten und eine Umsetzung mit SvelteKit und Hygraph als Headless CMS.","url":"https://tanzimpulse.de/","type":"client-platform"},{"id":"holiday-apartment-booking-site","name":"Buchungswebsite für eine Ferienwohnung","entity":"Johannes Schäfer","engagement":"freelance","codeVisibility":"closed-source","roles":["Full-Stack-Entwickler"],"startDate":"2022-01-28","endDate":"2022-08-09","keywords":["TypeScript","Netlify","Svelte","SvelteKit","Tailwind"],"description":"Für eine Ferienwohnung auf Norderney habe ich eine Buchungswebsite mit Kalenderintegration umgesetzt. Die Verfügbarkeit einzelner Tage wird in Google Calendar gepflegt und per Google APIs auf der Website synchronisiert.","url":"https://am-meer-norderney.de/","type":"client-platform"},{"id":"systems-development-and-framework","entity":"Hochschule für Technik und Wirtschaft Berlin","name":"Systems-Development and Framework","engagement":"freelance","codeVisibility":"open-source","roles":["Lehrbeauftragter"],"startDate":"2019-10-31","endDate":"2021-03-31","keywords":["JavaScript","Vue","Apollo GraphQL","Neo4J","Nuxt","Vuetify","Tailwind"],"description":"Ich habe eine Master-Vorlesung zur Full-Stack-Entwicklung mit rund 40 Studierenden vollständig verantwortet, inklusive Curriculum, Lehre und Benotung. Inhalte waren unter anderem funktionale Programmierung, fortgeschrittenes Git, testgetriebene Entwicklung und Code Reviews auf GitHub. Alle Vorlesungen sind öffentlich auf YouTube verfügbar.","url":"https://www.youtube.com/watch?v=-cuzwDjdowo&list=PL1CiawkXA01PO_39DnKSrxWw99mU7mwWs","links":[{"label":"GitHub","url":"https://github.com/systems-development-and-frameworks","kind":"repository"},{"label":"YouTube Playlist","url":"https://www.youtube.com/playlist?list=PL1CiawkXA01PO_39DnKSrxWw99mU7mwWs","kind":"playlist"}],"location":"Berlin, Germany","type":"course"},{"id":"open-source-social-network","name":"Community-betriebenes soziales Netzwerk (Open Source)","entity":"busfaktor e.V.","engagement":"freelance","codeVisibility":"open-source","roles":["Technischer Leiter"],"startDate":"2018-11-30","endDate":"2020-04-30","keywords":["JavaScript","Jest","Vue","Nuxt","Storybook","Cypress","Apollo GraphQL","Neo4J","Docker","Digital Ocean","Kubernetes"],"url":"https://github.com/Ocelot-Social-Community/Ocelot-Social","description":"Bei diesem gemeinschaftlich entwickelten Open-Source-Sozialnetzwerk, das Communities eine datenschutzfreundliche Alternative zu großen Plattformen bietet, habe ich als Technical Lead an Produktarchitektur, GraphQL-APIs, produktivem Neo4J-Einsatz und Kubernetes-Betrieb gearbeitet. Das Projekt wuchs auf rund 80 Code-Contributors auf GitHub; ich habe neue Mitwirkende über GitHub, Discord und Online-Pair-Programming onboardet, direkt betreut und den Großteil der Beiträge reviewed. Neo4J haben wir produktiv als Primärdatenbank eingesetzt, um den sozialen Graphen des Netzwerks direkt im Datenmodell abzubilden.","links":[{"label":"Staging","url":"https://stage.ocelot.social","kind":"demo"}],"type":"product"},{"id":"find-open-source-contributors-vuejs-berlin","name":"Find open-source contributors in online learner communities","entity":"Vue.js Berlin Meetup","engagement":"community","startDate":"2020-01-14","endDate":"2020-01-14","roles":["Referent"],"url":"https://www.youtube.com/watch?v=p5iMjfVCXBY","type":"presentation"},{"id":"neo4j-graphql-human-connection","name":"Using Neo4J and GraphQL to build Human Connection","entity":"Neo4J Online Meetup","engagement":"community","startDate":"2019-06-20","endDate":"2019-06-20","roles":["Referent"],"url":"https://www.youtube.com/watch?v=kGwGX6R70H4","type":"presentation"},{"id":"sensor-storytelling-bees","entity":"tactile.news GmbH","name":"Automatisiertes Sensor-Storytelling-Format (Bienen)","engagement":"freelance","codeVisibility":"closed-source","roles":["Full-Stack-Entwickler"],"startDate":"2019-03-31","endDate":"2019-05-31","keywords":["Ruby","Ruby on Rails","RSpec","Cucumber"],"description":"Aufbauend auf einem früheren journalistischen Sensor-Projekt haben wir die Plattform für ein neues Format wiederverwendet und erweitert. Berichte wurden automatisiert aus Sensordaten von drei Bienenvölkern erzeugt. Das Projekt wurde für den Grimme Online Award nominiert und mit dem Deutschen Reporterpreis ausgezeichnet.","url":"https://tactile.news/startseite/journalismus-der-dinge/bienenlive/","type":"product"},{"id":"rundfunk-mitbestimmen-project","name":"Rundfunk mitbestimmen","roles":["Gründer"],"startDate":"2016-08-31","endDate":"2019-03-31","keywords":["Ember","Ruby on Rails","Auth0","D3","Highcharts","Uberspace","PostgreSQL"],"description":"\"Rundfunk mitbestimmen\" ist ein Civic-Tech-Projekt zur symbolischen Mitbestimmung über die Verwendung des Rundfunkbeitrags. Nutzerinnen und Nutzer können Beiträge einzelnen Programmen zuordnen. Das Projekt wurde unter anderem von Zeit Online, Netzpolitik.org, Deutschlandfunk und RBB aufgegriffen.","links":[{"label":"Zeit Online","url":"https://www.zeit.de/campus/2017-09/z2x-festival-zehn-beste-projekte/seite-2","kind":"press"},{"label":"Netzpolitik.org","url":"https://netzpolitik.org/2017/neues-aus-dem-fernsehrat-6-ein-gespraech-ueber-rundfunk-mitbestimmen-de/","kind":"press"},{"label":"Deutschlandfunk","url":"https://www.deutschlandfunk.de/oeffentlich-rechtlicher-rundfunk-mehr-direkte-demokratie-100.html","kind":"press"},{"label":"RBB","url":"https://www.wwwagner.tv/?p=36200","kind":"press"}],"type":"civic-tech"},{"id":"find-open-source-contributors-35c3","name":"Find open-source contributors in online learner communities","entity":"35th Chaos Communication Congress","startDate":"2018-12-30","endDate":"2018-12-30","roles":["Referent"],"url":"https://media.ccc.de/v/35c3-9568-lightning_talks_day_4#t=1147","type":"presentation"},{"id":"human-connection-35c3","name":"Human Connection","entity":"35th Chaos Communication Congress","startDate":"2018-12-29","endDate":"2018-12-29","roles":["Referent"],"url":"https://media.ccc.de/v/35c3-9567-lightning_talks_day_3#t=5180","type":"presentation"},{"id":"rubies-in-the-woods","name":"Rubies in the woods","entity":"MIZ Babelsberg","roles":["Programmier-Mentor"],"startDate":"2015-09-30","endDate":"2018-11-30","keywords":["Ruby"],"description":"Mentoring einer einsteigerfreundlichen Programmiergruppe mit wöchentlichen Treffen und Fokus auf Diversität und niedrigschwelligen Einstieg ins Programmieren.","url":"https://www.facebook.com/watch?v=1342132595875337","location":"Potsdam, Brandenburg, Germany","type":"mentoring"},{"id":"custom-cms-platform","name":"Individuelle CMS-Entwicklung","entity":"Solutiance AG","roles":["Full-Stack-Entwickler"],"startDate":"2018-04-30","endDate":"2018-06-30","keywords":["Wordpress","PHP","Docker"],"description":"Individuelle CMS-Entwicklung für die Unternehmenswebsite mit Schwerpunkt auf Pflegebarkeit und Suchmaschinenoptimierung.","url":"https://solutiance.com/","type":"client-platform"},{"id":"informatikradar-1","name":"Informatikradar #1","entity":"Gesellschaft für Informatik","startDate":"2018-05-04","endDate":"2018-05-04","roles":["Referent"],"url":"https://www.youtube.com/watch?v=fzTmJBo4R5A","type":"presentation"},{"id":"smart-mirror-prototype","name":"IoT-Prototyp: smarter Badezimmerspiegel","entity":"tactile.news GmbH","roles":["IoT-Entwickler"],"startDate":"2018-01-01","endDate":"2018-01-31","keywords":["Python","JavaScript","MQTT"],"description":"Schneller IoT-Prototyp eines smarten Badezimmerspiegels und Schranks auf Basis von Raspberry Pis, Arduinos und MQTT.","location":"Lunenburg, Lower Saxony, Germany","type":"prototype"},{"id":"story-trolley-ember-meets-iot","name":"Story-Trolley: Ember meets the IoT","description":"Wie man mit Ember einen smarten Einkaufswagen baut.","entity":"Ember.js Meetup Berlin","startDate":"2018-01-19","endDate":"2018-01-19","roles":["Referent"],"url":"https://www.youtube.com/watch?v=oWNqLev23AQ&list=PL1CiawkXA01NeLHG2QNHmtACrb_brDodm","type":"presentation"},{"id":"rundfunk-mitbestimmen-34c3","name":"Rundfunk mitbestimmen","entity":"34th Chaos Communication Congress","startDate":"2017-12-30","endDate":"2017-12-30","roles":["Referent"],"url":"https://media.ccc.de/v/34c3-9258-lightning_talks_day_4#t=1352","type":"presentation","description":"\"Rundfunk mitbestimmen\" ist ein Werkzeug, das öffentliche Beteiligung an der Verwendung des Rundfunkbeitrags ermöglichen soll. Beitragszahlende können ihr Geld symbolisch einzelnen Programmen zuweisen. Das Projekt wurde unter anderem von Zeit Online, Netzpolitik.org, Deutschlandfunk und RBB aufgegriffen.","links":[{"label":"Zeit Online","url":"https://www.zeit.de/campus/2017-09/z2x-festival-zehn-beste-projekte/seite-2","kind":"press"},{"label":"Netzpolitik.org","url":"https://netzpolitik.org/2017/neues-aus-dem-fernsehrat-6-ein-gespraech-ueber-rundfunk-mitbestimmen-de/","kind":"press"},{"label":"Deutschlandfunk","url":"https://www.deutschlandfunk.de/oeffentlich-rechtlicher-rundfunk-mehr-direkte-demokratie-100.html","kind":"press"},{"label":"RBB","url":"https://www.wwwagner.tv/?p=36200","kind":"press"}]},{"id":"gez-scrap-it-or-pay-it","name":"GEZ - scrap it or pay it?","entity":"University Meetup Group \"Bremer Gesellschaft\"","startDate":"2017-12-19","endDate":"2017-12-19","roles":["Referent"],"url":"https://www.facebook.com/events/732304050294246/","type":"presentation"},{"id":"sensor-storytelling-dairy-cows","name":"Automatisiertes Sensor-Storytelling-Format (Milchkühe)","entity":"tactile.news GmbH","roles":["Full-Stack-Entwickler"],"startDate":"2016-05-31","endDate":"2017-10-31","keywords":["Ruby on Rails","Ruby","RSpec","Cucumber"],"description":"Für WDR und Spiegel Online entwickelten wir ein journalistisches Format, das Berichte automatisiert aus Sensordaten von drei Milchkühen erzeugte. Das Projekt erhielt große mediale Aufmerksamkeit mit mehr als 63 Berichten und Features.","url":"https://superkuehe.wdr.de/","links":[{"label":"WDR","url":"https://www1.wdr.de/unternehmen/der-wdr/unternehmen/superkuehe-114.html","kind":"press"},{"label":"Spiegel Online","url":"https://www.spiegel.de/netzwelt/web/superkuehe-sensorjournalismus-mit-milchkuehen-a-1165241.html","kind":"press"},{"label":"63 Berichte und Features","url":"https://superkuehe.wdr.de/zum-projekt/meinung/","kind":"press"}]},{"id":"coding-in-the-woods","name":"Coding In The Woods","description":"Einführung ins Programmieren mit Rails.","entity":"Codemotion Berlin 2017","startDate":"2017-10-12","endDate":"2017-10-12","roles":["Referent"],"url":"https://berlin2017.codemotionworld.com/speaker/3623/","type":"presentation"},{"id":"how-to-enjoy-paying-for-public-broadcasting","name":"How to enjoy paying for public broadcasting","description":"Ask-me-anything-Session auf dem Festival für junge Visionäre.","entity":"Z2X Festival - Die Zeit","startDate":"2017-09-04","endDate":"2017-09-04","roles":["Referent"],"url":"https://www.zeit.de/campus/2017-09/z2x-festival-zehn-beste-projekte/seite-2","type":"presentation"},{"id":"smart-shopping-cart-prototype","name":"IoT-Prototyp: smarter Einkaufswagen","entity":"tactile.news GmbH","roles":["IoT-Entwickler"],"startDate":"2017-06-01","endDate":"2017-06-30","keywords":["Ember","Python"],"description":"Schneller IoT-Prototyp eines smarten Einkaufswagens.","url":"https://www.facebook.com/watch?v=746195418906331","type":"prototype"},{"id":"rundfunk-mitbestimmen-nerd-nite-17","name":"Rundfunk mitbestimmen","entity":"Nerd Nite Berlin #17","startDate":"2017-06-16","endDate":"2017-06-16","roles":["Referent"],"url":"https://www.youtube.com/watch?v=3BmdDEuW-ZA","type":"presentation","description":"\"Rundfunk mitbestimmen\" ist ein Werkzeug, das öffentliche Beteiligung an der Verwendung des Rundfunkbeitrags ermöglichen soll. Beitragszahlende können ihr Geld symbolisch einzelnen Programmen zuweisen. Das Projekt wurde unter anderem von Zeit Online, Netzpolitik.org, Deutschlandfunk und RBB aufgegriffen.","links":[{"label":"Zeit Online","url":"https://www.zeit.de/campus/2017-09/z2x-festival-zehn-beste-projekte/seite-2","kind":"press"},{"label":"Netzpolitik.org","url":"https://netzpolitik.org/2017/neues-aus-dem-fernsehrat-6-ein-gespraech-ueber-rundfunk-mitbestimmen-de/","kind":"press"},{"label":"Deutschlandfunk","url":"https://www.deutschlandfunk.de/oeffentlich-rechtlicher-rundfunk-mehr-direkte-demokratie-100.html","kind":"press"},{"label":"RBB","url":"https://www.wwwagner.tv/?p=36200","kind":"press"}]},{"id":"why-do-i-have-to-pay-and-dont-get-a-say","name":"Why do I have to pay and don't get a say?","description":"Den öffentlich-rechtlichen Rundfunk demokratisieren.","entity":"OpenTechSummit 2017","startDate":"2017-05-25","endDate":"2017-05-25","roles":["Referent"],"url":"https://www.youtube.com/watch?v=mr_9iNma0pI&list=PL1CiawkXA01PaCTnImLLqbrcbJmf7Xssv","type":"presentation"},{"id":"miz-rapid-fire-pitch","name":"MIZ Rapid Fire Pitch","description":"SensorStory (Best Practices)","entity":"re:publica 2017 - Love Out Loud","startDate":"2017-05-09","endDate":"2017-05-09","roles":["Referent"],"url":"https://www.youtube.com/watch?v=GKKaVHjxJII&t=358s","type":"presentation"},{"id":"ember-rails-capybara","name":"Ember.js + Rails + Capybara = ♥️","entity":"Ember.js Meetup Berlin","startDate":"2017-03-10","endDate":"2017-03-10","roles":["Referent"],"url":"https://www.youtube.com/watch?v=xSukVhdX0DI&list=PL1CiawkXA01N8PRcrZ4UlFJRT8Bx9gDOp","type":"presentation"},{"id":"rundfunk-mitbestimmen-swift-meetup","name":"Rundfunk mitbestimmen","entity":"Swift Meetup Berlin","startDate":"2016-11-14","endDate":"2016-11-14","roles":["Referent"],"url":"https://www.youtube.com/watch?v=8TyViNgmeSQ","type":"presentation","description":"\"Rundfunk mitbestimmen\" ist ein Werkzeug, das öffentliche Beteiligung an der Verwendung des Rundfunkbeitrags ermöglichen soll. Beitragszahlende können ihr Geld symbolisch einzelnen Programmen zuweisen. Das Projekt wurde unter anderem von Zeit Online, Netzpolitik.org, Deutschlandfunk und RBB aufgegriffen.","links":[{"label":"Zeit Online","url":"https://www.zeit.de/campus/2017-09/z2x-festival-zehn-beste-projekte/seite-2","kind":"press"},{"label":"Netzpolitik.org","url":"https://netzpolitik.org/2017/neues-aus-dem-fernsehrat-6-ein-gespraech-ueber-rundfunk-mitbestimmen-de/","kind":"press"},{"label":"Deutschlandfunk","url":"https://www.deutschlandfunk.de/oeffentlich-rechtlicher-rundfunk-mehr-direkte-demokratie-100.html","kind":"press"},{"label":"RBB","url":"https://www.wwwagner.tv/?p=36200","kind":"press"}]},{"id":"rundfunk-mitbestimmen-hpi-hack-and-tell","name":"Rundfunk mitbestimmen","entity":"HPI Hack'n Tell","startDate":"2016-10-26","endDate":"2016-10-26","roles":["Referent"],"url":"https://www.youtube.com/watch?v=JxnWeyYFwUw","type":"presentation","description":"\"Rundfunk mitbestimmen\" ist ein Werkzeug, das öffentliche Beteiligung an der Verwendung des Rundfunkbeitrags ermöglichen soll. Beitragszahlende können ihr Geld symbolisch einzelnen Programmen zuweisen. Das Projekt wurde unter anderem von Zeit Online, Netzpolitik.org, Deutschlandfunk und RBB aufgegriffen.","links":[{"label":"Zeit Online","url":"https://www.zeit.de/campus/2017-09/z2x-festival-zehn-beste-projekte/seite-2","kind":"press"},{"label":"Netzpolitik.org","url":"https://netzpolitik.org/2017/neues-aus-dem-fernsehrat-6-ein-gespraech-ueber-rundfunk-mitbestimmen-de/","kind":"press"},{"label":"Deutschlandfunk","url":"https://www.deutschlandfunk.de/oeffentlich-rechtlicher-rundfunk-mehr-direkte-demokratie-100.html","kind":"press"},{"label":"RBB","url":"https://www.wwwagner.tv/?p=36200","kind":"press"}]},{"id":"protothon","name":"Protothon","entity":"MIZ Babelsberg","roles":["Hackathon-Coach"],"startDate":"2015-08-31","endDate":"2016-09-30","keywords":["JavaScript"],"description":"","url":"https://www.miz-babelsberg.de/startseite.html","location":"Potsdam, Brandenburg, Germany"},{"id":"ursuppe","name":"#ursuppe","entity":"MIZ Babelsberg","roles":["Hackathon-Coach"],"startDate":"2015-08-01","endDate":"2015-08-31","description":"Coachte das Team hinter #ursuppe, einem IoT-Prototyp, der automatisiert einen journalistischen Live-Bericht aus einem biologischen Experiment mit Urzeitkrebsen erzeugte. Gewinner des MIZ Formatfestivals 2015.","url":"https://www.youtube.com/watch?v=-H9aFNUXvvA","location":"Potsdam, Brandenburg, Germany","type":"prototype"},{"id":"supply-chain-risk-research","name":"Automated Risk Analysis in Supply Chains","entity":"SAP","roles":["Forschungspraktikant"],"startDate":"2013-10-01","endDate":"2013-11-30","description":"Werkzeugentwicklung zur automatisierten Risikoanalyse in Lieferketten auf Basis einer bestehenden Legacy-Codebasis.","url":"https://www.sap.com/","location":"Belfast, United Kingdom","type":"research"},{"id":"sports-association-webapp","entity":"OXON AG","name":"Webanwendung für Sportverbände","roles":["Full-Stack-Entwickler"],"startDate":"2013-04-01","endDate":"2013-09-30","keywords":["Ruby","Ruby on Rails","RSpec","Cucumber","PostgreSQL"],"description":"Bei dieser Webanwendung für Funktionäre, Schiedsrichter und Trainer war ich der erste Entwickler, der eine automatisierte Testumgebung eingeführt hat.","url":"https://clubcorner.ch/","location":"Bern, Switzerland","type":"product"},{"id":"enterprise-programming-models-in-memory-databases","name":"Enterprise programming models for in-memory databases","entity":"Hasso Plattner Institute","roles":["Wissenschaftlicher Mitarbeiter"],"startDate":"2012-01-31","endDate":"2012-08-31","keywords":["Java"],"description":"Implementierung eines Geschäftsprozesses und einer Webanwendung, die SAP als Use Case für die HANA-In-Memory-Datenbank spezifiziert hat.","url":"https://hpi.de/","type":"research"}],"skills":[{"name":"TypeScript","level":"Langjährige Erfahrung","keywords":["6 Jahre, 5 Monate","10 Projekte","aktuell im Einsatz"]},{"name":"Docker","level":"Langjährige Erfahrung","keywords":["8 Jahre","6 Projekte","aktuell im Einsatz"]},{"name":"Vue","level":"Langjährige Erfahrung","keywords":["7 Jahre, 1 Monat","6 Projekte","aktuell im Einsatz"]},{"name":"Ruby","level":"Langjährige Erfahrung","keywords":["9 Jahre, 2 Monate","5 Projekte","zuletzt Apr. 2025"]},{"name":"Tailwind","level":"Langjährige Erfahrung","keywords":["5 Jahre, 4 Monate","7 Projekte","aktuell im Einsatz"]},{"name":"Ruby on Rails","level":"Langjährige Erfahrung","keywords":["8 Jahre, 9 Monate","5 Projekte","zuletzt Apr. 2025"]},{"name":"Nuxt","level":"Langjährige Erfahrung","keywords":["6 Jahre","4 Projekte","aktuell im Einsatz"]},{"name":"RSpec","level":"Langjährige Erfahrung","keywords":["7 Jahre, 5 Monate","4 Projekte","zuletzt Apr. 2025"]},{"name":"PostgreSQL","level":"Souveräne Nutzung","keywords":["4 Jahre, 8 Monate","4 Projekte","aktuell im Einsatz"]},{"name":"Netlify","level":"Souveräne Nutzung","keywords":["3 Jahre, 4 Monate","6 Projekte","aktuell im Einsatz"]},{"name":"Sentry","level":"Souveräne Nutzung","keywords":["5 Jahre, 7 Monate","2 Projekte","aktuell im Einsatz"]},{"name":"Apollo GraphQL","level":"Langjährige Erfahrung","keywords":["5 Jahre, 10 Monate","4 Projekte","zuletzt Juni 2025"]},{"name":"Cucumber","level":"Souveräne Nutzung","keywords":["3 Jahre, 8 Monate","4 Projekte","aktuell im Einsatz"]},{"name":"Svelte","level":"Souveräne Nutzung","keywords":["2 Jahre, 7 Monate","5 Projekte","aktuell im Einsatz"]},{"name":"SvelteKit","level":"Souveräne Nutzung","keywords":["2 Jahre, 7 Monate","5 Projekte","aktuell im Einsatz"]},{"name":"Digital Ocean","level":"Souveräne Nutzung","keywords":["6 Jahre, 6 Monate","2 Projekte","zuletzt Apr. 2025"]},{"name":"Jest","level":"Souveräne Nutzung","keywords":["4 Jahre, 11 Monate","3 Projekte","zuletzt Juni 2025"]},{"name":"Terraform","level":"Souveräne Nutzung","keywords":["2 Jahre, 2 Monate","2 Projekte","aktuell im Einsatz"]},{"name":"Playwright","level":"Praxiserfahrung","keywords":["1 Jahr, 5 Monate","3 Projekte","aktuell im Einsatz"]},{"name":"Ansible","level":"Praxiserfahrung","keywords":["5 Jahre, 2 Monate","1 Projekt","zuletzt Apr. 2025"]},{"name":"Postmark","level":"Praxiserfahrung","keywords":["5 Jahre, 2 Monate","1 Projekt","zuletzt Apr. 2025"]},{"name":"Stimulus","level":"Praxiserfahrung","keywords":["5 Jahre, 2 Monate","1 Projekt","zuletzt Apr. 2025"]},{"name":"Serverless","level":"Souveräne Nutzung","keywords":["2 Jahre","2 Projekte","aktuell im Einsatz"]},{"name":"Auth0","level":"Souveräne Nutzung","keywords":["5 Jahre","2 Projekte","zuletzt Sept. 2023"]},{"name":"JavaScript","level":"Grundkenntnisse","keywords":["3 Jahre, 8 Monate","4 Projekte","zuletzt März 2021"]},{"name":"AWS","level":"Praxiserfahrung","keywords":["1 Jahr, 5 Monate","1 Projekt","aktuell im Einsatz"]},{"name":"Fly.io","level":"Praxiserfahrung","keywords":["1 Jahr, 5 Monate","1 Projekt","aktuell im Einsatz"]},{"name":"NINA","level":"Praxiserfahrung","keywords":["1 Jahr, 5 Monate","1 Projekt","aktuell im Einsatz"]},{"name":"Tailscale","level":"Praxiserfahrung","keywords":["1 Jahr, 5 Monate","1 Projekt","aktuell im Einsatz"]},{"name":"Kubernetes","level":"Souveräne Nutzung","keywords":["2 Jahre, 7 Monate","2 Projekte","zuletzt Juni 2025"]},{"name":"Vuetify","level":"Souveräne Nutzung","keywords":["2 Jahre, 7 Monate","2 Projekte","zuletzt Juni 2025"]},{"name":"Vitest","level":"Praxiserfahrung","keywords":["5 Monate","2 Projekte","aktuell im Einsatz"]},{"name":"Better Auth","level":"Praxiserfahrung","keywords":["5 Monate","1 Projekt","aktuell im Einsatz"]},{"name":"Drizzle ORM","level":"Praxiserfahrung","keywords":["5 Monate","1 Projekt","aktuell im Einsatz"]},{"name":"ElevenLabs","level":"Praxiserfahrung","keywords":["5 Monate","1 Projekt","aktuell im Einsatz"]},{"name":"Infisical","level":"Praxiserfahrung","keywords":["5 Monate","1 Projekt","aktuell im Einsatz"]},{"name":"Neon DB","level":"Praxiserfahrung","keywords":["5 Monate","1 Projekt","aktuell im Einsatz"]},{"name":"Paraglide","level":"Praxiserfahrung","keywords":["5 Monate","1 Projekt","aktuell im Einsatz"]},{"name":"Typst","level":"Praxiserfahrung","keywords":["5 Monate","1 Projekt","aktuell im Einsatz"]},{"name":"HyGraph","level":"Souveräne Nutzung","keywords":["2 Jahre, 11 Monate","2 Projekte","zuletzt Juni 2023"]},{"name":"Ember","level":"Grundkenntnisse","keywords":["2 Jahre, 8 Monate","2 Projekte","zuletzt März 2019"]},{"name":"Neo4J","level":"Grundkenntnisse","keywords":["2 Jahre, 5 Monate","2 Projekte","zuletzt März 2021"]},{"name":"Authentik","level":"Praxiserfahrung","keywords":["1 Jahr, 1 Monat","1 Projekt","zuletzt Juni 2025"]},{"name":"Helm","level":"Praxiserfahrung","keywords":["1 Jahr, 1 Monat","1 Projekt","zuletzt Juni 2025"]},{"name":"Hetzner","level":"Praxiserfahrung","keywords":["1 Jahr, 1 Monat","1 Projekt","zuletzt Juni 2025"]},{"name":"Vike","level":"Praxiserfahrung","keywords":["1 Jahr, 1 Monat","1 Projekt","zuletzt Juni 2025"]},{"name":"D3","level":"Grundkenntnisse","keywords":["2 Jahre, 8 Monate","1 Projekt","zuletzt März 2019"]},{"name":"Highcharts","level":"Grundkenntnisse","keywords":["2 Jahre, 8 Monate","1 Projekt","zuletzt März 2019"]},{"name":"Uberspace","level":"Grundkenntnisse","keywords":["2 Jahre, 8 Monate","1 Projekt","zuletzt März 2019"]},{"name":"Google Cloud","level":"Praxiserfahrung","keywords":["2 Jahre, 4 Monate","1 Projekt","zuletzt Sept. 2023"]},{"name":"Hasura","level":"Praxiserfahrung","keywords":["2 Jahre, 4 Monate","1 Projekt","zuletzt Sept. 2023"]},{"name":"Testing-Library","level":"Praxiserfahrung","keywords":["2 Jahre, 4 Monate","1 Projekt","zuletzt Sept. 2023"]},{"name":"Vercel","level":"Praxiserfahrung","keywords":["2 Jahre, 4 Monate","1 Projekt","zuletzt Sept. 2023"]},{"name":"Cypress","level":"Grundkenntnisse","keywords":["1 Jahr, 6 Monate","1 Projekt","zuletzt Apr. 2020"]},{"name":"Storybook","level":"Grundkenntnisse","keywords":["1 Jahr, 6 Monate","1 Projekt","zuletzt Apr. 2020"]},{"name":"Python","level":"Grundkenntnisse","keywords":["2 Monate","2 Projekte","zuletzt Jan. 2018"]},{"name":"Java","level":"Grundkenntnisse","keywords":["8 Monate","1 Projekt","zuletzt Aug. 2012"]},{"name":"PHP","level":"Grundkenntnisse","keywords":["3 Monate","1 Projekt","zuletzt Juni 2018"]},{"name":"Wordpress","level":"Grundkenntnisse","keywords":["3 Monate","1 Projekt","zuletzt Juni 2018"]},{"name":"MQTT","level":"Grundkenntnisse","keywords":["1 Monat","1 Projekt","zuletzt Jan. 2018"]}]}