Futile words for your pleasure.

“Als Spontacts Plus Nutzer siehst du, wer dein Profil besucht hat.” - Shure ;-)

17. Februar 2016
// ==UserScript==
// @name        Spontacts
// @namespace   Spontacts
// @include     https://spontacts.com/*
// @include     http://spontacts.com/*
// @require	    https://ajax.googleapis.com/ajax/libs/prototype/1.7.3.0/prototype.js
// @version     1
// @run-at	    document-idle
// @grant       GM_getValue
// @grant       GM_setValue
// ==/UserScript==

var tout;
var observer = new MutationObserver(function(mutations) {
	mutations.forEach(function(mutation) {
		if (mutation.addedNodes.length) {
			clearTimeout(tout);
			tout = setTimeout(run, 2000);
			observer.disconnect();
		}
	});
});

function run() {
	var clsidRegEx = /\/([a-f0-9-]{36})([^.]+)/;
	$$('img[class="avatar-img"]').each(function(e,i) {
		var match = clsidRegEx.exec(e.src);
		if (match == null) return;
		var clsid = match[1];
		var tail = match[2];

		if ($(e).up('#user-basic-info') != undefined && $(e).up('a',0) == undefined) {
			$(e).up('div',0).wrap('a',{href: e.src.sub(tail,'')})
			$(e).up('#user-basic-info').down('span.edit').setStyle({position: 'static'});
		}

		var a = $(e).up('a');
		if (a == undefined) return;

		if (a.id == "click-on-premiumpage-image") {
			var json = GM_getValue(clsid,"{}");
			var info = JSON.parse(json);
			if (info.name != undefined) {
				a.href = info.url;
				a.title = info.name;
				if ($(a).up('div[class="user-list-item"]',0) != undefined) {
					$(a).up('div[class="user-list-item"]',0).down('span[class="name"]',0)
						.update(info.name);
				}
				$(e).setStyle({border: "#00FF00 1px solid"});
			} else {
				$(e).setStyle({border: "#FF0000 1px solid"});
			}
		} else if(a.title.length > 0) {
			var info = JSON.parse(GM_getValue(clsid,"{}"));
			if (info.name == undefined || (info.name != undefined
				&& info.name.length < a.title.length)) {
				GM_setValue(clsid, JSON.stringify({name: a.title, url: a.href}));
				$(e).setStyle({border: "#00FF00 1px solid"});
			} else {
				$(e).setStyle({border: "#FFFF00 1px solid"});
			}
		} else {
			$(e).setStyle({border: "none"});
		}
	});

	observer.observe(unsafeWindow.document, {
		subtree: true,
		childList: true
	});
}

run();

So long and thanks for all the fish.

13. Februar 2016

Sieben Jahre. Kaum zu fassen. 7!
So lang war ich bei Facebook angemeldet.
Und jetzt? Jetzt! Setzen die mich vor die Tür.
Endlich! Aus deren Sicht bin ich zu unrentabel. Laut eingegebener Daten bin ich zu alt (>100J), wohne am Arsch der Welt (Nepal), Interessiere mich für nichts und meinen korrekten Namen habe ich auch nicht angegeben.
Nachvollziehbar. Also der Rausschmiss.
Aus meiner Sicht schießen sie aber den Vogel hiermit ab: Klarnamenzwang mit Ausweiskontrolle
Damit habe ich entschieden kein Mitglied der Sekte Facebook mehr zu sein.
Rückblickend betrachtet war Facebook eine Entertainment-Seite. Die selten nützlichen Inhalte dienten dem Einen zur Selbstdarstellung und dem Anderen zum stalken von Erstem.
Zugegeben, manche Information war hilfreich: welches Restaurant in meiner Nähe ist zu empfehlen? wer kann meinen Projektor reparieren? wann ist das nächste OpenAir Festival?
Nun entsage ich der Reizüberflutung und freue mich auf eine Zeit ohne Urlaubsposts, Katzenvideos oder dumme Kommentare.
Bis Ostern ist ja auch Fastenzeit.

#fexit

Soft-UART with ATtiny13A

12. Mai 2015
/*
 * uart_echo.c
 *
 *  Created on: 10.05.2015
 *
 * This small program was created for testing soft-UART with ATtiny13A.
 * Connection is 9600 baud 8 bits 1 stop bit an no parity.
 * The timings in RXDELAY and TXDELAY are tested for default speed of
 * 9.6 MHz clock with default divider by 8.
 * Pin 2 (PORTB3) is used for TX and Pin 3 (PORTB4) is used for RX.
 * Be aware that this is for TTL communication, so 0V means logical 0
 * and 5V means logical 1. Mostly UART is inverted as in RS232.
 *
 *         ATtiny13A
 *          +-----+
 * PORTB5 --|°1 8 |-- VCC
 * PORTB3 --| 2 7 |-- PORTB2
 * PORTB4 --| 3 6 |-- PORTB1
 *    GND --| 4 5 |-- PORTB0
 *          +-----+
 */

#include 
#include 

// Delay for sending one bit to UART.
#define TXDELAY 75
// Port which is used as TX port.
#define TXPORTB PB3
// Delay for reading one bit fromUART.
#define RXDELAY 96
// Port which is used as RX port.
#define RXPORTB PB4

/**
 * Set pin to high.
 * Mostly 5V.
 */
void pin_hi(unsigned short pin) {
	PORTB |= (1<<pin); // Pin x High
}

/**
 * Set pin to low.
 * Mostsly 0V.
 */
void pin_lo(unsigned short pin) {
	PORTB &= ~(1<<pin);  // Pin x Low
}

/**
 * Check if pin is high or low.
 * Returns 1 if pin is high, 0 otherwise.
 */
unsigned char pin_rd(unsigned short pin) {
	return (PINB & (1<<pin)) >> pin;
}

/**
 * Write a 8 bit unsigned char to UART port.
 * We are using _delay_us() here because we
 * don’t want to deal with CPU cycle counts.
 */
void WrCOM(unsigned char c) {
	unsigned char i;

	// Send start bit.
	pin_lo(TXPORTB);
	_delay_us(TXDELAY);

	// Transmit the char
	for (i = 0; i < 8; i++) {
		if ((c & 1) == 0) {
			// 0 = 0V
			pin_lo(TXPORTB);
		} else {
			// 1 = 5V
			pin_hi(TXPORTB);
		}
		_delay_us(TXDELAY);
		// Shift to right because we transmit
		// the LSB fist (little-endian).
		c = c >> 1;
	}
	// We don’t use parity.
	// Send stop bit
	pin_hi(TXPORTB);
	_delay_us(TXDELAY);
}

/**
 * Read a 8 bit unsigned char from UART port.
 * We are using _delay_us() here because we
 * don’t want to deal with CPU cycle counts.
 */
unsigned char RdCOM() {
	unsigned char i;
	unsigned char c = 0;

	// Loop until start bit (0V) is received.
	while (pin_rd(RXPORTB) == 1);

	// Intercept the first bit by waiting
	// for 1.5 x RXDELAY microseconds.
	_delay_us(RXDELAY/2);
	_delay_us(RXDELAY);

	/*     Srt  0   1   0  Stp
	 * —-+        +—-+    +—-
	 *     |        |    |    |
	 *     +—-+—-+   +—-+
	 *          ^
	 * Intercept here after 1.5 x RXDELAY
	 */

	for (i = 0; i < 8; i++) {
		c = c >> 1;
		if (pin_rd(RXPORTB) == 1) {
			c = c | 128;
		}
		_delay_us(RXDELAY);
	}
	_delay_us(RXDELAY);
	return c;
}

/**
 * Main loop.
 */
int main() {

	DDRB  = 0b00001000;  // PB3 is output only
	PORTB = 0b00111111;  // let PB3 be high and enable pullups on any other pins

	while (1) {
		// read and write every char
		WrCOM(RdCOM());
	}

	return 0;
}

PuTTY echoing the chars :-D
Soft-UART PuTTY

Breadboard:
Breadboard Soft UART

Datenkraken die Tentakel stutzen mit NoScript und ABE

19. April 2015

Was mich auf Websites schon immer nervt, sind diese ftg-Buttons, also diese Facebook, Twitter, Google Grafiken mit denen ich der Welt mitteilen kann, das ich gerade auf $domain.com surfe.
Genauso sinnlos sind diese “$Grosse_Zahl gefällt diese Seite auch”-Banner.
Viel gemeiner ist dabei, daß FB & Co. mit diesen Grafiken sehr genau nachvollziehen können auf welchen Seiten ich surfe. Aufgrund der Tatsache, daß mein Browser immer die Cookies auch für den Aufruf der Grafiken mitsendet kann von mir ein sehr detailliertes Profil erstellt werden.

Doch damit ist jetzt Schluss!
Das Firefox-Plugin “NoScript” nutze ich ja schon seit langer Zeit. Heute ist mir erstmals die Funktion “ABE - Application Boundaries Enforcer” ins Auge gefallen. ABE kann mittels Regeln den Zugriff von einer Seite auf eine andere Seite steuern. So kann der Zugriff auf die Seite facebook.com so eingestellt werden, daß nur sie selbst und ihre Unterseiten auf facebook.com zugreifen dürfen, sonst aber keine andere Seite.
Bedeutet: Wenn beispiel.com eine Grafik von facebook.com einbettet, so wird bereits der Aufruf der Grafik blockiert. Wenn ich aber direkt auf facebook.com surfe (also facebook.com direkt in der Adresszeile meines Browsers eingebe) lädt alles wunderbar, denn facebook.com darf alle eigenen Seiten laden.

Konkret sieht das in den Einstellungen von NoScript so aus:

# Allow access to facebook only from itself
Site .facebook.com
Accept ALL from SELF+
Deny
Site fbcdn*.akamaihd.net
Accept ALL from SELF+
Accept ALL from .facebook.com
Deny
Site .fbcdn.net
Accept ALL from SELF+
Accept ALL from .facebook.com
Deny

# Prevent any site from loading google contents
Site .google*.com
Accept ALL from SELF+
Deny

# Prevent any site from loading twitter contents
Site .twitter.com
Accept ALL from SELF+
Deny

ABE_Einstellungen
Weitere nützliche Infos zu ABE direkt auf https://noscript.net/abe/.

GConf Editor Key Bindings

8. November 2014

If you ever wondered about which names you can use for keybindings in gconf-editor (ie. keypad numbers, arrow keys, etc.) here’s the list:
https://git.gnome.org/browse/gtk+/plain/gdk/gdkkeysyms.h
Just omit the GDK_KEY_ from the beginning of the keyword.

“In God we trust. Everyone else bring data!”—Michael Bloomberg

6. November 2014

“In God we trust. Everyone else bring data!”—Michael Bloomberg

Ein Stein

5. Juli 2014
  • Wenn man zwei Stunden lang mit einem netten Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden. Das ist Relativität.
  • Das Problem zu erkennen ist wichtiger, als die Lösung zu erkennen, denn die genaue Darstellung des Problems führt zur Lösung.
  • Ein Leben, das vor allem auf die Erfüllung persönlicher Bedürfnisse ausgerichtet ist, führt früher oder später zu bitterer Enttäuschung
  • Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht.
  • Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
  • Wenn du ein glückliches Leben willst, verbinde es mit einem Ziel, nicht aber mit Menschen oder Dingen. Alles sollte so einfach wie möglich gemacht sein, aber nicht einfacher.
  • Bildung ist das, was übrig bleibt, wenn man all das, was man in der Schule gelernt hat vergisst.
  • Das Lehren soll so sein, dass das Dargebotene als wertvolles Geschenk und nicht als saure Pflicht empfunden wird.
  • Der Fortgang der wissenschaftlichen Entwicklung ist im Endeffekt eine ständige Flucht vor dem Staunen.
  • Der Mensch erfand die Atombombe, doch keine Maus der Welt würde eine Mausefalle konstruieren.
  • Die reinste Form des Wahnsinns ist es, alles beim Alten zu lassen und gleichzeitig zu hoffen, dass sich etwas ändert.
  • Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen.
  • Die wichtigste Erkenntnis meines Lebens ist die, dass wir in einem liebenden Universum leben.
  • Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vorne herein ausgeschlossen erscheint.
  • Es ist die wichtigste Kunst des Lehrers, die Freude am Schaffen und am Erkennen zu wecken.
  • Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr.
  • Freude am Schauen und Begreifen ist die schönste Gabe der Natur.
  • Ich habe keine besondere Begabung, sondern bin nur leidenschaftlich neugierig.
  • In der Mitte von Schwierigkeiten liegen die Möglichkeiten.
  • Klug ist der Schweres einfach sagt.
  • Lernen ist Erfahrung. Alles andere ist einfach nur Information.
  • Nimm alle Dinge wichtig, aber keines richtig ernst.
  • Persönlichkeiten werden nicht durch schöne Reden geformt, sondern durch Arbeit und eigene Leistung.
  • Versuche nicht, ein erfolgreicher, sondern ein wertvoller Mensch zu werden.
  • Wer es in kleinen Dingen mit der Wahrheit nicht ernst nimmt, dem kann man auch in großen Dingen nicht vertrauen.
  • Wichtig ist, dass man nicht aufhört zu fragen.
  • Wir können der Tatsache nicht ausweichen, dass jede einzelne Handlung, die wir tun, ihre Auswirkung auf das Ganze hat.
  • Vorher / Nacher

    23. Mai 2014

    Wenn due USV ein neues Herz bekommt:
    USV Batterietausch

    ~

    10. Juni 2013

    Sehr geehrte Frau Dr. Merkel,

    mein Name ist David Schüler und ich stamme aus dem schönen Thüringen. Ich möchte Ihnen heute diese Nachricht schreiben, um Sie in ihrem Tun für die Deutsche Bevölkerung zu loben. Sie und ihre Christlich Demokratische Union haben in den letzten Jahren die Bildung gefördert, die Wirtschaft gestärkt und Rückgrat in den Verhandlungen um die Krise in Griechenland gezeigt. Deutschland ist somit ein starker Wirtschaftsstandort und ein konkreter Verhandlungspartner innerhalb der Europäischen Union geworden. Sie waren bei der Rettung des Euros ein harter Verhandlungspartner, jedoch konnten Sie auch deutlich machen, daß es ohne Hilfe aus Deutschland nicht geht. 145 Milliarden Euro hat die Rettung unserer griechischen EU-Partner gekostet.
    Dafür möchte ich Ihnen in erster Linie Danken!

    Doch, sehr geehrte Frau Dr. Merkel, es steht im Moment um einen Teil der Bevölkerung in unserem Wirtschaftsstarken Land sehr schlecht. Viele Menschen in den Hochwassergebieten haben einen Großteil ihres Hab und Gut verloren. Sicher sind einige Versichert, doch für viele Bürger bedeutet das Hochwasser den Finanziellen Ruin und deren Existenz ist bedroht.
    Zudem gibt es viele freiwillige Helfer, die den größten Respekt und Anerkennung verdient haben. Sie halfen und helfen noch immer selbstlos und ohne Rücksicht auf die eigene Gesundheit.

    Täglich sehe ich Spendenaufrufe an die Bevölkerung im Fernsehen, höre die schrecklichen Nachrichten im Radio. Viele Bürger und Bürgerinnen spenden für die Opfer der Flut, so auch ich.
    Nun, Frau Dr. Merkel, warum erhält Deutschland in solchen Situationen keine Hilfen aus der EU? Wo bleiben die Spenden aus dem Ausland. Warum helfen wir den Menschen in Griechenland mit 145 Milliarden und erhalten nichts von der EU zurück, wenn es unsere Bevölkerung am nötigsten braucht? Müssen wir uns wieder und wieder wie Baron von Münchhausen am eigenen Schopf aus dem Schlamm ziehen?
    Ich weiß, daß wir das schaffen werden! Ich weiß das wir eine Nation sind die aus Menschen mit starkem Willen und einem Blick nach vorn besteht. Allerdings wünsche ich mir in solchen schweren Zeiten eine Förderung durch die Europäischen Mitbürger und Mitbürgerinnen und ich wünsche mir, daß Sie sich dafür stark machen, Frau Dr. Merkel!

    Helfen Sie den Opfern indem sie den Mitgliedern der Europäischen Union klar machen, daß wir Deutschen nicht ständig die Melksau sind, sondern genau wie alle anderen Länder auch, von Zeit zu Zeit Hilfe brauchen.

    Ich bedanke mich für Ihre hochgeschätzte Aufmerksamkeit!

    Mit freundlichen Grüßen

    David Schüler

    Energiewende?

    12. November 2012

    Da will die Politik dem kleinen Mann eine kostenlose Energieberatung zukommen lassen… Totaler Quatsch. Wenn die Hersteller von Elektrogeräten nur wieder einen Ausschalter statt eines Standby-Tasters einbauen würden, könnte jeder auf einen Schlag 30% Energie sparen.
    Die Diskussion darum ist total Sinnlos, ea müsste nur mal jemand voran gehen.


    Aktion UBERWACH!