Archive for the ‘All’ Category

GNOME Disks spins up for GSoC

Mittwoch, Mai 17th, 2017

This year’s Google Summer of Code features many valuable open source organizations and GNOME is one of them.
In GNOME’s project list you can find Disks, the GNOME utility for dealing with storage devices.
I’m happy that it worked out, because at first it was not in the list of ideas. The fact that Disks was considered unmaintained bothered me, but also was a big hint to finally get involved instead of mere bug reporting. So the plan emerged to propose working on two key features: Resize and repair filesystems.

Getting in contact with people through open bugs, IRC and the mailing lists went well and I’m grateful for the support (extra thanks to Michael!). Ondrej stepped in as mentor and made this possible, I already learned a lot and just took over maintainership. In the rest of this post I write a bit about the GSoC project outline and recent development in GNOME Disks.

Goal:
GNOME Disks should support repairing and resizing filesystems through UDisks, thus
enabling non-root users to safely set up their devices from a graphical interface.

Motivation:
GParted does not use UDisks, runs only as root and thus not under Wayland.

Outline

  • Work out new D-Bus interface functions in cooperation with the UDisks team so that
    UDisks offers resize/repair through libblockdev (FS plugin) and is also tooling aware by
    probing relevant binaries. The exact solution is to be negotiated, since Cockpit might
    make use of it too.
  • Use that new UDisks functionality in GNOME Disks, design and implement UI (follow
    HIG, good progress indication)
  • Focus on supporting just a few filesystems in the beginning

The first task is to rework the format dialog, which should stick with the principle to offer just a few sane defaults but also not forbid to choose others (list available filesystems and find a good solution for missing tooling).



(Needs Radio Buttons for the selection.)

Development News

Translation work is constantly going on – great to see that!

I’ve set up a GNOME Wiki page as website for Disks.

A bug preventing unmounting and locking is fixed as well as a bug in the format dialog.

Taking care of loop devices:

  • Explain the auto-clear option, i.e. detaching loop devices if they are not mounted anymore
  • Disable auto-clear during operations if it would lead to unwanted detachment
  • Create a new empty disk image from the AppMenu

UI improvements:

  • Show UUID
  • Hints for passphrase missmatch
  • Indicate maximal FS label length
  • Explain the meaning of the mounting and encryption options, i.e. overwriting the session defaults with fstab/crypttab entries
  • Use mimetypes for disk image selection (welcome Mitchell as new contributor!)

There are many ways to contribute to GNOME, please support the Outreachy by spreading the word!

Design of a Python-subset Compiler in Rust targeting ZPAQL

Mittwoch, Oktober 19th, 2016

B.Sc. Thesis, Computer Science Freie Universität Berlin, Kai Lüke

Abstract:

The compressed data container format ZPAQ embeds decompression algorithms as ZPAQL bytecode in the archive. This work contributes a Python-subset compiler written in Rust for the assembly language ZPAQL, discusses design decisions and improvements. On the way it explains ZPAQ and some theoretical and practical properties of context mixing compression by the example of compressing digits of π. As use cases for the compiler it shows a lossless compression algorithm for PNM image data, a LZ77 variant ported to Python from ZPAQL to measure compiler overhead and as most complex case an implementation of the Brotli algorithm. It aims to make the development of algorithms for ZPAQ more accessible and leverage the discussion whether the current specification limits the suitability of ZPAQ as an universal standard for compressed archives.

Download paper: Design of a Python-subset Compiler in Rust targeting ZPAQL, Kai Lüke

Converted to HTML with pdf2htmlEX: Design of a Python-subset Compiler in Rust targeting ZPAQL, Kai Lüke

Web Connectivity in Ghana – A survey

Samstag, Juli 11th, 2015

Abstract:

Starting from the research “Dissecting web latency in Ghana” of Zaki et al. the field of Internet connectivity in Ghana is explored and the different aspects like latency, DNS resolution times, complexity of web sites, caching and prefetching, TLS/SSL, TCP and cellular network performance, role of ISPs, Internet Exchange Points, are brought in relation. Measurement approaches and tailored solutions for areas with bad connectivity are listed. Possible ways of improvement are discussed.

Download paper: Web Connectivity in Ghana – A survey, Kai Lüke

Converted to HTML with pdf2htmlEX: Web Connectivity in Ghana – A survey, Kai Lüke

Categories and Subject Descriptors: C.2.6 [Internetworking]: Standards; C.4 [Performance of Systems]: Reliability, availability, and serviceability

Keywords: Developing Countries, Internet, Latency, Performance, TCP, Mobile, Cellular

modifying kernel space – uname hack revamped

Dienstag, August 27th, 2013

This change of the original uname hack kernel module was laying unreleased and forgotten on the disk, but after some tweaking to support all options, here it comes — ugly and not meant for serious usage:

uname_kernel_hack_module.tar.gz (1,7 kB)

Some months ago I modified it to not change the machine from e.g. amd64 to i386 but the kernel version. Curiously to solve an issue it itself is having in the second line of the Makefile (uname -r); some actions rely on the kernel version to access the actual initramdisk or kernel headers. These might be different versions within guest system containers and led to the ugly hack of overwriting the kernel struct (yes, we are on Linux, not GNU Hurd) where the uname tool gets it’s release version from:

struct new_utsname {
char sysname[__NEW_UTS_LEN + 1];
char nodename[__NEW_UTS_LEN + 1];
char release[__NEW_UTS_LEN + 1];
char version[__NEW_UTS_LEN + 1];
char machine[__NEW_UTS_LEN + 1];
char domainname[__NEW_UTS_LEN + 1];
};

At initialisation the module saves the original value of e.g. sysname and overwrites the kernel space struct with the value you want. After usage, when the module is unloaded, the original value will be restored.

So when using the provided Makefile you could test how your system looks like when pretending to be something else:

make KRELEASE=2.5.2-0 KSYSNAME=Minix KVERSION="Debian 2.5 (2012-03-04)" KMACHINE=i386 test

The output while running make could look like:

uname -a
Linux hstnm 3.10-2-amd64 #1 SMP Debian 3.10.5-1 (2013-08-07) x86_64 GNU/Linux
sudo /sbin/insmod unamehack.ko
[sudo] password for kai: 
uname -a
Minix hstnm 2.5.2-0 Debian 2.5 (2012-03-04) i386 GNU/Linux
sudo /sbin/rmmod unamehack
uname -a
Linux hstnm 3.10-2-amd64 #1 SMP Debian 3.10.5-1 (2013-08-07) x86_64 GNU/Linux

So a longer usage would require you to enter

make KMACHINE=i386 insertunamemodule

and revert the changes as soon as possible by

make removeunamemodule

So, good luck! You’ll better not use it and try to fix cases where it’s necessary.

„Faire“ Computer?

Sonntag, Juni 10th, 2012

Foxconn bekommt durch Apple in letzter Zeit immer mehr Aufmerksamkeit bezüglich der Gewerkschaftsrechte und Arbeitsbedingungen der Fabriken in China. Gerade weil iLifestyle und Suizid so weit voneinander weg zu liegen scheinen. Kampagnen wie makeITfair (Germanwatch e.V.) u.a. sowie der Greenpeace »Guide to Greener Electronics« werfen den Blick auf die Schattenseiten der Technik in Herkunft der Materialien, Produktionsbedingungen, Giftstoffen, Energieverbrauch, Entsorgung und die mitgekaufte Verantwortung. Obwohl auch in Deutschland Reuse vor Recycle gilt, wird meist schon das Recycling in den Anfängen der abwechselnd von den Herstellern organisierten Entsorgungskette erstickt.

Gestern sah ich den Film »Blood in the Mobile«, der die für Elektronikprodukte essentiellen »Konfliktmineralien« aus dem Kongo zum Thema hat. Aufgebracht durch einen UN-Expertenbericht, der aussagt, dass ein direkter Zusammenhang zwischen Minenabbau für Mobiltelefone und Angriffen auf die Bevölkerung durch Milizen besteht (UN Group of Experts, Dez. 2008, S/2008/43), tritt Regisseur Frank Piasecki Poulsen mit dem Mobiltelefonhersteller seiner Wahl in Kontakt. Aber woher die verwendeten Mineralien stammen, kann und will niemand sagen, obwohl seit 10 Jahren das Problem intern diskutiert wird – zudem sei auch die ganze Elektroniksparte betroffen und auch bei den Konsumierenden läge die Verantwortung. Poulsen will verstehen und mit eigenen Augen sehen, wie die Realität vor Ort aussieht und bereist mit Kamerateam eine der Minen und zeigt somit die verschiedenen Problematiken auf. Lösungsansätze werden auch diskutiert und als Anfang ist durch einen US-Gesetzesantrag erreicht worden, dass die Zulieferungskette transparent veröffentlicht werden muss. Eine Projektseite ist hier.

Relativ neu ist die Doku »Behind the Screen: Das Leben meines Computers«, welche einige Aspekte der Herstellung und Entsorgung beispielhaft abdeckt. Da EU-Exporte für Elektroschrott verboten sind, landen als Gebrauchtware deklarierte Müllladungen auf Halden in Ghana und werden in Accra, Koforidua usw. zerlegt. Dieser Prozess setzt höchstgiftige Stoffe frei und betrifft somit die dort arbeitenden Kinder mehrfach. Auch die Bleikonzentration und weitere Kunststoffe wie Weichmacher belasten das Trinkwasser.

Doch bevor ein Device dort landet, wird es z.B. in Tschechien von vietnamesischen Leiharbeitern in Knebelverträgen hergestellt. Das verwendete Gold könnte aber wieder aus Ghana kommen. Hauptsache, wir sind auf der „richtigen“ Seite des digital divide? Mehr zum Thema Informatik & Gesellschaft auch hier, in der Zeitschrift des »Forums InformatikerInnen für Frieden und gesellschaftliche Verantwortung e.V.«.

Codecvergleich mit GStreamer durch SSIM

Freitag, Mai 18th, 2012

Während der Wirrungen bezüglich des HTML5-Videostandards hatte ich (noch lange bevor WebM existierte) einen Blick auf Dirac geworfen, einen alternativen Codec der BBC Research Labs. Nach subjektiven Vergleichen und einiger Benutzung, fehlte mir dennoch ein Verfahren, um mehr verlässliche Aussagen über die Qualität (sowie zu erwartende Größe) eines komprimierten Videos zu machen. Anstelle des „alten“ PSNR wurde SSIM zur Differenzanalyse zwischen Original und dem komprimierten Bild verwendet. GStreamer bietet sich durch starke Flexibilität an – ein Testframework wurde in Python mit Django umgesetzt. Leider steht der Out-of-the-box-Verwendung noch einiges im Wege; gerade die SSIM-Berechnung ist noch nicht als eigenständiges GStreamer-Element implementiert, was Geschwindigkeit und Stabilität verbessern würden. Auch die generelle Anbindung der GStreamer-Mainloop in die Webapplikation wäre besser durch einen daemon zu lösen. Daher kommt hier jetzt noch kein Quellcode…

Ausarbeitung (Kurs Digitales Video): Der Dirac-Wavelet-Codec und automatisierter Qualitätsvergleich mit Hilfe des GStreamer-Frameworks

Die erhobenen Daten sind nur beispielhaft und erheben keinen Anspruch auf vollständige Charakterisierung der Codecs. Denn der Zeitaufwand für SSIM ist groß – und somit ist die Eingabesequenz sehr kurz gewählt.

Arduino N64 Controller Library und Tetris-Port

Montag, März 26th, 2012

Moved to GitHub: https://github.com/pothos/arduino-n64-controller-library

Die Arduino-Plattform (arduino.cc) bietet einen einfachen Einstieg in die Microcontroller-Programmierung und ist gerade im Nicht-Geek-Bereich eine Erfolgsgeschichte. Die vielen Bibliotheken ermöglichen es, hauptsächlich auf der „Organisationsebene“ zu bleiben – in kurzer Zeit war aus der Kombination von TVout, dem verfügbaren Tetris-Clone und einigen Modifikationen zum Speichern der Highscore im EEPROM eine archaische Spielkonsole aufgebaut. Dank dieser Anleitung konnte ein N64-Controller benutzt werden. Während für NES relativ viel Quellcode verfügbar ist, gibt es keine komfortable N64-Controller-Library, da wegen exaktem Timing Inline-Assembler verwendet wird und der PIN fest eingeschrieben ist. Meine Bibliothek ist vielleicht nicht in schönster Manier geschrieben und alles andere als optimal in der Codegröße, aber für eine Erstveröffentlichung sollte es ausreichen – komfortabel ist sie zumindest (auch alle möglichen PINs von 0 bis 13 können unabhängig voneinander für Controller benutzt werden).

Die Lizenz ist unklar, es handelt sich hauptsächlich um Modifikationen und Zusammenstellungen. Der Tetris-Port „Simple Tetris Clone“ ist z.B. unter der MIT-License veröffentlicht, die meisten Bibliotheken unter der (L)GPL.

Version 1 der Library (26.03.2012) 2 der Library (26.07.2012),

getestet auf Arduino Uno: N64Controller

Hier der Quelltext für das Spiel: N64Tetris

Beispielquellcode:

#include <N64Controller.h>
N64Controller player1 (12); // PIN 12
void setup() {
    player1.begin(); // Initialisierung
}
void loop() {
    delay(30);
    player1.update(); // Tastenzustand auslesen
    if (player1.button_A() && player1.button_D_down()
        || player1.button_Start()) { // bitte keinen Sinn suchen
        int xachse = player1.axis_x(); // kann negativ oder positiv sein,
                                   // je nach Ausrichtung des Analog-Sticks
    }
    // …
}

Facharbeit

Samstag, Oktober 23rd, 2010

Ich habe meine Facharbeit in Mathe geschrieben zum Thema Public-Key-Kryptographie am Beispiel des RSA-Verfahrens: heutige Umsetzung und Implementierung.

Hier sind die Links:

Facharbeit als PDF oder online ohne PDF-Viewer (kein PDF-Viewer? → pdfreaders.org)

als ODT (LibreOffice) – falls ihr wissen wollt, wie die Formeln geschrieben werden

schnelles hybrides Verschlüsselungs-Programm aufbauend auf dem Facharbeits-Code (src)

das kompilierte Programm für Linux (64 Bit) braucht die Ubuntu-Pakete libgmp3c2 libgmpxx4ldbl und zum Kompilieren libgmp3-dev

und das kompilierte Programm für Linux (32 Bit)

das kompilierte Programm für Windows