MoR: OpenStreetMap & Wiring HI-Devices and Socket.IO using Node.js

MoR: OpenStreetMap & Wiring HI-Devices and Socket.IO using Node.js
Die Münsteraner Software Engineering User Group “Monster on Rails” beschäftigte sich im November mit der Herausforderung Human Interface-Devices an einen Websockets-Server anzubinden, sowie dem Aufbau, den Datenstrukturen und Tools rund um das OpenStreetMap-Projekt.

Rund 20 Besucher fanden sich am vorletzten Donnerstag des Novembers in den Räumlichkeiten der Zweitag GmbH ein, um der November-Ausgabe von “Monster on Rails” zu folgen. Es erwartete sie zwei interessante Vorträge aus zwei unterschiedlichen Themengebieten. Raimo Radczewski berichtete über seine Erfahrungen innerhalb eines Kundenprojektes, bei dem mehrere Human-Interface-Devices mit einer Web-Anwendung kommunizieren sollten, während Marc Tobias Metten einen Überblick über das OpenStreetMap-Projekt inklusive Blick auf das darum entstandene Ökosystem an Tools, Services und Community gab.

Wiring HI\-Devices and Socket.IO using Node.js

Sogenannte ‘Responsiveness’ ist eine häufig geforderte und unerlässliche Komponente einer guten Usability von Web-Anwendungen. Raimo Radczewski stand vor der Herausforderung, HI-Devices, wie z.B. einen Barcode-Scanner, in seine Webanwendung zu integrieren ohne eben auf diese Responsiveness verzichten zu müssen. Nebenbedingung war, dass die üblichen Devices wie Tastatur und Maus weiter bedienbar blieben. Er entschied sich dazu, sein HI-Device direkt über das HID-Input-Layer des Linux-Kernels anzubinden, anstatt auf “virtuelle” Tastatur-Events, wie sie etwa der X-Server emittiert, zu horchen. Dabei traf er auf das ein oder andere Hindernis, das durch die Entwicklung auf diesem eher tiefen Layer entstanden ist. Um den Zugriff auf dieses Layer zu abstrahieren, entwickelte er eine eigene Node.js-Bibliothek. Die abgefangenen Events übermittelte er mittels Node.js und Websockets an die entwickelte Web-Anwendung, hierfür setzte er intern auf socket.io.

In seinem Vortrag beschrieb er außerdem die Herausforderungen, die die Entwicklung einer solchen Node.js-Komponente mit sich bringt, und berichtete er von den Erfahrungen, die er beim Umgang mit der HID-Input-Schnittstelle des Kernels gemacht hat.

OpenStreetMap

Das OpenStreetMap-Projekt (kurz OSM) dürfte vielen Entwicklern und Anwendern ein Begriff sein. Es wurde von Steve Coast 2004 gegründet und erfreut sich seitdem einem stetigen Zulauf. Marc Tobias gab zunächst einen Einblick in die unterliegende Datenstruktur der OpenStreetMap. Er ging dabei sowohl auf die Elemente ‘node’, ‘way’ und ‘relation’ ein, die die Grundstruktur des OSM-Datenbestands darstellen. Diese Elemente können mit jedem beliebigen Key-Value-Tag versehen werden. Die Freiheit, jedes Element beliebig taggen zu können, ist einerseits erwünscht, bringt aber andererseits eine nicht zu unterschätzende Komplexität mit sich. Die Heterogenität der verwendeten Tags macht es unter anderem für kommerzielle Anbieter schwierig, auf OpenStreetMap basierende Dienste zu erstellen, da diese oftmals weltweit einheitliche Datenstrukturen und -qualität erfordern.

Marc Tobias stellte außerdem einige Tools zum Erfassen (dem sogenannten “mappen”) vor. Die Rohdaten für das Mapping bilden unter anderem Informationen aus GPS-Trackern oder Katasterdaten, die von einigen Ländern und Kommunen für das Mapping freigegeben wurden. Zur Weiterverarbeitung dieser Daten existieren viele verschiedene, von der Community betriebene Softwarelösungen. Mit diesen kann man Gebäude, Hausnummern o.ä. taggen und direkt in den Hauptdatenbestand einfließen lassen.

Da die Mitarbeit an der OpenStreetMap für jeden möglich ist, können sich Länder mit vielen “Mappern” (wie z.B. Deutschland) über eine umfangreiche OSM-Abdeckung freuen. Große Herausforderungen sind weiterhin die Erfassung großer Teile der USA sowie vieler afrikanischer Entwicklungsländer. Meist wird erst in Falle einer Katastrophe wie etwa dem Erdbeben 2010 in Haiti die Relevanz von guter Kartografie in der Breite bewusst.

Im weiteren Verlauf seines Vortrages stellte Marc Tobias unterschiedliche Services vor, welche auf Basis der OSM Daten entstanden sind. Diese reichen von einfachen Karten mit eigenen MapTile Designs bis hin zu Kunstprojekten, bspw. Kartenausschnitten, die man als Holzschnitt bestellen kann. Daneben berichtete er über die seit 2004 stetig gewachsene Community, die sich rund um die OpenStreetMap und seine engagierten Nutzer entwickelt hat. Wie jede Community ist auch die OSM-Community nicht vor ideologisch geführten Diskussionen bis hin zu Flame-Wars gefeit, von denen Marc Tobias mit einem Schmunzeln am Ende seines Vortrags berichtete.

Im Anschluss an die beiden Vorträge wurden noch eifrig Fragen gestellt und die ein oder andere Einzeldiskussion geführt.

Vielen Dank an die beiden Vortragenden, das Meetup hat wie immer sehr viel Spaß gemacht. Wir freuen uns schon auf das nächste Treffen der Monster on Rails User Group am 18. Dezember!

Über Monster on Rails

Die “Monster on Rails” User Group Münster beschäftigt sich mit Themen rund ums Software Engineering, insbesondere Ruby und Ruby on Rails, diskutiert aber auch über Technologien, die um das Ruby-Ökosystem herum existieren, wie z. B. Javascript, Node.js, Go, Docker und NoSQL. In der Regel treffen wir uns immer am letzten Donnerstag im Monat. Nach einigen Vorträgen zum jeweiligen Thema beenden wir den Abend in entspannter Atmosphäre bei einem Bier. Wir freuen uns über jedes neue Gesicht!

Sie suchen den richtigen Partner für erfolgreiche Projekte?
Nehmen Sie Kontakt mit uns auf →