psychedelic kingdom come ..
my home @b.i.b.
mail: bbtf5akc 0x40 bg.bib.de
psyc: psyc://psyced.org/~kuchn

If you prefer cryptography, too, please encrypt your mails
with my public key. thanks, dub.
and hav' a nice day.
tiny shell function to play every mp3 in your current working directory.
displays a list of every file including it's size and then the current playing title, while you've just the possibility to jump to the next track.
Put this into /etc/profile, your .bashrc or any other file which is `source`'d after logon.
function play_mp3() {
	declare -a tracks
	ls *.mp3 > /dev/null 2>&1
	if [ $? -eq 1 ]; then
		printf "\t~~~ No MP3s in current directory.\n"
		return 1
	fi
	i=0
	for f in *.mp3; do
		tracks[$i]=$f
		printf "`du -h \"$f\"|sed 's/\s.*//'`\t$f\n"
		let i=$i+1
	done
	printf "\t~~~ start.. press <ctrl>+<c> for next track.\n"
	for((j=0;j<i;j++)); do
		echo -n "$[$j+1] [${tracks[$j]}]"
		mpg123 "${tracks[$j]}" > /dev/null 2>&1
	done
}
		
First version of a lil helper tool too burn audio CDs out of MP3 files or such (see the source).
Think I'll spend some work into this to enhance it a bit..
I recommend to put the script into `/usr/bin/burn'.
.sh
cake@chief ~/mp3/test $ burn
chillout! (v0.1)
	lgpl'd (c) 2006 sk

Will burn all MP3's in current working dir/
 with 8x speed (/dev/hda [burnfree]).

Track #1 is being converted.. done. [/tmp/01_sepultura-roots_bloody_roots.wav]
	Filesize: 36656	Total: 36656
Track #2 is being converted.. done. [/tmp/02_pantera-revolution_is_my_name.wav]
	Filesize: 41632	Total: 78288

Attempting to burn CD (76 MiB in 2 tracks)..
Press <Ctrl>+<C> to cancel (temporary files won't be removed then - cancel cdrecord to nevertheless let this happen)
~ cdrecord ~

Removing temporary files..
chillout; that's it - have fun.
		
RFC2324 - Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)
I like those useless rfcs, the real ones are sometimes so stupid..
..and never without my coffee!
.txt
Mein alter Antritt bei einem kürzesten "Hello World" Contest in Brainfuck.
Abfucker, der Sieger kam auf 8 Byte weniger. eheh egal, $langCount++. x)=
+++++++++[>++++++++>+++++++++++>++++++++++++>++++>++++
++++++<<<<<-]>.>++.>..+++.>----.>---.<<.+++.------.<-.
Ein Lineal in der Shell als Hilfe zum character cut'en etc. dedicated BEN. x)=
#!/bin/sh
L1="         10        20        30        40        50        60        70      79"
L2="----+----|----+----|----+----|----+----|----+----|----+----|----+----|----+----"
OUTPUT=`$*`
printf "$L1\n$L2\n$OUTPUT\n$L1\n$L2\n"
		
Periodisches setzen des centericq-Status je nach gespieltem Song in XMMS (-> cron job).
#!/bin/sh
# (c) Sebastian Kucharczyk (~2003)
# If you're using xmms to play your music, you can execute this script as cronjob
# so it periodically updates your away-status in centericq (the song you're playing).

clear=0
file=".centericq/awaymsg-icq"
lines=`cat $file|tr "\n" "~"|sed 's/~playin.*//g'|tr "~" "\n"|wc -l`
if xmmsctrl playing; then
	new="playin' `xmmsctrl title`";
	old=`head -n $lines $file`;
	if [[ $clear -eq 0 ]]; then
		printf "$old\n\n$new\n" > $file;
	else
		echo $new > $file;
	fi;
fi
		
small awk snipplet to unify a divided param list.. look at the source, luke.
awk 'BEGIN { print "NAME\tPARAM1\tPARAM2\n----\t------\t------" }
$1 != "NAME" && $1 != "------------" && $_ ~ /.+/ {
if(i==1){j++;names[j]=$1; params[j]=$2;}else{for(k in names){
if($1 == names[k]){print names[k] "\t" params[k] "\t" $2
 }}} } $1 == "NAME" {i++}'
<file>
fetchen von message of the day's auf einigen rechnern am bib (e.g. win04.bg.bib.de:17).
ANz=5;
for((i=0;i<ANz;i++)); do telnet win04.bg.bib.de 17 2>&1 | awk 'BEGIN{print "MOTD:"}
$1 != "Trying" && $1 != "Connected" && $1 != "Escape" &&
$1 != "Connection" { print $_ }
END {print "\n"}'; done
nette mathematische funktion. wer einen funktionsplotter zur hand hat: try it. ,)
der erste term ist einfacher, letzterer ist genauer:
R = (1+sin(t))*(1+.9*cos(8t))*(1+.1*cos(24t))
R = (1+sin(t))*(1+.9*cos(8t))*(1+.1*cos(24t))*(.5+.05*cos(140t))
		
Da ich letztens auf die Idee kam, brainfuck so zu erweitern, dass die Zeichen + und - von integern unterstützt werden, so dass man sich ewige Zählorgien ersparen kann.
Dazu direkt eine kleine Erklärung, die vielleicht gut das Prinzip dahinter rüberbringt.
Eine (atm imaginäre) einfache Erweiterung der brainfuck-syntax (auch wenn's dem
Prinzip der Sprache selbst nicht gerecht wird.. x).
Vielleicht bau ich beizeiten einen kleinen Compiler hierfür, es würd
mich mal reizen, das so zu optimieren, dass man gut kleinere Projekte damit
machen kann.. etwas mehr lesbarkeit ist da sehr hilfreich (heh, auch wenns in
der Praxis absoluter schwachfug ist - wenn schon Assembler vereinfacht, dann
wenigstens etwas komplizierter, so gibt zu wenig Möglichkeiten.. no interrupts or ports.. :/

Nya, let's go, so schaute es aus, bf-konform stehen da statt positiven Ganzzahlen
entsprechend viele '+' - dementsprechend '-' für negative:

9[>8>11>12>4>10<<<<<-]>.>2.>..3.>-4.>-3.<<.3.-6.<-.

>72 >99 >108 >36 >90
<<<<<
> 72 = 'H' .
> 99 + 2 = 101 = 'e' .
> 108 = 'l' ..
  + 3 = 111 = 'o' .
> 36 - 4 = 32 = ' ' .
> 90 - 3 = 87 = 'W' .
<< 111 = 'o' .
  + 3 = 114 = 'r' .
  - 6 = 108 = 'l' .
< 101 - 1 = 100 = 'd' .

Kurze Erklärung:
Mit '<' und '>' wird der Stackzeiger (in|de)krementiert,
nach diesem Operator arbeiten wir also innerhalb einer anderen Speicherzelle.
Wo dementsprechend der meist 32bit weite Inhalt hinauf- und hinuntergezählt
wird, um im Anschluss zu dieser Vorbereitung effizient eine Folge von
Werten zu bilden, deren ASCII-Entsprechung man mittels '.' ausgeben kann (stdout).
Weiters steht das ',' zur Verfügung, mit dem Werte von der Tastatur eingelesen
werden können (stdin).

Ein wichtiges Element zur Errechnung der Werte sind die eckigen Klammern ([]),
mit denen eine Schleife erzeugt werden kann, die erst dann beendet ist,
wenn die aktuelle Speicherzelle (beim Auftritt von ']') \0 ist.

Das ist übrigens eine Turing-vollständige Sprache - man kann mit ihr
und ihrem (sehr) begrenzten Befehlssatz jedes beliebe mathematische Problem lösen.
Nebenbei ähnelt die Sprache auch sehr dem Prinzip einer Turingmaschine (die mit dem Band).
		
neulich inner buschhuette.. ein altes shell-script, mit dem ich einst alex' alte bürocam archivieren wollte. haha, hoffe unsere special-pics warn nich dabei. x)
#!/bin/sh
# (c) 2005 sk
# periodically fetches an url to store; which is intented to be
# a webcam's address, but is variable because of wget usage.
stunden=6
interval=3
webcam="http://vbu.no-ip.org/index.jpg"

let minuten=$stunden*60
let sekunden=$minuten*60
let counter=$sekunden/$interval
for((i=0;i<$counter;i++)); do
    filename="`date`.jpg"
    wget -O "$filename" "$webcam" > /dev/null 2>&1
    sleep $interval;
done  
		
my public pgp-key:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2 (MingW32)
Comment: Key ID (to be found on keyservers) is 0xAB55C1E5

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
=PRlQ
-----END PGP PUBLIC KEY BLOCK-----