<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
        <title>OpenDataLab Blog</title>
        <description>Offene Daten und Software Hacking</description>
        <link>http://blog.opendatalab.de/rss.xml</link>
        <lastBuildDate>Wed, 23 May 2018 13:34:24 +0200</lastBuildDate>
        <pubDate>Wed, 23 May 2018 13:34:24 +0200</pubDate>
        <ttl>1800</ttl>


	
		  










	

        <item>
                <title>Open Data Day</title>
                <description>&lt;p&gt;Am diesjährigen Open Data Day feiern wir mit Code for Heilbronn den 3. Geburtstag sowie den ersten Besuch der Open Data Beauftragten der Stadt, die auch erste &lt;a href=&quot;https://github.com/opendata-heilbronn/daten-stadt-heilbronn&quot;&gt;offene Daten der Stadt Heilbronn&lt;/a&gt; im Gepäck hatte. Daneben konnten wir auf &lt;a href=&quot;https://github.com/dahilzen/Datensaetze-OpenDataDay17&quot;&gt;Daten von David Hilzendegen (HN Stimme)&lt;/a&gt; zurückgreifen.&lt;/p&gt;

&lt;p&gt;Auf dieser Grundlage ist einiges entstanden. Über 20 Teilnehmer haben an insgesamt 9 Projekten mitgewirkt. Fast alle Datensätze, die erstmals bereitgestellt wurden, wurden auch direkt verwendet.&lt;/p&gt;

&lt;p&gt;Alle Projekte zum Nachlesen:&lt;/p&gt;

&lt;p&gt;&lt;a class=&quot;twitter-timeline&quot; data-partner=&quot;tweetdeck&quot; href=&quot;https://twitter.com/codeforhn/timelines/838438774711398400&quot;&gt;Open Data Day 2017 HN - Curated tweets by codeforhn&lt;/a&gt; &lt;script async=&quot;&quot; src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/opendata/2017/03/04/open-data-day</link>
                <guid>http://blog.opendatalab.de/opendata/2017/03/04/open-data-day</guid>
                <pubDate>Sat, 04 Mar 2017 00:00:00 +0100</pubDate>
				<dc:creator>Felix Ebert</dc:creator>
        </item>

	
		  










	

        <item>
                <title>Open Data in Heilbronn - es tut sich was!</title>
                <description>&lt;p&gt;Am 26.01.2017 wurde im Gemeinderat Heilbronn einstimmig ein &lt;a href=&quot;https://gemeinderat.stadt-heilbronn.de/Drucksachen/2017/Gemeinderat/2601_2016/_files/Drucks_018.pdf&quot;&gt;Antrag der SPD&lt;/a&gt; zur Förderung von Open Data angenommen.
Die Heilbronner Stimme berichtet über die &lt;a href=&quot;http://www.stimme.de/heilbronn/nachrichten/stadt/hn/hn/Neue-Wege-im-Umgang-mit-Daten;art132095,3787733&quot;&gt;neuen Wege im Umgang mit Open Data&lt;/a&gt;. Es bewegt sich also etwas in Heilbronn beim Thema Open Data!&lt;/p&gt;

&lt;p&gt;Zitat aus dem Antrag:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Die Verwaltung bestimmt einen festen Ansprechpartner für Aktive im Bereich Open Data und
  Datenjournalisten möglichst bei der Stabsstelle Strategie.&lt;/p&gt;

  &lt;p&gt;Die Verwaltung erarbeitet eine Strategie, wie mit diesem Thema bei der Stadtverwaltung umgegangen
  werden soll, insbesondere was die Herausgabe von (öffentlichen) Daten angeht.&lt;/p&gt;

  &lt;p&gt;Die Verwaltung richtet auf der städtischen Homepage einen Open-Data-Bereich ein, der sich am
  entsprechenden Portal des Landes Baden-Württemberg orientiert. Dort sollen Daten, die veröffentlicht
  werden können, barrierefrei zugänglich sein. Ebenso soll auf Projekte wie Apps verwiesen
  werden, die mit diesen Daten erstellt wurden.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ein konkreter Zeitplan wurde noch nicht genannt. Wir freuen uns aber sehr, dass von diesem Antrag ein klares Signal ausgeht: Open Data ist seitens der Stadträte ein erwünschtes Ziel.&lt;/p&gt;

&lt;p&gt;Die Verwaltung hat zudem auf Bitte der SPD zugesagt, vor der Verabschiedung der Open Data Strategie eine Veranstaltung mit der Open Data Community zu veranstalten, um Anregungen einzuholen.&lt;/p&gt;

&lt;p&gt;Mit Code for Heilbronn haben wir durch die Organisation von &lt;a href=&quot;http://blog.opendatalab.de/opendata/2015/06/23/open-data-kickoff&quot;&gt;Infoabenden&lt;/a&gt; und der Vorstellung des Themas bei 3 Fraktionssitzungen einen Teil dazu beigetragen. Unterstützt wurden wir insbesondere von &lt;a href=&quot;http://www.i-pol.com/&quot;&gt;Mark Siller / iPOL&lt;/a&gt; sowie der Stadträtin Tanja Sagasser (SPD) und dem Stadtrat Thomas Aurich (CDU). Wir hoffen, dass sich nun ein engerer Kontakt mit der Verwaltung entwickelt und sich ein Kulturwandel vollzieht.&lt;/p&gt;

&lt;h2 id=&quot;open-data-day&quot;&gt;Open Data Day&lt;/h2&gt;

&lt;p&gt;Als nächstes laden wir zum &lt;a href=&quot;https://www.meetup.com/de-DE/codeforhn/events/237046362/&quot;&gt;Open Data Day am 04. März 2017&lt;/a&gt; ein. An diesem Tag werden Ideen vorgestellt, Teams gebildet und gemeinsam Anwendungen mit offenen Daten erstellt.&lt;/p&gt;

&lt;p&gt;Einen Fokus legen wir dieses Jahr auf &lt;a href=&quot;http://luftdaten.info/&quot;&gt;Feinstaubsensoren&lt;/a&gt; und Trinkwasserdaten. Wir bemühen uns zudem, neue Datensätze von der Stadt zu erhalten.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;object data=&quot;/assets/OpenDataDay2017.pdf&quot; type=&quot;application/pdf&quot; width=&quot;100%&quot; height=&quot;800px&quot;&gt; 
  &lt;p&gt;&lt;a href=&quot;/assets/OpenDataDay2017.pdf&quot;&gt;mehr Informationen im Open Data Day Flyer&lt;/a&gt;&lt;/p&gt;  
 &lt;/object&gt;
</description>
                <link>http://blog.opendatalab.de/opendata/2017/01/31/open-data-heilbronn</link>
                <guid>http://blog.opendatalab.de/opendata/2017/01/31/open-data-heilbronn</guid>
                <pubDate>Tue, 31 Jan 2017 00:00:00 +0100</pubDate>
				<dc:creator>Felix Ebert</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Einrichtung der Arduino IDE mit dem NodeMCU/ESP8266 Board</title>
                <description>&lt;p&gt;Bei unseren &lt;a href=&quot;https://meetup.com/codeforhn/&quot;&gt;Workshops und Coding Abenden&lt;/a&gt; mit dem NodeMCU Board und der Arduino IDE haben wir in letzter Zeit viele Erfahrungen gesammelt,
die ich hier im Blogpost zusammenfassen möchte.&lt;/p&gt;

&lt;p&gt;Uns sind bisher zwei verschiedene NodeMCU Boards begegnet, die auch deutlich unterschiedliche Größen haben. 
Das größere Board wird dabei mit einem CH340 Chip für die USB Schnitstelle ausgeliefert. Das kleinere Board kommt
mit einem Silicon Labs CP210x Chip. Je nachdem, welches Board man hat muss man natürlich den 
entsprechenden Treiber installieren.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/hardware/nodemcu_compare1.jpg&quot; alt=&quot;NodeMcu&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Den Treiber für den CP210x findet man ganz leicht auf der &lt;a href=&quot;https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx&quot;&gt;Seite von Silicon Labs&lt;/a&gt;.
Da die Seite des Herstellers vom CH340 Chip leider auf chinesisch ist, 
haben bereits &lt;a href=&quot;http://kig.re/2014/12/31/how-to-use-arduino-nano-mini-pro-with-CH340G-on-mac-osx-yosemite.html&quot;&gt;andere entsprechende Installationsanweisungen&lt;/a&gt; 
geschrieben, auf die hier nur verlinkt wird. 
Installiert man den richtigen Treiber, dann erscheint nach dem Anschließen des Boards per USB Kabel unter Windows 
im Geräte-Manager eine neue COM-Schnitstelle. Unter Mac OS und unter Linux ist dann ein entsprechendes Device ist der
Liste zu finden.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/hardware/nodemcu_compare2.jpg&quot; alt=&quot;NodeMcu&quot; /&gt;&lt;/p&gt;

&lt;iframe style=&quot;width:120px;height:240px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;amp;OneJS=1&amp;amp;Operation=GetAdHtml&amp;amp;MarketPlace=DE&amp;amp;source=ss&amp;amp;ref=as_ss_li_til&amp;amp;ad_type=product_link&amp;amp;tracking_id=gebasoftblog-21&amp;amp;marketplace=amazon&amp;amp;region=DE&amp;amp;placement=B018E741G4&amp;amp;asins=B018E741G4&amp;amp;linkId=f05a2a775aca5443a4fe603b2a86a600&amp;amp;show_border=true&amp;amp;link_opens_in_new_window=true&quot;&gt;&lt;/iframe&gt;
&lt;iframe style=&quot;width:120px;height:240px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;amp;OneJS=1&amp;amp;Operation=GetAdHtml&amp;amp;MarketPlace=DE&amp;amp;source=ss&amp;amp;ref=as_ss_li_til&amp;amp;ad_type=product_link&amp;amp;tracking_id=gebasoftblog-21&amp;amp;marketplace=amazon&amp;amp;region=DE&amp;amp;placement=B01DZZ4YY4&amp;amp;asins=B01DZZ4YY4&amp;amp;linkId=de33548aa77b2522e5063282070c07ff&amp;amp;show_border=true&amp;amp;link_opens_in_new_window=true&quot;&gt;&lt;/iframe&gt;
&lt;iframe style=&quot;width:120px;height:240px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;amp;OneJS=1&amp;amp;Operation=GetAdHtml&amp;amp;MarketPlace=DE&amp;amp;source=ss&amp;amp;ref=as_ss_li_til&amp;amp;ad_type=product_link&amp;amp;tracking_id=gebasoftblog-21&amp;amp;marketplace=amazon&amp;amp;region=DE&amp;amp;placement=B0153406SS&amp;amp;asins=B0153406SS&amp;amp;linkId=7898cd72910d308af174483961e7e09e&amp;amp;show_border=true&amp;amp;link_opens_in_new_window=true&quot;&gt;&lt;/iframe&gt;
&lt;iframe style=&quot;width:120px;height:240px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;amp;OneJS=1&amp;amp;Operation=GetAdHtml&amp;amp;MarketPlace=DE&amp;amp;source=ss&amp;amp;ref=as_ss_li_til&amp;amp;ad_type=product_link&amp;amp;tracking_id=gebasoftblog-21&amp;amp;marketplace=amazon&amp;amp;region=DE&amp;amp;placement=B00P736UEU&amp;amp;asins=B00P736UEU&amp;amp;linkId=d1354513b5b3bce0d8bea9e23af6213a&amp;amp;show_border=true&amp;amp;link_opens_in_new_window=true&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;Ist dieser Schritt bewältigt so kann man jetzt problemslos die &lt;a href=&quot;https://www.arduino.cc/en/Main/Software&quot;&gt;Arudino IDE downloaden&lt;/a&gt;.
Die Arudino IDE ist leider nicht von Haus aus für das NodeMCU konfiguriert, so dass man einen zusätzlichen
Boardmanager installieren muss. Dies geschieht in drei Schritten. Zuerst muss man in den Einstellungen 
eine zusätzliche Boardverwalter-URL angeben. Für den NodeMCU lautet sie wie folgt (bitte in die Zwischenablage kopieren):&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://arduino.esp8266.com/stable/package_esp8266com_index.json&quot;&gt;http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/hardware/arduino_screenshot_config.png&quot; alt=&quot;NodeMcu&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Danach muss man auch das entsprechende Board downloaden. Hierzu geht man auf “Werkzeuge” &amp;gt; “Board …” und wählt in der
Liste die oberste Position “Boardverwalter…” aus. Dort kann man in das Suchfeld “nodemcu” eingeben und es sollte dann
ein “esp8266 by ESP8266 Community” Board auftauchen. Hier genügt ein Klick auf “Installieren” 
und die Boardinformationen werden downgeloadet.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/hardware/arduino_screenshot_boardverwalter.png&quot; alt=&quot;NodeMcu&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Als letzter Schritt muss nur noch das entsprechende Board in der Auswahlliste ausgewählt werden und der entsprechende 
Port eingestellt werden. Beides geschieht wieder in dem Menü “Werkzeuge”, dort dann den Punkt “Board …” auswählen
und dort den Eintrag “NodeMCU 1.0 …” auswählen. Danach nochmals im Menü “Werkzeuge” unter dem Punkt “Port …” den 
richtigen COM-Port auswählen.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/hardware/arduino_screenshot_werkzeuge.png&quot; alt=&quot;NodeMcu&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Danach sollte dem ersten Sketch nichts mehr im Wege stehen, so dass man unter “Datei” &amp;gt; “Beispiele” schnell ein
Beispiel-Sketch z.B. für das Blinken einer LED öffnen kann und mit dem Klick auf den 
“Hochladen” Button (Pfeil nach rechts) das Programm auf den NodeMCU hochspielen kann. Bei dem kleinen Board ist bereits eine 
LED auf dem digital Pin D0 “on-board” gelötet, so das man diese für das Blinken verwenden kann. Bei dem größerem Board
muss man selber eine kleine LED-Schaltung zusammen stecken.&lt;/p&gt;

&lt;p&gt;Hier noch zwei Tipps für die Konfiguration und Verwendung der Arduino IDE&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Schriftgröße erhöhen&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Damit bei 2er oder 3er Teams alle gut am Monitor den Programcode mitverfolgen können lohnt es sich die
 Schriftgröße in den Einstellungen zu erhöhen. Man sollte hier einfach etwas rumexperimentieren. Für mich ist
 die Schriftgröße 16 optimal. Damit kann man den Programmcode noch aus einer Entfernung von 1m einwandfrei lesen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Maximale Uploadgeschwindigkeit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bei der Arbeit mit dem NodeMCU ist uns aufgefallen, dass bei dem Board der Programmcode deutlich langsamer im
Vergleich z.B. zu einem Arduino Nano hochgeladen wird. Ob der kompilierte Code dabei größer ist oder nicht, 
weiß ich nicht, aber nachdem wir etwas mit der Geschwindigkeit der seriellen Schnittstelle experimentiert haben
ging es mit dem Upload deutlich schneller vonstatten. Es lohnt sich also auch hier das Maximum
auszuloten statt jedes Mal einen Upload von 20-30 Sekunden über sich ergehen zu lassen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Vorkonfigurierte Konstanten für die Pins verwenden&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ist der Boardmanager installiert, so sind die Bezeichnungen der digitalen und analogen Pins des NodeMCU als Konstanten verfügbar.
D.h. man kann direkt im Code D0 für den ersten digitalen Pin und A0 für den analogen Pin verwenden. Da die Pin-Bezeichungen
in den vielen Beispiel-Codes den direkten Wert wie 13 oder 10 verwenden und bei dem NodeMCU die Belegung anders ist, lohnt es 
sich kurz den Programmcode anzupassen und die Konstanten zu verwenden.&lt;/p&gt;

&lt;p&gt;Hier ein Beispiel der Arduino IDE in Schriftgröße 16 und mit Verwendung von D0 als Konstante&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/hardware/arduino_screenshot.png&quot; alt=&quot;NodeMcu&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Um das ganze Potenizal des NodeMCUs zu nutzen sollte man das Board mit einem WiFi-Netzwerk verbinden. Wie das geht erkläre ich
in einem separaten Blogpost.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/codeforbuga/2016/07/02/arduino-ide-mit-nodemcu-esp8266</link>
                <guid>http://blog.opendatalab.de/codeforbuga/2016/07/02/arduino-ide-mit-nodemcu-esp8266</guid>
                <pubDate>Sat, 02 Jul 2016 00:00:00 +0200</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Code for BUGA Heilbronn</title>
                <description>&lt;p&gt;Mit &lt;a href=&quot;http://codefor.de/heilbronn&quot;&gt;Code For Heilbronn&lt;/a&gt; haben wir &lt;a href=&quot;http://blog.opendatalab.de/opendata/2016/01/19/rueckblick-open-data-coworking/&quot;&gt;letztes Jahr sehr viel erreicht&lt;/a&gt;.
Im Vorfeld der &lt;a href=&quot;http://www.buga2019.de&quot;&gt;Bundesgartenschau 2019 in Heilbronn&lt;/a&gt; wollen wir eine
Reihe von Projekten umzusetzen, die im direkten Bezug zur BUGA stehen und unter dem Tag 
“Code for BUGA Heilbronn” laufen sollen.&lt;/p&gt;

&lt;p&gt;Das erste Projekt und gleichzeitig unsere Bewerbung zum &lt;a href=&quot;http://award.codeweek.de/&quot;&gt;CodeWeek Award&lt;/a&gt; soll der
&lt;a href=&quot;https://farmbot.io&quot;&gt;Farmbot Genesis&lt;/a&gt; sein, den wir in einer Reihe von Workshops nachbauen 
und diesen dann (wenn möglich) auf der Bundesgartenschau zeigen wollen.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/code-for-buga-logo-wide.jpg&quot; alt=&quot;BugaFarmbot&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Die Idee dahinter ist ganz einfach: der Mensch ist seit seiner Existenz ein Selbstversorger. Durch den 
rasanten Fortschritt im Bereich der Software und Hardware erreichen wir einen Punkt, wo Maschinen 
uns Menschen beim Anbau von Obst und Gemüse stark unterstützen können. Viele begeisterte Menschen 
entwickeln bereits weltweit Lösungen, die das möglich machen sollen. Wir 
wollen den “farmbot genesis” für die &lt;a href=&quot;http://www.buga2019.de&quot;&gt;Bundesgartenschau 2019&lt;/a&gt; in Heilbronn nachbauen und den Besuchern eine 
Vision für ein Selbstversorgerleben liefern.&lt;/p&gt;

&lt;p&gt;Das Projekt farmbot genesis wurde von &lt;a href=&quot;https://farmbot.io/whitepaper/&quot;&gt;Rory Landon Aronson&lt;/a&gt; gestartet 
und beinhaltet einen Präzisionsroboter, der in der Lage ist ein Stück Land mit Samen auszusähen und zu bewässern. Die 
Steuerung des Roboters erfolgt über eine Web-Software. Alle Teile des Projekts sind open-source und 
können von anderen dazu genutzt werden um den farmbot nachzubauen.&lt;/p&gt;

&lt;p&gt;Mit dem Nachbau und der Weiterentwicklung des Projekts &lt;a href=&quot;https://farmbot.io&quot;&gt;Farmbot Genesis&lt;/a&gt; wollen wir mit den 
Teilnehmern eine Basis aufbauen auf der man sich neue Software- und Hardwarekenntnisse aneignen kann. 
In verschiedenen Workshops sollen alle Teile nachgebaut werden und die Steuerung der Roboters 
an die örtlichen Gegebenheiten optimiert werden. Durch die Integration von 
offenen Daten (z.B. Wetterdaten) soll beispielsweise die Bewässerung und Düngung optimiert werden.&lt;/p&gt;

&lt;p&gt;In mehreren Stufen wollen wir den &lt;a href=&quot;https://farmbot.io&quot;&gt;Farmbot&lt;/a&gt; bis zur BUGA 2019 soweit reifen lassen, so dass mit 
dessen Hilfe im Laufe der Bundesgartenschau essbare Lebensmittel gezüchtet werden können.&lt;/p&gt;

&lt;p&gt;In einer groben Kalkulation gehen wir davon aus, dass wir ca. 8.000 EUR für den Aufbau eines funktionierenden
Farmbots brauchen, ca. 3.000-4.000 EUR entfallen dabei rein auf 
die &lt;a href=&quot;https://farmbot-genesis.readme.io/docs/bill-of-materials&quot;&gt;benötigen Teile&lt;/a&gt;.
Alles weitere wird für die Organisation und Durchführung von Workshops und eventuellen Erweiterungen benötigt.&lt;/p&gt;

&lt;p&gt;Weitere Informationen zum Sponsoring und Unterstützung des Projekts erhaltet ihr bei Felix oder bei mir.&lt;/p&gt;

&lt;p&gt;Bildrechte: &lt;a href=&quot;http://wiki.farmbot.cc/wiki/Open-source&quot;&gt;Farmbot Inc. CC-BY 4.0&lt;/a&gt;&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/codeforbuga/2016/01/28/code-for-buga-heilbronn-codeweek-award</link>
                <guid>http://blog.opendatalab.de/codeforbuga/2016/01/28/code-for-buga-heilbronn-codeweek-award</guid>
                <pubDate>Thu, 28 Jan 2016 00:00:00 +0100</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Jahresrückblick 2015</title>
                <description>&lt;p&gt;In unserem Bemühen, eine Tech-Community in Heilbronn zu fördern und offene Daten im Rahmen von Code 
for Heilbronn voranzubringen, ist im Jahr 2015 viel geschehen. Unser Jahresrückblick:&lt;/p&gt;

&lt;h2 id=&quot;coworking-space-heilbronn&quot;&gt;Coworking Space Heilbronn&lt;/h2&gt;

&lt;p&gt;Anfang 2015 wurde der &lt;a href=&quot;http://coworking-heilbronn.org/&quot;&gt;Coworking Space&lt;/a&gt; in Heilbronn eröffnet. 
Zusammen mit &lt;a href=&quot;http://coworking-heilbronn.org/team/&quot;&gt;fünf weiteren Mitgliedern&lt;/a&gt; haben wir den Coworking 
Verein gegründet und in ca. 2 Monaten aus einer alten Ärztepraxis einen Coworking Space gebaut. Hierzu 
wurden in einigen Behandlungs- und Besprechungszimmern die Wände rausgerissen um dann größere Flächen 
zu bekommen. Nach und nach haben wir die Lücken im Boden, den Wänden und der Decke geschlossen, so 
dass heute ein recht moderner Coworking Space als Basis fürs Arbeiten und viele Events zu Verfügung steht.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/jahr2015/jr_cowo1.jpg&quot; alt=&quot;Cowo&quot; /&gt;
&lt;img src=&quot;/assets/jahr2015/jr_cowo2.jpg&quot; alt=&quot;Cowo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/jahr2015/jr_cowo3.jpg&quot; alt=&quot;Cowo&quot; /&gt;
&lt;img src=&quot;/assets/jahr2015/jr_cowo4.jpg&quot; alt=&quot;Cowo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/jahr2015/jr_cowo_pano1.jpg&quot; alt=&quot;Cowo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/jahr2015/jr_cowo_pano2.jpg&quot; alt=&quot;Cowo&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;open-data-day&quot;&gt;Open Data Day&lt;/h2&gt;

&lt;p&gt;Den &lt;a href=&quot;http://oddrnh15.eu/&quot;&gt;OpenData Day 2015&lt;/a&gt; haben wir als OK Lab Heilbronn zusammen mit 
&lt;a href=&quot;http://opendata-rheinneckar.de/&quot;&gt;OpenData Rhein-Neckar&lt;/a&gt; unter Leitung von Oliver Rack im &lt;a href=&quot;http://www.zeitraumexit.de/&quot;&gt;Zeitraumexit&lt;/a&gt; 
in Mannheim veranstaltet. Das Programm umfasste einen BarCamp am 20.02.2015 sowie ein Hacktogether und ein 
Open Data Seminar für Lehrer/innen am 21.02.2015.&lt;/p&gt;

&lt;p&gt;Beim Hacktogether wurde zum Beispiel an einer Verbesserung von barrierefreiem Routing 
für &lt;a href=&quot;https://www.hackerleague.org/hackathons/open-data-day-2015-mannheim/hacks/crowdcrafting-zur-verbesserung-der-routenplanung-fur-fussganger&quot;&gt;Fußgänger&lt;/a&gt;
 gearbeitet. Dazu wurde der QA Editor für &lt;a href=&quot;http://codefor.de/projekte/2015-02-21-hn-osm-editor.html&quot;&gt;OpenStreetmap&lt;/a&gt; 
 erweitert. Eine Übersicht aller Projekte findet ihr auf &lt;a href=&quot;https://www.hackerleague.org/hackathons/open-data-day-2015-mannheim/hacks&quot;&gt;Hackerleague&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 Projekte wurden vom Bürgermeister der Stadt Mannheim prämiert. Die Teilnehmer wurden zu einem Treffen ins Rathaus 
eingeladen, um dort die Projekte zu präsentieren und das weitere Vorgehen zu diskutieren. Seit November 
hat die Stadt Mannheim ein eigenes &lt;a href=&quot;https://www.mannheim.de/stadt-gestalten/open-data&quot;&gt;Open Data Portal&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/jahr2015/jr_odd1.jpg&quot; alt=&quot;Cowo&quot; /&gt;
&lt;img src=&quot;/assets/jahr2015/jr_odd2015_rathaus.jpg&quot; alt=&quot;Cowo&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;open-data-kick-off&quot;&gt;Open Data Kick-Off&lt;/h2&gt;

&lt;p&gt;Mit dem Ziel, das Thema Open Data bekannter zu machen und gemeinsam über das Thema zu diskutieren, 
haben wir als OK Lab Heilbronn am 01. Juli 2015 zu einer Open Data Informationsveranstaltung in den 
Coworking Space Heilbronn &lt;a href=&quot;http://coworking-heilbronn.org/events/open-data-kickoff/&quot;&gt;eingeladen&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Insgesamt hatten wir 20 Teilnehmer, darunter auch einige Stadträte aus Heilbronn und Neckarsulm sowie 
Mitarbeiter der Pressestelle der Stadt Heilbronn. Die Rückmeldungen waren sehr positiv und vielversprechend.&lt;/p&gt;

&lt;p&gt;Ein großes Dankeschön an die Unterstützung von Gerd Armbruster (Stadt Mannheim), 
Detlef Kreuz (Hochschule Heilbronn), Daniel Stahl (Heilbronner Stimme) und Tanja Sagasser (Gemeinderätin). 
Alle Präsentationen findet ihr im extra Blogpost zum &lt;a href=&quot;http://blog.opendatalab.de/opendata/2015/06/23/open-data-kickoff/&quot;&gt;Kick-Off&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/kickoff.jpg&quot; alt=&quot;Kickoff&quot; title=&quot;Open Data Kickoff&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;coding-abende&quot;&gt;Coding Abende&lt;/h2&gt;

&lt;p&gt;Mit der Eröffnung des Coworking Spaces hatten wir von Anfang an einen tollen Raum, um regelmäßige Treffen 
für Hardware- und Software-Enthusiasten einzurichten. Unter der &lt;a href=&quot;http://www.meetup.com/codeforhn/&quot;&gt;Meetup-Gruppe Code For Heilbronn&lt;/a&gt; 
haben wir seit der Eröffnung dieses Jahr mehr als 30 Coding Abende veranstaltet.
Mit vielen zusätzlichen Workshops konnten wir einige Schüler und Studenten für mehr Softwareentwicklung 
begeistern und ihnen etwas mehr Praxis beibringen. Daraus sind auch einige neue Projekte entstanden und vorhandene weiterentwickelt worden. Eine Übersicht findet ihr auf der &lt;a href=&quot;http://codefor.de/heilbronn#projects&quot;&gt;Projekte-Seite von Code for Heilbronn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Vielen Dank an &lt;a href=&quot;http://codefor.de/&quot;&gt;Code for Germany&lt;/a&gt; für die Unterstützung und &lt;a href=&quot;http://www.codeforamerica.org/people/drew-wilson/&quot;&gt;Drew&lt;/a&gt; 
von &lt;a href=&quot;http://www.codeforamerica.org/&quot;&gt;Code for America&lt;/a&gt;, der uns von anderen Labs des “Code for” Netzwerks 
berichtete und Projekte zeigte, die wir für Heilbronn übernehmen (redeployen) können.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/jahr2015/jr_drew1.jpg&quot; alt=&quot;Cowo&quot; /&gt;
&lt;img src=&quot;/assets/jahr2015/jr_drew2.jpg&quot; alt=&quot;Cowo&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;code-week&quot;&gt;Code Week&lt;/h2&gt;

&lt;p&gt;Als die erste Code Week 2014 von der EU Kommission ausgerufen wurde, hatten wir zusammen mit 
dem &lt;a href=&quot;http://www.cc86.org/&quot;&gt;CC86 e.V.&lt;/a&gt; nur eine begrenze Platzauswahl in dem Vereinsheim zur Verfügung. 
Umso wichtiger war es uns mit dem neuen Coworking Space die Code Week 2015 groß aufzustellen und viele 
Events zum Thema Softwareentwicklung anzubieten. So gab es in Heilbronn während der Code Week 
über 6 &lt;a href=&quot;http://coworking-heilbronn.org/code-week/&quot;&gt;Workshops&lt;/a&gt; zu Themen wie Web-Entwicklung, 
Windows Mobile-Entwicklung, Android und iOS-Entwicklung, 3D Modellierung und Scratch für Kinder. 
Mit teilweise mehr als 25 Teilnehmern je Workshop haben wir die Möglichkeiten im Coworking Space bis 
ans Limit ausgereizt. Umso mehr hat es uns dann gefreut als einige Workshop-Teilnehmer über die 
Code Week hinaus auch regemäßig angefangen haben die Coding Abende zu besuchen.&lt;/p&gt;

&lt;p&gt;Einen großen Dank an &lt;a href=&quot;http://connect-it.hn/&quot;&gt;connect.it Heilbronn&lt;/a&gt;, insbesondere Steffen Jung, 
Jonathan Günz von der &lt;a href=&quot;http://hn-dotnet.de/&quot;&gt;.NET Usergroup Heilbronn&lt;/a&gt;, Code for Germany sowie an die 
Sponsoren &lt;a href=&quot;http://www.it-bei-lidl.com/&quot;&gt;Lidl&lt;/a&gt;, &lt;a href=&quot;http://tds.fujitsu.com/&quot;&gt;Fujitsu TDS&lt;/a&gt;, 
&lt;a href=&quot;http://ibsolution.de/&quot;&gt;IBSolution&lt;/a&gt; und &lt;a href=&quot;http://www.xeptum.com/&quot;&gt;Xeptum&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Wir freuen uns bereits heute darauf, auch zur Code Week 2016 ein großes Programm in Heilbronn anzubieten.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://blog.opendatalab.de/opendata/2016/01/18/code-week-2015/&quot;&gt;Weitere Bilder&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/codeweek/android-1.jpg&quot; alt=&quot;Code Week&quot; /&gt;
&lt;img src=&quot;/assets/jahr2015/jr_codeweek_scratch.jpg&quot; alt=&quot;Code Week&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;neue-projekte&quot;&gt;Neue Projekte&lt;/h2&gt;

&lt;h3 id=&quot;mein-bad-wimpfen-app&quot;&gt;Mein Bad Wimpfen App&lt;/h3&gt;
&lt;p&gt;In Zusammenarbeit mit dem Kulturamt in Bad Wimpfen haben wir im Mai 2015 die 
&lt;a href=&quot;http://blog.opendatalab.de/opendata/2015/04/29/bad-wimpfen-app/&quot;&gt;Mein Bad Wimpfen App&lt;/a&gt; fürs iPhone gelauncht, 
die dann in der zweiten Jahreshält ein &lt;a href=&quot;http://grundid.de/2015/11/23/mein-bad-wimpfen-app-update/&quot;&gt;großes Update bekommen hat&lt;/a&gt; 
und nun auch für Android verfügbar ist.&lt;/p&gt;

&lt;h3 id=&quot;erlenbacher-weinfest-app&quot;&gt;Erlenbacher Weinfest App&lt;/h3&gt;
&lt;p&gt;Der Christian aus Erlenbach hat den dortigen Musikverein dazu überredet uns eine Weinfest App bauen zu 
lassen und so gab es dann im August, pünktlich zum Weinfest eine &lt;a href=&quot;http://blog.opendatalab.de/apps/2015/07/23/erlenbacher-weinfest-app-und-updates/&quot;&gt;iPhone und Android App&lt;/a&gt; 
mit allen Infos zum Weinfest.&lt;/p&gt;

&lt;h3 id=&quot;kastanien-app&quot;&gt;Kastanien App&lt;/h3&gt;
&lt;p&gt;Nachdem wir 2014 die &lt;a href=&quot;http://blog.opendatalab.de/opendata/2014/11/19/kastanien-app-mit-baumkataster/&quot;&gt;Kastanien App angekündigt&lt;/a&gt; 
haben und im Dezember 2014 auch das Baumkataster von der Stadt Heilbronn bekommen haben war rechtzeitig 
zur Kastaniensaison die &lt;a href=&quot;http://grundid.de/2015/09/04/kastanien-app-heilbronn/&quot;&gt;Kastanien App fertig&lt;/a&gt;. 
Sie wurde mit recht viel Medienecho in der Heilbronner Stimme und im Radio TON begleitet.&lt;/p&gt;

&lt;h3 id=&quot;klick-deutschland&quot;&gt;Klick Deutschland&lt;/h3&gt;
&lt;p&gt;Zwischendurch haben wir mit den Geodaten des Bundesamts für Kartographie und Geodäsie das 
Click-That-Hood Spiel auf Deutschland übertragen und alle &lt;a href=&quot;http://klickde.opendatalab.de/&quot;&gt;Bundesländer, Landkreise und Gemeinden 
in dieses Lernspiel&lt;/a&gt; integriert.&lt;/p&gt;

&lt;h3 id=&quot;recyclinghöfe-im-landkreis-heilbronn&quot;&gt;Recyclinghöfe im Landkreis Heilbronn&lt;/h3&gt;
&lt;p&gt;Im Rahmen der Coding Abende wurde die Recyclinghof Karte überarbeitet und mit neuen Daten bestückt. 
Damit können wieder die aktuellen Öffnungszeiten der Recyclinghöfe angezeigt werden. Für alle 
Telegram App User haben wir auch den &lt;a href=&quot;https://telegram.me/RecyclingHeilbronnBot&quot;&gt;RecyclingHeilbronnBot&lt;/a&gt; erstellt, 
der die nächsten Recyclinghöfe in der Nähe anzeigt.&lt;/p&gt;

&lt;h3 id=&quot;drinker-app&quot;&gt;Drinker App&lt;/h3&gt;
&lt;p&gt;Die Drinker App ist gerade noch am entstehen. In dieser App wollen wir eine 
&lt;a href=&quot;http://grundid.de/2016/01/18/drinker-app-offene-getraenkekarte/&quot;&gt;offene Getränkekarte&lt;/a&gt; aufbauen, 
die dem Benutzer alle Getränke in einem Restaurant oder einer Bar anzeigt. Die Möglichkeiten 
sind hier bei weitem noch nicht ausgeschöpft.&lt;/p&gt;

&lt;p&gt;&lt;small&gt;im Januar 2016 - Felix und Adrian&lt;/small&gt;&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/opendata/2016/01/19/rueckblick-open-data-coworking</link>
                <guid>http://blog.opendatalab.de/opendata/2016/01/19/rueckblick-open-data-coworking</guid>
                <pubDate>Tue, 19 Jan 2016 00:00:00 +0100</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  










	

        <item>
                <title>Code Week 2015 in Heilbronn</title>
                <description>&lt;p&gt;Bei der „&lt;a href=&quot;http://attending.io/events/codeweek-heilbronn&quot;&gt;Code Week Heilbronn&lt;/a&gt;“ vom 10. – 17. Oktober 2015 konnten Schüler, Studenten sowie alle an der Programmierung interessierte Menschen kostenlos lernen wie man Apps, Webseiten, Programme und Spiele entwickelt. Organisiert wurde das Event vom &lt;a href=&quot;http://www.coworking-heilbronn.org/&quot;&gt;Coworking Heilbronn e.V.&lt;/a&gt; mit einer breiten Unterstützung von regionalen Organisationen.&lt;/p&gt;

&lt;p&gt;Am Samstag startete die Code Week mit einer Eröffnungsveranstaltung, bei dem sich die Teilnehmer vorab über die Veranstaltung und die geplanten Workshops informieren konnten. An den Werktagen von Montag bis Freitag war der Coworking Space in Heilbronn ganztägig zum gemeinsamen coden geöffnet. Dazu wurde jeden Tag mindestens ein kostenloser Workshop angeboten. Zum Abschluss der Code Week in Heilbronn fand ein Hackday statt.&lt;/p&gt;

&lt;p&gt;Mit teilweise mehr als 25 Teilnehmern je Workshop haben wir die Möglichkeiten im Coworking Space bis ans Limit ausgereizt. Umso mehr hat es uns gefreut, dass einige Workshop-Teilnehmer über die Code Week hinaus auch regemäßig angefangen haben die Coding Abende zu besuchen.&lt;/p&gt;

&lt;p&gt;Einen großen Dank an &lt;a href=&quot;http://www.connect-it.hn/&quot;&gt;connect.IT Heilbronn-Franken e.V.&lt;/a&gt;, insbesondere Steffen Jung, Jonathan Günz von der &lt;a href=&quot;http://www.hn-dotnet.de/&quot;&gt;.NET Usergroup Heilbronn&lt;/a&gt;, &lt;a href=&quot;http://codefor.de&quot;&gt;Code for Germany&lt;/a&gt; sowie an die Sponsoren &lt;a href=&quot;http://www.it-bei-lidl.com/&quot;&gt;Lidl&lt;/a&gt;, &lt;a href=&quot;http://tds.fujitsu.com/&quot;&gt;Fujitsu TDS&lt;/a&gt;, &lt;a href=&quot;http://ibsolution.de/&quot;&gt;IBSolution&lt;/a&gt; und &lt;a href=&quot;http://www.xeptum.com/&quot;&gt;Xeptum&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Bilder und Kurzbericht der einzelnen Events:&lt;/p&gt;

&lt;h3 id=&quot;kick-off&quot;&gt;Kick-Off&lt;/h3&gt;

&lt;p&gt;Wir waren überrascht von der großen Anzahl an Teilnehmern und dem Interesse. Dazu beigetragen hat ein Bericht in der Heilbronner Stimme.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/codeweek/kickoff-2.jpg&quot; alt=&quot;Kickoff&quot; title=&quot;Code Week Kickoff&quot; /&gt;
&lt;img src=&quot;/assets/codeweek/kickoff-3.jpg&quot; alt=&quot;Kickoff&quot; title=&quot;Code Week Kickoff&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;windows-mobile-app-development&quot;&gt;Windows Mobile App Development&lt;/h3&gt;

&lt;p&gt;Jonathan Günz von der .NET Usergroup Heilbronn hat den Teilnehmern geholfen, eine erste eigene Windows Phone App zu entwickeln.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/codeweek/win-mobile-1.jpg&quot; alt=&quot;Win Mobile&quot; title=&quot;Windows Mobile App Development Workshop&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;android-app-development&quot;&gt;Android App Development&lt;/h3&gt;

&lt;p&gt;Der Android-Workshop war mit über 25 Teilnehmern (10 mehr als angemeldet) bis zum Limit besetzt.
Jeder Teilnehmer am Workshop von Adrian Stabiszewski konnte am Ende eine erste eigene Android App im Emulator oder auf dem eigenen Smartphone ausführen. &lt;a href=&quot;https://docs.google.com/presentation/d/1Y3p-QyokznQQ3Mm20557hXMT-W-YIBqG17A40Gw0f0E/edit?usp=sharing&quot;&gt;Link zur Präsentation&lt;/a&gt; mit weiteren Infos.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/codeweek/android-1.jpg&quot; alt=&quot;Android&quot; title=&quot;Android App Development Workshop&quot; /&gt;
&lt;img src=&quot;/assets/codeweek/android-2.jpg&quot; alt=&quot;Android&quot; title=&quot;Android App Development Workshop&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;programmieren-lernen-mit-scratch&quot;&gt;Programmieren lernen mit Scratch&lt;/h3&gt;

&lt;p&gt;Steffen Jung gab mit viel Spaß und Freude vielen Kindern und Jugendlichen einen Einstieg in die Programmierung mit Scratch.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/codeweek/scratch-3.jpg&quot; alt=&quot;Scratch&quot; title=&quot;Programmieren lernen mit Scratch&quot; /&gt;
&lt;img src=&quot;/assets/codeweek/scratch-2.jpg&quot; alt=&quot;Scratch&quot; title=&quot;Programmieren lernen mit Scratch&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;3d-modellierung&quot;&gt;3D Modellierung&lt;/h3&gt;

&lt;p&gt;Christoph Uschtrin modellierte zusammen mit den Teilnehmern mehrere 3D-Modelle im Programm 3D Max. Einige Modelle wurden direkt im Anschluss gedruckt.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/codeweek/3d-1.jpg&quot; alt=&quot;3D&quot; title=&quot;3D-Modellierung&quot; /&gt;
&lt;img src=&quot;/assets/codeweek/3d-2.jpg&quot; alt=&quot;3D&quot; title=&quot;3D-Modellierung&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;webentwicklung-mit-html5--css--javascript&quot;&gt;Webentwicklung mit HTML5 / CSS / JavaScript&lt;/h3&gt;

&lt;p&gt;Felix Ebert gab über 20 Teilnehmern einen Einstieg in die Webentwicklung mit HTML5 / CSS / JavaScript. Dazu wurden einfache Beispiele in jsbin.com, unter anderem mit animierten Katzenbildern, und weitere Tipps in einer &lt;a href=&quot;https://docs.google.com/presentation/d/1UEYuMWAasETsM6sJtXUrP8JNTbVHzjbSNgiW4FUbZNA/edit?usp=sharing&quot;&gt;Präsentation&lt;/a&gt; gezeigt. Die Teilnehmer konnten dies direkt im Workshop als Vorlage für eine eigene erste Webseite nehmen.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/codeweek/web-1.jpg&quot; alt=&quot;Web&quot; title=&quot;Webentwicklung Workshop&quot; /&gt;
&lt;img src=&quot;/assets/codeweek/web-2.jpg&quot; alt=&quot;Web&quot; title=&quot;Webentwicklung Workshop&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;ios-app-development-workshop&quot;&gt;iOS App Development Workshop&lt;/h3&gt;

&lt;p&gt;Adrian Stabiszewski hat neben dem Android Workshop auch einen iOS Workshop für Einsteiger mit Swift angeboten. Ein Teilnehmer kam sogar extra mit einem iMac zum Workshop. &lt;a href=&quot;https://docs.google.com/presentation/d/1ytRXbuvPGgmZZFeaZ5CskUBdL7ubKvIu-Eh3hLwOe2I/edit?usp=sharing&quot;&gt;Link zur Präsentation&lt;/a&gt; mit weiteren Infos.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/codeweek/ios-1.jpg&quot; alt=&quot;iOS&quot; title=&quot;iOS Workshop&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;hackday&quot;&gt;Hackday&lt;/h3&gt;

&lt;p&gt;Am Hackday haben wir zum Abschluss der Code Week mit Bananen und dem &lt;a href=&quot;http://www.makeymakey.com/&quot;&gt;Makey Makey&lt;/a&gt; experimentiert, um zum Beispiel ein Keyboard aus Bananen zu bauen. Dazu haben wir ein Projekt angefangen, mit dem man Englisch über Untertitel von beliebten Serien wie Game of Thrones lernen kann.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/codeweek/hackday-2.jpg&quot; alt=&quot;Hackday&quot; title=&quot;hackday&quot; /&gt;&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/opendata/2016/01/18/code-week-2015</link>
                <guid>http://blog.opendatalab.de/opendata/2016/01/18/code-week-2015</guid>
                <pubDate>Mon, 18 Jan 2016 00:00:00 +0100</pubDate>
				<dc:creator>Felix Ebert</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Digitaler Abfallkalender für den Landkreis Heilbronn</title>
                <description>&lt;p&gt;Vor zwei Jahren haben wir beim ersten &lt;a href=&quot;/opendata/2014/01/15/opendataday-heilbronn&quot;&gt;Open Data Day 2014 in Heilbronn&lt;/a&gt; 
alle Müllabfuhrtermine aus den über 50 Abfallkalender
im Landkreis abgetippt und in &lt;a href=&quot;http://recycling.gonam.de/kalender/&quot;&gt;maschinenlesbare Formate&lt;/a&gt; überführt. Dadurch war es dann möglich die Abfuhrtermine ganz einfach
in seinen digitalen Kalender auf dem PC oder Smartphone zu importieren um rechtzeitig an die Mülltonne erinnert zu werden.
Das Landratsamt war leider nicht bereit uns die Daten in tabellarischer Form zu geben, so dass nur die händische Erfassung 
der Termine aus den PDF-Dateien in Frage kam.&lt;/p&gt;

&lt;p&gt;Für 2015 haben wir den Aufwand gescheut, denn beim Erfassen der Daten im Jahr 2014 hat ein Team aus drei Personen den ganzen Tag 
gebraucht um die Termine abzutippen. Doch wir lieben Daten und noch viel mehr lieben wir das Programmieren. Der nächste 
digitale Terminkalender sollte unbedingt voll automatisch konvertiert werden.&lt;/p&gt;

&lt;p&gt;Als wir uns gestern Gedanken über den Coding-Abend im &lt;a href=&quot;http://coworking-heilbronn.org&quot;&gt;Coworking Space Heilbronn&lt;/a&gt; gemacht haben, kam uns die Idee für eine
ganz einfache Programmieraufgabe, die wir gut als &lt;a href=&quot;https://en.wikipedia.org/wiki/Mob_programming&quot;&gt;Mob-Programming&lt;/a&gt; umsetzen können: Wir machen aus einer PDF-Datei
eine Pixel-Grafik und suchen dann in dem Raster der Monate und Tage nach entsprechenden Farben (grau für Mülltonne, blau
für Papiertonne usw.). Aus der Position der Farbe in der Grafik können wir ganz leicht den Tag des Monats errechnen, da alle Tage
dieselbe Zeilenhöhe haben. So haben wir z.B. herausgefunden, dass der Tag eine Höhe von 22 Pixel hat und der Monat eine
Breite von 145 Pixel (die Angaben hängen davon ab, wie die PDF skaliert wird).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/abfallkalender-beispiel.png&quot; alt=&quot;Beispiel&quot; title=&quot;Beispiel&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Danach konnten wir mit einfachen Schleifen eine Zeile nach der anderen abscannen und die gewünschten Farben identifizieren.
Dasselbe haben wir dann für die zweite Seite gemacht (pro Seite gibt es sechs Monate) und dann natürlich auch für die über 50 Abfallkalender aus 
dem Landkreis.
Am Ende kommen strukturierte Daten für alle Müllabfuhrbezirke, die man in beliebige andere Datenformate wie z.B. ical/ics konvertieren kann.&lt;/p&gt;

&lt;p&gt;Hier ein Beispiel für einen Datensatz in Untergruppenbach:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Untergruppenbach&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Biomüll&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;8.1.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;22.1.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;5.2.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;19.2.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;5.3.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;19.3.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;2.4.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;17.4.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;30.4.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;15.5.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;29.5.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;11.6.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;18.6.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;25.6.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;2.7.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;9.7.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;16.7.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;23.7.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;30.7.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;6.8.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;13.8.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;20.8.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;3.9.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;17.9.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;1.10.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;15.10.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;29.10.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;12.11.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;26.11.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;10.12.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;28.12.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Papier&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;21.1.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;4.3.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;15.4.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;28.5.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;8.7.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;19.8.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;30.9.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;11.11.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;23.12.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Restmüll&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;15.1.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;29.1.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;12.2.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;26.2.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;12.3.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;26.3.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;11.4.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;23.4.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;7.5.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;21.5.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;5.6.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;18.6.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;2.7.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;16.7.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;30.7.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;13.8.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;27.8.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;10.9.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;24.9.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;8.10.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;22.10.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;5.11.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;19.11.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;3.12.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;17.12.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Schadstoffsammlung&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;28.2.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;7.3.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;16.5.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;23.5.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;20.6.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;11.7.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;18.7.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;19.9.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;31.10.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;3.12.2015&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Die Programmieraufgabe hat ca. 2h gedauert und der Scanprozess läuft in wenigen Sekunden durch. Immer wieder abwechselnd am PC 
haben &lt;a href=&quot;http://codefor.de/heilbronn/#members&quot;&gt;Anna, Ketoma, Felix und ich&lt;/a&gt; viel Spass und konnten auch einiges dabei lernen.
Wir planen in Zukunft weitere &lt;a href=&quot;http://www.meetup.com/de/OK-Lab-Heilbronn&quot;&gt;Open Data Mob-Programming&lt;/a&gt; Sessions, 
schaut einfach mal bei uns vorbei.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/opendata/2015/11/13/abfallkalender-landkreis-heilbronn</link>
                <guid>http://blog.opendatalab.de/opendata/2015/11/13/abfallkalender-landkreis-heilbronn</guid>
                <pubDate>Fri, 13 Nov 2015 00:00:00 +0100</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Handle 3D Touch quick actions with UITabBarController and UINavigationController</title>
                <description>&lt;p&gt;In our Wedding Planer app we recently introduced 3D Touch quick actions from the home screen. 
On an iPhone with 3D Touch you can now quickly reach four of the most important sections of
the app directly from the home screen.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/3d-touch-weddian.png&quot; alt=&quot;Home Screen&quot; title=&quot;Home Screen&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In this blog post I want to show you, how we implemented this function in our controller hierarchy. As a root
view controller we use a UITabBarController and then on each tab we use a UINavigationController. With the
quick actions we want to give users the possibility to quickly access the second ViewController in each tab.
To accomplish this the app has to be able to switch the tab and then perform a segue to the second controller.
This way we can keep the hierarchy within the app and the user can easily move back and forth 
in the app after using the quick action.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/weddian-home.jpg&quot; alt=&quot;Weddian&quot; title=&quot;Weddian&quot; /&gt;&lt;/p&gt;

&lt;p&gt;First let’s have a look at our definition in the Info.plist file. Here we use the UIApplicationShortcutItemType key to
encode the tab number and the first segue to perform. We decided not to use the UIApplicationShortcutItemUserInfo dictionary 
for this kind of data because this should contain user data for dynamic quick actions.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-xml&quot; data-lang=&quot;xml&quot;&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
6
7
8
9
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;UIApplicationShortcutItems&lt;span class=&quot;nt&quot;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;array&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;dict&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;UIApplicationShortcutItemTitle&lt;span class=&quot;nt&quot;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;Action Title&lt;span class=&quot;nt&quot;&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;UIApplicationShortcutItemType&lt;span class=&quot;nt&quot;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;tab1:segueName&lt;span class=&quot;nt&quot;&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;/dict&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/array&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;In the second step we have to implement the performActionForShortcutItem method in the UIApplicationDelegate.
Since we have a fixed hierarchy in our app and use a schema for the ShortcutItemType we can create a nice
implementation that opens a specific tab and if a segue is part of the type string also performs the segue on the first
controller.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-objective-c&quot; data-lang=&quot;objective-c&quot;&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
    
    UITabBarController *rootController = (UITabBarController *)self.window.rootViewController;

    NSString *type = shortcutItem.type;
    NSArray *types = [type componentsSeparatedByString:@&quot;:&quot;];

    NSString *tabNo = [((NSString*)types[0]) substringFromIndex:3];    
    [rootController setSelectedIndex:tabNo.integerValue];
    UINavigationController *navController = rootController.selectedViewController;
    [navController popToRootViewControllerAnimated:false];

    if ([types count] &amp;gt; 1) {
        NSString *segue = (NSString*)types[1];
        if (segue != nil) {
            UIViewController *firstViewController = navController.viewControllers[0];
            [firstViewController performSegueWithIdentifier:segue sender:nil];
        }
    }
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;With this implementation you can easily access all your second level view controller in a tab bar app from a home screen
quick action.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/hack/2015/10/25/3d-touch-with-tabbarcontroller-and-navigationcontroller</link>
                <guid>http://blog.opendatalab.de/hack/2015/10/25/3d-touch-with-tabbarcontroller-and-navigationcontroller</guid>
                <pubDate>Sun, 25 Oct 2015 00:00:00 +0200</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Mehr Apps für die Region - Erlenbacher Weinfest App</title>
                <description>&lt;p&gt;Die Zeit der Weinfeste in der Region ist nicht fern und so haben &lt;a href=&quot;http://appproject.de&quot;&gt;Christian&lt;/a&gt; und ich einen 
Fest-Guide für das Erlenbacher Weinfest erstellt. 
Die App, die es sowohl für &lt;a href=&quot;https://play.google.com/store/apps/details?id=de.grundid.erlenbachweinfest&quot;&gt;Android&lt;/a&gt; 
auch als für &lt;a href=&quot;https://itunes.apple.com/app/apple-store/id940194602?mt=8&quot;&gt;iPhone&lt;/a&gt;
gibt, informiert den Besucher auf einer übersichtlichen Karte über alle Stände 
und die besonderen Spezialitäten vor Ort. Darüber hinaus werden im Programm-Guide 
alle wichtigen Festhighlights angezeigt. Der Funktionsumfang wird durch Live-Updates 
von den Organisatoren des Weinfestes abgerundet.&lt;/p&gt;

&lt;p&gt;Die Daten für die App wurden uns von dem Festverein Erlenbach am Kayberg e.V. kostenlos zur Verfügung gestellt.
Auf diese Weise konnten wir schnell und unbürokratisch diesen 
tollen Fest-Guide erstellen und freuen uns auf weitere Zusammenarbeit.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/erlenbach-app1.png&quot; alt=&quot;Festübersicht&quot; title=&quot;Festübersicht&quot; /&gt;
&lt;img src=&quot;/assets/erlenbach-app2.png&quot; alt=&quot;Programm&quot; title=&quot;Programm&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Die Weiterentwicklung der &lt;a href=&quot;/opendata/2015/04/29/bad-wimpfen-app&quot;&gt;Mein Bad Wimpfen App&lt;/a&gt; geht ebenfalls weiter
voran. Die bereits bekannten Bereiche Events, Locations und Sehenswürdigkeiten werden demnächst um 
einen Bürgerkanal ergänzt. Hier wollen wir den Menschen vor Ort aktuelle Informationen aus der Gemeinde und dem 
Landkreis Heilbronn zeigen. Als ersten Schritt werden wir in dem Bürgerkanal die aktuellen Sitzungsprotokolle des Gemeinderats
anzeigen und die Öffungszeiten der Recyclinghöfe im Landkreis Heilbronn.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/bwapp/bwapp-gemeinderat.png&quot; alt=&quot;Gemeinderateprotokolle&quot; title=&quot;Gemeinderateprotokolle&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Die Neuerung bei den Sitzungsprotokollen
ist, dass der Benutzer sofort nach dem Erscheinen des Protokolls via Benachrichtigung darüber informiert wird. Dies bietet
selten eine Gemeinde an.
Dennoch ist es für viele Bürger wichtig über die Entscheidungen und Pläne im Gemeinderat informiert zu werden um 
rechtzeitig bei Entscheidungen, wie Bauvorhaben mitzuwirken.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/bwapp/bwapp-recycling.png&quot; alt=&quot;Recycling&quot; title=&quot;Recycling&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Die Recyclingkarte ist ebenfalls voll dynamisch. Sie zeigt die Öffungszeiten abhängig von der aktuellen Jahreszeit an.
Man kann sich die Öffungzeiten bis zu 6 Tage im Voraus anzeigen und bei Bedarf zum Recyclinghof mit der Navigationsfunktion des
Smartphones navigieren.&lt;/p&gt;

&lt;p&gt;In der künftigen Version wollen wir noch weitere Informationen aufnehmen. So bietet die &lt;a href=&quot;http://www.lak-bw.notdienst-portal.de/index.php?seite=90&quot;&gt;Landesapothekerkammer&lt;/a&gt; aktuelle
Informationen über den Notdienst der Apotheken. Diese sollen ebenfalls dynamisch in der App angezeigt werden.
Des Weiteren sind wir noch in Verhandlungen mit dem &lt;a href=&quot;http://www.direktvermarkter-heilbronn-ludwigsburg.de/&quot;&gt;Bauernverband Heilbronn-Ludwigsburg e.V.&lt;/a&gt; um eine aktuelle
Liste aller Bio- und Hofläden in der Region Heilbronn bekommen und in der App anzuzeigen.&lt;/p&gt;

&lt;p&gt;Die aktuelle Version der Mein Bad Wimpfen App kann kostenlos im &lt;a href=&quot;https://itunes.apple.com/app/apple-store/id989719442?pt=74937800&amp;amp;ct=ODL&amp;amp;mt=8&quot;&gt;App Store&lt;/a&gt; 
geladen werden und ist für iPhones und iPads mit iOS 8 und besser verfügbar.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/apps/2015/07/23/erlenbacher-weinfest-app-und-updates</link>
                <guid>http://blog.opendatalab.de/apps/2015/07/23/erlenbacher-weinfest-app-und-updates</guid>
                <pubDate>Thu, 23 Jul 2015 00:00:00 +0200</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  










	

        <item>
                <title>Open Data Kickoff Event in Heilbronn</title>
                <description>&lt;p&gt;Was ist Open Data? Wie können Daten überhaupt geöffnet werden? Welchen Nutzen haben offene Daten für den Bürger, die Verwaltung und die Wirtschaft? Welche Beispiele gibt es bereits in der Region?&lt;/p&gt;

&lt;p&gt;Am 01. Juli 2015 um 18 Uhr haben wir von Code for Heilbronn zu einer Open Data Informationsveranstaltung in den &lt;a href=&quot;http://coworking-heilbronn.org/&quot;&gt;Coworking Space Heilbronn&lt;/a&gt; eingeladen, um diese Fragen gemeinsam mit den Teilnehmern zu erörtern.&lt;/p&gt;

&lt;p&gt;Insgesamt hatten wir 20 Teilnehmer, darunter auch einige Stadträte aus Heilbronn und Neckarsulm sowie Mitarbeiter der Pressestelle der Stadt Heilbronn. Die Rückmeldungen waren sehr positiv und vielversprechend.&lt;/p&gt;

&lt;p&gt;Gezeigte Präsentationen &amp;amp; Programm:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.google.com/presentation/d/1KhITDeAZTuwybBMhva7zAQ2lxYWdYHsx8s2uK_wwvEc/edit&quot;&gt;Begrüßung &amp;amp; Was ist Open Data? (Felix Ebert, Adrian Stabiszewski)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.gerd-armbruster.de/vortrag-open-data-projekt-stadt-mannheim/&quot;&gt;Erfahrungsbericht &amp;amp; Wissenstransfer aus Mannheim (Gerd Armbruster)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.slideshare.net/implizit/20150701-180000-w3nopendatahochschulenpublic&quot;&gt;Bedeutung für die Hochschulen (Detlef Kreuz)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.google.com/presentation/d/17wOxJiALGDLl7l3gMRKQbSWisH47H80i5Azrcb2N0DE/edit&quot;&gt;Praxisbeispiele in Heilbronn und Umgebung (Daniel Stahl)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://blog.opendatalab.de/opendata/2015/04/29/bad-wimpfen-app/&quot;&gt;Smartphone Apps aus der Community (Adrian Stabiszewski)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;ab 19:00 Uhr: Diskussion &amp;amp; Hands on der Projekte auf &lt;a href=&quot;http://codefor.de/heilbronn&quot;&gt;codefor.de&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Einen besonderen Dank an &lt;a href=&quot;https://twitter.com/gerd_armbruster&quot;&gt;Gerd Armbruster&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/tanjasagasser&quot;&gt;Tanja Sagasser&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/dkreuz&quot;&gt;Detlef Kreuz&lt;/a&gt; und &lt;a href=&quot;https://twitter.com/stahlniel&quot;&gt;Daniel Stahl&lt;/a&gt; für die tolle Unterstützung!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/kickoff.jpg&quot; alt=&quot;Kickoff&quot; title=&quot;Open Data Kickoff&quot; /&gt;&lt;/p&gt;

</description>
                <link>http://blog.opendatalab.de/opendata/2015/06/23/open-data-kickoff</link>
                <guid>http://blog.opendatalab.de/opendata/2015/06/23/open-data-kickoff</guid>
                <pubDate>Tue, 23 Jun 2015 00:00:00 +0200</pubDate>
				<dc:creator>Felix Ebert</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Mein Bad Wimpfen - die Bad Wimpfen App</title>
                <description>&lt;p&gt;Der Markt der CityApps ist sehr groß. Fast jede größere Stadt und vor allem Touristenorte bieten in den App Stores
eigene Apps an, die den Besucher über das Geschehene vor Ort informieren sollen. Einige Softwarehersteller bieten
mittlerweile diese Apps von der Stange an, die einen Mix aus einer Webseite und einiger nativer Funktionen darstellen.
Über die Herkunft und Aktualität der Inhalte wird selten ein Wort gesagt. Ob es die Location noch gibt und ob sie offen 
ist erfährt der Besucher erst, wenn er vor der Tür steht. Wenn es um aktuelle Termine geht, wird der Anwender 
dann doch lieber auf die Homepage der Stadt verwiesen statt ihm sinnvolle Funktionen zur Übernahme des Events in 
seinen Terminkalender anzubieten.&lt;/p&gt;

&lt;p&gt;Wir von &lt;a href=&quot;http://codefor.de/heilbronn/&quot;&gt;Code For Heilbronn&lt;/a&gt; haben uns was anderes überlegt und in 
Zusammenarbeit mit der &lt;a href=&quot;http://www.badwimpfen.de&quot;&gt;Stadt Bad Wimpfen&lt;/a&gt; einen
einfachen aber auch gleichzeitig coolen City Guide für Bad Wimpfen entwickelt.
&lt;a href=&quot;https://itunes.apple.com/app/apple-store/id989719442?pt=74937800&amp;amp;ct=ODL&amp;amp;mt=8&quot;&gt;Unser City Guide (App Store)&lt;/a&gt; basiert auf 
drei Themen: Events, Locations und Sehenswürdigkeiten.&lt;/p&gt;

&lt;p&gt;Den aktuellen Eventkalender haben wir von der Stadt Bad Wimpfen kostenlos und als Open Data zur Verfügung 
gestellt bekommen. Dies erlaubt uns alle Daten uneingeschränkt in die App einzubauen und zu verwenden. Wir 
aktualisieren die Daten alle 24h und bieten den Benutzern damit einen topaktuellen Eventkalender direkt in der App 
an. Wo das Event stattfindet kann sofort auf der Karte auf dem Smartphone nachgeschaut werden und bei 
Bedarf kann dahin navigiert werden. Mit nur einem Klick wird der Termin in den eigenen Terminkalender übernommen. 
Alle Details, wie Start- und Endzeit, der Ort und die Beschreibung werden direkt im Terminkalender angezeigt.
Aus dem Terminkalender kann der Termin natürlich mit Freunden geteilt werden und weitere Teilnehmer 
können eingeladen werden.
Um bei den über 400 Events in Bad Wimpfen die Übersicht nicht zur verliehren, bietet ein komfortabler Filter
die Möglichkeit bestimmte Events auszublenden.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/bwapp/IMG_0082.PNG&quot; alt=&quot;Termin in der App&quot; title=&quot;Terminanzeige in der App&quot; /&gt;
&lt;img src=&quot;/assets/bwapp/IMG_0083.PNG&quot; alt=&quot;Terminübernahme&quot; title=&quot;Terminübernahme&quot; /&gt;
&lt;img src=&quot;/assets/bwapp/IMG_0084.PNG&quot; alt=&quot;Eigener Terminkalender&quot; title=&quot;Eigener Terminkalender&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Die Locations haben wir zum Teil aus dem offenen Locations-Portal &lt;a href=&quot;http://gonam.de&quot;&gt;gonam.de&lt;/a&gt; übernommen, aber auch selbst recherchiert.
Dadurch bietet der City Guide eine aktuelle Übersicht der Top-Locations in Bad Wimpfen an. Diese können sowohl als Liste,
aber auch auf einer Karte dargestellt werden. Natürlich kann auch hier leicht zu einer bestimmten Location navigiert werden.
Ein Klick auf das Höhrericon und man kann einen Tisch reservieren. Ein Klick auf das Home-Icon und die Homepage wird angezeigt.
Für verschiedene Locations haben wir auch die Bewertungen aus anderen Portalen recherchiert. Langfristig würden
wir jedoch gerne unsere User die Locations auch bewerten lassen.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/bwapp/IMG_0086.PNG&quot; alt=&quot;Liste der Locations&quot; title=&quot;Liste der Locations&quot; /&gt;
&lt;img src=&quot;/assets/bwapp/IMG_0087.PNG&quot; alt=&quot;Karte mit Locations&quot; title=&quot;Karte mit Locations&quot; /&gt;
&lt;img src=&quot;/assets/bwapp/IMG_0088.PNG&quot; alt=&quot;Locationdetails&quot; title=&quot;Locationdetails&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Unser City Guide listet auch eine Auswahl an den bekanntesten Sehenswürdigkeiten der Stadt. Vom Blauen Turm 
bis hin zur Stadtkirche sind alle Attraktionen enthalten. Alle Sehenswürdigkeiten werden mit Bild gezeigt.
Eine Karte mit Satelitenansicht ist ebenfalls vorhanden und erlaubt die Orientierung innerhalb der Stadt.
Zu den meisten Gebäuden haben wir eine Beschreibung und das Baujahr hinzugefügt.
Als Quelle für die Inhalte haben wir auf Wikipedia zurückgegriffen. Dort wird eine umfangreiche &lt;a href=&quot;http://de.wikipedia.org/wiki/Liste_der_Kulturdenkmale_in_Bad_Wimpfen&quot;&gt;Liste 
aller Sehenswürdigkeiten und Denkmale&lt;/a&gt; 
in Bad Wimpfen gepflegt.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/bwapp/IMG_0090.PNG&quot; alt=&quot;Liste der Sehenswürdigkeiten&quot; title=&quot;Liste der Sehenswürdigkeiten&quot; /&gt;
&lt;img src=&quot;/assets/bwapp/IMG_0091.PNG&quot; alt=&quot;Details zu einer Sehenswürdigkeit&quot; title=&quot;Details zu einer Sehenswürdigkeit&quot; /&gt;
&lt;img src=&quot;/assets/bwapp/IMG_0092.PNG&quot; alt=&quot;Karte mit den Sehenswürdigkeiten&quot; title=&quot;Karte mit den Sehenswürdigkeiten&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Als letztes Feature haben wir in die App die Anzeige der Wetterverhersage implementiert. Auch hier greifen wir auf die 
Dienste von Open Data zurück und bedienen uns der &lt;a href=&quot;http://openweathermap.org&quot;&gt;OpenWeatherMap&lt;/a&gt;. Dort werden die 
Daten unter einer CC BY-SA Lizenz zur Verfügung gestellt. Wir rufen die Wettervorhersage für die nächsten 
drei Tage ab und zeigen sie automatisch, wenn der Benutzer die App öffnet. Um alle drei Tage zu sehen, 
genügt es den Screen einfach nach unten zu ziehen.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/bwapp/bwapp-wetter.jpg&quot; alt=&quot;App im Einsatz&quot; title=&quot;Mocku-Template by https://dribbble.com/shots/1736601-6-Photorealistic-iPhone-6-mockups&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;fazit&quot;&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Dieses Projekt hat mal wieder gezeigt, dass mit etwas Willen und den entsprechenden Partnern 
(&lt;a href=&quot;https://twitter.com/thomas_michl&quot;&gt;Thomas Michl&lt;/a&gt;) bei der Stadt
es doch möglich ist Open Data Projekte umzusetzen. Wir hoffen auf weitere Kooperationen und möchten auch in Zukunft die 
App weiter entwickeln.
Für uns war die Arbeit an dem Projekt sehr lehrreich. Wir haben eine neue Sprache gelernt (Swift) und haben mit der 
App eine gute Basis für weitere Projekte geschaffen.&lt;/p&gt;

&lt;p&gt;Die hier gezeigte App ist für das iPhone entwickelt worden und 
unter dem Namen &lt;a href=&quot;https://itunes.apple.com/app/apple-store/id989719442?pt=74937800&amp;amp;ct=ODL&amp;amp;mt=8&quot;&gt;“Mein Bad Wimpfen” im App Store verfügbar&lt;/a&gt;.
Eine Android Version ist bereits in Planung
und wird je nach verfügbaren Resourcen umgesetzt.&lt;/p&gt;

&lt;p&gt;Die App wurde von &lt;a href=&quot;http://appproject.de/&quot;&gt;Christian&lt;/a&gt; und &lt;a href=&quot;http://grundid.de&quot;&gt;Adrian&lt;/a&gt; im
&lt;a href=&quot;http://coworking-heilbronn.org/&quot;&gt;Coworking Heilbronn&lt;/a&gt; entwickelt.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://itunes.apple.com/app/apple-store/id989719442?pt=74937800&amp;amp;ct=ODL&amp;amp;mt=8&quot;&gt;&lt;img src=&quot;/assets/app-store-badge.svg&quot; alt=&quot;App Store&quot; title=&quot;App Store&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/opendata/2015/04/29/bad-wimpfen-app</link>
                <guid>http://blog.opendatalab.de/opendata/2015/04/29/bad-wimpfen-app</guid>
                <pubDate>Wed, 29 Apr 2015 00:00:00 +0200</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Die Bäume in Heilbronn</title>
                <description>&lt;p&gt;Vor einigen Wochen haben wir vom Grünflächenamt das Baumkataster Heilbronns als Shape-Datei erhalten. Daraus konnten
wir die einzelnen Baumdaten extrahieren und in eine GeoJson-Datei konvertieren. Die Idee ist eine
&lt;a href=&quot;/opendata/2014/11/19/kastanien-app-mit-baumkataster&quot;&gt;Kastanien-App&lt;/a&gt; daraus
zu machen, die ich bereits in einem früheren Post beschrieben habe.
Bevor wir jedoch mit der App richtig loslegen, wollte ich erstmal schauen, wie es mit den Heilbronner Bäumen aussieht
und habe einige Auswertungen durchgeführt.&lt;/p&gt;

&lt;p&gt;Das Baumkataster enthält pro Baum mehrere Informationen, die man für Auswertungen nutzen kann. So findet man außer
dem Baumnamen auch die Art, den Stammumfang, den Kronendurchmesser und den Ort (Stadtteil und Straße) wo sich der
Baum befindet. Natürlich sind auch die genauen GPS Koordinaten enthalten.&lt;/p&gt;

&lt;p&gt;Als Erstes kann man sagen, dass das Baumkataster insgesamt 43605 Bäume umfasst. Diese sind in 35817 Laubbäume,
1653 Nadelbäume und 5638  Obstbäume untergliedert. 497 Bäume werden unter der Kategorie “Baumgruppe” geführt.
Hier sind mehrere gleichartige Bäume zusammengefasst.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/baum_map2.png&quot; alt=&quot;Beispiel aus dem Baumkataster&quot; title=&quot;Beispiel aus dem Baumkataster&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;stadtteile&quot;&gt;Stadtteile&lt;/h3&gt;

&lt;p&gt;Als nächstes habe ich einen Blick auf die Aufteilung zwischen den Stadtteilen geworfen. Hier zeigt sich, dass in der
Innenstadt doch eine recht große Menge an Bäumen wächst.&lt;/p&gt;

&lt;table class=&quot;table table-striped table-bordered&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Stadtteil&lt;/th&gt;&lt;th&gt;Anzahl Bäume&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Biberach&lt;/td&gt;&lt;td&gt;1925&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Böckingen&lt;/td&gt;&lt;td&gt;6955&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Frankenbach&lt;/td&gt;&lt;td&gt;1230&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;HN Innenstadt&lt;/td&gt;&lt;td&gt;7914&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;HN Äussere Bezirke&lt;/td&gt;&lt;td&gt;10504&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Horkheim&lt;/td&gt;&lt;td&gt;1516&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Kirchhausen&lt;/td&gt;&lt;td&gt;1122&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Klingenberg&lt;/td&gt;&lt;td&gt;944&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Neckargartach&lt;/td&gt;&lt;td&gt;6082&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Sontheim&lt;/td&gt;&lt;td&gt;5312&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;img src=&quot;/assets/baum_stadtteile.png&quot; alt=&quot;Aufteilung als Grafik&quot; title=&quot;Aufteilung als Grafik&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;straßen&quot;&gt;Straßen&lt;/h3&gt;

&lt;p&gt;Wertet man die Zahlen nach Straße aus, dann ergibt sich ein Bild, das die meisten Heilbronner nicht glauben werden.
Die Wollhausstraße mit über 1200 Bäumen im Baumkataster sieht nicht unbedigt als die grüne Meile Heilbronns aus.
Diese Zahlen kommen dadurch zustande, dass alle Bäumen auf dem Hauptfriedhof dieser Straße zugeordnet sind.&lt;/p&gt;

&lt;p&gt;Entlang der Neckartalstraße, die als eine der längsten Straßen in Heilbronn gilt, wachsen über 1000 Bäume.
Auch der Wertwiesenpark ist mit knapp über 900 Bäumen gut bestückt. Die Staußenbergstraße punktet hauptsächlich
mit dem Südfriedhof in Sontheim.&lt;/p&gt;

&lt;table class=&quot;table table-striped table-bordered&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Straße&lt;/th&gt;&lt;th&gt;Anzahl Bäume&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Wollhausstraße&lt;/td&gt;&lt;td&gt;1264&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Neckartalstraße&lt;/td&gt;&lt;td&gt;1059&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Wertwiesen&lt;/td&gt;&lt;td&gt;919&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Staufenbergstraße&lt;/td&gt;&lt;td&gt;832&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Römerstraße&lt;/td&gt;&lt;td&gt;675&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Neckar&lt;/td&gt;&lt;td&gt;653&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Badstraße&lt;/td&gt;&lt;td&gt;612&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Neipperger Straße&lt;/td&gt;&lt;td&gt;576&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Neckar Schiffahrtskanal&lt;/td&gt;&lt;td&gt;563&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Am Gesundbrunnen&lt;/td&gt;&lt;td&gt;548&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;baumarten&quot;&gt;Baumarten&lt;/h3&gt;

&lt;p&gt;Die Sortenaufteilung sieht wie folgt aus. In den TOP 10 taucht leider keine Kastanie auf. Erst auf dem 11. Platz
findet sich in Heilbronn die Gewöhnliche &lt;a href=&quot;http://de.wikipedia.org/wiki/Rosskastanien&quot;&gt;Roßkastanie&lt;/a&gt; mit genau 800 Bäumen.&lt;/p&gt;

&lt;p&gt;Hier sind die Top 10 Arten jeweils mit einem Link zu WikiPedia.&lt;/p&gt;

&lt;table class=&quot;table table-striped table-bordered&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Baumart&lt;/th&gt;&lt;th&gt;Anzahl Bäume&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/Ahornbl%C3%A4ttrige_Platane&quot;&gt;Ahornblättrige Platane&lt;/a&gt;&lt;/td&gt;&lt;td&gt;4497&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/Spitzahorn&quot;&gt;Spitz-Ahorn&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2874&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/Hainbuche&quot;&gt;Gemeine Hainbuche&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2261&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/Feldahorn&quot;&gt;Feld-Ahorn&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1841&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/Stieleiche&quot;&gt;Stiel-Eiche&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1723&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/Berg-Ahorn&quot;&gt;Berg-Ahorn&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1657&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/%C3%84pfel&quot;&gt;Apfelbaumart&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1619&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/Gemeine_Esche&quot;&gt;Gemeine Esche&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1462&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/Krim-Linde&quot;&gt;Krim-Linde&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1326&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://de.wikipedia.org/wiki/H%C3%A4nge-Birke&quot;&gt;Gemeine Weiß-Birke&lt;/a&gt;&lt;/td&gt;&lt;td&gt;871&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Ein Blick auf das Ende der Liste verrät, dass Heilbronn ca. 100 Baumarten hat, die jeweils nur 1 Mal
in der Stadt vorkommen.
Vielleicht würde es sich lohnen, all diese Bäume zu besuchen und zu fotografieren? Das ist eine Idee für die Kastanien-App.&lt;/p&gt;

&lt;h3 id=&quot;stammumfang&quot;&gt;Stammumfang&lt;/h3&gt;

&lt;p&gt;Eine Auswertung nach Stammumfang zeigt, dass die meisten Bäume in der Stadt einem Stammumfang bis zu 2 Metern haben.
Ab 5 Meter wird die Luft schnell dünn und ab 10 Meter findet man nur noch Einzelstücke. Leider enthält das
Baumkataster keine Informationen über das Alter der Bäume.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/baum_stammumfang.png&quot; alt=&quot;Aufteilung als Grafik&quot; title=&quot;Aufteilung als Grafik&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;top-3-größe&quot;&gt;Top 3 Größe&lt;/h3&gt;

&lt;p&gt;Zu guter letzt habe ich noch einen Blick auf die größten Bäume in Heilbronn geworfen.
Der Baum mit dem größtem Stammumfang ist die &lt;a href=&quot;http://de.wikipedia.org/wiki/Kaukasische_Fl%C3%BCgelnuss&quot;&gt;Flügelnuß&lt;/a&gt;
am Süd-Eingang vom Frankenstadion. &lt;a href=&quot;https://www.google.de/maps/place/49%C2%B008'02.2%22N+9%C2%B012'17.6%22E/@49.1338697,9.204929,161m/data=!3m1!1e3!4m2!3m1!1s0x0:0x0&quot;&gt;Gleich auf der rechten Seite&lt;/a&gt; befindet sich der riesen Baum mit
einem Kronendurchmesser von 25m.&lt;/p&gt;

&lt;p&gt;Die Nummer 2, was den Stammumfang anbetrifft ist ebenfalls eine Flügelnuß mit einem Umfang von 13,46m. Sie ist
wahrscheinlich allen Heilbronnern bekannt, denn sie befindet sich
&lt;a href=&quot;https://www.google.de/maps/place/49%C2%B008'30.6%22N+9%C2%B013'23.1%22E/@49.1418114,9.2228586,161m/data=!3m1!1e3!4m2!3m1!1s0x0:0x0&quot;&gt;gleich neben der Harmonie&lt;/a&gt;,
an der Kreuzung zwischen Allee und Moltkestraße. Dieser Baum hat einen Kronendurchmesser von 24m.&lt;/p&gt;

&lt;p&gt;Ein weiteres Highlight der riesen Bäume ist die &lt;a href=&quot;http://de.wikipedia.org/wiki/Winterlinde&quot;&gt;Winter-Linde&lt;/a&gt;, die sich im &lt;a href=&quot;https://www.google.de/maps/place/49%C2%B010'18.7%22N+9%C2%B007'46.9%22E/@49.1685988,9.1297534,70a,20y,83.36t/data=!3m1!1e3!4m2!3m1!1s0x0:0x0&quot;&gt;Stadtteil Kirchhausen&lt;/a&gt; befindet. Sie
 ist mit 29m Kronendurchmesser die Nummer 1 in dieser Kategorie. Diese Krone wird von “nur” 7,6m Stammumfang getragen.&lt;/p&gt;

&lt;h3 id=&quot;fazit&quot;&gt;Fazit&lt;/h3&gt;

&lt;p&gt;Das Baumkataster ist eine interessante Datenbank über die Umwelt, die uns umgibt. Ich möchte mir diesen Sommer auf
jeden Fall all die großen Bäume aus der Nähe anschauen. Auch einige Einzelstücke will ich mit dem Fahrrad anfahren und
fotografieren. Diese Bilder sollen in die
&lt;a href=&quot;/opendata/2014/11/19/kastanien-app-mit-baumkataster&quot;&gt;Kastanien-App&lt;/a&gt; einfliesen, die bereits in der Umsetzung ist.
Mit dieser App werden alle interessierten Bürger leicht Bäume in Heilbronn finden können.&lt;/p&gt;

&lt;p&gt;Alle Daten Stand: 27.11.2014, Quelle: Stadt Heilbronn, Grünflächenamt, 12/2014&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/opendata/2015/03/13/die-baeume-in-heilbronn</link>
                <guid>http://blog.opendatalab.de/opendata/2015/03/13/die-baeume-in-heilbronn</guid>
                <pubDate>Fri, 13 Mar 2015 00:00:00 +0100</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Out of Space - Neue Event-Ideen aus dem Coworking Space Heilbronn</title>
                <description>&lt;blockquote&gt;
  &lt;p&gt;“Wie wird man ein guter Musiker? Es hilft, die Theorie zu kennen, die Mechanik des Instruments zu verstehen und Talent zu haben. Der größte Faktor aber ist Übung, die Theorie wieder und immer wieder anzuwenden und durch Feedback jedes Mal etwas besser zu werden.”
&lt;em&gt;codekata.com&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Wir glauben, dass das auch auf Software-Entwickler zutrifft. Daher möchten wir im &lt;a href=&quot;http://coworking-heilbronn.org/&quot;&gt;Coworking Space Heilbronn&lt;/a&gt; den Donnerstag Abend als einen festen Zeitpunkt zum gemeinsamen Austausch, Lernen und Umsetzen von Projekten etablieren.&lt;/p&gt;

&lt;p&gt;Folgende Events stehen bereits fest:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;12.03.2015: Git + GitHub Workshop für Einsteiger&lt;/li&gt;
  &lt;li&gt;19.03.2015: Code for Heilbronn mit Special Guest &lt;a href=&quot;http://www.codeforamerica.org/people/drew-wilson/&quot;&gt;Drew&lt;/a&gt; von &lt;a href=&quot;http://www.codeforamerica.org/&quot;&gt;Code for America&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;23.04.2015: AngularJS Workshop für Einsteiger&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Einen Abend im Monat treffen wir uns speziell für den Zweck, im Rahmen von &lt;a href=&quot;http://codefor.de/heilbronn&quot;&gt;Code for Heilbronn&lt;/a&gt; Open Data Projekte umzusetzen.&lt;/p&gt;

&lt;p&gt;An den übrigen Donnerstagen wollen wir das Format “4 hour venture” ausprobieren, bei dem kurze Projekte zum Testen einer Idee oder zum Einarbeiten in eine neue Technologie umgesetzt werden - ganz nach dem Prinzip Learning by doing.&lt;/p&gt;

&lt;p&gt;Für dieses Format haben wir uns bereits 3 machbare Projekte mit viel Lernpotenzial überlegt:&lt;/p&gt;

&lt;h3 id=&quot;where-is-my-bus---mobile-app-um-busse-live-zu-tracken&quot;&gt;Where is my Bus - Mobile App um Busse Live zu tracken&lt;/h3&gt;
&lt;p&gt;Echtzeitdaten im ÖPNV sind ein spannendes Thema: Wo bleibt der Bus? Wir wollen eine Mobile-App auf Android Basis (bei Interesse auch iPhone) entwickeln, die es erlaubt einen Bus während der Fahrt zu tracken und seine Position zu übermitteln. Die Idee ist, dass wir Fahrgäste und Busfahrer finden, die diese App nutzen wollen um anderen Gästen live Daten über die Position eines Busses zu übermitteln. Alle Daten werden anonymisiert erfasst und auch während der Fahrt wird es keine Möglichkeit geben, Bewegungsprofile zu erstellen. Nach jeder Haltestelle werden neue zufällige IDs für die Nutzer erstellt.&lt;/p&gt;

&lt;p&gt;Vorgehen:
Wir vervollständigen die Busslinien in Heilbronn in OpenStreetMap und extrahieren sie in eine separate Datenbank. Danach erstellen wir eine einfache App, die die GPS Position des Nutzers erfasst und prüft, ob die Bewegung entlang einer Buslinie verläuft. Der Nutzer wird die Möglichkeit haben die Buslinie genau festzulegen, falls die Strecke von mehreren Bussen frequentiert wird.
Die aktuelle Position des Nutzers wird nur solange übertragen, wie er sich entlang der Buslinie bewegt. Sobald eine Abweichung festgestellt wird, beendet sich die App automatisch.
Gleichzeitig werden wir eine Kartenansicht in die App integrieren, in der man alle Busse als bewegliche Icons sehen kann.
Als ein schönes Add-On können wir auch eine Webseite erstellen, auf der die Busse ebenfalls verfolgt werden können.&lt;/p&gt;

&lt;p&gt;Skills to learn:
Android, Java, Geo-Daten, Livestreaming, (optional iOS, und HTML mit AngularJS und Leaflet)&lt;/p&gt;

&lt;h3 id=&quot;angularjs-plugin-für-adressenerfassung&quot;&gt;AngularJS Plugin für Adressenerfassung&lt;/h3&gt;

&lt;p&gt;Projektbeschreibung:
Es gibt kaum ein Formular bei dem keine Adressdaten erfasst werden. Die Eingabe der Straße, PLZ und des Ortes ist jedoch mühsam und könnte dank bereits verfügbarer Datendanken stark erleichtert werden. So gibt es zum Beispiel die Open GeoDB, die alle PLZ und die dazugehörigen Orte enthält. Ähnlich sieht es bei OpenStreetMap und den Straßennamen aus. Eine Eingabemaske könnte also zuerst die PLZ erfragen und den passenden Ort automatisch ermitteln. Danach bei der Eingabe automatisch die Straßen vorschlagen, die es in diesem Ort gibt.&lt;/p&gt;

&lt;p&gt;Vorgehen:
Wir wollen die PLZ und Orte aus Open GeoDB und die Straßen aus OpenStreetMap zu einer gemeinsamen Datenbank zusammenführen. Danach entwickeln wir ein Backendsystem welches via REST-API Suchanfragen zu einer PLZ, Ort oder Straße ausführen kann. Im letzten Schritt erstellen wir ein AngularJS Plugin, welches ganz einfach in vorhandene AngularJS Projekte eingebunden werden kann und mit Formularen verknüpft werden kann.&lt;/p&gt;

&lt;p&gt;Skills to learn:
JavaScript, Java, Geo-Daten, OpenStreetMap, HTML, CSS, Open Data&lt;/p&gt;

&lt;h3 id=&quot;point-of-sale-für-den-coworking-space&quot;&gt;Point Of Sale für den Coworking Space&lt;/h3&gt;

&lt;p&gt;Projektbeschreibung:
Im Coworking Space gibt es die Möglichkeit kleine Snacks und Getränke zu kaufen. Diese wollen wir mit einem POS System erfassen. Wir haben bereits in der Vergangenheit ein POS für einen Blumenladen erstellt. Dieses POS wurde mit der Zeit ersetzt, doch wir haben immer noch die Hardware (Touchscreen, POS Drucker, Kassenladen, PC) und könnten daraus eine Kasse bauen.&lt;/p&gt;

&lt;p&gt;Vorgehen:
Aus den bereits vorhandenen Hardwareteilen basteln wir einen WLAN-tauglichen POS Drucker. Ein Backend in der Cloud wird für die Speicherung der Coworkingkunden und der Belege erstellt. Ein AngularJS Frontend wird für die Erfassung der Kunden und die Durchführung der Transaktionen implementiert. Diese Lösung soll es möglich machen, von allen Geräten aus im Coworking Space (PC, Notebook, Handy, Tablet) die Kasse im Browser zu öffnen und einen Beleg zu erfassen und auszudrucken.&lt;/p&gt;

&lt;p&gt;Skills to learn:
Hardware-Hacking, Java, MongoDB, Druckersteuerung, AngularJS Frontend&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Natürlich kannst du auch deine eigenen Ideen vorschlagen und bei einem der nächsten Treffen vorstellen. Welche Themen und Events interessieren dich am meisten?
Schick uns deine Ideen oder Vorschläge via Twitter oder Besuche unsere Facebook Seite.&lt;/p&gt;

&lt;p&gt;Wir freuen uns auf deinen Besuch.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/coworking/2015/03/05/cowo-space-events</link>
                <guid>http://blog.opendatalab.de/coworking/2015/03/05/cowo-space-events</guid>
                <pubDate>Thu, 05 Mar 2015 00:00:00 +0100</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Kastanien App als Beispiel für die Nutzung des Baumkatasters</title>
                <description>&lt;p&gt;Vor ein paar Monaten hat die Stadt Hamburg auf ihrem &lt;a href=&quot;http://transparenz.hamburg.de/&quot;&gt;Transparenzportal&lt;/a&gt; das &lt;a href=&quot;http://suche.transparenz.hamburg.de/dataset/strassenbaumkataster-hamburg&quot;&gt;Baumkataster&lt;/a&gt;
als Open Data veröffentlicht. Passend zur Zeit der Herbstsparziergänge drängte sich uns bei
einem &lt;a href=&quot;http://codefor.de/heilbronn&quot;&gt;Code For Heilbronn&lt;/a&gt; Treff die Idee einer Baum App auf,
um unterwegs leicht Kastanienbäume zu finden und deren Flüchte zu sammeln.&lt;/p&gt;

&lt;p&gt;Nachdem wir die Daten in das GeoJson Format konvertiert und sie kurz analysiert haben, stellten wir fest, dass
die Daten viel umfangreicher waren als ursprünglich angenommen. Statt nur einer Baumbezeichnung und den GPS-Koordinaten
enthalten die Daten teilweise auch den Ort (Straße), den Stammumfang, den Kronendurchmesser und das Pflanzjahr.&lt;/p&gt;

&lt;p&gt;Hier mal ein Beispieldatensatz:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;{
    &quot;type&quot;: &quot;Feature&quot;,
    &quot;properties&quot;: {
    &quot;BAUM_ID&quot;: 100061819,
    &quot;BOTANISCHE&quot;: &quot;Castanea sativa&quot;,
    &quot;BAUMART&quot;: &quot;Esskastanie, Marone&quot;,
    &quot;PFLANZJAHR&quot;: 2005,
    &quot;KRONE_DM&quot;: &quot;3 m&quot;,
    &quot;STAMMUMFAN&quot;: &quot;18 cm&quot;,
    &quot;STANDORT&quot;: &quot;An der Alster g85&quot;
},
  &quot;geometry&quot;: {
    &quot;type&quot;: &quot;MultiPoint&quot;,
    &quot;coordinates&quot;: [
      [
        10.002291161830076,
        53.55674324547057
      ]
    ]
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Diese Informationen können auch für den Laien sehr interessant sein. Beispielsweise lässt sich daraus leicht das
ungefähre Alter des Baums abschätzen und auch benachbarte Bäume gut vergleichen. Auch die mögliche Menge der Kastanienfrüchte
lässt sich mit diesen Informationen besser abschätzen.&lt;/p&gt;

&lt;p&gt;Mit diesen Erkenntnissen haben wir dann angefangen erste Mockups und Prototypen zu bauen. Im Moment kann das Projekt
bereits die Kastanien auf einer Karte darstellen und auch Details zu den Kastanien anzeigen.&lt;/p&gt;

&lt;h3 id=&quot;baumkataster-in-heilbronn&quot;&gt;Baumkataster in Heilbronn&lt;/h3&gt;

&lt;p&gt;Da wir aus der Region um Heilbronn kommen, bringt uns das Baumkataster aus Hamburg nicht so viel. Auch in
OpenStreetMap sind leider nicht sehr viele Bäume gepflegt. Daher haben wir das Katasteramt in Heilbronn mit der Bitte
angefragt, uns das lokale Baumkataster zur Verfügung zu stellen. Nach einiger Zeit haben wir dann auch die Zusage
bekommen und sind sehr gespannt auf die Daten. :)&lt;/p&gt;

&lt;p&gt;Mit der Umsetzung der Ideen könnte sich daraus auch eine interessante Zusammenarbeit
entwickeln, wie wir im Folgendem darstellen wollen.&lt;/p&gt;

&lt;h3 id=&quot;ideen-für-lebende-daten&quot;&gt;Ideen für lebende Daten&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/kastanien-app.png&quot; alt=&quot;App Mockup&quot; title=&quot;App Mockup&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Mit einer mobilen App können von den Nutzern sehr schnell Bilder von den Bäumen erstellt werden. Da die Bilder über
 die Lebensdauer des Baums gespeichert bleiben, können damit sehr einfach Veränderungen am Baum festgestellt werden.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Die verschiedenen Baumsorten können mit Artikeln in Wikipedia verknüpft werden und so weiterführende Informationen
 den Benutzern liefern&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Durch den umfangreichen Datenbestand könnte die App den (Biologie-)Lehrern bei der
 Planung von Exkursionen behilflich sein.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Auch Baumpatenschaften wären einfach zu realisieren. Nutzer könnten sich als Paten für einen Baum registrieren und damit
 besondere Verantwortung für den Baum übernehmen.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Tipps und Tricks rund um den Baum. Man könnte virtuelle Post-Its an den Baum häften und den anderen Benutzern interessante
 Wander- oder Besichtigungstipps in der Nähe geben.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Mit einem entsprechenden Backend könnte auch das Katasteramt kleine Aufgaben an die Benutzer vergeben.
 So wäre es beispielsweise möglich, dass das Katasteramt die Benutzer auffordert einen Baum zu fotografieren oder
 auch direkt den Baumstamm zu messen. Diese Aufgaben könnten direkt bei den Details des Baums angezeigt werden (siehe Screenshot).
 Als Belohnung könnte man sich beispielsweise Kino-Gutscheine oder Ähnliches für die aktivsten Benutzer vorstellen.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Diese Ideen sind nur ein kleiner Anfang. Zuerst wird es wichtig sein bis zum nächsten Herbst eine lauffähige App zu
realisieren, die die Daten anzeigen und mit Bildern umgehen kann.&lt;/p&gt;

&lt;p&gt;Unser kleines Team wird sowohl das Backend als auch die Android und iOS App entwickeln. Wir freuen uns jedoch über weitere
Mitstreiter und laden euch ein bei unserem Projekt via GitHub mitzumachen. Die Android App und das Backend in Java findet ihr unter
&lt;a href=&quot;https://github.com/opendata-heilbronn/kastanien-app&quot;&gt;https://github.com/opendata-heilbronn/kastanien-app&lt;/a&gt;.
Die dazu passende iOS App wird unter
&lt;a href=&quot;https://github.com/opendata-heilbronn/kastanien-app-ios&quot;&gt;https://github.com/opendata-heilbronn/kastanien-app-ios&lt;/a&gt;
entwickelt.&lt;/p&gt;

&lt;p&gt;Das &lt;a href=&quot;https://www.flickr.com/photos/anpena/3074426020/&quot;&gt;Kastanienbild&lt;/a&gt; für das Mockup wurde unter den
Bedinungen von CC BY-NC-SA verwendet.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/opendata/2014/11/19/kastanien-app-mit-baumkataster</link>
                <guid>http://blog.opendatalab.de/opendata/2014/11/19/kastanien-app-mit-baumkataster</guid>
                <pubDate>Wed, 19 Nov 2014 00:00:00 +0100</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  










	

        <item>
                <title>Was steckt in meinem Leitungswasser?</title>
                <description>&lt;p&gt;Trinkwasser gilt als das am besten kontrollierte Lebensmittel in Deutschland.
Und trotzdem wissen wir sehr wenig über das Wasser, das bei uns aus dem Hahn kommt.&lt;/p&gt;

&lt;p&gt;Einige Kommunen veröffentlichen die Untersuchungsergebnisse des Trinkwassers zumindest auf ihren Webseiten, bei manchen wird nur der Härtegrad genannt.
Doch selbst wenn die Zahlen veröffentlicht sind, sind sie auf den Webseiten der Gemeinden oft schlecht auffindbar und bleiben für den Bürger eine abstrakte Größe.
Was bedeutet ein Härtegrad von 9?
Sind 200 Milligramm Calcium pro Liter viel oder wenig?
Wie mineralreich unser Leitungswasser ist, zeigt sich erst, wenn wir es untereinander und mit Wasser aus dem Handel vergleichen können.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://opendatalab.de/projects/trinkwasser&quot;&gt;Das ist für die Region Heilbronn jetzt möglich.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://opendatalab.de/projects/trinkwasser&quot;&gt;&lt;img src=&quot;/assets/trinkwasser-screenshot.png&quot; alt=&quot;Screenshot aus dem Projekt&quot; title=&quot;Screenshot aus dem Projekt&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Der Aufwand dieser Visualisierung war jedoch beträchtlich, weil es keine vollständige Datenbank für die Trinkwasser-Werte der Landkreise gibt
(im Fall der Trinkwasser-Preise stellt das &lt;a href=&quot;http://www.statistik.baden-wuerttemberg.de/SRDB/home.asp?E=GE&quot;&gt;Statistische Landesamt&lt;/a&gt; die Daten gesammelt zur Verfügung).
Jede Kommune veröffentlicht die Analyseberichte ihres Trinkwassers in Mitteilungsblättern und auf den Webseiten - jedoch nicht in maschinenlesbarer Form.&lt;/p&gt;

&lt;p&gt;Teilweise konnten die Daten, wie im Fall von Heilbronn und Neckarsulm, immerhin gescraped werden.
Bei vielen kleinen Landkreis-Kommunen mussten die Trinkwasseranalyse-Daten aber manuell in eine Excel-Datei übertragen werden.
Eine große Anzahl der Kommunen mussten wir sogar erst kontaktieren, um noch unveröffentlichte Daten abzufragen. 
Die Mühe hat sich jedoch gelohnt: Wir haben von fast allen Kommunen im Landkreis Heilbronn die Daten erhalten - nur drei fehlen noch.&lt;/p&gt;

&lt;p&gt;Überraschend war für uns, wie unterschiedlich das Trinkwasser in der Region zusammengesetzt ist.
Teilweise differiert der Mineraliengehalt innerhalb einer Ortschaft sehr stark - nämlich dann, wenn es verschiedene Versorgungsbereiche gibt.
Kommunen wie Bad Friedrichshall, Neckarsulm oder Zaberfeld sind in mehrere Gebiete eingeteilt, was auch bei der Umsetzung des Tools eine zusätzliche Herausforderung war.
Die Gebiete mussten teilweise noch den Straßen zugeordnet werden, damit der Benutzer auch die korrekten Werte für seine eigene Straße angezeigt bekommt.
Auch dies war nur teilweise durch Scrapen möglich.&lt;/p&gt;

&lt;p&gt;Die Idee zum Projekt entstand Ende Februar beim &lt;a href=&quot;http://blog.opendatalab.de/opendata/2014/01/15/opendataday-heilbronn/&quot;&gt;Open Data Day in Heilbronn&lt;/a&gt;.
Dort wurde auch bereits an einem Prototyp gearbeitet, der nun Stück für Stück gemeinsam ausgebaut wurde.&lt;/p&gt;

&lt;p&gt;Das Projekt kann problemlos auch für andere Landkreise und Regionen weiterverwendet werden - der Sourcecode steht auf &lt;a href=&quot;https://github.com/opendata-heilbronn/trinkwasser&quot;&gt;GitHub&lt;/a&gt; zur Verfügung.
Wenn du Interesse hast, melde dich einfach bei uns - wir helfen dir bei der Umsetzung.&lt;/p&gt;

&lt;p&gt;Mitgewirkt haben:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.torial.com/vanessa.wormer&quot;&gt;Vanessa Wormer&lt;/a&gt; &lt;a href=&quot;https://twitter.com/Remrow&quot;&gt;@remrow&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Isabelle Müller &lt;a href=&quot;https://twitter.com/isa_mue&quot;&gt;@isa_mue&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Heiko Nicht &lt;a href=&quot;https://twitter.com/HeikoNicht&quot;&gt;@HeikoNicht&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Felix Ebert &lt;a href=&quot;https://twitter.com/femeb&quot;&gt;@femeb&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Ulrich Stech&lt;/li&gt;
  &lt;li&gt;Alexander Walther &lt;a href=&quot;https://twitter.com/alexplus_de&quot;&gt;@alexplus_de&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Tom Görner&lt;/li&gt;
  &lt;li&gt;Gerd Hoffmann&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In Heilbronn treffen wir uns regelmäßig im Rahmen von &lt;a href=&quot;http://codefor.de&quot;&gt;Code for Germany&lt;/a&gt;, um gemeinsam Open Data Projekten umzusetzen - das nächste Treffen findet am &lt;a href=&quot;http://pad.opendatacloud.de/p/OK-Lab-HN&quot;&gt;10. April&lt;/a&gt; in den Räumen des &lt;a href=&quot;http://neu.cc86.org/&quot;&gt;CC86 Heilbronn e.V.&lt;/a&gt; statt. Wir würden uns über deinen Besuch freuen!&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/opendata/2014/03/25/trinkwasser</link>
                <guid>http://blog.opendatalab.de/opendata/2014/03/25/trinkwasser</guid>
                <pubDate>Tue, 25 Mar 2014 00:00:00 +0100</pubDate>
				<dc:creator>Felix Ebert</dc:creator>
        </item>

	
		  










	

        <item>
                <title>Code for Germany</title>
                <description>&lt;p&gt;&lt;a href=&quot;http://codefor.de&quot;&gt;Code for Germany&lt;/a&gt; vernetzt lokale Entwickler und Designer, die digitale Werkzeuge für Ihre Stadt / Region erstellen möchten - und wir machen mit!
Das Projekt wurde von der &lt;a href=&quot;http://okfn.de/2014/02/hallo-code-for-germany/&quot;&gt;Open Knowledge Foundation&lt;/a&gt; gestartet und ist ein Ableger von &lt;a href=&quot;http://codeforamerica.org/&quot;&gt;Code for America&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://codefor.de&quot;&gt;&lt;img src=&quot;/assets/cfg_hn.svg&quot; alt=&quot;Code for Heilbronn Logo&quot; title=&quot;Code for Heilbronn Logo&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Auftakt unseres lokalen &lt;em&gt;OK Lab&lt;/em&gt; war der &lt;a href=&quot;http://blog.opendatalab.de/opendata/2014/01/15/opendataday-heilbronn/&quot;&gt;Open Data Day in Heilbronn&lt;/a&gt; am 22. Februar, bei dem wir drei spannende Projekte in die Wege geleitet haben:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://opendatalab.de/projects/trinkwasser/&quot;&gt;Was steckt in meinem Leitungswasser?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://opendata-heilbronn.github.io/crimemap/&quot;&gt;Wo wird am häufigsten eingebrochen?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://recycling.gonam.de/kalender/&quot;&gt;Benachrichtung über Müllabfuhrtermine&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Wir möchten mit diesen und anderen Projekten die Region Heilbronn positiv verändern. Dazu treffen wir uns ab sofort jeden 2. Donnerstag im Monat in den Räumen des &lt;a href=&quot;http://neu.cc86.org/&quot;&gt;Computer Club 86 e.V&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Das &lt;a href=&quot;http://pad.opendatacloud.de/p/OK-Lab-HN&quot;&gt;nächste Treffen findet am 10. April 2014 statt&lt;/a&gt;. Komm vorbei!&lt;/p&gt;

&lt;p&gt;(Einen ausführlichen Nachbericht über den Open Data Day findest du auf den &lt;a href=&quot;http://www.stimme.de/oddhn&quot;&gt;Seiten der Heilbronner Stimme&lt;/a&gt;. Projekte anderer Städte findest du im &lt;a href=&quot;http://odd14.hackdash.org/&quot;&gt;Hackdash&lt;/a&gt;.)&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/opendata/2014/03/24/code-for-germany</link>
                <guid>http://blog.opendatalab.de/opendata/2014/03/24/code-for-germany</guid>
                <pubDate>Mon, 24 Mar 2014 00:00:00 +0100</pubDate>
				<dc:creator>Felix Ebert</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>24h bis Open Data Day 2014 in Heilbronn</title>
                <description>&lt;p&gt;Noch genau 24h Stunden bis zum Open Data Day in Heilbronn und wir sind alle sehr gespannt. Vanessa hat uns in der 
Heilbronner Stimme bereits &lt;a href=&quot;http://www.stimme.de/heilbronn/nachrichten/stadt/Offene-Daten-machen-das-Leben-leichter;art1925,3020065&quot;&gt;angekündigt&lt;/a&gt;, 
so dass wir vielleicht noch ein paar zusätzliche Besucher erwarten können. Insgesamt ist alles bereit und wir freuen uns auf einen tollen Hackathon.&lt;/p&gt;

&lt;p&gt;Mit diesem Post will ich euch noch eine Checkliste und die letzten Updates auf den Weg geben.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Das &lt;a href=&quot;http://pad.opendatacloud.de/p/odd14_hn&quot;&gt;Etherpad&lt;/a&gt; ist euer Freund. Dort gibt es immer die neusten News und dort könnt ihr aktiv mitwirken.&lt;/li&gt;
  &lt;li&gt;Der Treffpunkt ist in der &lt;a href=&quot;http://www.openstreetmap.org/#map=19/49.13971/9.22146&quot;&gt;Heilbronner Stimme&lt;/a&gt;. Bitte den hinteren Eingang benutzen.&lt;/li&gt;
  &lt;li&gt;Bringt bitte ein Notebook oder Tablet mit damit es euch nicht langweilig wird ;)&lt;/li&gt;
  &lt;li&gt;Richtet euch bitte einen &lt;a href=&quot;https://github.com/&quot;&gt;Github Account&lt;/a&gt; ein, falls ihr etwas coden wollt. Wir laden euch dann in die Gruppe &lt;a href=&quot;https://github.com/opendata-heilbronn&quot;&gt;Open Data Heilbronn&lt;/a&gt; ein.&lt;/li&gt;
  &lt;li&gt;Nach dem Hackathon gehen wir gemeinsam irgendwo etwas essen. Bitte gib uns Bescheid, 
wenn du mitkommen möchtest damit wir entsprechend reservieren können.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;/assets/odd_eingang.png&quot; alt=&quot;Anreise&quot; title=&quot;Anreise zum ODD in HN&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Bis morgen!&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/opendata/2014/02/21/opendataday-heilbronn-updates</link>
                <guid>http://blog.opendatalab.de/opendata/2014/02/21/opendataday-heilbronn-updates</guid>
                <pubDate>Fri, 21 Feb 2014 00:00:00 +0100</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Open Data Day 2014 in Heilbronn</title>
                <description>&lt;p&gt;Am 22. Februar findet der internationale &lt;a href=&quot;http://opendataday.org/&quot;&gt;Open Data Day&lt;/a&gt; statt. Wir veranstalten 
mit dem ComputerClub86 und der &lt;a href=&quot;http://www.stimme.de&quot;&gt;Heilbronner Stimme&lt;/a&gt; einen Hackathon an diesem 
Tag. Der Hackathon ist die perfekte Veranstaltung um sich mit dem Thema OpenData 
vertraut zu machen, an ein paar interessanten Datenvisualisierungen zu basteln und 
Startup Ideen in der Region zu fördern.&lt;/p&gt;

&lt;p&gt;Wir treffen uns um 10 Uhr im Gebäude der Heilbronner Stimme (Allee 2, 74072 Heilbronn).
Im Etherpad findet ihr &lt;a href=&quot;http://pad.opendatacloud.de/p/odd14_hn&quot;&gt;weitere Informationen zum Ablauf, konkreten Projektideen und Datenquellen&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Anmelden könnt ihr euch ebenfalls &lt;a href=&quot;http://pad.opendatacloud.de/p/odd14_hn&quot;&gt;im Etherpad&lt;/a&gt; (einfach als Teilnehmer eintragen) oder &lt;a href=&quot;https://plus.google.com/u/0/events/cnekmn86bt9g41hsbrcordcgav4&quot;&gt;bei Google+&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Was Open Data ist und was das mit euch zu tun hat? Siehe folgendes Video:&lt;/p&gt;

&lt;iframe width=&quot;853&quot; height=&quot;480&quot; src=&quot;//www.youtube.com/embed/QBSNr6UXIJg?rel=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;allowfullscreen&quot;&gt;
&lt;/iframe&gt;

&lt;p&gt;Die passenden Slides findet ihr hier: &lt;a href=&quot;https://speakerdeck.com/stefanw/open-data-und-was-hat-mit-mir-zu-tun&quot;&gt;Open Data und was hat das mit mir zu tun&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Habt ihr vielleicht Kontakte zu den Behörden oder der Verwaltung? Dann versucht bitte 
nachzufragen, ob ihr vielleicht Datensätze für den Hackathon bekommen könnt.&lt;/p&gt;

</description>
                <link>http://blog.opendatalab.de/opendata/2014/01/15/opendataday-heilbronn</link>
                <guid>http://blog.opendatalab.de/opendata/2014/01/15/opendataday-heilbronn</guid>
                <pubDate>Wed, 15 Jan 2014 00:00:00 +0100</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	

        <item>
                <title>Peer-to-peer communication using NFC in Android 4.4</title>
                <description>&lt;p&gt;With the new Host-based card emulation Android opened up a possibility for bidirectional peer-to-peer
communication using NFC. Since I now have access to a Nexus 5 and Nexus 7 both running Android 
Version 4.4 I gave it a try.&lt;/p&gt;

&lt;p&gt;Based on my &lt;a href=&quot;/hack/2013/11/07/android-host-card-emulation-with-acr122&quot;&gt;previous example using the ACR122 as the card reader&lt;/a&gt; 
I was able to quickly modify it to adapt to this new functionality.&lt;/p&gt;

&lt;h4 id=&quot;enablereadermode&quot;&gt;EnableReaderMode&lt;/h4&gt;

&lt;p&gt;There are basically two things you have to do to be able to establish an bidirectional NFC connection.
Firstly, configure the host-based card emulation mode like described in &lt;a href=&quot;/hack/2013/11/07/android-host-card-emulation-with-acr122&quot;&gt;one of my previous blog posts&lt;/a&gt;.
Secondly, create an Activity that will &lt;a href=&quot;http://developer.android.com/reference/android/nfc/NfcAdapter.html#enableReaderMode%28android.app.Activity,%20android.nfc.NfcAdapter.ReaderCallback,%20int,%20android.os.Bundle%29&quot;&gt;enable the new Reader-Mode in Android 4.4&lt;/a&gt; 
and create a reader callback that will handle the discovered tag as an IsoDep tag.&lt;/p&gt;

&lt;p&gt;The code is really simple. For a full example, please have a look at the &lt;a href=&quot;https://github.com/grundid/host-card-emulation-sample&quot;&gt;github project&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;@Override
public void onResume() {
	super.onResume();
	nfcAdapter.enableReaderMode(this, this, NfcAdapter.FLAG_READER_NFC_A | NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK,
			null);
}

@Override
public void onPause() {
	super.onPause();
	nfcAdapter.disableReaderMode(this);
}

@Override
public void onTagDiscovered(Tag tag) {
	IsoDep isoDep = IsoDep.get(tag);
	IsoDepTranceiver transceiver = new IsoDepTransceiver(isoDep, this);
	Thread thread = new Thread(transceiver);
	thread.start();
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In your transceiver thread you first connect to the tag and then issue a SELECT AID APDU using your Application ID.
This looks like this:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;private static final byte[] CLA_INS_P1_P2 = { 0x00, (byte)0xA4, 0x04, 0x00 };
private static final byte[] AID_ANDROID = { (byte)0xF0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };

private byte[] createSelectAidApdu(byte[] aid) {
	byte[] result = new byte[6 + aid.length];
	System.arraycopy(CLA_INS_P1_P2, 0, result, 0, CLA_INS_P1_P2.length);
	result[4] = (byte)aid.length;
	System.arraycopy(aid, 0, result, 5, aid.length);
	result[result.length - 1] = 0;
	return result;
}

@Override
public void run() {
	int messageCounter = 0;
	try {
		isoDep.connect();
		byte[] response = isoDep.transceive(createSelectAidApdu(AID_ANDROID));
		while (isoDep.isConnected() &amp;amp;&amp;amp; !Thread.interrupted()) {
			String message = &quot;Message from IsoDep &quot; + messageCounter++;
			response = isoDep.transceive(message.getBytes());
			onMessageReceived.onMessage(response);
		}
		isoDep.close();
	}
	catch (IOException e) {
		onMessageReceived.onError(e);
	}
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h4&gt;

&lt;p&gt;I hope this example will allow you to write some awesome NFC apps. Please check the full 
example at my &lt;a href=&quot;https://github.com/grundid/host-card-emulation-sample&quot;&gt;GitHub repo&lt;/a&gt; and 
comment if you have any questions.&lt;/p&gt;

&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;

&lt;!-- Unter Blog Content Responsive --&gt;
&lt;p&gt;&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block&quot; data-ad-client=&quot;ca-pub-4734442255165118&quot; data-ad-slot=&quot;9649993785&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/hack/2013/11/25/android-p2p-nfc</link>
                <guid>http://blog.opendatalab.de/hack/2013/11/25/android-p2p-nfc</guid>
                <pubDate>Mon, 25 Nov 2013 00:00:00 +0100</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	

        <item>
                <title>Creating QR-Codes with dynamic WiFi configuration for Point-Of-Sale (POS) systems</title>
                <description>&lt;p&gt;The project I just finished was on my roadmap for months. In the end it took me about two 
days to stitch everything together.&lt;/p&gt;

&lt;p&gt;The idea is to have a system that would regularly change the WiFi password
of an access point in a public cafe and allow the service staff to easily print out 
the new password on the POS printer and hand it out to the customer.
For the customer it should be as easy as possible to connect to the WiFi network. For 
this I’m using a QR-Code format that can be recognized by most QR-Code scanners. The QR scanner 
then sets up the network setting on the customers’ phone and he or she is ready to go.&lt;/p&gt;

&lt;p&gt;Since the &lt;a href=&quot;http://annablume-cafe.de&quot;&gt;café in question&lt;/a&gt; is run by my mom and I’m the system administrator of the POS 
system I have full control over all the software and hardware components. Our current setup involves a simple 
Windows PC with a touchscreen TFT and an Epson TM-T88IV POS printer connected over USB. As for software I’m
using &lt;a href=&quot;http://sourceforge.net/projects/openbravopos/&quot;&gt;OpenbravoPOS&lt;/a&gt;, a Spanish open-source POS software 
written in Java that I &lt;a href=&quot;https://code.google.com/p/openpos/&quot;&gt;adopted and enhanced&lt;/a&gt; over the 
last couple of years with new reporting functions and a time reporting system for the employees.
The connection between the USB printer and Java is possible due to a virtual Com-port driver from Epson.&lt;/p&gt;

&lt;h4 id=&quot;wifi-configuration&quot;&gt;WiFi configuration&lt;/h4&gt;

&lt;p&gt;Our WiFi network is handled by a FirtzBox. To be able to configure the guest WiFi settings on the FritzBox one 
has to login into the router via a Web interface and set the appropriate settings in a web form. I haven’t found any
FritzBox Java API for the box but was lucky enough to find a &lt;a href=&quot;https://github.com/valpo/fritzbox/blob/master/fritzbox/fritzlogin.py&quot;&gt;python module&lt;/a&gt;
that can login into the box and acquire the session ID which is nessecary for all requests. 
I’ve adapted the python code 
to a &lt;a href=&quot;https://github.com/grundid/fritzbox-java-api/blob/master/src/main/java/de/grundid/fritz/FritzTemplate.java&quot;&gt;Java version&lt;/a&gt;
 and added a function to activate and deactivate the guest WiFi settings.
I’m using here the RestTemplate pattern from the SpringFramework. This way the FritzBox module can 
also be used on &lt;a href=&quot;http://projects.spring.io/spring-android/&quot;&gt;Android&lt;/a&gt; if you decide to implement a simple one-button solution on your phone to activate and 
deactivate the guest WiFi network for your friends and visitors.&lt;/p&gt;

&lt;p&gt;The code for all this is as simple as this (example from &lt;a href=&quot;https://code.google.com/p/openpos/source/browse/trunk/openpos-commands/src/main/java/org/openpos/wifi/WifiService.java&quot;&gt;WifiService&lt;/a&gt;):&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;FritzTemplate fritzTemplate = new FritzTemplate(new RestTemplate(), &quot;yourfritzpassword&quot;);
fritzTemplate.activateGuestAccess(&quot;network-ssid&quot;, &quot;wifi-wpa-key&quot;);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The call above activates the following features.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/fritzbox_guest.png&quot; alt=&quot;FritzBox setup&quot; title=&quot;FritzBox setup&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;qr-code-generation&quot;&gt;QR-Code generation&lt;/h4&gt;

&lt;p&gt;One last thing remains and this is the QR-Code. The above POS printer has a build-in capability to 
generate and print QC-Codes so I directly went for this approach. It would be possible to generate the QR-Code 
in software and then print it as a bitmap but this would make the software unnecessary complicated.
After &lt;a href=&quot;http://code.google.com/p/python-escpos/wiki/Usage&quot;&gt;some research&lt;/a&gt; and after reading the ESC POS references the code cannot get easier than this:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;out.write(ESCPOS.CENTER);
out.write(EscPosEncoder.qrCodeModule((byte)4));
out.write(EscPosEncoder.qrCodeCorrection(CorrectionLevel.L));
out.write(EscPosEncoder.qrCodeStore(code));
out.write(EscPosEncoder.qrCodePrint());
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Have a look at &lt;a href=&quot;https://code.google.com/p/openpos/source/browse/trunk/openpos-print/src/main/java/com/openbravo/pos/printer/escpos/EscPosEncoder.java&quot;&gt;EscPosEncoder&lt;/a&gt;
for more details on how to encode the ESC POS commands.&lt;/p&gt;

&lt;p&gt;With this knowledge you can generate a nice printout with the name of your location, the QC-Code, the SSID and 
password for those who don’t have a QR-Code scanner installed. Since the user wants to access the Internet
you can also add some valuable marketing information like your Facebook/Titter/G+ account.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/qrcode2.jpg&quot; alt=&quot;QR-Code printout&quot; title=&quot;QR-Code printout&quot; /&gt;&lt;/p&gt;

&lt;p&gt;To make the access for the customer as simple as possible I’m using the following pattern for the QR-Code:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;String code = &quot;WIFI:S:&amp;lt;network-ssid&amp;gt;;T:WPA;P:&amp;lt;wifi-wpa-key&amp;gt;;;&quot;;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I haven’t lookup any official documentation for this but the &lt;a href=&quot;http://zxing.appspot.com/generator&quot;&gt;ZXing QR-Code builder&lt;/a&gt; generates this pattern and the
barcode scanner is able to recognize it. With one click on the button below you are logged in:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/qrcode3.jpg&quot; alt=&quot;Barcode Scanner&quot; title=&quot;Barcode Scanner&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h4&gt;

&lt;p&gt;I would say this is a perfect team play for open source software. It would be great to have an official API for
the FritzBox but I can live with the current approach.&lt;/p&gt;

&lt;p&gt;With this solution as a foundation I’m thinking about a couponing system or even a QR-Code based game. One challenging 
thing would be to use the WiFi version of a POS printer. Not that I would put the printer into the guest WiFi network,
but I think that using a socket connection would be more interesting that using a Com-port.
Also this would allow to implement a tablet-based version of a POS system. This is a project that has been on 
my road-map for years. ;)&lt;/p&gt;

&lt;p&gt;You can find all the components online. My version of OpenbravoPOS is still at &lt;a href=&quot;https://code.google.com/p/openpos/&quot;&gt;Google code&lt;/a&gt;.
I might extract the QR-Code functions into an extra library one day but for the moment 
it is just one class, so it’s not worth it.
The library for the FritzBox access is on &lt;a href=&quot;https://github.com/grundid/fritzbox-java-api&quot;&gt;github&lt;/a&gt;.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/hack/2013/11/19/pos-wifi-qrcode-fritzbox-api</link>
                <guid>http://blog.opendatalab.de/hack/2013/11/19/pos-wifi-qrcode-fritzbox-api</guid>
                <pubDate>Tue, 19 Nov 2013 00:00:00 +0100</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	

        <item>
                <title>Bluetooth Low Energy Tools and Library for Android</title>
                <description>&lt;p&gt;The last few days I’ve spent exploring some of the possibilities of &lt;a href=&quot;http://developer.android.com/guide/topics/connectivity/bluetooth-le.html&quot;&gt;Bluetooth Low Energy on Android&lt;/a&gt;. 
For that I used a Nexus 5 phone, a FitBit Flex and some &lt;a href=&quot;http://www.starnberger.at/tokencube/&quot;&gt;Tokencube sensors&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;What came out is a simple Android app that can scan for sensors and interact with then. 
For example, the Tokencubes have temperature and orientation sensors and you can use the 
app to read out this data.&lt;/p&gt;

&lt;p&gt;Besides the app I also started working on a &lt;a href=&quot;https://github.com/grundid/bletools&quot;&gt;Bluetooth Low Energy Tools&lt;/a&gt; 
library. Since BLE is a quite new technology there aren’t many libraries to use and since there are lots of 
&lt;a href=&quot;https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx&quot;&gt;GATT Services&lt;/a&gt; 
and &lt;a href=&quot;https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicsHome.aspx&quot;&gt;Characteristics&lt;/a&gt; 
it would be nice to have some reusable code.&lt;/p&gt;

&lt;p&gt;The goals of the library are as follows:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;design and implement patterns for the communication with BLE sensors&lt;/li&gt;
  &lt;li&gt;implement parsers for all the known characteristics&lt;/li&gt;
  &lt;li&gt;collect and implement parsers for proprietary sensors and characteristics&lt;/li&gt;
  &lt;li&gt;implement classes to read all values of a sensor&lt;/li&gt;
  &lt;li&gt;implement a fingerprint DB for sensors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For now I’ve implemented some characteristics parsers for the Tokencube sensors and of course 
I’ve created fingerprints for the FitBit Flex and the Tokencubes. The fingerprints allow you to identify a sensor
by looking at its services and characteristics. I plan to create an open database where everybody can 
store and access fingerprints for sensors.&lt;/p&gt;

&lt;p&gt;At the moment these are just ideas, but it’s a start and I’ll add more characteristics parsers 
as soon as I have some reliable data to test them.
All official characteristics and services by the Bluetooth SID are defined in XML files. 
Unfortunately the XML specifications are too complicated to create a generic generator that would 
generate the source code for the characteristics parsers. I think the XML specifications 
have been designed with the intention to generate the documentation and not the parser code.&lt;/p&gt;

&lt;p&gt;There are currently some &lt;a href=&quot;https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicsHome.aspx&quot;&gt;80 characteristics&lt;/a&gt; 
defined and having a generator for them would 
be nice, but at the moment I’m going for the crowd sourced approach and I’m launching 
this &lt;a href=&quot;https://github.com/grundid/bletools&quot;&gt;BLE Tools&lt;/a&gt; project.&lt;/p&gt;

&lt;p&gt;So this blog post is a first call for action. If you are working on BLE sensors and already 
have some characteristics parsers please try to contribute to the project.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/hack/2013/11/15/bluetooth-low-energy-tools-library-for-android</link>
                <guid>http://blog.opendatalab.de/hack/2013/11/15/bluetooth-low-energy-tools-library-for-android</guid>
                <pubDate>Fri, 15 Nov 2013 00:00:00 +0100</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	

        <item>
                <title>Android Host-based Card Emulation connected to ACR122U</title>
                <description>&lt;p&gt;Last week Google released the new Android 4.4 version and I was quite happy to see some 
updates to the NFC implementation. The biggest change is the new 
&lt;a href=&quot;http://developer.android.com/guide/topics/connectivity/nfc/hce.html&quot;&gt;Host-based Card Emulation&lt;/a&gt; mode. 
This opens up the possibility of Peer-to-Peer communication over NFC.&lt;/p&gt;

&lt;p&gt;I immediately ordered the new Nexus 5 to be able to hack on this new feature. Yesterday the phone arrived 
and today I was able to invest a few hours with reading docs and writing some lines of code.
Good news everyone: it’s working quite nice.&lt;/p&gt;

&lt;p&gt;First, I would like to give you some background info how this is all working. If you just want to 
see the code, scroll down please.&lt;/p&gt;

&lt;h4 id=&quot;isoiec-7816-4-card-emulation&quot;&gt;ISO/IEC 7816-4 card emulation&lt;/h4&gt;

&lt;p&gt;ISO/IEC 7816-4 tags are organized into applications that can be individually selected. Each 
application has a name or a file ID. You can connect to an application by issuing 
a SELECT command with the appropriate name. Android implements this system basically 
by saying that each Android application can act as one or more applications on a 
tag. Since the application name or file ID should be unique this is quite cool, 
because now your Android smartphone becomes one big tag.&lt;/p&gt;

&lt;p&gt;This system can even &lt;a href=&quot;http://developer.android.com/guide/topics/connectivity/nfc/hce.html#Coexistence&quot;&gt;coexist with secure element based card emulations&lt;/a&gt; but I don’t want 
to dive into this because I haven’t done anything with it so far.&lt;/p&gt;

&lt;p&gt;The steps to establish the connection are really quite easy. Using the ACR122U desktop 
reader (PN532 NFC chip) I first issued an InListPassiveTarget command and once the 
target appeared in range I directly send a SELECT APDU using the DataExchange command. 
From here on you simply continue to send DataExchange commands until you’re done with the 
whole communication process.&lt;/p&gt;

&lt;p&gt;In hex this looks like this (InListPassiveTarget):&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;D4 4A 01 00
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Once the target is in range you will get the following target data:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;01 0004 60 04 089D64A2 0575807002

01 = Target No
0004 = SENS_RES
60 = SEL_RES (please have a look at the HCE documentation how to compare the value)
04 = length of the NFCID
089D64A2 = random NFCID, it changes with every connection
0575807002 = ATS
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now you can simply send a SELECT APDU to connect to your app on the phone:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;D44001 00A4040007F001020304050600
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The data out part is as follows:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;00 = CLAss
A4 = INStruction, SELECT
04 = P1, select by name
00 = P2
07 = length of the application name
F0010203040506 = application name as defined in the manifest by the AID-filter
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Your &lt;a href=&quot;http://developer.android.com/guide/topics/connectivity/nfc/hce.html#ImplementingService&quot;&gt;HostApduService&lt;/a&gt; 
will receive the above message as the first APDU. From now on you can send 
any data you want. I noticed that this doesn’t even have to be encoded as APDU.&lt;/p&gt;

&lt;p&gt;Here is some code I’ve compiled for this demo.&lt;/p&gt;

&lt;p&gt;The IsoDepTamaCommunicator is the part on the desktop side what will use the NFCTools 
and establish the IsoDep connection to the Android device. For the complete example please have a look at the 
&lt;a href=&quot;https://github.com/grundid/nfctools-examples/tree/master/src/main/java/org/nfctools/examples/hce&quot;&gt;org.nfctools.examples.hce package&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public class IsoDepTamaCommunicator extends AbstractTamaCommunicator {

	private Logger log = LoggerFactory.getLogger(getClass());
	private int messageCounter = 0;
	private static final byte[] CLA_INS_P1_P2 = { 0x00, (byte)0xA4, 0x04, 0x00 };
	private static final byte[] AID_ANDROID = { (byte)0xF0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };

	public IsoDepTamaCommunicator(ByteArrayReader reader, ByteArrayWriter writer) {
		super(reader, writer);
	}

	private byte[] createSelectAidApdu(byte[] aid) {
		byte[] result = new byte[6 + aid.length];
		System.arraycopy(CLA_INS_P1_P2, 0, result, 0, CLA_INS_P1_P2.length);
		result[4] = (byte)aid.length;
		System.arraycopy(aid, 0, result, 5, aid.length);
		result[result.length - 1] = 0;
		return result;
	}

	public void connectAsInitiator() throws IOException {
		while (true) {
			InListPassiveTargetResp inListPassiveTargetResp = 
				sendMessage(new InListPassiveTargetReq((byte)1, (byte)0, new byte[0]));
			if (inListPassiveTargetResp.getNumberOfTargets() &amp;gt; 0) {
				log.info(&quot;TargetData: &quot; + 
					NfcUtils.convertBinToASCII(inListPassiveTargetResp.getTargetData()));
				if (inListPassiveTargetResp.isIsoDepSupported()) {
					log.info(&quot;IsoDep Supported&quot;);
					byte[] selectAidApdu = createSelectAidApdu(AID_ANDROID);
					DataExchangeResp resp = 
						sendMessage(
							new DataExchangeReq(inListPassiveTargetResp.getTargetId(),
							false, selectAidApdu, 0, selectAidApdu.length));
					String dataIn = new String(resp.getDataOut());
					log.info(&quot;Received: &quot; + dataIn);
					if (dataIn.startsWith(&quot;Hello&quot;)) {
						exchangeData(inListPassiveTargetResp);
					}
				}
				else {
					log.info(&quot;IsoDep NOT Supported&quot;);
				}
				break;
			}
			else {
				try {
					Thread.sleep(100);
				}
				catch (InterruptedException e) {
					throw new RuntimeException(e);
				}
			}
		}
	}

	private void exchangeData(InListPassiveTargetResp inListPassiveTargetResp) throws IOException {
		DataExchangeResp resp;
		String dataIn;
		while (true) {
			byte[] dataOut = (&quot;Message from desktop: &quot; + messageCounter++).getBytes();
			resp = sendMessage(
				new DataExchangeReq(inListPassiveTargetResp.getTargetId(), false, dataOut, 0,
				dataOut.length));
			dataIn = new String(resp.getDataOut());
			log.info(&quot;Received: &quot; + dataIn);
		}
	}
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;On the Android side you have a simple HostApduService as defined in the HCE documentation. 
The complete source code is in the &lt;a href=&quot;https://github.com/grundid/host-card-emulation-sample&quot;&gt;host-card-emulation-sample repository&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public class MyHostApduService extends HostApduService {

	private int messageCounter = 0;

	@Override
	public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
		if (selectAidApdu(apdu)) {
			Log.i(&quot;HCEDEMO&quot;, &quot;Application selected&quot;);
			return getWelcomeMessage();
		}
		else {
			Log.i(&quot;HCEDEMO&quot;, &quot;Received: &quot; + new String(apdu));
			return getNextMessage();
		}
	}

	private byte[] getWelcomeMessage() {
		return &quot;Hello Desktop!&quot;.getBytes();
	}

	private byte[] getNextMessage() {
		return (&quot;Message from android: &quot; + messageCounter++).getBytes();
	}

	private boolean selectAidApdu(byte[] apdu) {
		return apdu.length &amp;gt;= 2 &amp;amp;&amp;amp; apdu[0] == (byte)0 &amp;amp;&amp;amp; apdu[1] == (byte)0xa4;
	}

	@Override
	public void onDeactivated(int reason) {
		Log.i(&quot;HCEDEMO&quot;, &quot;Deactivated: &quot; + reason);
	}
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;

&lt;!-- Unter Blog Content Responsive --&gt;
&lt;p&gt;&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block&quot; data-ad-client=&quot;ca-pub-4734442255165118&quot; data-ad-slot=&quot;9649993785&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;/p&gt;

&lt;h4 id=&quot;pitfalls&quot;&gt;Pitfalls&lt;/h4&gt;

&lt;p&gt;During development I first assumed I would have to use a common CLA for 
the APDU so I stared with the 0x90 used in DesFire cards. But this led to the following error message:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;E/BrcmNfcNfa(1187): CET4T: Unsupported Class byte (0x90)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So I looked at the &lt;a href=&quot;https://android.googlesource.com/platform/external/libnfc-nci/+/master/src/nfc/include/tags_defs.h&quot;&gt;Android source code&lt;/a&gt;
and found out that the correct CLA is 0x00. Also the expected P1 parameter can be found in the source code.&lt;/p&gt;

&lt;h4 id=&quot;nfctools-examples&quot;&gt;NFCTools Examples&lt;/h4&gt;

&lt;p&gt;If you want to try this out you can clone the 
&lt;a href=&quot;https://github.com/grundid/host-card-emulation-sample&quot;&gt;host-card-emulation-sample&lt;/a&gt; GitHub repository 
and compile the Android app for your device. Android 4.4 is required for this to work.
Then for the desktop side just download the latest version of the 
nfctools-examples.jar from &lt;a href=&quot;https://github.com/grundid/nfctools-examples/releases&quot;&gt;nfctools-examples releases&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Launch the examples with the following command:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;java -cp nfctools-examples.jar org.nfctools.examples.hce.HceDemo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;iframe width=&quot;640&quot; height=&quot;480&quot; src=&quot;//www.youtube.com/embed/y_AYWqUtb_0?rel=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;allowfullscreen&quot;&gt;
&lt;/iframe&gt;

&lt;div&gt;
&lt;iframe style=&quot;width:120px;height:240px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;amp;OneJS=1&amp;amp;Operation=GetAdHtml&amp;amp;MarketPlace=DE&amp;amp;source=ss&amp;amp;ref=as_ss_li_til&amp;amp;ad_type=product_link&amp;amp;tracking_id=gebasoftblog-21&amp;amp;marketplace=amazon&amp;amp;region=DE&amp;amp;placement=B00F91ONV2&amp;amp;asins=B00F91ONV2&amp;amp;linkId=a7c6a8d79b09ab31831943981e522bb9&amp;amp;show_border=true&amp;amp;link_opens_in_new_window=true&quot;&gt;&lt;/iframe&gt;
&lt;iframe style=&quot;width:120px;height:240px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;amp;OneJS=1&amp;amp;Operation=GetAdHtml&amp;amp;MarketPlace=DE&amp;amp;source=ss&amp;amp;ref=as_ss_li_til&amp;amp;ad_type=product_link&amp;amp;tracking_id=gebasoftblog-21&amp;amp;marketplace=amazon&amp;amp;region=DE&amp;amp;placement=B00OZNMVDM&amp;amp;asins=B00OZNMVDM&amp;amp;linkId=535ab9fe4a9606c98aa0baa8a3f9d00f&amp;amp;show_border=true&amp;amp;link_opens_in_new_window=true&quot;&gt;&lt;/iframe&gt;
&lt;iframe style=&quot;width:120px;height:240px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;amp;OneJS=1&amp;amp;Operation=GetAdHtml&amp;amp;MarketPlace=DE&amp;amp;source=ss&amp;amp;ref=as_ss_li_til&amp;amp;ad_type=product_link&amp;amp;tracking_id=gebasoftblog-21&amp;amp;marketplace=amazon&amp;amp;region=DE&amp;amp;placement=B01BTYD692&amp;amp;asins=B01BTYD692&amp;amp;linkId=d4dfdc9231079d82918f76e8f50e26b7&amp;amp;show_border=true&amp;amp;link_opens_in_new_window=true&quot;&gt;&lt;/iframe&gt;
&lt;iframe style=&quot;width:120px;height:240px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;amp;OneJS=1&amp;amp;Operation=GetAdHtml&amp;amp;MarketPlace=DE&amp;amp;source=ss&amp;amp;ref=as_ss_li_til&amp;amp;ad_type=product_link&amp;amp;tracking_id=gebasoftblog-21&amp;amp;marketplace=amazon&amp;amp;region=DE&amp;amp;placement=B009D4ZX4C&amp;amp;asins=B009D4ZX4C&amp;amp;linkId=f78827709e2f84660f05b120ade77ef9&amp;amp;show_border=true&amp;amp;link_opens_in_new_window=true&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h4&gt;

&lt;p&gt;The Host-based Card Emulation is really easy to use. Compared to the LLCP/SNEP implementation of Android Beam it is
way less error prone and gives you much faster responsiveness.
Using this HCE mode for P2P communication is of course just a hack. I can only hope that the Android team will
allow access to the SNEP stack in one the coming releases.&lt;/p&gt;

&lt;p&gt;Please also note that the amount of data that can be transmitted with one DataExchange 
command is limited to around 200 bytes. If you want to transfer larger amounts of data you have to 
chunk it yourself into smaller pieces.&lt;/p&gt;

&lt;p&gt;Another thing is the security of this implementation. Basically you cannot trust the other party as anyone can
create an Android app or a desktop app using your AID. Please also refer to 
the &lt;a href=&quot;http://developer.android.com/guide/topics/connectivity/nfc/hce.html#HceSecurity&quot;&gt;HCE and Security&lt;/a&gt; section 
of the documentation.&lt;/p&gt;

&lt;p&gt;If you have any questions regarding nfctools please come by our 
&lt;a href=&quot;https://groups.google.com/forum/?fromgroups#!forum/nfc-developers&quot;&gt;discussion group&lt;/a&gt;.&lt;/p&gt;

</description>
                <link>http://blog.opendatalab.de/hack/2013/11/07/android-host-card-emulation-with-acr122</link>
                <guid>http://blog.opendatalab.de/hack/2013/11/07/android-host-card-emulation-with-acr122</guid>
                <pubDate>Thu, 07 Nov 2013 00:00:00 +0100</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	

        <item>
                <title>Android Instrumentation Tests</title>
                <description>&lt;p&gt;We are currently working on an &lt;a href=&quot;https://play.google.com/store/apps/details?id=de.grundid.hp24&quot;&gt;Android App&lt;/a&gt; 
in collaboration with the guys from Hochzeitsportal24. 
Yes, it’s a wedding planner ;)&lt;/p&gt;

&lt;p&gt;Anyway, since we use Maven for all our Java projects, we also went with it for this project. 
I had some experience with the &lt;a href=&quot;http://code.google.com/p/maven-android-plugin/&quot;&gt;android-maven-plugin&lt;/a&gt; because 
I used it with two of my &lt;a href=&quot;https://play.google.com/store/apps/developer?id=Adrian+Stabiszewski&quot;&gt;prior Android Apps&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Our app setup consists of an android app module and an instrumentation test module. 
Besides these two modules, we have a third module that we call the core module. 
It contains only android independent code and unit tests for this code. This setup works 
great with maven on the command line and on the Jenkins build server, however there are some 
issues if you use it in Eclipse.&lt;/p&gt;

&lt;p&gt;Here the m2e plugin handles the build path of your projects and this leads to a problem where 
the classes from the core module get included in the instrumentation test APK. As a result of 
this you cannot launch the instrumentation tests from Eclipse because the test runner fails 
with an exception like this:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Prior to this exception you can see several ClassNotFoundExceptions which make you believe 
that you are missing some jar libraries in your class path. However, this is a totally wrong direction.&lt;/p&gt;

&lt;p&gt;The true problem here is the last exception. It tells you that you have two instances of the 
same class in your test scenario. This happens when one version is in your app APK and a 
second version is in the test APK. To verify this you can use the &lt;a href=&quot;http://code.google.com/p/dex2jar/&quot;&gt;dex2jar&lt;/a&gt; tool
and convert the classes.dex file to a jar file and then check the contents of this file.&lt;/p&gt;

&lt;p&gt;This happens in our setup due to the fact that we need the classes from the core module in 
our app and in the instrumentation tests. Since all modules are under a heavy development 
we use SNAPSHOT dependencies. And now m2e kicks in and resolves the SNAPSHOT dependencies 
into project dependencies. This way the classes from the core module appear in the test module 
and get added to the test APK.
I’ve tried several solutions and actually none of them really works in the long term. 
I’ll document them here so you might choose one that hurts you less.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Declare the core module dependency with scope “provided” in the test module pom.xml. This works from the command line but not in Eclipse since m2e resolves the SNAPSHOT dependency anyway.&lt;/li&gt;
  &lt;li&gt;Declare the core module as optional in the app module pom.xml. This actually works in Eclipse but it fails on the command line because here the compiler cannot find the classes.&lt;/li&gt;
  &lt;li&gt;Uncheck the “Maven Dependencies” from the “Order and Export” tab in Java build path config. This solves the problem in Eclipse but only until the next time you hit Maven/Update Project…&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Right now I’m using the third option since it is somehow predictable and we rely on a clean 
build on the Jenkins server. One possible long term solution might be to look into the Android 
Maven Plugin and change it in a way where it hides the “provided” dependencies from m2e.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/hack/2013/10/18/android-instrumentation-tests</link>
                <guid>http://blog.opendatalab.de/hack/2013/10/18/android-instrumentation-tests</guid>
                <pubDate>Fri, 18 Oct 2013 00:00:00 +0200</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  










	

        <item>
                <title>Wahl.Daten.Helfer Hackday in Ulm</title>
                <description>&lt;p&gt;Am Sonntag, 22. September 2013, treffe ich mich mit der &lt;a href=&quot;http://www.ulmapi.de/&quot;&gt;Ulmer Open Data Initiative&lt;/a&gt; zu einem Wahl.Daten.Helfer-Hackday.
Das Projekt &lt;a href=&quot;http://wahldatenhelfer.de/&quot;&gt;Wahl.Daten.Helfer&lt;/a&gt; ruft alle Bürgerinnen und Bürger in ganz Deutschland auf, die aktuellen wie auch historischen Wahldaten kreativ zu nutzen.&lt;/p&gt;

&lt;p&gt;Ich plane momentan, ein Tool zur Visualisierung von Ergebnissen je Wahllokal / je Wahlbezirk umzusetzen. Aktuell werden diese meist nur in lokalen Zeitungen in Form einer PDF-Datei veröffentlicht oder in seltenen Fällen als &lt;a href=&quot;http://www.morgenpost.de/berlin-aktuell/article1768373/Ergebnisse-der-Berliner-Abgeordnetenhauswahl-2011.html&quot;&gt;Punkte auf einer Karte&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Daneben fände ich interessant, die Ergebnisse der Wahlbezirke (Wahlbeteiligung sowie Zweitstimmen) mit anderen statistischen Daten wie Altersstruktur, Arbeitslosigkeit und Anzahl Mietwohnungen / Eigentumswohnungen zu vergleichen. Für Stuttgart könnte man dies dank umfangreich veröffentlichter &lt;a href=&quot;http://www.stuttgart.de/wahldaten&quot;&gt;Wahldaten der letzten 3 Bundestagswahlen&lt;/a&gt; direkt umsetzen.&lt;/p&gt;

&lt;p&gt;Eine Liste an offenen Wahldaten sowie Visualisierungsbeispiele findet ihr unter &lt;a href=&quot;http://lopad.org/wahllokalberlin&quot;&gt;lopad.org/wahllokalberlin&lt;/a&gt;. Dort könnt ihr auch eigene Datensätze oder Visualisierungsbeispiele eintragen.
Auch die &lt;a href=&quot;http://wiki.koelnapi.de/w/Projektideen_f%C3%BCr_das_Wahlokal_K%C3%B6ln#Projektideen&quot;&gt;Liste an Ideen vom Wahl.Daten.Helfer-Hackday in Köln&lt;/a&gt; ist sehenswert.&lt;/p&gt;

&lt;p&gt;Ihr seid interessiert? Dann kommt am Sonntag von 12-20 Uhr zum &lt;a href=&quot;http://hackerspace-ulm.de/&quot;&gt;Freiraum&lt;/a&gt;, c/o Radio FreeFM, Platzgasse 18, 89073 Ulm!
Wenn ihr aus Heilbronn oder Stuttgart seid, könnt ihr gerne auch bei mir mitfahren - einfach kurz anschreiben.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Ergebnisse des Hackdays:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Martin Salzer hat den &lt;a href=&quot;http://blog.opendatalab.de/assets/wahldatenhelfer-ulm-korrelationen.pdf&quot;&gt;Korrelationskoeffizienten zwischen je 2 Parteien&lt;/a&gt; über alle Wahlbezirke in Ulm hinweg für die Bundestagswahlen 2009 und 2013 ermittelt.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Michael Müller und ich haben eine &lt;a href=&quot;http://www.ulmapi.de/direktkandidaten-map/&quot;&gt;Direktkandidaten-Karte&lt;/a&gt; umgesetzt, mit der sich zum Beispiel beantworten lässt, wo die jüngsten Direktkandidaten zur Wahl stehen oder in welchen Wahlkreisen überwiegend Direktkandidatinnen zur Wahl stehen (relativ wenige).&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eine Übersicht über alle Projekte auf den Wahl.Daten.Helfer-Hackdays findet ihr auf &lt;a href=&quot;http://wahldaten.hackdash.org/&quot;&gt;hackdash.org&lt;/a&gt; sowie auf &lt;a href=&quot;http://www.heise.de/newsticker/meldung/Experimentieren-mit-Wahldaten-1964932.html&quot;&gt;heise.de&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In Ulm habe ich zudem Michael Müller kennengelernt, der mit &lt;a href=&quot;https://differenziert.net/de/&quot;&gt;differenziert.net&lt;/a&gt; ähnliche Ziele wie ich mit Argufactum verfolgt.
Vielleicht ergibt sich daraus noch eine Zusammenarbeit.&lt;/p&gt;

&lt;p&gt;Vielen Dank an Stefan Kaufmann und Martin Salzer für die Bereitstellung der Räumlichkeiten und die Organisation des Hackdays!&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/hackday/2013/09/21/wahldatenhelfer</link>
                <guid>http://blog.opendatalab.de/hackday/2013/09/21/wahldatenhelfer</guid>
                <pubDate>Sat, 21 Sep 2013 00:00:00 +0200</pubDate>
				<dc:creator>Felix Ebert</dc:creator>
        </item>

	

        <item>
                <title>Stay in sync with OpenStreetMap</title>
                <description>&lt;p&gt;The &lt;a href=&quot;http://ra.osmsurround.org&quot;&gt;Relation Analyzer for OpenStreetMap&lt;/a&gt; keeps a copy of all relations to provide a simple search 
function. You can easily search for the relation name or the type. Also some special attributes 
like the route or operator are available.&lt;/p&gt;

&lt;p&gt;Since the early days of the Relation Analyzer I copied from time to time the planet file and 
then started a script that would parse the file and extract all the relations from it. This 
process would take several hours and create a heavy load on my server. I wasn’t happy with this 
solution and this was the main reason why I never added this script as a cronjob so it would 
run automatically. Instead I waited until a user would send me an e-mail that he cannot find 
his relation in my Relation Analyzer. This was usually the time to launch the update script by hand.&lt;/p&gt;

&lt;p&gt;During the last few weeks I was moving all of my projects to a new, more powerful server and 
in the process of doing so I decided to create a sync function that would automatically update the 
relations database with the OSM server. I always knew that OSM provides minutely, hourly and daily 
updates to its database and I even looked at the OSM-Change format a few months back. The format 
is quite simple: for every object (node, way, relation) in the OSM database you get the info if it 
was created, modified or deleted. Every dump gets a unique nine-digit sequence number. 
This sequence number is split into three parts where every part becomes a part of the 
directory structure. The latest sequence number can be obtained from a static URL. The details 
of this process can be found &lt;a href=&quot;http://wiki.openstreetmap.org/wiki/Planet.osm/diffs#Minute.2C_Hour.2C_and_Day_Files_Organisation&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now, the idea to get into sync with OSM is simple: get a planet file and start downloading 
and merging the diff files somewhere before the planet file was created. This makes sure that 
you get all the updates and that you have a complete database. The only thing you have to 
make sure is not to add the same object twice. Usually this is accomplished by setting a 
unique index on the id row of the object.&lt;/p&gt;

&lt;p&gt;Since most of my OSM functions are now part of 
the &lt;a href=&quot;https://github.com/grundid/osm-tools&quot;&gt;osm-tools library&lt;/a&gt; I also added this sync framework 
to this library. It can be found in the &lt;a href=&quot;https://github.com/grundid/osm-tools/tree/master/osm-tools-process&quot;&gt;osm-tools-process module&lt;/a&gt; in the package org.osmtools.osmchange.
To use the framework you have to do three things. First decide how and where you want to sore your 
current sequence number. For this I created the &lt;a href=&quot;https://github.com/grundid/osm-tools/blob/master/osm-tools-process/src/main/java/org/osmtools/osmchange/SequenceHandler.java&quot;&gt;SequenceHandler&lt;/a&gt; 
interface with a &lt;a href=&quot;https://github.com/grundid/osm-tools/blob/master/osm-tools-process/src/main/java/org/osmtools/osmchange/SimpleFileSequenceHandler.java&quot;&gt;SimpleFileSequenceHandler&lt;/a&gt; 
default implementation. This implementation stores your current sequence number in a file. 
By creating your own implementation you can also store it in the database if you want.&lt;/p&gt;

&lt;p&gt;The second thing is to create an implementation of the &lt;a href=&quot;https://github.com/grundid/osm-tools/blob/master/osm-tools-process/src/main/java/org/osmtools/osmchange/OsmChangeService.java&quot;&gt;OsmChangeService&lt;/a&gt; 
interface. This interface contains a method that is called with every OsmChange object 
that is fetched from the OSM server. Since this task is quite similar in all implementations 
I’ve already created a dummy implementation that you can extend and override the process methods 
you are interested in. For example if you only want to listen for new relations you would extend 
the &lt;a href=&quot;https://github.com/grundid/osm-tools/blob/master/osm-tools-process/src/main/java/org/osmtools/osmchange/AbstractOsmChangeService.java&quot;&gt;AbstractOsmChangeService&lt;/a&gt; 
and override the createRelation method.&lt;/p&gt;

&lt;p&gt;The third thing is to wire everything up. In my case this looks like this:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;public static void main(String[] args) {
	SequenceHandler sequenceHandler = new SimpleFileSequenceHandler(new File(args[0]));
	OsmChangeService osmChangeService = new RelationOsmChangeService();
	RestOperations restOperations = new RestTemplate();
	OsmChangeSyncService osmChangeSyncService = new OsmChangeSyncService(Granularity.hour, restOperations, osmChangeService, sequenceHandler);
	osmChangeSyncService.run();
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;There is one more thing. Since the OSM-Change files (osc) are packed with GZip some extra wiring 
is needed. As you can see I’m using the RestTemplate from the Spring Framework. 
The RestTemplate can automatically handle lots of content types. Unfortunately it cannot 
handle gzipped XML files (application/x-gzip). For this I created the 
&lt;a href=&quot;https://github.com/grundid/osm-tools/blob/master/osm-tools-process/src/main/java/org/osmtools/osmchange/ReadOnlyGzipJaxb2HttpMessageConverter.java&quot;&gt;ReadOnlyGzipJaxb2HttpMessageConverter&lt;/a&gt;. 
As the name says this converter is only able to read gzipped XML files. It will use the 
JAXB framework to parse the OSM-Change file and create an object model. To wire it up you 
have to create the RestTemplate like this:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new ReadOnlyGzipJaxb2HttpMessageConverter());
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;With all this knowledge you can now package everything up and plan your cronjob to run at the 
defined intervals. In my case I decided to update the database once an hour. This process 
takes about 2-3 sec and is acceptable as server load.&lt;/p&gt;

&lt;p&gt;I hope this simple overview will encourage you to take a look at the 
&lt;a href=&quot;https://github.com/grundid/osm-tools&quot;&gt;osm-tools library&lt;/a&gt; and help you implement 
your own sync functions for OSM. You can find the binary release of the osm-tools library in 
&lt;a href=&quot;http://search.maven.org/#search|ga|1|g%3A%22de.grundid.osmtools%22&quot;&gt;maven central&lt;/a&gt;. 
Please use at least version 1.0.M7.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/hack/2013/09/14/stay-in-sync-with-openstreetmap</link>
                <guid>http://blog.opendatalab.de/hack/2013/09/14/stay-in-sync-with-openstreetmap</guid>
                <pubDate>Sat, 14 Sep 2013 00:00:00 +0200</pubDate>
				<dc:creator>Felix Ebert</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Zulassungsantrag als Verbraucher-Informationsdienst</title>
                <description>&lt;p&gt;Seit Anfang August bietet das Bundeskartellamt mit der 
&lt;a href=&quot;http://www.bundeskartellamt.de/wDeutsch/MTS-K/MTS-KW3DnavidW26133.php&quot;&gt;Markttransparenzstelle für Kraftstoffe MTS-K&lt;/a&gt; 
die Möglichkeit an, sich als Anbieter eines Verbraucher-Informationsdienstes zu registrieren. 
Der Verbraucher-Informationsdienst soll die Autofahrer und somit die meisten Menschen über die tagesaktuellen Preise 
an den Tankstellen informieren.&lt;/p&gt;

&lt;p&gt;Als OpenData Enthusiasten sehen wir hier natürlich eine gigantische Chance eine interessante Anwendung 
für die Verbraucher zu entwickeln und so die Möglichkeiten von OpenData aufzuzeigen.&lt;/p&gt;

&lt;p&gt;Um an die Daten zu kommen muss man jedoch einen recht umfangreichen Fragenkatalog beantworten. 
Damit auch andere Anbieter einen leichteren Einstieg und mögliche Argumente für die Erstellung eines 
Antrags haben, bieten wir hier einen Auszug aus unserem Antrag an.&lt;/p&gt;

&lt;h5 id=&quot;informationsdienst&quot;&gt;Informationsdienst&lt;/h5&gt;

&lt;p&gt;Unser geplanter Informationsdienst soll „tankenhier.de“ heißen und als Location-Based-Service 
für alle Internetnutzer zur Verfügung gestellt werden. Der Zugriff soll sowohl über den 
Internet-Browser als auch über native Apps möglich sein. Am Anfang planen wir die Erstellung 
einer Android-App. Smartphone Nutzer werden alle Informationen auch über eine für Mobilgeräte 
optimierte Webseite erreichen können.&lt;/p&gt;

&lt;p&gt;Der Informationsdienst stellt die Preisinformationen in Abhängigkeit der aktuellen Position 
des Benutzers dar. Der Benutzer kann gezielt nach Tankstellen suchen, z.B. über Eingabe einer 
Postleitzahl. Tankstellen, die entlang von häufig gefahrenen Strecken liegen, können für 
einen einfachen Zugriff als Favoriten markiert werden. Der Benutzer soll einen Wunschpreis 
für eine Kraftstoffsorte festlegen können und sobald der Preis erreicht oder unterschritten 
wird, darüber informiert werden können. Für einen barrierefreien Zugang können die 
Informationen mit Hilfe von Text-To-Speech dem Benutzer vorgelesen werden, was gerade 
bei mobilen Benutzern sehr hilfreich sein wird.&lt;/p&gt;

&lt;p&gt;Grundsätzlich werden dem Benutzer immer die aktuellsten Preisdaten angezeigt. Die Anzeige 
erfolgt dabei in Form von detaillierten Tabellen oder auf einer Landkarte. Dies beinhaltet 
auch alle statischen Daten, wie Adresse und Öffnungszeiten. Darüber hinaus wird es auch 
Zugriff auf historische Daten geben. Mit der Zeit wollen wir auch Algorithmen entwickeln, 
die Prognosen für Preissenkungen und Preiserhöhungen berechnen.&lt;/p&gt;

&lt;p&gt;Außer den unmittelbaren Verbrauchern wollen wir die Informationen auch weiteren Entwicklern 
zur Verfügung stellen. Vor allem im Rahmen von OpenData Days und Hackathons soll so ein 
schneller und unbürokratischer Zugang zu den Preisinformationen möglich sein.
Durch die dauerhafte Speicherung der Daten wollen wir auch Hochschulen und Statistikern 
die historischen Preisinformationen uneingeschränkt zur Verfügung stellen.&lt;/p&gt;

&lt;h5 id=&quot;verfügbarkeit-und-aktualisierung-des-informationssystems&quot;&gt;Verfügbarkeit und Aktualisierung des Informationssystems&lt;/h5&gt;

&lt;p&gt;Unser Informationssystem soll möglichst zeitnah mit der produktiven Verfügbarkeit der 
Preisinformationen seitens von MDM starten. Da wir ein auf Open Source bedachtes Unternehmen 
sind, werden wir den BETA-Betrieb sofort ab der Zulassung zum Abruf der Informationen starten.&lt;/p&gt;

&lt;p&gt;Der Zugriff auf das Informationssystem soll über das Internet erfolgen, was für eine weltweite 
Erreichbarkeit sorgt. Es werden alle verfügbaren Tankstellen in dem Informationssystem 
verwaltet und dem Verbraucher zugängig gemacht werden.&lt;/p&gt;

&lt;p&gt;Die Preisdaten werden automatisch mit den MDM-Servern abgeglichen und aktualisiert. Die 
Aktualisierung der Daten wird in dem spezifizierten Intervall erfolgen. Es wird dafür 
Sorge getragen, dass die MDM-Server nicht mit unnötigen Anfragen belastet werden.
Der Dienst wird auf Servern gehostet für die wir ein SLA mit 99,9% Verfügbarkeit haben. 
Der Server verfügt über 24GB RAM und eine 100Mbit Anbindung an das Internet. Bei Bedarf 
können kurzfristig weitere Server angemietet werden.&lt;/p&gt;

&lt;p&gt;Die Finanzierung der Server ist durch unser Sponsoring Budget für mehrere Jahre gesichert. 
Darüber hinaus wollen wir das Projekt bei verschiedenen Wettbewerben vorstellen und so weiteres Kapital aufbringen.&lt;/p&gt;

&lt;p&gt;Grundsätzlich sehen wir die Notwendigkeit, den Informationsdienst für den Verbraucher 
kostenlos, registrierungsfrei und werbefrei anzubieten um einen hohen Datenschutz zu gewährleisten.&lt;/p&gt;

&lt;p&gt;Da wir bereits seit über 10 Jahren im Open Source und OpenData Umfeld Projekte 
hosten, sehen wir keine Probleme darin, das Informationssystem dauerhaft zur Verfügung zu stellen.&lt;/p&gt;

&lt;h5 id=&quot;fazit&quot;&gt;Fazit&lt;/h5&gt;

&lt;p&gt;Wir sind sehr gespannt, ob die MTS-K unseren Antrag akzeptieren wird. Grundsätzlich sehen wir solche 
Hürden als unnötig an. Es bleibt zu hoffen, dass zukünftig der Zugriff auf OpenData nicht auf diese Weise behindert wird.&lt;/p&gt;

&lt;p&gt;Sobald wir eine Rückmeldung erhalten werden wir dies natürlich posten.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/social/2013/09/04/zulassungsantrag-verbraucher-informationsdienst</link>
                <guid>http://blog.opendatalab.de/social/2013/09/04/zulassungsantrag-verbraucher-informationsdienst</guid>
                <pubDate>Wed, 04 Sep 2013 00:00:00 +0200</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Java Tools für das ZUGFeRD Datenmodell</title>
                <description>&lt;p&gt;Die elektronische Rechnung ist mit dem ZUGFeRD Format endlich in greifbare Nähe gerückt.
Das Format, welches von der Arbeitsgemeinschaft für wirtschaftliche Verwaltung e.V. (AWV) 
unter &lt;a href=&quot;http://www.ferd-net.de&quot;&gt;www.ferd-net.de&lt;/a&gt; veröffentlicht wurde, erlaubt es elektronische 
Rechnungen als XML-Datei im Anhang einer PDF Datei zu versenden.
Die XML Datei wird dabei an eine &lt;a href=&quot;http://de.wikipedia.org/wiki/PDF/A&quot;&gt;PDF/A-3&lt;/a&gt; angehängt und kann 
von &lt;a href=&quot;http://de.wikipedia.org/wiki/Elektronischer_Datenaustausch&quot;&gt;EDI Systemen&lt;/a&gt; 
verarbeitet und ausgewertet werden. Das PDF/A Format ist im Prinzip ein PDF Format, welches für 
Archivierungszwecke mit bestimmten Restriktionen belegt wurde. Damit soll sichergestellt werden, dass 
das Dokument auch in Zukunft dargestellt werden kann.&lt;/p&gt;

&lt;p&gt;Der AWV stellt auf seiner FeRD-Net Seite ein &lt;a href=&quot;http://www.ferd-net.de/front_content.php?idcat=255&amp;amp;lang=3&quot;&gt;Infopaket&lt;/a&gt; 
mit der Spezifikation und einigen Beispielrechnungen im PDF- und XML-Format zur Verfügung. 
Dies sollte Grund genug sein um sich das Thema etwas anzuschauen und zu prüfen, 
ob die Dokumente mit Open-Source Mitteln verarbeitet werden können.&lt;/p&gt;

&lt;h5 id=&quot;java-tools&quot;&gt;Java Tools&lt;/h5&gt;

&lt;p&gt;Hierzu habe ich ein Projekt mit den von mir hier beschriebenen Tools erstellt und in unserem Github Account 
online gestellt. In diesem Projekt habe ich als Erstes mit Hilfe von dem xjc Schema Compiler 
aus dem JAXB (Java Architecture for XML Binding) Paket Objekt-Dateien erstellt, die dazu verwendet 
werden können, einen Objektbaum aus der XML Datei einzulesen. 
Nachdem der Compile die Objekte erstellt hat,
kann die Beispiel-Rechnung einfach mit folgenden Zeilen eingelesen werden:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;JAXBContext jc = JAXBContext.newInstance(ObjectFactory.class);
Unmarshaller u = jc.createUnmarshaller();
JAXBElement&amp;lt;CBFBUYType&amp;gt; element = (JAXBElement&amp;lt;CBFBUYType&amp;gt;)u.unmarshal(in);
CBFBUYType invoice = (CBFBUYType)element.getValue();
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Als Nächstes habe ich mir die PDF Datei anschaut und sie mit Hilfe der iText Library geöffnet.
Damit konnte ich die Anhänge durchiterieren und die passende XML-Datei finden. Da der Code hierfür
etwas komplexter ist möchte ich hier auf die &lt;a href=&quot;https://github.com/opendatalab-de/zugferd/blob/master/src/main/java/de/grundid/zugferd/PdfInvoiceReader.java&quot;&gt;PdfInvoiceReader&lt;/a&gt;
Klasse verweisen, die sich in der Tools-Sammlung befindet und einem die Arbeit weitestgehend abnimmt.&lt;/p&gt;

&lt;p&gt;Zwar sagt die Spezifikation aus, dass im Moment nur eine Rechnung pro PDF Dokument angehängt
werden darf, dies hindert jedoch niemanden daran auch andere Inhalte mit der PDF-Datei zu verschicken.
Deshalb ist es notwendig, den Namen der Datei im Anhang mit dem Eintrag in den 
Metadaten der PDF-Datei abzugleichen.&lt;/p&gt;

&lt;p&gt;Um die Metadaten zu lesen gibt es von Adobe die 
&lt;a href=&quot;http://www.adobe.com/devnet/xmp.html&quot;&gt;Extensible Metadata Platform (XMP) Library&lt;/a&gt;. Mit dieser Library
können die Metadaten in einer XML-Datei wieder in ein Objektbaum geparst und ausgewertet werden. Für
das ZUGFeRD Modell wurde eine entsprechende Schemaerweiterung spezifiziert. 
In dieser Schemaerweiterung sind vier Zusatzinformationen vorhanden und zwar:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;der Name des Rechnungsdokuments im Anhang der PDF Datei&lt;/li&gt;
  &lt;li&gt;die Version des Spezifikation&lt;/li&gt;
  &lt;li&gt;der Typ des Dokuments (im Moment nur INVOICE)&lt;/li&gt;
  &lt;li&gt;Ausprägung der XMLRechnungsdaten (BASIC, COMFORT, EXTENDED)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hierzu habe ich auch eine entsprechende Klasse &lt;a href=&quot;https://github.com/opendatalab-de/zugferd/blob/master/src/main/java/de/grundid/zugferd/xmp/ZfMetaDataReader.java&quot;&gt;ZfMetaDataReader&lt;/a&gt; 
vorbereitet, die in der Lage ist diese Daten aus den Metadaten zu extrahieren.
Mit dem Namen des Rechnungsdokuments kann man jetzt ganz sicher auf den entsprechenden Anhang zugreifen
und die Rechnungsdaten verarbeiten.&lt;/p&gt;

&lt;h5 id=&quot;fazit&quot;&gt;Fazit&lt;/h5&gt;

&lt;p&gt;Die aktuelle Version des ZUGFeRD Formats lässt sich sehr leicht mit Java Werkzeugen auslesen. 
In weiteren Tests wird man versuchen müssen auch entsprechende PDF Dokumente zu erzeugen. 
Dazu wäre es jedoch sinnvoll eine Art Referenzimplementierung seitens des AWV zu haben, um die 
erstellen Dokumenten verifizieren zu können.&lt;/p&gt;

&lt;p&gt;Mittelfristig stellt sich die Frage, in wie fern die PDF Datei überhaupt notwendig ist. 
Sie wird vermutlich die Benutzer weiterhin dazu animieren das Dokument auszudrucken und abzuheften.
Daher plane ich einen weiteren Test indem die reine XML-Rechnungsdatei mit Hilfe 
von &lt;a href=&quot;http://de.wikipedia.org/wiki/XSLT&quot;&gt;XSLT&lt;/a&gt; in ein menschenlesbares Dokument umgewandelt wird.
Dies wird es erlauben, die Rechnungen nur als XML-Datei zu transportieren und nur bei 
Bedarf mit Hilfe von XSLT zu visualisieren.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/hack/2013/08/19/zugferd-java-tools</link>
                <guid>http://blog.opendatalab.de/hack/2013/08/19/zugferd-java-tools</guid>
                <pubDate>Mon, 19 Aug 2013 00:00:00 +0200</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Gemeinde RSS Feed Aggregator</title>
                <description>&lt;p&gt;Die beste Art Nachrichten zu lesen ist für mich ein RSS Feed. Vor allem wenn er nach Keywords 
gefiltert und örtlich eingegrenzt werden kann. Die Gemeindenachrichten haben hier noch einen 
riesigen Nachholbedarf. Bei einer kurzen Analyse aller 46 Gemeinden im Landkreis Heilbronn 
stellt nur eine Gemeinde einen RSS Feed zur Verfügung. Da ich mich schon seit längerer Zeit 
mit dem Gedanken auseinander setze, einem RSS Feed Aggregator zu schreiben, habe ich kurzerhand 
beschlossen die Nachrichten/Aktuelles Seiten aller Gemeinden im LK HN zu erfassen und zu schauen, 
welche dieser Seiten mit einem verträglichen Aufwand analysiert werden können um die aktuellen 
Beiträge zu extrahieren.&lt;/p&gt;

&lt;p&gt;Da ich in &lt;a href=&quot;http://www.untergruppenbach.de&quot;&gt;Untergruppenbach&lt;/a&gt; wohne, 
hatte diese Homepage natürlich die höchste Priorität. 
Sie ist mit TYPO3 umgesetzt und die &lt;a href=&quot;http://www.untergruppenbach.de/index.php?id=7&amp;amp;publish[p]=7&amp;amp;publish[start]=1&quot;&gt;Aktuelles-Seite&lt;/a&gt; hat eine überschaubare Struktur aus 
ListItem (LI) Elementen, die einen Titel, einen Link und das Datum des Beitrags enthalten. 
Diese Daten zu extrahieren war recht einfach. Als Weiteres habe ich gesehen, dass mehrere 
andere Gemeinde-Homepages von derselben Agentur eingerichtet wurden, so dass 
deren interner Aufbau mit den Seiten aus Untergruppenbach identisch war. Im Detail sind das 
die Gemeinden &lt;a href=&quot;http://www.gemeinde-wuestenrot.de&quot;&gt;Wüstenrot&lt;/a&gt;, 
&lt;a href=&quot;http://www.massenbachhausen.de&quot;&gt;Massenbachhausen&lt;/a&gt;, &lt;a href=&quot;http://www.neudenau.de&quot;&gt;Neudenau&lt;/a&gt;, 
&lt;a href=&quot;http://www.hardthausen.de&quot;&gt;Hardthausen&lt;/a&gt;, &lt;a href=&quot;http://www.erlenbach-hn.de&quot;&gt;Erlenbach&lt;/a&gt; 
und &lt;a href=&quot;http://www.neckarwestheim.de&quot;&gt;Neckarwestheim&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Damit konnte ich mit recht einfachen Mitteln die Nachrichten aus sieben Gemeinden abrufen. 
Die gesammelten Daten werden ab jetzt einmal täglich in eine Datendank geschrieben. 
Duplikate werden rausgefiltert. Falls die Gemeinde kein Datum beim Beitrag hinterlegt hat, dann wird das
Datum an dem die Seite gescraped wurde als Beitrag-Datum erfasst. 
Somit wird man zumindest ab jetzt das Veröffentlichungsdatum auf einen Tag genau kennen, 
was durchaus einen Mehrwert schafft.&lt;/p&gt;

&lt;p&gt;Auf der &lt;a href=&quot;http://gemeinde-rss.grundid.de&quot;&gt;Gemeinde-RSS&lt;/a&gt; Seite werden im Moment einfach 
alle Nachrichten in einer Liste nach Datum sortiert und mit einem Link zum ursprünglichen 
Artikel angezeigt. Diese Seite soll erstmal nur eine kleine Demo darstellen. Demnächst 
wird auch ein richtiger RSS Feed eingerichtet, der dann weiter mit einem entsprechenden 
Reader verarbeitet werden kann.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://gemeinde-rss.grundid.de&quot;&gt;&lt;img src=&quot;/assets/gemeinde-rss.png&quot; alt=&quot;Screenshot aus dem Projekt&quot; title=&quot;Screenshot aus dem Projekt&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Als nächstes muss der &lt;a href=&quot;https://github.com/opendatalab-de/gemeinde-scraper-tools&quot;&gt;Scraper&lt;/a&gt; noch verbessert werden, damit er mehrere Seiten mit 
Nachrichten pro Gemeinde verarbeiten kann. Im Moment wird nur die erste Seite abgearbeitet. 
Viele Gemeinden zeigen hier jedoch nur 5 Beiträge an. Obwohl der Scraper die Seite täglich 
besucht, kann es vorkommen, dass eine Gemeinde mehr als 5 Beiträge an einem Tag 
veröffentlicht. In diesem Fall würden die Beiträge auf der zweiten Seite verloren gehen. 
Dies kann recht leicht korrigiert werden.&lt;/p&gt;

&lt;p&gt;Darüber hinaus muss der Scraper noch auf andere Homepages ausgeweitet werden. Es gibt einige 
weitere Gemeinden, die zwar ältere Systeme verwenden, aber deren Aufbau wiederum für 
mehrere Gemeinden gleich ist. Diese zu identifizieren und den Scraper zu schreiben wird 
die nächste Aufgabe sein.&lt;/p&gt;

&lt;p&gt;Bei all dieser Arbeit stellt sich natürlich die Frage, wieso betreibt jede Gemeinde 
eine eigene CMS Instanz? Jede Instanz muss auf die Dauer gesehen mit Updates und 
Patches versorgt werden. Keine der Gemeinden im LK verwendet die neuste TYPO3 Version. 
Viele haben die Version 4.5, die als LTS definiert ist, aber ich konnte nicht auf die 
Schnelle ermitteln, ob sie auch auf dem neusten Patchstand sind. Langfristig muss ein 
einheitliches System für die Gemeinden erstellt werden, der den administrativen Aufwand 
deutlich reduziert und den Zugang zu OpenData vereinfacht. 
Mal sehen, ob wir im LK HN was bewegen können.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/hack/2013/08/08/gemeinde-rss</link>
                <guid>http://blog.opendatalab.de/hack/2013/08/08/gemeinde-rss</guid>
                <pubDate>Thu, 08 Aug 2013 00:00:00 +0200</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>GeoJson Utilities für den Export von Verwaltungsgrenzen</title>
                <description>&lt;p&gt;Bei der Umsetzung von dem &lt;a href=&quot;https://kfd.piratenfraktion-nrw.de/&quot;&gt;Finanzdatenvergleich für NRW&lt;/a&gt; 
haben wir recht viel Zeit mit der Zusammenstellung und Konvertierung der notwendigen GeoDaten verbracht. 
Die vom &lt;a href=&quot;http://www.geodatenzentrum.de/geodaten/gdz_rahmen.gdz_div?gdz_spr=deu&amp;amp;gdz_akt_zeile=5&amp;amp;gdz_anz_zeile=0&amp;amp;gdz_user_id=0&quot;&gt;Geodatenzentrum&lt;/a&gt; 
bereitgestellten Daten sind im sogenannten Shape-Format (SHP) und damit nicht im webtauglichen 
Format wie GeoJson vorhanden. Die reine Konvertierung der Daten von einer SHP-Datei zu einer 
GeoJson Datei ist recht leicht mit GDAL Tools möglich, jedoch enthalten die SHP Dateien alle 
Land- und Wasserflächen Deutschlands und das ist nicht immer das was man braucht.&lt;/p&gt;

&lt;p&gt;In diesem Zusammenhang und für zukünftige Visualisierungen haben wir eine WebApp entwickelt, 
die es uns langfristig erlauben wird schnell und mit wenigen Clicks, die benötigten Daten 
zusammenzustellen. Auf der &lt;a href=&quot;http://opendatalab.de/projects/geojson-utilities/&quot;&gt;Webseite der GeoJson Utilities&lt;/a&gt; 
sieht man auf einen Blick alle 
Landkreise und kreisfreie Städte und kann sie je nach Wunsch auswählen. Danach kann mit 
einem Click eine GeoJson Datei mit den entsprechenden Gemeindegrenzen, Landkreisgrenzen 
oder Bundeslandgrenzen erstellt werden.&lt;/p&gt;

&lt;p&gt;Für spezielle Auswertungen haben wir auch die neusten Einwohnerzahlen vom statistischen 
Bundesamt in die GeoJson Daten integriert. Da die Daten vom Geodatenzentrum die Flächen 
der Gemeinden und Landkreise bereits enthalten, lassen sich somit sehr schnell Daten 
visualisieren und pro Einwohner bzw. pro Fläche umrechnen.&lt;/p&gt;

&lt;p&gt;Um die Funktionalität für den Anfang abzurunden, ist es auch möglich bereits vorhandene 
GeoJson Dateien in dem Tool zu visualisieren. Dazu genügt es einfach die GeoJson Datei 
in das Browserfenster zu ziehen und schon werden die Daten aus der Datei auf der Karte 
dargestellt. Da hierbei kein Upload der Daten erfolgt, können auf diese Weise sehr schnell 
auch recht große GeoJson Dateien visualisiert werden.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://opendatalab.de/projects/geojson-utilities/&quot;&gt;&lt;img src=&quot;/assets/geojson-utilities.jpg&quot; alt=&quot;Screenshot aus dem Projekt&quot; title=&quot;Screenshot aus dem Projekt&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wir hoffen, dass dieses Tool vielen Entwicklern bei Hackathons und OpenData Days den 
Zugriff auf die entsprechenden Grenzflächen vereinfacht und es ihnen erlaubt direkt 
mit der Umsetzung ihrer Ideen loszulegen statt erst mühsam Rohdaten zu konvertieren.&lt;/p&gt;

&lt;p&gt;Als weitere Zielgruppe sehen wir auch die Datenjournalisten, die dieses Tool zur 
Datenaufbereitung für ihre Blog-Posts nutzen können.&lt;/p&gt;

&lt;p&gt;Um die WebApp langfristig mit weiteren Features anzureichern würden wir gerne von 
euch hören, welche Funktionen für euch in der Aufbereitung von Geodaten nützlich wären. 
Habt ihr Ideen?&lt;/p&gt;

</description>
                <link>http://blog.opendatalab.de/hack/2013/08/01/geojson-utilities-webapp</link>
                <guid>http://blog.opendatalab.de/hack/2013/08/01/geojson-utilities-webapp</guid>
                <pubDate>Thu, 01 Aug 2013 00:00:00 +0200</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	

        <item>
                <title>Leap Motion Controller Gestures</title>
                <description>&lt;p&gt;After a long wait the Leap Motion controller finally arrived last week. Based on the many videos online, 
my expectations were quite high: a Kinect like device especially designed to control the UI of your 
desktop computer. Finally I could eat pizza and control the video playback without having to touch 
the keyboard or the mouse. A perfect world so to speak ;) Well, not so fast.&lt;/p&gt;

&lt;p&gt;After I installed the device drives and played with the visualization tool everything looked promising. 
The next step was to install the free Touchless app from the Airspace Store to be able to control 
your system UI. In the introduction tutorial you get an impression how to generate gestures like a 
click, swipe or the zoom gesture. Basically you create user inputs by interacting with an invisible 
surface. However what looks quite easy in the demo videos is much harder in real life. The device is 
quite sensitive so it is really hard at the beginning to hit the right icons on the desktop. 
Since there is no gesture for a double click you have to switch the Windows UI to single click deal 
with files. With that you are at least able to launch applications and open files. Since all 
my apps are unaware of the Leap Motion controller you have to rely on the Touchless app to 
simulate touch/mouse events.&lt;/p&gt;

&lt;p&gt;Unfortunately this does not work very reliably. Since you are interacting with an invisible surface it is 
quite easy to generate events and gestures that are unintentional. It is especially frustrating to 
see a swipe gesture to end up as a drag and drop of some of your desktop files into the recycle bin.&lt;/p&gt;

&lt;iframe width=&quot;640&quot; height=&quot;480&quot; src=&quot;//www.youtube.com/embed/vBrhL5WFOx8?rel=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;allowfullscreen&quot;&gt;
&lt;/iframe&gt;

&lt;p&gt;Anyway, I still think that this device has huge potential. Since it is a 3D controller maybe it is a 
wrong approach to use it to control a 2D surface. Also I think we should think of new gestures that suit 
the 3D environment and no try to simulate touch gestures on an invisible surface.&lt;/p&gt;

&lt;p&gt;To know more I looked at the API for the Leap Motion controller at &lt;a href=&quot;http://js.leapmotion.com&quot;&gt;js.leapmotion.com&lt;/a&gt;. 
It is a simple JavaScript API that you can use in your browser or from a node.js environment. 
It uses a nice approach where it connects via a WebSocket to the device driver and transfers all the 
relevant data in real time as JSON structures. The API web site shows &lt;a href=&quot;http://js.leapmotion.com/examples&quot;&gt;many examples&lt;/a&gt; 
that can be used as a starting point for your own experiments. 
I went with the &lt;a href=&quot;https://github.com/grundid/lm-experiments&quot;&gt;gesture example&lt;/a&gt; since I wanted to find 
out how reliable the gesture recognition is.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://js.leapmotion.com/api/v0.2.0-beta6/docs#leap-gesture&quot;&gt;gesture API&lt;/a&gt; is able to recognize four gestures:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;a swipe, where you move your palm from left to right or from right to left&lt;/li&gt;
  &lt;li&gt;a circle, where you move your finger in a circle motion&lt;/li&gt;
  &lt;li&gt;a screen tap, where you move your finger as if you would want to punch a hole in a dust cloud&lt;/li&gt;
  &lt;li&gt;a key tap, where you move your finger down as if pressing a key on a keyboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both tap gestures have to be a fluid motion, however you have to pause before you start the gesture. 
After some testing the swipe and screen tap gestures can be recognizes with the highest certainty. 
The circle gesture always interferes. I wouldn’t use it in a project right now. The key tap 
gesture can be recognized quite certain if the motion is a clean downward motion. If you move 
your finger too much into the empty space a screen tap gesture can be recognized as well or instead.&lt;/p&gt;

&lt;p&gt;Let’s have a short look at the data structures that are delivered on each gesture.&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;var circle = {
	&quot;center&quot; : [ -8.35835, 162.173, 52.877 ],
	&quot;normal&quot; : [ 0.549754, -0.034748, 0.834604 ],
	&quot;progress&quot; : 1.08131,
	&quot;radius&quot; : 57.2113,
	&quot;id&quot; : 831,
	&quot;handIds&quot; : [ 43 ],
	&quot;pointableIds&quot; : [ 47 ],
	&quot;duration&quot; : 1347543,
	&quot;state&quot; : &quot;stop&quot;,
	&quot;type&quot; : &quot;circle&quot;
};
var keyTap = {
	&quot;position&quot; : [ -9.38897, 169.063, 55.731 ],
	&quot;direction&quot; : [ -0.141792, -0.988074, -0.0600328 ],
	&quot;progress&quot; : 1,
	&quot;id&quot; : 828,
	&quot;handIds&quot; : [ 43 ],
	&quot;pointableIds&quot; : [ 47 ],
	&quot;duration&quot; : 93555,
	&quot;state&quot; : &quot;stop&quot;,
	&quot;type&quot; : &quot;keyTap&quot;
};
var screenTap = {
	&quot;position&quot; : [ -3.99414, 152.783, 33.5111 ],
	&quot;direction&quot; : [ 0.19501, -0.331286, -0.923158 ],
	&quot;progress&quot; : 1,
	&quot;id&quot; : 825,
	&quot;handIds&quot; : [ 43 ],
	&quot;pointableIds&quot; : [ 47 ],
	&quot;duration&quot; : 93556,
	&quot;state&quot; : &quot;stop&quot;,
	&quot;type&quot; : &quot;screenTap&quot;
};
var swipe = {
	&quot;startPosition&quot; : [ -123.199, 111.351, 79.4682 ],
	&quot;position&quot; : [ -8.70678, 128.55, -2.90308 ],
	&quot;direction&quot; : [ 0.822251, 0.117758, -0.556809 ],
	&quot;speed&quot; : 1101.57,
	&quot;id&quot; : 821,
	&quot;handIds&quot; : [ 43 ],
	&quot;pointableIds&quot; : [ 95 ],
	&quot;duration&quot; : 9356,
	&quot;state&quot; : &quot;update&quot;,
	&quot;type&quot; : &quot;swipe&quot;
};
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;All gestures have a “type” and “state” property. The type property is basically the name of the 
gesture: swipe, circle, screenTap, keyTap. The state can be “start”, “update” or “stop”. 
Only the swipe and circle gestures generate all three states. The tap gestures only generate a single event 
with the state “stop”.&lt;/p&gt;

&lt;p&gt;Within the swipe gesture you can use the “direction” property to decide in which direction 
the gesture was made. The property describes an X/Y/Z vector, so the first element is our X axis. 
If this value is positive the motion was from left to right, otherwise it was from right to left. 
With this knowledge you can already start building “cut the rope” games ;)&lt;/p&gt;

&lt;p&gt;I hope the Leap Motion will introduce a similar gesture recognition system like on android 
where you can add your own gestures. The screen tap gesture does not feel right for me so 
I’ll try to implement a different approach. My idea is to keep the pointing finger in the 
air while closing the thumb into your palm. This gesture it known as shooting at something, 
but since the Leap Motion controller is not able to recognize fingers on top of each other you 
have to rotate your hand 90 degrees counter-clockwise. Hopefully I’ll be able to present 
you this idea with a data visualization demo soon.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/learning/2013/07/28/leap-motion-gestures</link>
                <guid>http://blog.opendatalab.de/learning/2013/07/28/leap-motion-gestures</guid>
                <pubDate>Sun, 28 Jul 2013 00:00:00 +0200</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  		
		


		








		

        <item>
                <title>Recyclinghöfe und Müllabfuhrtermine visualisiert</title>
                <description>&lt;p&gt;Die Themen Recycling und Müllabfuhrtermine beschäftigen mich schon seit längerer Zeit. 
Wäre es nicht schön, wenn man wie bei Google Now immer automatisch wüsste, wann welcher 
Mülleimer rausgestellt werden soll und wann der nächste gelegene Recyclinghof offen hat?&lt;/p&gt;

&lt;p&gt;Mit offenen Daten seitens der Müllabfuhrunternehmen und des Landratsamtes wären solche 
Apps kein Problem. Nun sind die Daten eigentlich verfügbar. Auf den Seiten vom 
&lt;a href=&quot;http://www.landkreis-heilbronn.de/sixcms/detail.php?id=10804&amp;amp;_nav=19947,19945&quot;&gt;Landratsamt&lt;/a&gt; 
findet man in einer kleinen Auswahlliste rechts unten alle Recyclinghöfe im Landkreis. 
Möchte man auch die Daten wie Öffnungszeiten und Adresse erfahren muss man sich mühsam durch alle Optionen durchklicken. Das ist ziemlich umständlich.&lt;/p&gt;

&lt;p&gt;Dasselbe gilt für die Müllabfuhrtermine. Auch hierzu bietet das Landratsamt eine entsprechende 
&lt;a href=&quot;http://www.landkreis-heilbronn.de/sixcms/detail.php?id=10808&amp;amp;_nav=19947,19945&quot;&gt;Web-Seite&lt;/a&gt; an. Die passende Auswahlliste ist diesmal rechts oben untergebracht und erlaubt den Zugriff auf eine PDF Datei mit dem Namen der entsprechenden Gemeinde. In dieser Abfuhrplan-PDF findet man einen bunten Kalender mit allen Abfuhrterminen für die Restmüll-, Biomüll- und Papiertonne.&lt;/p&gt;

&lt;p&gt;Das Landratsamt geht noch einen Schritt weiter und offeriert seit einigen Monaten eine 
&lt;a href=&quot;http://www.landkreis-heilbronn.de/sixcms/detail.php?id=10926&amp;amp;_nav=10926&amp;amp;artikel=37893&amp;amp;template=presseartikel_detail_lra&quot;&gt;App&lt;/a&gt;. 
In Zusammenarbeit mit der Firma idContor GmbH wird im 
&lt;a href=&quot;https://play.google.com/store/apps/details?id=abfallH.ucom.de&quot;&gt;Google Play&lt;/a&gt; und im Appstore eine 
App angeboten, die die aktuellen Abfuhrtermine und Recyclinghöfe darstellt. 
Die Daten sind akkurat und man kann sich eine Erinnerungsfunktion für das 
Rausstellen der entsprechenden Mülltonnen einrichten. Leider scheint gerade diese 
interessante Funktion etwas störanfällig zu sein, so dass nach einem Neustart des 
Smartphones keine weiteren Erinnerungen angezeigt werden.&lt;/p&gt;

&lt;p&gt;Im Prinzip sind also die Daten vorhanden, nur leider nicht für jedermann 
in maschinenlesbarer Form verfügbar. Mit ein wenig Aufwand haben wir uns vorgenommen 
einen Teil dieser Informationen aufzubereiten und in einer einfachen Kartendarstellung zu präsentieren. 
Entstanden ist daraus die &lt;a href=&quot;http://opendatalab.de/recycling-map/&quot;&gt;Recycling-Map für den Landkreis Heilbronn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://opendatalab.de/projects/recycling-map/&quot;&gt;&lt;img src=&quot;/assets/recycling-map-voll.jpg&quot; alt=&quot;Screenshot aus dem Projekt&quot; title=&quot;Screenshot aus dem Projekt&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Auf einen Blick kann man hier alle Recyclinghöfe in seiner Umgebung sehen und anhand der Farbgebung der Gemeinden erkennen, 
an welchen Tagen der Müll rausgefahren wird.
Über einen Klick auf eine Gemeinde kann direkt die entsprechende PDF-Datei mit den genauen Müllabfuhrterminen geöffnet werden.&lt;/p&gt;

&lt;p&gt;Die Anzeige der Recyclinghöfe auf der rechten Seite zeigt alle Öffnungszeiten im Wochenverlauf an 
und bietet somit einen einfachen Weg um seine Zeit in Bezug auf das Recycling zu organisieren.&lt;/p&gt;

&lt;p&gt;Interessant an der farblichen Darstellung der Restmüllabfuhr ist, dass man leicht 
Gemeinde-Cluster erkennen kann, in denen die Leerung am selben Tag erfolgt.
Aufgrund diverser Feiertagsverschiebungen und unterschiedlicher Zyklen bei der Restmüll- und Biomüllabfuhr 
und der Tatsache, dass die Daten in ca. 46 PDF Dateien in einem bunten Kalender zerstreut sind, 
haben wir die Darstellung nur auf den Wochentag der regelmäßigen Restmüllleerung begrenzt.&lt;/p&gt;

&lt;p&gt;Dieses simple &lt;a href=&quot;https://github.com/opendatalab-de/recycling-map&quot;&gt;Projekt&lt;/a&gt; soll zeigen, wie man auf einfache Art und Weise den Zugang 
zu Informationen im Bereich Recycling und Müllabfuhr verbessern kann. In Zukunft hoffen wir, 
dass der Landkreis alle Daten über diesen Bereich offen und maschinenlesbar zur Verfügung stellen 
wird und wir eines Tages eine ähnliche Recycling-Map wie in der 
&lt;a href=&quot;http://recycling-map.ch/&quot;&gt;Schweiz&lt;/a&gt; anbieten können.&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/hack/2013/07/24/recycling-map</link>
                <guid>http://blog.opendatalab.de/hack/2013/07/24/recycling-map</guid>
                <pubDate>Wed, 24 Jul 2013 00:00:00 +0200</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	

        <item>
                <title>GeoJson POJOs for Jackson</title>
                <description>&lt;p&gt;As a result of our latest project I’ve extracted a small set of Java Objects that can easily be serialized 
and deserialized into &lt;a href=&quot;http://www.geojson.org&quot;&gt;GeoJson&lt;/a&gt; files using the &lt;a href=&quot;http://jackson.codehaus.org/&quot;&gt;Jackson JSON parser&lt;/a&gt; library.
The java objects are quite optimized and use the Jackson annotations to identify the different types of GeoJson objects. 
This way you can save the “type” property within every object. On export the Jackson parser will automatically 
insert the type property based on the Java class name.&lt;/p&gt;

&lt;p&gt;Without the GeoJson POJOs you would have to let Jackson parse the contents of a geojson file 
into HashMaps which I previously did like this:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Map&amp;lt;String, Object&amp;gt; map = new ObjectMapper().readValue(inputStream,
MapType.construct(HashMap.class, SimpleType.construct(String.class),
SimpleType.construct(Object.class)));
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After this you have to typecast every property and dive from HashMap into HashMap.&lt;/p&gt;

&lt;p&gt;Using the above library the mapping is much easier. Here are two examples how you read GeoJson data.
If you know what kind of data you expect from a GeoJson file you can directly parse the data:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;FeatureCollection featureCollection = 
new ObjectMapper().readValue(inputStream, FeatureCollection.class);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Otherwise you can read a GeoJsonObject and decide the type using instanceOf checks:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;GeoJsonObject object = new ObjectMapper().readValue(inputStream, GeoJsonObject.class);
if (object instanceOf Polygon) {
	...
} else if (object instanceOf Feature) {
	...
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;For more examples, please have a look at 
the &lt;a href=&quot;https://github.com/opendatalab-de/geojson-jackson/tree/master/src/test/java/org/geojson/jackson&quot;&gt;tests&lt;/a&gt; 
in the project repository.&lt;/p&gt;

&lt;p&gt;This library is available for download at Maven Central:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
	&amp;lt;groupId&amp;gt;de.grundid.opendatalab&amp;lt;/groupId&amp;gt;
	&amp;lt;artifactId&amp;gt;geojson-jackson&amp;lt;/artifactId&amp;gt;
	&amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you want to contribute to this library, please check our GitHub repository:
&lt;a href=&quot;https://github.com/opendatalab-de/geojson-jackson&quot;&gt;github.com/opendatalab-de/geojson-jackson&lt;/a&gt;&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/hack/2013/07/16/geojson-jackson</link>
                <guid>http://blog.opendatalab.de/hack/2013/07/16/geojson-jackson</guid>
                <pubDate>Tue, 16 Jul 2013 00:00:00 +0200</pubDate>
				<dc:creator>Adrian Stabiszewski</dc:creator>
        </item>

	
		  










	

        <item>
                <title>Visualisierung der Regionalstatistikdaten</title>
                <description>&lt;p&gt;Am Beispiel vom Landkreis Heilbronn haben wir zahlreiche Daten &lt;a href=&quot;http://opendatalab.de/heilbronn-regionalstatistik&quot;&gt;visualisiert&lt;/a&gt;, die unter &lt;a href=&quot;https://www.regionalstatistik.de/genesis/online/logon&quot;&gt;regionalstatistik.de&lt;/a&gt; für alle Gemeinden in Deutschland als offene Datensätze zur Verfügung stehen.&lt;/p&gt;

&lt;p&gt;So können unter anderem die Gewerbesteuerzahlen, die Hebesätze, Verkehrsunfallzahlen, Tourismuszahlen und Trinkwasserkosten im Landkreis Heilbronn kompakt verglichen werden.&lt;/p&gt;

&lt;p&gt;Die Motivation für diese Visualisierung war die Bürgerbeteiligung &lt;a href=&quot;http://www.neckarsulm.de/main/unser-neckarsulm/stadtentwicklung-2030.html&quot;&gt;Stadtentwicklung Neckarsulm 2030&lt;/a&gt;, bei der ich an zwei Planungswerkstätten teilgenommen habe.
Dort kamen immer wieder Fragen nach einem Vergleich mit anderen Gemeinden im Landkreis auf - zum Beispiel in Bezug auf Erholungsfläche (Parks), Pendlerzahlen und Einwohnerzahlen. Mit Hilfe einer Visualisierung wie dieser könnten zukünftig solche Fragen leichter beantwortet und Zusammenhänge einfacher erfasst werden.&lt;/p&gt;

&lt;p&gt;Auf nachfolgender Karte kann jede Gemeinde angeklickt und der ausgewählte Datensatz (z.B. Gewerbesteuereinnahmen) eingesehen werden. Über die Auswahl “vergleichen mit” kann man optional den gewählten Datensatz mit einem anderen Datensatz wie zum Beispiel “Einwohnerzahl” vergleichen.&lt;/p&gt;

&lt;p&gt;Falls Ihnen der nachfolgende Kartenausschnitt zu klein ist, können Sie die &lt;a href=&quot;http://opendatalab.de/heilbronn-regionalstatistik&quot;&gt;Vollbild-Version&lt;/a&gt; verwenden.&lt;/p&gt;

&lt;iframe src=&quot;http://opendatalab.de/projects/heilbronn-regionalstatistik/&quot; width=&quot;100%&quot; height=&quot;500&quot;&gt; &lt;/iframe&gt;

&lt;h3 id=&quot;wie-wurde-die-visualisierung-erstellt&quot;&gt;Wie wurde die Visualisierung erstellt?&lt;/h3&gt;

&lt;h4 id=&quot;flächen-polygone&quot;&gt;Flächen-Polygone&lt;/h4&gt;

&lt;p&gt;Die Flächen-Polygone der Gemeinden im Landkreis Heilbronn stammen von der &lt;a href=&quot;http://www.geodatenzentrum.de/geodaten/gdz_rahmen.gdz_div?gdz_spr=deu&amp;amp;gdz_akt_zeile=5&amp;amp;gdz_anz_zeile=0&amp;amp;gdz_unt_zeile=0&amp;amp;gdz_user_id=0&quot;&gt;Open Data Seite des Bundesamts für Kartographie und Geodäsie&lt;/a&gt;. Dort haben wir die Geodaten der Verwaltungsgebiete 1:250.000 mit Einwohnerzahlen (Georeferenzierung UTM32, Inhalt Ebenen) heruntergeladen.&lt;/p&gt;

&lt;p&gt;Diese Geodaten haben wir mit dem GDAL-Tool &lt;a href=&quot;http://www.gdal.org/ogr2ogr.html&quot;&gt;ogr2ogr&lt;/a&gt; in eine .geojson Datei umgewandelt:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ogr2ogr -f GeoJSON -s_srs epsg:25832 -t_srs epsg:4326 -simplify 20 gemeinden.geojson vg250_gem.dbf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Anschließend haben wir diese GeoJSON Datei auf den Landkreis Heilbronn anhand des Gemeindeschlüssels &lt;a href=&quot;https://github.com/opendatalab-de/gemeinde-api-mockup/blob/49fdc74bb39952c268894916d8215d0ede3d2453/gemeinde-api-mockup/src/main/java/de/opendatalab/utils/GemeindeFilter.java&quot;&gt;reduziert&lt;/a&gt;. 
Da die Stadt Heilbronn nicht im Shapefile aller Gemeinden enthalten ist, haben wir zusätzlich die Landkreis-Geodaten (vg250_krs) per ogr2ogr umgewandelt und die Stadt Heilbronn in die gefilterte GeoJSON-Datei der Gemeinden eingefügt.&lt;/p&gt;

&lt;p&gt;Die resultierende GeoJSON-Datei kann anschließend mit der JavaScript-Bibliothek &lt;a href=&quot;http://leafletjs.com/examples/geojson.html&quot;&gt;Leaflet&lt;/a&gt; gerendert werden.&lt;/p&gt;

&lt;h4 id=&quot;regionalstatistikdaten&quot;&gt;Regionalstatistikdaten&lt;/h4&gt;

&lt;p&gt;Wir haben für dieses Beispiel alle Daten auf regionalstatistik.de mit Bezug auf einzelne Gemeinden heruntergeladen.
Gerne hätten wir dabei gleich die Daten für ganz Deutschland heruntergeladen, leider ist das jedoch auf regionalstatistik.de aufgrund fragwürdiger Limitierungen nicht so einfach möglich.
Wollte man diese Visualisierung für ganz Deutschland erstellen, müsste man wohl leider erst einen Scraper für die GENESIS-Portale erstellen.&lt;/p&gt;

&lt;p&gt;Für ein einfaches Beispiel haben wir uns daher vorerst auf den Landkreis Heilbronn beschränkt.
Zudem haben wir einzelne Datensätze wie zum Beispiel die Pendlerzahlen vorerst nicht in dieses Beispiel integriert, da diese verhältnismäßig umständlich maschinenlesbar zu erfassen waren.&lt;/p&gt;

&lt;p&gt;Mit einem &lt;a href=&quot;https://github.com/opendatalab-de/gemeinde-api-mockup/tree/master/gemeinde-api-mockup&quot;&gt;Java-Converter&lt;/a&gt; haben wir die heruntergeladenen CSV-Dateien von regionalstatistik.de in die GeoJSON-Datei integriert, so dass die Zuordnung der Daten zum Polygon auf der Karte sehr einfach möglich ist.
Die &lt;a href=&quot;https://raw.github.com/opendatalab-de/gemeinde-api-mockup/master/viewer/src/data/heilbronn-rs.geojson&quot;&gt;entstandene Datei&lt;/a&gt; könnt ihr auf GitHub herunterladen.&lt;/p&gt;

</description>
                <link>http://blog.opendatalab.de/hack/2013/07/15/heilbronn-regionalstatistik-visualisierung</link>
                <guid>http://blog.opendatalab.de/hack/2013/07/15/heilbronn-regionalstatistik-visualisierung</guid>
                <pubDate>Mon, 15 Jul 2013 00:00:00 +0200</pubDate>
				<dc:creator>Felix Ebert</dc:creator>
        </item>

	
		  










	

        <item>
                <title>Live-Visualisierung der Berliner Energiedaten</title>
                <description>&lt;p&gt;Auf dem &lt;a href=&quot;http://energyhack.de/&quot;&gt;Energyhackday in Berlin&lt;/a&gt; habe ich zusammen mit &lt;a href=&quot;http://www.michael-hoerz.de/&quot;&gt;Michael Hörz&lt;/a&gt; eine &lt;a href=&quot;http://felixebert.de/energyhackday&quot;&gt;Visualisierung der Verbrauchsdaten der Berliner Bezirke&lt;/a&gt; entwickelt.
Mit dieser Visualisierung kann schnell der Verlauf des Stromverbrauchs (und der Stromerzeugung) der Berliner Bezirke über einen Tag hinweg eingesehen werden.&lt;/p&gt;

&lt;iframe src=&quot;http://felixebert.de/energyhackday/&quot; width=&quot;100%&quot; height=&quot;600&quot;&gt; &lt;/iframe&gt;

&lt;p&gt;Die aktuellen Daten zum Energieverbrauch der Bezirke werden von Stromnetz Berlin in 15-Minuten Intervallen über eine &lt;a href=&quot;http://www.netzdaten-berlin.de/web/guest/suchen/-/details/web-service-last-und-erzeugung-berlin&quot;&gt;Web-API&lt;/a&gt; bereitgestellt. Leider ist der Datenabruf noch etwas mühsam, da momentan jeder Bezirk nur einzeln abgefragt werden kann, die API auf XML basiert und der Response der Web-API keine &lt;a href=&quot;http://enable-cors.org/server.html&quot;&gt;CORS-Header&lt;/a&gt; mitschickt.&lt;/p&gt;

&lt;p&gt;Aus diesem Grund hat Stefan Wehrmeyer einen Wrapper auf node.js Basis entwickelt, die diese Hindernisse beseitigt. Der Wrapper ist unter http://pure-headland-2592.herokuapp.com/ erreichbar, der Quellcode befindet sich auf &lt;a href=&quot;https://github.com/stefanw/smeterengine-json&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Weiterführende Informationen:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://okfn.de/2013/06/review-energy-hack-kreative-hacks-fur-die-energie-der-zukunft/&quot;&gt;Review des Energyhackdays&lt;/a&gt; im &lt;a href=&quot;http://okfn.de/blog/&quot;&gt;Open Knowledge Foundation Blog&lt;/a&gt; - unter anderem mit dem Gewinner-Projekt Yoda, der seine Schüler vor zu hohem Stromverbrauch warnt: „Consuming this much energy leads you to the dark side“.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://de.okfnpad.org/energyhackdata&quot;&gt;Sammlung an Datenquellen rund um das Thema Energie&lt;/a&gt;, die am Energyhackday zur Verfügung standen&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://de.okfnpad.org/energyhack&quot;&gt;Liste der Projekte des Energyhackdays&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
                <link>http://blog.opendatalab.de/hack/2013/07/01/energyhackday-berlin</link>
                <guid>http://blog.opendatalab.de/hack/2013/07/01/energyhackday-berlin</guid>
                <pubDate>Mon, 01 Jul 2013 00:00:00 +0200</pubDate>
				<dc:creator>Felix Ebert</dc:creator>
        </item>

	
		  










	

        <item>
                <title>Fachtag Jugendbeteiligung Stärken</title>
                <description>&lt;p&gt;Wie kann man die Beteiligung Jugendlicher an politischen Entscheidungen stärken? Auf dem Fachtag und Barcamp “Jugendbeteiligung stärken” im Medienzentrum Babelsberg in Potsdam wurde dieser Frage nachgegangen. Eine perfekte Gelegenheit, um Argufactum vorzustellen.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/potsdam-argufactum.jpg&quot; alt=&quot;Barcamp-Session Argufactum&quot; title=&quot;Barcamp-Session Argufactum&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In einer 45-minütigen Barcamp-Session habe ich vorgestellt, wie mit Argufactum und Open Data ein leichter Einstieg in komplexe Themen geschaffen werden kann. Die Teilnehmer, vorallem Medienpädagogen, waren von Argufactum direkt begeistert (“finden wir klasse!”) und begannen gleich zu überlegen, wo sie Argufactum konkret einsetzen könnten. Ein Teilnehmer überlegte zum Beispiel laut, die interaktive Waage von Argufactum nach Pfadfinder-Ausflügen einzusetzen, um herauszufinden, was den Pfadfindern am besten gefallen hat.&lt;/p&gt;

&lt;p&gt;Während der Barcamp-Session haben wir gemeinsam diskutiert, worauf bei der Weiterentwicklung von Argufactum der Fokus gelegt werden sollte. Am meisten wurde dabei eine Gesamt-Auswertung aller gegebenen Antworten / gewichteten Argumente gewünscht. Weitere Punkte waren:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;die persönliche Auswertung am Ende eines Fragenkatalogs über soziale Netzwerke oder direkt per E-Mail teilen zu können&lt;/li&gt;
  &lt;li&gt;Kommentare zu den Fragen eines Fragenkatalogs hinterlassen zu können&lt;/li&gt;
  &lt;li&gt;eine kompaktere Einsstiegsseite mit Fokus auf die Erstellung eines Fragenkatalogs&lt;/li&gt;
  &lt;li&gt;wie bei Doodle über eine Admin-URL einen Fragenkatalog nachträglich ändern zu können.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Die gesamelten Rückmeldungen sind sehr hilfreich, um Argufactum in den kommenden Wochen gezielt weiterzuentwickeln. Zudem habe ich vor Ort einige Teilnehmer mit verwandten Projekten getroffen, so zum Beispiel Sonja Breitwieser vom &lt;a href=&quot;http://parabol.de/&quot;&gt;Medienzentrum Parabol&lt;/a&gt; (“Gib Deinen Senf dazu” / “Check’s ab” / laut-nuernberg.de) und Eva Panek von &lt;a href=&quot;https://liqd.net/&quot;&gt;Liquid Democracy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Weiterführende Informationen zum Fachtag und Barcamp Jugendbeteiligung stärken:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://yourpart.eu/p/jos13-4-2&quot;&gt;Protokoll der Barcamp-Session Argufactum&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.google.com/spreadsheet/ccc?key=0ArSzNwjRxW9xdGtpSDRoUlM5NFJpakFvcFRzemhjeUE#gid=2&quot;&gt;Dokumentation aller Barcamp-Sessions&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.jugendbeteiligung-staerken.de/2013/06/live-stream/&quot;&gt;Aufzeichnung der Input-Referate zu Beginn des Fachtags&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.jugendbeteiligung-staerken.de/&quot;&gt;Webseite jugendbeteiligung-staerken.de&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vielen Dank an Jürgen Ertelt von youthPart / IjAB für die Einladung nach Potsdam!&lt;/p&gt;
</description>
                <link>http://blog.opendatalab.de/argufactum/2013/06/14/fachtag-jugendbeteiligung-staerken</link>
                <guid>http://blog.opendatalab.de/argufactum/2013/06/14/fachtag-jugendbeteiligung-staerken</guid>
                <pubDate>Fri, 14 Jun 2013 00:00:00 +0200</pubDate>
				<dc:creator>Felix Ebert</dc:creator>
        </item>


</channel>
</rss>
