http://fritschy.de
cat /dev/kmem

Taming the XMonad.

For a week I was playing with tiled window managers, mostly [ext]awesome. What tiling WMs do for me, is to automatically setup a window layout like I've done it for ages manually... what the?! The bottom-line is; there's no way back to non-tiling WMs!
Yesterday however I started coming across [ext]XMonad, a friggin' tiling window manager in about 1.5K lines of haskell code... How about that?! XMonad feels right, it behaves right, it is small and efficient and is fun to customize! Yeah, you read that right, fun! My limited haskell knowledge is quite enough to get XMonad rolling.
It's an awesome experience.

Thesis... 3 down, YAY!!

Well, after some pretty interesting days finishing my bachelor's thesis.... it's done now! And Nicely so!!1

Thesis... 2 down, 1 to go!

Yay! Today I had my thesis presentation. It went pretty well [int]too. Now the only thing missing is the Thesis to be finished itself. That is, I am back to work.

Blazingly fast JS with Firefox on amd64?!

So, Firefox got some nice [ext]JITted JS engine tweaks with 3.6 (still rc, but who cares anyway?) - I was pretty excited at the time because of that. JS just plainly sucks when slow... Well, the excitement didn't last that long - no JIT-JS with a 64bit compiled Firefox 3.6...
The thing is, it's still pretty new stuff and the amd64 backend wasn't ready/ done/stable enough - the details are on the mozilla site anyway. But there's light at the end of the tunnel! There is working amd64 support in tracemonkey that is shipped with Firefox > 3.6 :). So for some days I am building firefox from it's mercurial repo (A geeky friend of mine likes to call it Reh-Po...) - runs smooth and pretty stable so far and it is fast!

Thesis... 1 down, 2 to go!

Today I had my oral examination, and it ended winsome! :)

Fixed AWK sudoku solver

Long time, the AWK sudoku solver was buggy and did not run properly - it ran however, producing bad output. One kind reader brought it to my attention that something was seriously (if that's the right word for a back-tracking sudoku solver in AWK ;)) with that code. Well, my bad; obviously I found it nice uploading a broken version - whereas on my hard-disk the fixed code was silently getting older ;).
So, now I uploaded the proper [int]version.

Traycer2: Major code cleanup

Traycer2 was kind of not that active over the last months, until I got over myself to fix some grave bugs and cleanup the whole code base of unnecessary and ugly code...
 img[traycer/reorg.png]
diffstat of an odyssey

long lives the mighty netcat!

Long lives the mighty netcat
for port in 21 22 23 80 110; do nc $mysterious_options $myhost $port && echo $port done

Still shorter mini sudoku

Some time [int]ago I played with python and sudoku, one outcome was that rather short solver. I actually shrunk that one to tiny 309 bytes, it's still more ugly and for this website i had to add some more bytes ;)
309 bytes sudoku solver
def S(p,i=0,r=reduce,R=range,A=lambda a,b:a and b): while p[i]: i+=1 if i==81:print''.join(map(str,p));return for s in R(1,10): if r(A,[A(p[i/9*9+x]^s,p[x*9+i%9]^s)for x in R(9)])and\ r(A,[p[x*9+y]^s for x in R(i/27*3,i/27*3+3)for y in\ R(i%9/3*3,i%9/3*3+3)]):p[i]=s;S(p);p[i]=0 S(map(int,raw_input()))
This one, as the one before it accepts a 81 character line consisting of characters [0-9] representing a puzzle.

Graphing an iptables firewall

Recently I found this [ext]page on how an iptables firewall could be visualized using the [ext]graphviz package. I did this thing on my own too, it is kind of different in it's details, and I found it pretty interesting to analyze simpler firewalls (just seeing the structure is pretty insightful).
Click to my page on [int]code to see some examples and download the source.

Newer schniff and some sudoku solvers

I added a better [int]schniff and two depth-first-search sudoku solvers to [int]code/. There's not much to say about it ;). Check out the code page for links to sources.

fighting spam with spamassassin and crm114

For several years, I am using an exim -> procmail -> spamassassin setup to limit that flooding of mails - it does work somehow, but lastly there are lots of messages going through spamassassin - building 'custom' filters does not make much sense so I search for an extra filter.
The solution, [ext]crm114 works like a charm. It's just 3 days that it is running and learning (well, I force it to learn ;) but right now there was not even one lonely false-negative result (well, some false positives, but i need to train it some more ;).
So, here is a huge thanks to the guys that made the pretty mailfilter.crm :)
T H A N K Y O U !

python gone bad...

It's again late in the night, and I discovered an astonishing fact about short code; It does not make sense, to use proper formatting or even descriptive variable/function/you-call-it names when working on some useless but satisfying piece of code...
Long story short, I discovered for myself how to solve [ext]sudoku by not solving it ;)
brute force stripped down to 334 bytes
def S(p,i=0): def A(a,b):return a and b while p[i]: i+=1 if i==81:print''.join(map(str,p));return for s in range(1,10): if reduce(A,[A(p[i/9*9+x]^s,p[x*9+i%9]^s)for x in range(9)])\ and reduce(A,[p[x*9+y]^s for x in range(i/27*3,i/27*3+3)\ for y in range(i%9/3*3,i%9/3*3+3)]):p[i]=s;S(p);p[i]=0 S(map(int,raw_input()))
running it
$ cat puzzle 006000008900100607030200109140000000705610000003900000600004830020030060000809000 $ python sudoku.py < puzzle 216497358984153627537286149142378596795612483863945712679524831428731965351869274 $
Well, there are definitely nicer way to do this (that's just a nice opportunity to get to know [ext]Knuth's Algorithm X... but, time will tell). So, this code is for people that know how to read it ;) so don't bother mailing me how ugly and incomprehensible it is ;)
update This thing actually stripped down to 309 bytes by not obfuscating too much code but there is a really _long_ line (to save some spaces ;) wich would not look nice inside my codebox. If anyone is interested, let me know (see [int]about/ for email).

strange attractors

Once again I started playing some time with strange attractors. This time i wrote an attractor finder app (500 LoC isn't really an app....), It does pretty well, although it's slow if one likes to find 'beautiful' attractors. I published a gallery of some 1xx attractors on my university website, take a [ext]look (including source code ;)).

about code and the maths

Ever tried getting complex formulas out of your favourite computer algebra system? Well, i am an occasional [ext]maxima user, and recently I had to do some math and code... The short story is just below:
maxima session to define a function and it's derivative
(%i1) f(x, z) := cos (sqrt (x^2 + z^2)); 2 2 (%o1) f(x, z) := cos(sqrt(x + z )) (%i2) diff (f (x, z), x); 2 2 x sin(sqrt(z + x )) (%o2) - -------------------- 2 2 sqrt(z + x ) (%i3) diff (f (x, z), z); 2 2 z sin(sqrt(z + x )) (%o3) - -------------------- 2 2 sqrt(z + x ) (%i4) string (subst (pow, "^", diff (f (x, z), x))); (%o4) -x*pow(pow(z,2)+pow(x,2),-1/2)*sin(pow(pow(z,2)+pow(x,2),1/2)) (%i5) string (subst (pow, "^", diff (f (x, z), z))); (%o5) -z*pow(pow(z,2)+pow(x,2),-1/2)*sin(pow(pow(z,2)+pow(x,2),1/2))
Short explanation The string function does convert an expression to a maxima-parseable string, i.e. not c-code, so we need to substitute those ^2 with some more c-like stuff like pow (which are too expensive here, be cool, that's just an example ;). As you see, the resulting string is valid c or - with some cosmetic changes - even [ext]J<censored content>a.
Now, we need not even to use subst, as we can apply some [ext]vim or [ext]other magic to get those ^2 etc. away :).

git and graphviz's dot

I discovered one cool thing about git's all-mighty-tools and the [ext]graphviz package which brings us the tool dot...:
create a graph of revisions, quick and dirty
(echo -e "graph git {\nsplines=true"; git rev-list --parents --all| \ sed -e 's/^/"/;s/ /" -- "/g;s/$/"/'; echo "}") > graph.dot dot -Tsvg graph.dot > graph.svg $myFavouriteImageViewer graph.svg
Yes, it really is ugly and barebones - but also just what I discovered some minutes ago :)
And before I forget about it: a big thanks to the graphviz guys!

NetBSD server set up

Given the fact that my current linux server is about to die I decided to work on a new one, this time trying to do it with netbsd. To see the current status ans eventual updates, see my netbsd page.
I also added a simple tool I've redone during a course that was way not-so-interesting... [int]tr.c

dumb xml parser

It's been some hours that I was thinking about coding a small and dumb [ext]XML parser. Very limited in terms of XML, but [int]see my page on code...

newer and better schniff!

It is more than a month that I implemented select(2) in schniff... but i just forgot to put it here. well [int]look for yourself :)
I just found another snippet - it's a purely STL-strtok. It makes heavy (well some lines of code... heavy is just a percentage) use of stl functors and such stuff. [int]Take a look if you like.

venom, an arp poisoning tool - and backup.sh

Currently I am attending a network programming course. The assignment for next month is a small arp poisoning tool base upon [ext]libnet 1.1. It's kind of early for the code to be finished, fun I had fun doing it, and learned to appreciate libnet ;). So find it on my [int]code page.
Additionally I published the backup script that is currently running on my server - it is running for about - hmm 2 to 3 weeks now ;). see [int]the code section

revamped site using XML and XSLT

few days ago I started looking at [ext] XSLT and [ext]XPath... One of my first thoughts was how cool it might be to use xml to store content and just transform it to html/xhtml when publishing. This offers a great much of flexibility.
I can now use those nice small link-icons, signalling whether a link is internal, external or an email. And, the most significant part why I switched away from the html-hell is a self-made xml [int]doctype, an easy way to integrate [int]menu and the near 100% decoupling of [int]content and layout. Well, I am relatively new to xsl and there is much space for improvements ;) - feel free to [mail]contact me about any ideas/critics or questions.
And btw. did anybody ever tried a tea of cherry and chilli?!

register machine

I was just learning some theory and there was a nice example of a simple register machine in the book that could do some mathematical operations on integers. I coded a small tool that does axactly that and it is quite nice running. See for yourself: [int]cd code/.

simplistic/dead-simple/stupid/your-words-here packet sniffer

Some weeks ago I wrote one of those brain-dead small tools... see the code and a short introductory note in the code section. [int]cd code/.

link to my ray tracer log

I added a link to another server, holding the progress I make with my ray tracer. It's currently bit out of date - there are exams approaching ;) Just take a look, the are quite interesting images - and for a ray tracing coder interesting facts (maybe) - well, see yourself. And just in case you missed that [int]link.

some changes

Time passed - and not to slow.... there was a lot of stuff happening, I made a one semester vacation to earn some money at Hoffmann-La Roche AG in Basel as an Administrator for SAP and IXOS.... I've learned quite a lot of things by the way ;). But I'll leave the firm this week... maybe I'll return in the future - but, I have no idea :)
I too did some code stuff in the meantime. First there is the biggest and messiest project I aver started... a small ray tracing application _without_ any file input and very restricted feature set :) - but it does kind of nice images when used right - and I'd really like to continue work on it or maybe - redo a great part of it... well, time will tell I think. For further information on this - click [int]traycer on the left-side menu ;)

redesign

OK, after a year now, I decided to redesign my home page. This time I did not all this on my own - I copied some parts of css/xhtml from [ext]ESR's home page... I found it very pleasent to read and hey... it isn't ugly :). I do read all those [ext]HTML advices on ESR's website - all I can say about them is: he's right! never do things like that or you will be punished!
Some words on the new website - I do cancelled some parts out of the website like a page per programming-language which does not made much sense (in the end it's all just ugly code ;o)). Next I want to let you see some of my dotfiles, i.e. configurations for various programs like bash, vim or screen.
Ah, you noticed those freaky buttons? Well, I decided to let the world know how this page is made up, what tools I used and what standards it is conforming to.

added some perl code....

I hacked up some [int]perl code to parse ip addresses of the form 10.0/16 or 192.168/24. It is ugly but it works really nice for me :). OK, it is not complete, it's just the code without any usable program arround it - maybe someone can use it?

c sockets for c++

I made up a small class [int] wrapper for inet sockets for c++. Basically it puts the main things inside the class and translates signals/errors to exceptions - and... it can throw a lot exception - since there can be errors... It seems to work and realizing a small tcp-connect scanner from it is really simple :)

assembler code and something weired.sh :)

Some time ago I coded this small [int]weired.sh script. It takes one or two input parameters and then prints successive lines based on that input (or default if not given ;o)) The output of this script looks like the following:
1 11 21 1211 111221
and so on ;o). Well, i did a perl version of this thing, it is somewhat uglyer (my english ... well, don't talk about it):
$x=($ARGV[1]or 1);print"$x\n";map{@d=split//,$x;($x, $u,$w)=("",0,$d[0]);map{$w==$_ or$x.="$u$w",$u=0;++$ u;$w=$_}@d;$x.="$u$w";print"$x\n"}1..($ARGV[0]or 9);

assembler code: rsa and mini cat

In february of 2005 I made myself familiar with the RSA encryption algorithm as an exam preparation. I did RSA implementations in [int]python, [int]c (with libgmp) and [int]assembler (only for really small numbers, i.e. 32bit integer). The best of them is the one I did in c using the LibGMP for arbitrary precision maths (which also does tests for primarility which isn't that easy for big primes.
The second one is a cat in assembler... I used mmap to access files and read for stdin reading. I did not limited the maximum size of mmap chunks so there might be some problems - for small test files it worked though ;) [int]here the source

python code: cheapdial and strange.py

This time I uploaded [int] cheapdial. A tool for selecting the cheapest internet-by-call provider based on a set of provider-configs. The documentation is not that good, but the config format is not complicated.
Next I wrote a simple OpenGL visualization for strange attractors - in python too ;) I tried to use OpenGL display lists wherever possible to get maximum speed in displaying, I think it worked ;). Tips on how to use are included in the source. [int]strange.py