Archiv für Kategorie 'Basteln'

Mens Version 1.1

Mittwoch, 5. April 2006

Vor ein paar Tagen habe ich eine neue Version von Mens hochgeladen — diese Version sollte, im Gegensatz zu der davor, tatsächlich auch benutzbar sein. Nachdem die Leute von SourceForge endlich ihre Probleme mit dem CVS-Server behoben haben, konnte ich heute auch die Webseite entsprechend aktualisieren. Jetzt brauche ich jede Menge Testerinnen (Tester dürfen natürlich auch). Wer es schafft, Mens zu installieren, darf zur Belohnung ihr/sein Handymodell in diese Liste eintragen ;) Achso: Natürlich gibt’s auch Listen für Bugs und für Feature-Wünsche.

Was ist Mens? Ein Menstruationskalender für Java-fähige Handys (und PDAs etc), der einfach nur das ist. Und nicht noch diverse andere Dinge tut wie fruchtbare Tage berechnen oder Kaffee kochen oder was auch immer.

In der nächsten Version wird dann auch nicht nur die Anzahl der Tage seit dem Beginn der letzten Periode und der durchschnittliche Abstand zwischen zwei Startdaten angezeigt, sondern zusätzlich noch eine Liste aller gespeicherten Startdaten. Ist jedenfalls geplant. Wer Tips für mich hat, wie ich in MIDP 1.0 ein Datum formatieren kann, möge mir bitte Bescheid sagen. Date#toString() liefert jedenfalls erst ab MIDP 2.0 ein brauchbares Ergebnis.

Können Frauen nicht nur besser schreiben, sondern auch besser programmieren?

Donnerstag, 30. März 2006

Neulich hab ich ja schonmal auf einen Artikel hingewiesen, in dem es darum geht, ob Frauen besser schreiben können als Männer. Kathy Sierra von Creating Passionate Users schaut sich das Thema in Bezug auf eine ganz bestimmte Art von Schreiben an: Programmieren.

In ihrem Artikel Code like a girl geht es allerdings zum Glück nicht darum, die üblichen Stereotype zu verbreiten — die eigentliche Frage ist, ob “schöner” Code nicht noch weitere gute Eigenschaften haben kann, analog etwa zu “eleganten” Beweisen in der Mathematik. Und natürlich verweist sie auch auf Don Normans Emotional Design, in dem er sagt, dass schöne Dinge besser benutzbar sind.

Hier ist ein kurzer Ausschnitt — natürlich sollte das nicht das Lesen des eigentlichen Artikels ersetzen…

And there you have it. I think “girl code” is quite a compliment. Because caring about things like beauty makes us better programmers and engineers. We make better things. Things that aren’t just functional, but easy to read, elegantly maintainable, easier–and more joyful–to use, and sometimes flat-out sexy. And whether we like it or not, most of the world associates an appreciation for beauty more with women than men (especially geek men). Women may have a genetic advantage here.

A passion for aesthetics can mean the difference between code that others enjoy working on vs. code that’s stressful to look at.

(…)

Yes, calling beautiful code “girl code” is both silly and some might believe sexist. But that doesn’t mean there isn’t some truth to it. As a female technologist in a heavily male-skewed industry, I don’t need you to compliment my hair. But if you tell me my code is pretty, I might give you some tips.

And if it makes you feel better, I’ll refer to YOUR gorgeous code as metrosexual. But we’ll both know the truth.

Keine Tags

Anderes Format für Trackbacks und Pingbacks

Mittwoch, 15. März 2006

Der Blog-Umbau geht weiter… Eben habe ich diese Idee aufgegriffen und die Formatierung von Trackbacks und Pingbacks gegenüber “normalen” Kommentaren leicht geändert.

Nochmal kurz zur Erinnerung: Trackbacks und Pingbacks sind, zumindest mal von implementierungstechnischen Details abgesehen, fast das gleiche. Worum geht es? Wenn man einen Blogeintrag liest, hat man ja ab und an selbst etwas dazu zu sagen. Gelegentlich geht das auch über das hinaus, was man üblicherweise so in einen Kommentar schreibt — und meist möchte man auch, dass die Leser des eigenen Blogs was davon mitbekommen. In diesem Fall kann man natürlich im eigenen Blog einen Eintrag posten, der auf den ursprünglichen Eintrag verlinkt. Wenn das eigene Blog Trackbacks oder Pingbacks senden und das ursprüngliche Blog sie empfangen kann, wird dann im ursprünglichen Blogeintrag ein Kommentar erzeugt, der auf den eigenen Blogeintrag verweist. Ich persönlich finde daher, dass Trackbacks und Pingbacks sehr sinvoll und nützlich sind — siehe auch Punkt 4 hier.

Wer eine Blogsoftware verwendet, die von selbst keine Trackbacks schicken kann (wie zum Beispiel Blogger), für den/die gibt es übrigens online ein Tool für manuelles Senden von Trackbacks (Empfangen geht damit allerdings immer noch nicht — da hilft wohl nur der Umstieg…).

Aber wieder zurück zur Darstellung von Trackbacks und Pingbacks in meinem Blog. Standardmäßig behandelt WordPress Trackbacks und Pingbacks wie normale Kommentare. Das heißt, alle drei Sorten werden zusammengemischt und chronologisch sortiert unter dem entsprechenden Eintrag angezeigt. Meiner Meinung nach verwirrt das beim Lesen der Kommentare manchmal — man muss schon genau hinschauen, um zu sehen, dass ein bestimmter Kommentar eigentlich nur ein Teil eines anderen Blogeintrags ist.

Rachel beschreibt in ihrem Eintrag ja schon sehr gut, was genau sie geändert hat. Ich wollte bei Trackbacks aber doch den Text einbauen und außerdem getrennte CSS-Klassen für Trackbacks und Pingbacks haben. Deswegen sieht der Code in meinem Kommentar-Template jetzt so aus:

  1. <?php foreach ($comments as $comment) : ?>
  2. <?php if (get_comment_type() == “comment”){ ?>
  3.         (normale Kommentar-Darstellung wie vorher)
  4. <?php } elseif (get_comment_type() == “pingback”) { ?>
  5.         <li class=“pingback” id=“comment-<?php comment_ID() ?>”>
  6.                 Verlinkt von <?php comment_author_link() ?>
  7.                 (commentmetadata wie bei normalen Kommentaren)
  8.         </li>
  9. <?php } else { /* trackback */ ?>
  10.         <li class=“trackback” id=“comment-<?php comment_ID() ?>”>
  11.                 Verlinkt von <?php comment_author_link() ?>
  12.                 (commentmetadata wie bei normalen Kommentaren)
  13.                 <br />
  14.                 <blockquote><?php comment_text() ?></blockquote>
  15.         </li>
  16. <?php } ?>
  17. <?php /* Changes every other comment to a different class */   
  18.         if (‘alt’ == $oddcomment) $oddcomment = ;
  19.         else $oddcomment = ‘alt’;
  20. ?>

Zeile 1 und alles ab Zeile 17 sind vorher auch schon dagewesen und sollen nur zeigen, wo im Template der Code geändert werden muss. Vorsicht übrigens beim Kopieren: Die typographischen Anführungszeichen müssen jeweils durch normale Anführungszeichen ersetzt werden.

Dazu kommen dann natürlich noch die entsprechenden CSS-Definitionen im Stylesheet — bei mir eine farblich etwas veränderte Version der alt-Klasse, die mein Theme für jeden zweiten Kommentar bereitstellt.

Oh, und Note to self: Wenn Änderungen am Stylesheet sich partout nicht auf der Seite zeigen — der CSS-Validator hilft da manchmal. Oder man zählt die Hex-Ziffern in seinen Farbangaben nochmal durch.

Howto: Titelformatierung bei WordPress ändern

Sonntag, 12. März 2006

In einer Standard-WordPress-Installation sieht der Titel für eine Seite, die einen einzelnen Blog-Eintrag anzeigt, so aus: Blogname » Blog Archive » Eintragstitel; für diesen Eintrag hier also: {Bücher,Unterwegs,Rechner-Basteln,Kochen,…} » Blog Archive » Howto: Titelformatierung bei WordPress ändern. Das hat mich im Prinzip schon immer gestört, seit ich mein Blog auf WordPress umgestellt habe.

Was ist das Problem? Siehe beispielsweise Punkt 6 in Jakob Nielsens Top Ten Mistakes in Web Design. Kurz zusammengefasst: Wenn jemand mehrere Fenster oder mehrere Tabs mit Einträgen aus meinem Blog aufhat, fängt die Beschriftung von jedem Tab oder der Titel von jedem Fenster gleich an. Da auf einem Bildschirm ja immer nur begrenzt Platz ist, wird die Tab-Beschriftung in der Tab-Liste nach ein paar Buchstaben abgeschnitten. Gleiches gilt für die Fenstertitel in der Taskleiste. Die Tabs oder Fenster mit den verschiedenen Einträgen sind dann nicht mehr anhand des Titels zu unterscheiden:
Tab-Leiste mit abgeschnittenen Tab-Beschreibungen

Die einfachste Lösung ist es, den Titel einfach “umzudrehen”. Bei diesem Eintrag wäre der Titel dann Howto: Titelformatierung bei WordPress ändern « Blog Archive « {Bücher,Unterwegs,Rechner-Basteln,Kochen,…}.

Wenn man schonmal dabei ist, am Titel rumzustricken, kann man aber auch noch einen Schritt weiter gehen: Mich stört zum Einen das “Blog Archive” — meiner Meinung nach ist diese Zusatzinformation überflüssig. Zum Anderen finde ich die nach links “zeigenden” Anführungszeichen irritierend. Warum, weiß ich nicht genau — ich schätze aber mal, dass es damit zu tun hat, dass sie mein Auge von der üblichen Leserichtung ablenken.

Ein weiteres Argument gegen das « steht hier: Screenreader, die Sehbehinderte und Blinde fürs Surfen benutzen, machen daraus sowas wie “doppeltes spitzes Anführungszeichen, öffnend” — was ziemlich lang und unhandlich klingt. Der Autor schlägt auch direkt ein paar geeignetere Zeichen vor. Wie genau die in HTML definiert werden, kann man zum Beispiel in der Selfhtml-Zeichenreferenz nachschauen; dort finden sich natürlich auch noch andere Sonderzeichen, von denen einige als Trennzeichen auch ganz gut geeignet sind.

Ich habe mich für den Aufzählungspunkt • entschieden. In HTML wird der so geschrieben: &bull;. Insgesamt sieht der Titel für diesen Eintrag dann so aus: Howto: Titelformatierung bei WordPress ändern • {Bücher,Unterwegs,Rechner-Basteln,Kochen,…}.

Wie bringt man das nun WordPress bei? Man muss die entsprechende Definition in der Header-Vorlage ändern. Wer seiner WordPress-Installation die entsprechenden Rechte gegeben hat, kann dafür den Theme-Editor im Admin-Bereich verwenden (Themes → Theme-Editor → Header); alle anderen müssen die Datei

$WordPressPfad/wp-content/themes/$AktuellesTheme/header.php

mit einem Texteditor ihrer Wahl ändern. In dieser Datei muss nun alles zwischen <title> und </title> ersetzt werden, so dass der entsprechende Teil nachher so aussieht (ohne die Zeilennummern — und die typographischen Anführungszeichen ” müssen jeweils durch ein einfaches Anführungszeichen ' ersetzt werden):

  1. <title>
  2. <?php wp_title(); ?>
  3. <?php if(wp_title(, false)) { echo ‘&bull;’; } ?>
  4. <?php bloginfo(‘name’); ?>
  5. </title>

Wie genau funktioniert das?

  • Zeile 1 und 5 geben an, dass wir den Seitentitel definieren.
  • Das wp_title in Zeile 2 ist eine von WordPress definierte Funktion (deutschsprachige Beschreibung) und sorgt dafür, dass an dieser Stelle der Grund-Titel der aktuellen Seite eingefügt wird. Bei einzelnen Einträgen ist das der Titel des Eintrags, bei einer Kategorie-Seite ist es der Name der Kategorie und so weiter.
  • In manchen Fällen, zum Beispiel bei der Startseite des Blogs, kann der Grund-Titel der aktuellen Seite aber auch nicht vorhanden sein. Um genau diese Fälle kümmert sich Zeile 3: Wenn der Grund-Titel der aktuellen Seite nicht vorhanden ist, gibt wp_title ein logisches “falsch” zurück. Zeile 3 fügt das Trennzeichen &bull; genau dann ein, wenn dieser Fall eintritt.
  • Zeile 4 sorgt dann noch dafür, dass in jedem Fall der Name des Blogs angezeigt wird.

Woher ich das alles weiß? Ein klarer Fall von RTFM: steht alles in der Doku ;)

Software-Update

Freitag, 10. März 2006

Die heutige Veröffentlichung von WordPress 2.0.2 hab ich zum Anlass genommen, die von mir administrierten WordPress-Installationen zu aktualisieren. Bei meinem eigenen Blog war ich dabei am skeptischsten, schließlich (a) lief das noch mit WordPress 1.5.x und (b) hab ich hier am meisten rumgebastelt, was Plugins etc. angeht. Bisher hab ich zum Glück noch keine Fehler gefunden, aber wem was auffällt, der/die darf mir gern Bescheid sagen ;)

Ansonsten wird sich hier in nächster Zeit vermutlich was am Blog-Design tun — im cred8d-Blog hab ich da ein paar nette Ideen gesehen (via anne 2.0 via Creating Passionate Users). Genug Zeit müsste man haben…

Ubuntu-Netzwerkproblem gelöst: MTU manuell ändern

Dienstag, 7. Februar 2006

Heute bin ich mal wieder im Tech-Support-Einsatz. Aufgabe: Hardware für einen neu eingerichteten DSL-Zugang zusammenstöpseln und dafür sorgen, dass die beiden vorhandenen Rechner (1x Desktop mit Win 2000, 1x Laptop mit Ubuntu Breezy) glücklich ins Netz können. Soweit ja ganz einfach. Praktisch sah’s natürlich aber mal wieder anders aus.

Leider hab ich mich dazu hinreißen lassen, den billigen DSL-Router bei Atelco zu kaufen (Artikelbeschreibung). Der Windows-Rechner hat anstandslos mitgespielt, aber der Ubuntu-Laptop hat sich sehr merkwürdig verhalten: DNS ging meistens. Ping ging fast immer, aber ins Internet nur langsam. Die Router-Konfigurations-Webseite konnte ich nicht aufrufen — die Passwortabfrage kam zwar, aber dann nur ein “das Dokument enthält keine Daten”. WWW ging gar nicht. ssh ging zwar, aber wenn ich z.B. mutt per ssh gestartet hab, ist die ssh-Session gestorben.

Erst dachte ich, es liegt vielleicht am Rechner oder am Kabel. Also habe ich es erst mit meinem eigenen Laptop versucht (auch Ubuntu Breezy), dann mit einem anderen Kabel — jeweils keine Änderung. Diverse Telefongespräche mit meinem Vater und mit Andreas später hab ich’s dann mal mit Knoppix 3.3 versucht — und siehe da, es ging. Am Router konnte es also auch schonmal nicht liegen. Nachdem mein Vater schon ziemlich direkt auf die MTU getippt hatte und das Rumspielen an diversen Netzwerk-Parametern nichts gebracht hat, haben wir dann mal die MTU auf 1500 gesetzt (

sudo ifconfig eth0 mtu 1500

). Und siehe da — schon ging’s auch bei Ubuntu Breezy.

Das eigentliche Problem war also gelöst. Jetzt kam das nächste Problem: wie bringe ich dem Ubuntu bei, die MTU jedesmal auf 1500 zu setzen? Erst hab ich’s so versucht, wie hier beschrieben: in

/etc/network/interfaces

den Eintrag für eth0 setzen auf

iface eth0 inet dhcp
mtu 1500

.
Leider funktionierte das aber nicht — ein

sudo ifdown eth0 && ifup eth0

später zeigte

ifconfig

, dass die MTU immer noch auf 1300 war. Laut diverser Doku funktioniert diese Option nur bei statisch konfigurierten Netzwerkschnittstellen. Nächster Versuch: die Option

interface-mtu

in der

/etc/dhcp3/dhclient.conf

hinzufügen. Das soll zwar angeblich funktionieren, tut es aber nicht (ich hab mir nicht angeschaut, was vom in den Router integrierten dhcp-Server kommt — vielleicht ist da auch der Schuldige). Letzter Versuch, wie hier beschrieben: in die

/etc/network/interfaces

für eth0 das hier schreiben:

iface eth0 inet dhcp
pre-up /sbin/ifconfig eth0 mtu 1500

.
Tut aber auch nicht. Dachte ich mir also, wieso denn überhaupt pre-up — das wär doch nach dem Hochbringen von eth0 viel sinnvoller. Und das war dann auch die Lösung, jetzt funktioniert es ganz wunderbar. Der entsprechende Teil der

/etc/network/interfaces

sieht jetzt so aus:

iface eth0 inet dhcp
post-up /sbin/ifconfig eth0 mtu 1500

.
Und in der

/etc/dhcp3/dhclient.conf

habe ich die Option

interface-mtu

wieder rausgenommen, nur für alle Fälle.

Video+Audio aufnehmen unter Linux

Montag, 16. Januar 2006

Da habe ich ja nun eine Webcam, die sogar unter Linux (Ubuntu) läuft. Naiv wie ich manchmal bin, dachte ich mir, dass es doch eigentlich ganz einfach sein muss, damit ein Filmchen aufzunehmen. “Bestimmt gibt’s da schon jede Menge Programme für”, dachte ich mir. Naja.

Also, es gibt camorama. Das zeigt auch wunderbar an, was die Kamera gerade sieht. Allerdings kann man damit kein Video aufnehmen, sondern nur JPG-Schnappschüsse.

Ok, nächster Versuch: Cupid. Da sieht zumindest schonmal die Beschreibung gut aus. Leider hat es nicht nur eine ziemlich unbenutzbare Benutzungsoberfläche (man sollte sich schon mit Videocodecs auskennen, um da durchzublicken), sondern es tut auch nicht mit meiner Kamera.

Nachdem das also alles nichts war, habe ich mich an einen Eintrag neulich auf planet debian erinnert, in dem Ross Burton genau so ein Tool sucht und mal so eben nebenbei erwähnt, dass eine GStreamer-Pipeline es ja vermutlich tun würde. Hm. Was auch immer das ist.

GStreamer ist ein Video- und Audio-Framework, das mich mit wirklich guter Doku überrascht hat. Eine GStreamer-Pipeline ist quasi ein Container für Dinge, die etwas mit Audio- und Videodaten machen: aufnehmen, enkodieren, in eine Datei schreiben, aus einer Datei lesen etc. In einer Pipeline hängt man diese Dinge aneinander, und dann fließen die Daten da halt durch. Man muss dann “nur” noch rausfinden, was man wie hintereinanderhängen muss, aber dafür gibt es sogar einen graphischen Editor (der aber anscheinend nur mit den einfachsten Fällen klarkommt). Ich hab dann doch eine ganze Weile basteln müssen, bis ich’s hingekriegt hab. Jetzt läuft es soweit, allerdings habe ich noch einige Probleme mit der Bildqualität (vor allem mit der Helligkeit und dem Kontrast).
Weiterlesen »

Dodekaeder als Tischkalender

Freitag, 16. Dezember 2005

Wer mal wieder ein Bastelprojekt sucht: hier gibt es eine Faltvorlage fuer einen Dodekaeder mit Jahreskalender drauf. Sprache, Wochenanfang etc. sind einstellbar; wer sich die Postscript-Datei (Alternative: PDF) runterlaedt, kann auch noch Feiertage eintragen. Sehr nett.

Dodekaeder mit Kalender fuer 2006

Webcam!

Montag, 31. Oktober 2005

Ich hatte ja geschrieben, dass ich mir eine Webcam kaufen möchte. Inzwischen habe ich (nach etwas Suchen) auch eine gefunden, die mit meinem Laptop (Ubuntu Breezy) sprechen mag: Eine Logitech QuickCam Express Plus (VendorID 0×046d, ProductID 0×0928).

Allerdings war das ein relativ harter Kampf. Zuerst hatte ich eine Logitech QuickCam Messenger, die funktioniert aber überhaupt nicht unter Linux. Der nächste Versuch war eine Genius VideoCam Eye (Vendor ID 0×0c45, Product ID 0×6007). Der Chip ist ein SONIX SN9C102, für den es auch einen Linux-Treiber gibt. Allerdings scheint der Bildsensor nicht unterstützt zu werden, und der (immerhin schnell antwortende) Genius-Kundenservice konnte mir leider nicht sagen, welcher Sensor das ist. Schade, die Kamera ist ziemlich knuffig.

Die QuickCam Express Plus wird zwar unterstützt, aber leider hat der Treiber in Ubuntu einen Bug, so dass ich das entsprechende Kernel-Modul noch einmal selbst kompilieren musste (in den Bug-Meldungen stehen Beschreibungen dafür). Das hat trotz installierter Kernel-Header merkwürdigerweise erst funktioniert, nachdem ich auch die Kernel-Sourcen installiert und kompiliert hatte. Jetzt funktioniert es aber, wenn auch die Qualität nicht besonders ist:

Webcam-Bild von Andrea

Wenn ich mir das nächste Mal ein USB-Gerät kaufen will, werde ich jedenfalls erstmal auf der Liste der unterstützen Geräte nachschauen. Ansonsten hilft wohl nur der iterative Ansatz (man suche sich einen Laden mit netter Umtauschregelung und probiere die Geräte durch) — und Google…

Telefon

Montag, 12. September 2005

Sieht so aus, als sollte ich mir jetzt doch mal SIP naeher anschauen…