Skip to content

Webdesign

4 posts with the tag “Webdesign”

Aachen wird Transparent!

Ich möchte Stadtpolitik in Aachen für alle verständlich machen. Mein aktuellstes Projekt aachen-transparent.de ermöglicht es, die öffentlichen Informationen aus dem städtischen Ratsinformationssystem modern und benutzerfreundlich aufzubereiten. Dazu habe ich das bereits existieren Open-Source Projekt Meine-Stadt-Transparent erweitert und für die Bedürfnisse in Aachen angepasst.

Screenshot von aachen-transparent.de
Screenshot von aachen-transparent.de.

Aachen Transparent ist ein Projekt, dass ich ehrenamtlich im Rahmen des Open Data Labs Aachen ins Leben gerufen habe. Es versucht einige der Unzulänglichkeiten des Ratsinformationssystems der Stadt Aachen zu umgehen. Dazu nutzt es dessen öffentliche OParl Schnittstelle um die dort hinterlegten Informationen über eine moderne Oberfläche zugänglich zu machen.

GoSƐ - A terascale file-uploader

GoSƐ Logo
GoSƐ Logo.

GoSƐ is a modern and scalable file-uploader focusing on scalability and simplicity.

It is a little hobby project I’ve been working on over the last weekends.

The only requirement for GoSƐ is a S3 storage backend which allows to it to scale horizontally without the need for additional databases or caches. Uploaded files a divided into equally sized chunks which are hashed with a MD5 digest in the browser for upload. This allows GoSƐ to skip chunks which already exist. Seamless resumption of interrupted uploads and storage savings are the consequence.

And either way both upload and downloads are always directed directly at the S3 server so GoSƐ only sees a few small HTTP requests instead of the bulk of the data. Behind the scenes, GoSƐ uses many of the more advanced S3 features like Multi-part Uploads and Pre-signed Requests to make this happen.

Users have a few options to select between multiple pre-configured S3 buckets or enable browser & mail notifications about completed uploads. A customizable retention / expiration time for each upload is also selectable by the user and implemented by S3 life-cycle policies. Optionally, users can also opt-in to use an external service to shorten the URL of the uploaded file.

Currently a single concurrent upload of a single file is supported. Users can observe the progress via a table of details statistics, a progress-bar and a chart showing the current transfer speed.

GoSƐ aims at keeping its deployment simple and by bundling both front- & backend components in a single binary or Docker image. GoSƐ has been tested with AWS S3, Ceph’s RadosGW and Minio. Pre-built binaries and Docker images of GoSƐ are available for all major operating systems and architectures at the release page: /stv0g/gose (Releases) .

GoSƐ is open-source software licensed under the Apache 2.0 license.

Live Demo
GoSƐ Demo
GoSƐ Demo.
  • De-duplication of uploaded files based on their content-hash
    • Uploads of existing files will complete in no-time without re-upload
  • S3 Multi-part uploads
    • Resumption of interrupted uploads
  • Drag & Drop of files
  • Browser notifications about failed & completed uploads
  • User-provided object expiration / retention time
  • Copy URL of uploaded file to clip-board
  • Detailed transfer statistics and progress-bar / chart
  • Installation via single binary or container
    • JS/HTML/CSS Frontend is bundled into binary
  • Scalable to multiple replicas
    • All state is kept in the S3 storage backend
    • No other database or cache is required
  • Direct up & download to Amazon S3 via presigned-URLs
    • Gose deployment does not see an significant traffic
  • UTF-8 filenames
  • Multiple user-selectable buckets / servers
  • Optional link shortening via an external service
  • Optional notification about new uploads via shoutrrr
    • Mail notifications to user-provided recipient
  • Cross-platform support:
    • Operating systems: Windows, macOS, Linux, BSD
    • Architectures: arm64, amd64, armv7, i386

I consider the current state of GoSƐ to be production ready. Its basic functionality is complete. However, there are still some ideas which I would like to work on in the future:

Also checkout the Codeberg Issue Tracker /stv0g/gose (Issues) for a detailed overview.

transcode

Digital Logic Diagram
Assembler code

Ich sitze im Zug nach Hause. Gerade komme ich von der letzten Vorlesung des zweiten Semesters: Informatik. Eigentlich bin ich auf dem Weg in die Semester-”Ferien”, ständen da nicht für den nächsten Monat noch 4 Klausuren in meinem Kalender 😉.

Informatik, Grundlagen des Digitalrechners. Klingt eigentlich recht trocken. Trotzdem ist es klar mein Favorit unter den Fächern dieses Semesters. Als Ergänzung zur Vorlesung richtete unser Professor einen kleinen Wettbewerb aus. Mein Beitrag zum Students Englightment Award ist ein Compiler Frontend für den GNU Compiler der Atmel AVRs.

Teil der Vorlesung war die Einführung des Mikrocontrollers ATMega8 von Atmel und dessen Programmierung mit Assembler. Dabei lernten wir zuerst die Schaltungstechnischen Grundlagen und die Minimierung von Schaltnetzen. Anschließend sind wir auf den Aufbau der Zentralen Recheneinheit eingegangen (Steuerwerk, ALU).

transcode kompiliert & assembliert ANSI C und Assembler in Maschinencode und umgekehrt. Dabei wird mit Hilfe von Debugging Informationen ein Bezug zwischen Zeilen im C-Code und den Mnemonics hergestellt. Durch Auswählen von Zeilen werden Bezüge direkt durch Hervorhebungen dargestellt. Für die Darstellung des Maschinencodes lässt sich zwischen binär, dezimal & hexadezimaler Form wählen.

volkszaehler.org

volkszaehler.org Logo
volkszaehler.org Logo.

volkszaehler.org ist ein freier Smart Meter (hier: intelligenter Stromzähler) im Selbstbau. Die anfallenden Stromprofile bleiben dabei unter der Kontrolle des Nutzers.

Seit dem 1. Januar 2010 müssen Stromversorger ihren Kunden für Neubauten so genannte “intelligente Stromzähler” (Smart Meter) anbieten. Der Kunde soll dadurch seinen Stromverbrauch analysieren und optimieren können.

Die dabei anfallenden Daten (“Stromverbrauchsprofil”) erlauben einen sehr detaillierten Einblick in den Tagesablauf des Nutzers (wann steht er auf? wann geht er in’s Bett? wann kocht er? wie oft verwendet er seine Spülmaschine? verändert sich sein Verhalten? …). Darum sollten die Daten ausschließlich für den Nutzer selbst zur Verfügung stehen - und das geht nur, wenn man sich den Smart Meter selbst baut. Mit einem Materialeinsatz von etwa 100 €, etwas Geschick und Zeit lässt sich das mit Hilfe eines Standard-µC-Moduls aufbauen.

Auf der SIGINT 2010 konnte ich mir den Vortrag von Justin Otherguy über das noch recht junge Projekt anhören und fand anschließen die Gelegenheit mit ihm über das Projekt zu sprechen. Schnell war für mich klar, dass ich hier helfen möchte.

Bisher gibt es nur einen funktionsfähigen Prototypen. In den letzten Wochen habe ich mit ein paar weiteren Entwicklern begonnen den Code des Prototypen neu aufzubauen.

Die Architektur von volkszaehler.org ist dreigeteilt:

  1. Die Controller und Sensor Ebene erfasst mithilfe eines Mikrocontrollers die Daten leitet sie an den Backendserver weiter.
  2. Der Backendserver besteht aus einem PHP-Skript und einer Datenbank. Hier werden die Daten weiter verarbeitet und ausgewertet. Er kommuniziert ausschließlich über eine standardisierte JSON API.
  3. Das Frontend stellt die Daten für den Benutzer übersichtlich dar und ist für die Ausgabe der Analysen verantwortlich.
Systemübersicht volkszaehler.org
Systemübersicht volkszaehler.org.

Diese Darstellung verrät uns auch, dass nur der Stromverbrauch erfasst werden kann. Geplant sind sämtliche Messgrößen (Temperatur, Luftdruck, Luftfeuchtigkeit, Strahlung, Niederschlag, …).

Bisher gibt es noch keine stabile, lauffähige Version des Quellcodes. Im Wiki, der Mailing-Liste und im GitHub Repository ( /volkszaehler/volkszaehler.org ) findet ihr weitere Informationen zu meinem neuen Projekt.

Wir freuen uns über jede Unterstützung 😊. Besonders Entwickler mit PHP und Javascript Kenntnissen wären hilfreich 😉.