2erlei Maß

Während im Gemeinderat darüber gestritten wird, ob der Bezug von Pflastersteinen aus China ethisch vertretbar ist (könnten ja Kinder am Gehämmer beteiligt sein), ist man in der Kronengasse von dieser Problematik weit entfernt. Hier kann man denken, die Gartenschau hat schon ein paar Jahre früher begonnen.

Ich frage mich, ist es ein Projekt zur Innenstadtbegrünung oder war die Mähabteilung des Bauhofs noch nicht da?

Warum das hier? Weil ich mich seit Jahren ärgere, daß trotz entsprechenden Einlassungen hier nichts passiert. Und weil es schlicht zum totlachen ist, das sich die oben abgebildete Szenerie keine 200m vom Rathaus befindet, das eben mit dem Einsatz von Millionen komplett saniert wurde. Ich weiß, das bringt natürlich auch nichts, aber es ist einfach schön zu sehen, wie sich die Natur von den Menschen aufgegebene Bereiche zurückerobert.

Durch die Gegend gedacht, Teil I

Heute: die Warmwasser-Steuerung

Morgens unter der Dusche sind die Gedanken bei mir absolut im Leerlauf. Das führt dazu, daß mir immer ganz komische Sachen einfallen. Gestern dachte ich darüber nach, was für eine Katastrophe eigentlich die häusliche Warmwasser-Erzeugung ist. An der Therme hat man zwei Optionen: Warmwasser "on demand" erzeugen, also als Durchlauferhitzer in dem Augenblick, in dem es benötigt wird. Nachteil: Man wartet lange auf den ersten Spritzer Warmwasser und die Therme muss natürlich erst die ausgekühlten Leitungen und Zwischenbehälter anwärmen. Andere Option: Warmwasser vorhalten auf einem bestimmten Temperaturniveau. (Achtung, Legionellen! ;-) ) Bessere Thermen haben dafür noch eine Zeitschaltuhr, mit der man die "relevanten" Tageszeiten vorgeben kann. Dann dreht man auf und husch: Warm. Ist man natürlich einen Tag der Woche z.B. früher unterwegs heizt der Zeitschalter umsonst und die Dauerheizung verbrät ohnehin eine Unmenge Energie. Was könnte man also machen?

Natürlich gibt es bereits schlaue Lösungen zu dem Problem. Eine Version erkennt durch kurzfristige Entnahme (2 Sek), dass gleich eine größere Menge Warmwasser benötigt wird. Ein anderer koppelt die Warmwassersteuerung an Bewegungsmelder, so dass erkannt wird, in welchem Raum möglicherweise gleich eine Entnahme erfolgt. Das funktioniert wahrscheinlich alles ganz gut. Am Ende steht natürlich immer die Frage, ob sich der ganze Aufwand rechnet aber dem Bastler ist das natürlich nicht wirklich wichtig, es geht ums Prinzip.

In dem Augenblick fiel mir eine Seminar wieder ein, das ich vor 20 Jahren(!) mal besucht hatte. Damals waren die "neuronalen Netze" eine total hippe Modeerscheinung in der Informatik. Dabei geht es um die vereinfachte Nachbildung von biologischer Nervenleitung mit Software. Nervenzellen werden also "Knoten" dargestellt, die mit Nervenbahnen ("Leitern") verbunden sind und eine Gitter- Netz- oder Baumstruktur bilden. Wenn ein Knoten angeregt wird gibt es eine bestimmte Wahrscheinlichkeit, mit der dieser Impuls an einen verbundenen Knoten weitergegeben wird. In einem anderen Modell wird ein Impuls auf alle weiteren verbundenen Knoten mit einer bestimmten Gewichtung verteilt. Er teilt sich damit auf und schwächt sich ab. Die Gewichtung kann dabei auch von der Stärke des Eingangsimpulses abhängen, so dass einzelnen Knoten auch als Verstärker oder Dämpfer wirken können. Die Gewichtungen oder Wahrscheinlichkeiten werden in den Netzen durch Training vergeben. In dieser Phase werden sie zufällig eingestellt und das Ergebnis anhand des gewünschten Zielzustands bewertet. Wenn dieser erwünscht oder positiv ist erhalten die Knoten Rückmeldung und liefern bei einem gleichen oder ähnlichen zukünftigen Eingangsimpuls denselben Ausgangsimpuls.
Mit diesem Verfahren kann man mit neuronalen Netzen Reaktionen auf ganz bestimmte komplexe Eingangsmuster erreichen, was mit klassischer Programmierung nur sehr aufwändig möglich wäre, z.B. Histogramm-ähnliche Funktionen abbilden, Bild- und Tonerkennung, Optimierungen u.v.m.
Im vorliegenden Fall trainiert man das Netz über ein Zeitmuster, das die Warmwasserentnahme abbildet. Das Training ist einfach: Wird Warmwasser entnommen, bekommt das Netz für den vorliegenden Zeitpunkt ein positives Feedback. Nach der Trainingsphase "weiß" dann das System, dass z.B. jeden Morgen zwischen 6:00 und 7:00 Warmwasser gebraucht wird, samstags allerdings von 8:00 bis 9:00 und sonntags von 9:00 bis 10:00. Der Intervall für die Mustererkennung wäre dabei z.B. eine Kalenderwoche, also die Zeiteinheit, nach der sich das Eingangsmuster mit größter Sicherheit wiederholt. Ein einzelner Tag halte ich für zu knapp, wenn z.B. ein Familienmitglied an einem bestimmten Abend Sport hat und danach heiss duschen will ist nicht erforderlich, dass auch an allen anderen Tagen um diese Zeit Warmwasser vorgehalten wird.
Ein Vorteil gegenüber anderen Systemen ist, dass keine externe Rückmeldung durch den Anwender (Kurzwasserentnahme) oder andere externe Systeme erforderlich ist. Außer der Programmlogik, die z.B. mit einem Arduino realisiert werden könnte ist nur ein Zeitgeber, ein Sensor für die Dauer der Warmwasserentnahme und ein Schalter erforderlich, der zwischen Training und Anwendung wechselt. Außerdem natürlich ein Rückstellknopf, mit dem ein Training wieder gelöscht werden kann.

Wer baut das? ;-) (ich programmier es auch)

Abschaffen II

Nichts bringt mich so zuverlässig auf die Palme wie ein Anschreiben der GEZ. Diesmal mit der freudigen Ankündigung, ab 2013 ein "gerechteres" Modell mit der haushaltsbezogenen Abgabe einzuführen. Gefragt wurde wie immer niemand, jetzt zahlen alle dasselbe. Im Grunde ist das nicht verkehrt, die Kontrollen entfallen und man kann von einer Art "Lindenstraßensteuer" sprechen. Ich bin ja immer für eine Entschlackung der Bürokratie. Diejenigen, die nur Radio oder PC angemeldet haben können allerdings in die Tischkante beissen: Eine satte Verdreifachung der Gebühren. Wie kann das nur angehen, dass 80 Millionen Schafe einen Blödsinn wie Anne Will, Jauch, den Musikantenstadl, Frau Illner und unzähligen anderen Schwachsinn bezahlen müssen? Wikipedia sagt dazu, dass

Neben einem Grundversorgungsauftrag und einem gesetzlich definierten Programmauftrag ist eine der weiteren wesentlichen Aufgaben des öffentlich-rechtlichen Rundfunks daher die Wahrung der politischen und wirtschaftlichen Unabhängigkeit.

Entweder man lässt jetzt einen tiefen Seufzer raus oder bricht in Tränen aus. Ich bin daher klar für die Abschaffung des gesamten öffentlich-rechtlichen Medienkonzepts und eine Abgabe auf rein freiwilliger Basis, sozusagen eine Art Jauchspende. Die Geber können dann gewichtet nach Spendenbetrag abstimmen, welche Sendungen produziert werden sollen. Wahnsinn, ich wußte gar nicht dass ich ein K-21 Basisdemokrat bin ;-)

An das Thema "Abschaffen" (nicht zu verwechseln mit Anschaffen) dachte ich diese Woche auch in Zusammenhang mit der Tour de France, eine Art Duell der Chemiekonzerne, das vorwiegend auf schmalen französischen Sträßchen ausgetragen wird. Der Kampf gegen unerlaubte Stoffe ist dort offensichtlich bis auf wenige Ausnahmen ziemlich aussichtslos. Wäre es daher nicht einfacher, die Doping-Kontrollen einfach wegzulassen? Der Radsport wäre wieder eine ehrliche Auseinandersetzung und man hätte nicht ständig das Gefühl, dass die vorderen Fahrer nur durch besseres Mogeln erfolgreich sind. Weg mit der Heimlichtuerei! Die Leute können ein bisschen Ehrlichkeit durchaus vertragen.

Fachhandel vs. Internet Part I

Nach langer Zeit gab die einfache Gartenpumpe den Geist auf, die mit Hilfe eines Schwimmerschalters das Sickerwasser aus unserem Keller pumpt. Viel zu tun hatte sie nicht, aber auf Dauer bekam ihr das salzig-feuchte Klima da unten nicht so gut.
Seufzend recherchierte ich im Internet und kam so auf die Wasserpumpen der Firma Metabo, die mir für diesen Zweck gerade passend erschienen. Wunderbar. Allerdings gibt es auch hier eine Vielzahl an Geräten mit den unterschiedlichsten Eigenschaften. Schmutzwasser oder nicht, eingebauter Schwimmer oder nicht, Leistung, Förderhöhe, und so weiter. Nach einer Stunde hatte ich einen mir passend erscheinenden Kandidaten ausgemacht und sogar einen Internet-Händler gefunden, bei dem ich das Teil gleich hätte bestellen können. Doch halt!
Erstens musste ich so schnell als möglich Ersatz finden, andrerseits bin ich gern bereit, einen Händler vor Ort zu unterstützen. Also nachgeschaut, der nächste Fachhändler mit Ladengeschäft ist nur 3km von meinem Arbeitsplatz entfernt, ideal für einen feierabendlichen Stopp. Dort angekommen dachte ich, frag mal den Fachmann, mein Halbwissen stammt schließlich aus dem Internet. Da soll man ja sowieso nicht alles glauben. Der riet mir zu einem anderen Gerät, dieses mit eingebautem Schwimmer. Dachte ich mir, weniger Kabel ist immer gut und auf meine Nachfrage "Schmutzwasser, aber ohne größere Rückstände?" antwortete er "Ja überhaupt kein Problem". "Und die Förderhöhe? Ich brauche etwa 5 Meter!" "Das schafft die, sehen Sie, bis 7 Meter!". Das war dann auch noch 30 Euro billiger als das Gerät, welches ich zunächst im Auge hatte. An dieser Stelle hätte ich meinem sofort aufkeimenden Mißtrauen nachgeben sollen, aber der Schwabe spart ja für sein Leben gern und ich nahm daher dieses Ding gleich mit nach Hause.
Aufstellen, anschließen, kein Problem. Hm.. fördert etwas schwach aber wahrscheinlich ist noch irgendwo Luft drin, warten wir also mal ab.
Eine Stunde später war ich wieder im Keller und die Pumpe lief nicht mehr, war aber sehr heiß. Ich also die Pumpe hochgeholt und in der Dusche betrachtet. Nichts zu erkennen. Nachdem die kurzerhand die Bodenverkleidung abgenommen hatte siehe da: Ein Steinchen, sich nicht größer als eine Erbse, hatte die Flügelenden des Propellers abgeschlagen und sich hinterher festgeklemmt. Soviel zur Schmutzwasserfähigkeit.
Ich habe dann das Ding gereinigt, wieder zusammengesetzt und am Aufstellort in eine niedrige Kunststoffwannde gesetzt um sicherzugehen, dass keine Fremdkörper mehr angesaugt werde. Dann klappte es. Pump, pump, fleißig strömt das Wasser aus. Nur nicht bis zum Ende. Denn die Förderleistung reicht nicht (mehr?) aus, den Behälter zu leeren. Das kann nun an dem verstümmelten Propellerblatt liegen, am Schlauchdurchmesser oder etwas anderem, ich weiß es nicht. Die versprochenen 7 Meter sind jedenfalls nicht erreichbar. Mit dem alten Schwimmer dazwischengeschalten gelingt jedoch die Abschaltung bis zur halben Tiefe, das reicht zumindest, um einen Großteil des Wassers abzusaugen. Zurückgeben fällt jedenfalls aus mit dem Schaden.
Wäre es mit einer Direktbestellung im bösen Internet anders verlaufen? Das kann man nicht abschließend beantworten, dieser Ärger war jedenfalls überflüssig. Fortsetzung folgt.

Neue Bewohner

Seit mehr als einem Jahr steht ein größeres Aquarium (200 L) in unserem Wohnzimmer. Irgendwann hatte ich noch ein anderes Becken auf dem Dachboden entdeckt. Ich denke, es hat mal meinem Vetter gehört und müsste nach vorsichtiger Schätzung mindestens 35 Jahre alt sein. Leider fehlte auch eine Scheibe. Ich also zum Glaser und für ein paar Euro Ersatz besorgt, das Teil neu lackiert und versuchshalber mit Wasser gefüllt. Die Ernüchterung folgte auf dem Fuß: Komplett undicht, die Dichtungsmasse hatte den Alterungsprozess nicht so gut verkraftet. Um es nicht vollkommen demolieren zu müssen habe ich von innen nachsilikoniert und lange trocknen lassen. Danach immer wieder Löcher gestopft und endlich blieb das Wasser drin. Nur 35 Liter, aber immerhin. Mit einer vorhandenen Pumpe und zugekauften Heizung lief es 3 Wochen ein. Dieses Wochenende war es dann soweit: Die Bewohner kamen an. 10 (sehr kleine) Guppies und dazu noch 5 Süßwassergarnelen, allerdings keine auffällig gefärbte Variante. Dafür sind die Guppi-Männchen sehr schön bunt. Nicht viel Besatz, aber das Becken ist nun auch nicht sehr groß. Mal schauen, wie sie sich eingewöhnen.

Codekicker: Was gut ist muss auch teuer sein?

Seit den Anfängen bin ich Fan und Mitglied von stackoverflow. Das ist eine Webseite, auf der Entwickler ihre Fragen loswerden können, die dann von anderen Entwicklern und Fachleuten beantwortet werden. Dafür bekommen sowohl Fragesteller als auch Beantworter Punkte, sogenanntes Karma. Das Karma vergibt nicht die Administration, sondern die anderen Benutzer, die ihre Stimme abgeben können, wenn ihnen eine Frage oder Antwort besonders gut gefällt. Für eine falsche Antwort oder eine nicht fachlich passende Frage kann sogar Karma abgezogen werden. Und weil die Menschen so fürchterlich angeben, wie toll sie sind funktioniert das Ganze ausgezeichnet. Stellt man eine Frage stürzen sich sogleich zig eifrige Karmajäger drauf und fabrizieren mehr oder weniger sinnvolle Antworten. Das Ganze kostet nichts - die Betreiber leben allein von der hohen Besucherzahl von ausgewiesenen Profis des Fachs und den dabei dezent (und vermutlich ziemlich teuer) geschalteten Anzeigen. Stackoverflow ist wirklich der Fundus bei Schwierigkeiten rund um die Entwicklung. Unsere firmeneigene iOS Anwendung hätte ohne diese Site eine zig-mal höhere Entwicklungszeit benötigt.

Benutzerprofil von puls200Seit ein paar Wochen gibt es jetzt den (wohl unvermeidlichen) Klon auf deutsch: Das Ganze nennt sich codekicker (wer hat sich nur den Namen ausgedacht?) und verfolgt genau dasselbe Geschäftsmodell. Dabei wurde sogar das Layout fast 1:1 übernommen, wer stackoverflow kennt fragt sich wo eigentlich die Unterschiede sind. Ich habe mich angemeldet und seit ein paar Tagen fröhlich mitgepostet. Das geht noch ganz gut, da die Menge der Teilnehmer noch etwas überschaubar ist. Mein erstes Fazit:

  1. Sehr .NET-lastig, kaum Fragen zu Java, Webentwicklung und Mobilem
  2. Wie bei stackoverflow gibt es die unvermeidlichen Dauer-Antworter, die zu jeder Frage ihren mehr oder weniger qualitativ wertigen Senf abgeben und das Karma horten
  3. Das Niveau der Fragen ist nicht besonders hoch. Ich vermute, dass diejenigen dann eher bei stackoverflow posten, des Englischen ohnehin besser mächtig
  4. Einige sinnvolle Features von stackoverflow wurden kurioserweise weggelassen, z.B. die Moderation und Überarbeitung von Fragen, die Acceptance-Rate, usw.
  5. Der speziell in deutschen Foren oft anzutreffende rechthaberische Ton ist gottseidank nur sehr selten zu vernehmen

Ich denke wenn sich die Gefolgschaft von dotNetPro geschlossen anmeldet besteht eine konkrete Überlebenschance. Ich werde die Site definitiv noch eine Weile aktiv begleiten.

Kleiner Test

Nachdem ich herausgefunden habe, dass in der Welt der Webprogrammierung seit Jahren tolle Sachen passieren ohne dass ich etwas davon mitbekomme habe ich beschlossen, mich ein bisschen kundig zu machen. Ein Kollege macht interessante Dinge mit html5 und jquery, das gefiel mir. Nachdem ich Raphael entdeckt habe, eine vielversprechende Bibliothek für Zeichnen in 2D musste ein kleiner Test sein. Hier gehts hin, ein Aufguß von Conway's Game of Life. Ich gebe es ja zu, noch was altbackeneres hätte ich kaum aus dem Hut zaubern können, aber der Programmieraufwand sollte sich in Grenzen halten. Wir kennen sie, die sympathischen Blinker ;-)
Interessant war in diesem Zusammenhang die deutlich unterschiedliche Performance auf verschiedenen Browsertypen. Speziell wenn ein Objekt semi-transparent wird habe ich den Eindruck findet im Firefox ein Software-Rendering statt, denn dann bricht die Leistung komplett ein. Im IE ist es zwar besser aber weit entfernt von akzeptabel. Hier fehlt m.E. der Anschluß an die Hardware der Plattform. Oder ich bin nur einfach zu blöd die richtigen Einstellungen zu finden ;-)
Ich werde das Skript demnächst noch ein bisschen erweitern, so dass man die wichtigsten Optionen einstellen kann.

Spenden für Ehec

"Herr Schick!! Sie haben B Rhesus Negativ! Über Sie freuen wir uns ganz besonders!! Jaja, denn diese Blutgruppe hat einen Anteil von nur 2% und deswegen ist ihr Blut ganz toll selten!"
Ich werde regelmäßig auf dem Postweg an mögliche Blutspendetermine erinnert. Daran ist nun nichts schlechtes, aber diesmal sind sie etwas über das Ziel hinausgeschossen: Mich erreichten in den letzten Tagen nicht weniger als 5 Briefe. In Worten: Fünf einzelne Umschläge im Briefkasten. Der vorläufige Höhepunkt war der heutige Samstag, als ich drei aus dem Briefkasten zog. Ich bin schon gespannt auf Montag, dann müßten es so 6-7 sein. Die Post ist inzwischen etwas, das nicht mehr mit freudiger Erwartung verbunden wird. Nette Sachen kommen heutzutage per Email oder mit dem Paketboten. Oder überhaupt nicht. Der letzte Brief war übrigens besonders markant, ich wurde unter anderem mit der Ehec Moralkeule bedroht. Spenden.. äh ja weil.. Ehec! Ehec? War das nicht eine Bakterieninfektion? Und ich dachte immer das Zeug wird gebraucht, wenn sich einer in den Fuß hackt oder vom Motorrad fällt. Mir soll es egal sein. Ich geh ja schon. Sonst kann ich bald mein Altpapier nicht mehr schleppen.
Edit: "Nach der Spende": Ich meine, wir Spender machen das freiwillig. Wir gehen in unserer Freizeit hin und bekommen auch kein Geld dafür. Irgendwie ist meine Erwartung, dass man dort auf Menschen trifft, die das ganze Chaos ein wenig ordnen, die die immer vordrängelnden Weißhaarigen zurück in die Reihe stellen und sich darum kümmern, daß man ordentlich abgefertigt wird. Nichts da. "Isch halt ab bissle chaodisch heit". Chaotisch, my ass. Anstatt 6 Briefe zu verschicken würde ich die Energie in die Organisation stecken. Vor Ort am Eingang traf ich zwei ältere Damen, die ebenfalls einen ganzen Haufen Einladungen erhielten. Der Rotkreuzmann erklärte das so, dass man separate Einladungen erhält für jeden regionalen Bereich in dem man einmal gespendet hat. Weil, man könnte ja wiederkommen. Die Gartenschlauchtaktik. Klingt so als könnte man denen etwas Beratungsleistung verkaufen.

Ich werd langsam zu alt für so einen Mist ;-)

Ich schreibe hier nicht gern von meiner Arbeit. Mich versteht ja doch keiner. Aber manchmal ist es einfach zu schrill. Heute zum Beispiel fand ich einen wunderbaren Fehler leider erst nach über zwei Stunden. iPad Anwendung. Folgende Situation:
Ich habe ein UIView, das mit einer bestimmten Größe initialisiert wird. In dieses View werden im Nachhinein dynamisch Subviews und Controls hinzugefügt. Das View ist in einem SplitviewController eingebettet.
Damit das Ganze schön skaliert habe ich außerdem folgendes gemacht:

searchView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
searchView.autoresizesSubviews = YES;

und danach die Subviews hinzugefügt. Wenn man die Anwendung startet sieht optisch alles gut aus, die Controls sind am richtigen Fleck. Aber das Event-Handling funktionierte nicht mehr. Ich habe wirklich alles ausprobiert, bis ich testweise einen Button hinzugefügt habe. Dabei fiel mir auf, dass die Events doch ausgelöst wurden .. allerdings nur in einem sehr schmalen Streifen am oberen Ende des Button. Gottseidank habe ich überall rumgeklickt ;-) Danach habe ich das Flag UIViewAutoresizingFlexibleHeight weggelassen und siehe da, alles funktioniert wie erwartet. Wie es scheint, wird der View tatsächlich flexibel skaliert, seine Kind-Elemente jedoch nicht. Skaliert wird nur der Bereich in dem Events ausgewertet werden. Wir haben also zwei Views, eins mit den tatsächlichen Controls und eins mit den Grenzen des Event-Handlings. Die andere Erklärung ist die, dass Kind-Elemente einfach aus ihrem Parent herausragen können. Was auch immer passiert war, es war nicht auf Anhieb zu erkennen. Eher so auf Siebt- oder Achthieb.
Was lernen wir daraus?
- Öfter einchecken um funktionsfähige von kaputten Sourcecodeteilen besser unterscheiden zu können
- sich von der Annahme verabschieden, alles müßte so funktionieren wie man es sich gedacht hat
- manuelles Resizing muss in allen Ebenen der Viewhierarchie implementiert werden damit es zuverlässig funktioniert
- es ist verblüffend wieviel Zeit man in API-Spezialskills investieren muss, die man hinterher auf keiner anderen Plattform mehr gebrauchen kann

Abschaffen!

Nachdem sich gestern die CDU abgeschafft hat hatte ich auch sofort Ideen, was man alles abschaffen könnte. Eingedenk dessen, daß ich heute morgen wieder völlig verschlafen bei der Arbeit aufschlug habe ich einen meiner Lieblingsabschaffungskandidaten für euch herausgepickt: Die Sommerzeit. Ursprünglich gut gemeint als Verlängerung der Tageszeit (in anderen Ländern spricht man von "daylight savings time") hat sie meinem Empfinden nach überhaupt keine positive Auswirkung. Energie wird anscheinend auch nicht gespart. Es gab vor ein paar Jahren schon mehrere Petitionen zu dem Thema, sie wieder loszuwerden. Diese wurden abgeschlossen, was soviel wie abgelehnt bedeutet. Interessant ist in diesem Zusammenhang die Begründung, warum dem Anliegen nicht entsprochen werden kann: Dem Argument der Nutzlosigkeit wird darin beigepflichtet, allerdings ist das vorgeschützte Ziel der möglichst hohe zeitliche Gleichlauf aller europäischer Länder. Der sei sehr wichtig. Durchaus korrekt. Nur warum müssen wir dazu alle die Uhr umstellen? Der Fehler muss also auf europäischer Ebene behoben werden, was natürlich bei dieser Bürokratie vollkommen unmöglich ist. Das steht zwar nicht wörtlich drin, dennoch ist diese Offenheit fast schon erfrischend. Einen arabischen Imperator loszuwerden scheint fast einfacher zu sein. Sei's drum.
In der nächsten Folge geht es weiter mit meinen anderen Wunschkandidaten: Dem Steuergesetz und dem öffentlich-rechtlichen Funk und Fernsehen :-)