Table of Contents |
What you will find here |
|
Q: Where do you want me to send my love letters, job offerings, cheques, birthday gifts and whatnot?
A: snail: Teckstraße 20, D-71384 Weinstadt,
Germany. You can email to schweikh@schweikhardt.net; for
confidential information, please use my public PGP key.
Q: I can't wait to hear your voice!
A: Home: +49 7151 909516.
Q: Where is your CV? Do you have any references?
A: Here you can find my CV and
references (in German).
Q: How old are you and when is your birthday?
A: I'm 55. Check this page regularly to find out when the number bumps. Alternatively call, write a
postcard or visit me.
Q: I'd love to see a picture of you! Can I?
A: No problem, just ask me in em@il and I'll tell
you the URL with a pretty picture of me. If this is too much hassle for you then you're not really interested in
seeing me...No, I don't have to hide from anyone, on the contrary, but I'm not the exhibitionistic kind. I
just want to keep the girls from running down my door :-)
Q: Any plans for Saturday night?
A: Depends. On the Saturday.
Q: Where do you work?
A:
Starting Jan 1st 2013 I am employed by Tesat Spacecom, engineering
high-bandwidth optical communication links between satellites. Yes, lasers in spacecrafts :-)
Starting May 1st 2009 I was employed by Rohde & Schwarz.
Starting November 1st 2008, I was employed by Sun Microsystems
as a software engineer improving Sun's virtualisation product, VirtualBox.
Beginning Jan 1st 2001 I worked as a software engineer in the systems software field for Marconi Communications. Marconi was acquired by the swedish Ericsson in January 2006. We built SDH equipment (the hardware that
switches fiber or radio traffic) and other telco gizmos and chances are it is used to transmit the packets for this
html page you are seeing right now. Before that I worked at the Network Operation
Center of the DFN. To put it in a nutshell, the DFN provides IP services
to almost every university and research institute in Germany. It's the largest national ISP in Europe. My tasks
were detecting, analyzing and debugging wide area networking problems, writing software to deal with various
networking related questions, designing and implementing security solutions, administering our workstations
and lots more beyond.
Q: Would you do some contract programming for me?
A: If it's in Standard C (+POSIX, any Unix API) or Perl or just using the Unix tool box, I'm the one
to make it happen.
I have studied Physics at the University of Stuttgart, Germany. After the mandatory basics like classical
mechanics, thermodynamics, mechanics of continua, quantum mechanics and electrodynamics I have specialized
in synergetics and quantum optics. Quantum optics, especially in conjunction with lasers and holograms is a
fascinating subject (I bought me a laser and recorded holograms at home), hence I wrote what we call
Diplomarbeit in Germany (a one year scientific project) on the subject "Digital Holography Using Liquid
Crystal Displays". It's written in German, of course. You can download that beast,
it's a 4.4 megabyte gzipped PostScript file. It describes my results using conventional LCDs (which you find in
video cameras) as spatial light modulators to produce phase holograms. Yes, it works!
Since early 2001 member of the Institute of Electrical and Electronics Engineers (IEEE).
I view a computer as a tool to get work done. In order to be efficient I have refined the environment in
which I work over the years. At the risk of stating the obvious: the software I work with everyday must be
powerful, flexible and reliable. The most basic components are in my opinion (in decreasing order of
importance)
- the operating system
- the shell
- the editor
- the window manager
The OS must not get in the way when heavy work is due - no limits, not on file size, not on memory,
not on processes, not on diskspace, not on cpu usage. A powerful development environment consisting of more
than just the basics, like compiler and debugger, is essential. I have found UNIX to meet all my requirements
and it provides me with a lot more beyond. The flavor is secondary. At work our group uses Solaris with lots of
additions from publicly available sources. Every now and then I have to deal with AIX, HP-UX, OSF/1,
IRIX, or Cray's UNICOS. At home and in my spare time I used to work with Linux (from the 0.99pl14 days to
1.2.13). In 1995 I switched to FreeBSD, God's own operating system,
motivated mostly by the clean development cycles and the ports concept, which is a marvelous Good Thing™
for someone like me who compiles just about any software himself. You will have a hard time convincing me to
touch anything other than a UNIXoid system.
For compatibility reasons, a Bourne compatible shell is a must. Apart from that, who wants to have a
different syntax for interactive use and programming? I have found the Z Shell (zsh) to be an amazing improvement
over ksh. The zsh programmable completion
is a labour saving device to a command line fetishist like me and I switched to the zsh
because of this feature.
I'm at home on more than a dozen of UNIX workstations so my choice of editor is clear as can be. Nothing
beats vi or one of its clones like nvi or vim. Admittedly, I was not very comfortable with vi the first month - no, this is
an understatement; I hated and cursed vi. After a while however I got used to the modes and became more
proficient every day. When I realized the elegance of the design I started to actually love vi and advocate it.
Today I would not want to live without it and I would invent it if it weren't already...
Don't you know this too: no default suits your needs; you frob every knob until you are satisfied? That's
the reason I use ctwm, a highly configurable twm clone. Popup menus can
be bound to keys, as well as switching between virtual screens. I just like to keep my fingers on the keyboard.
The interpolated menu colors are really a screamer.
About Bugs
Experience has shown that Murphy is right - there's always one more bug. However I can't stand having bugs
in the software I use. So whenever I find one and can fix it within reasonable time then I do so. If this is
impossible like for proprietary software without source or because I'm not too familiar with the code, then I
write a bug report. Yes this sometimes is a daunting task. Getting someone from <random vendor> to listen
to you is often frustrating. Seeing bugs persisting in the next release, however, is even more frustrating so
that's no reason for me to keep quiet. Apart from that there is lots of free software for which reporting bugs is
no hassle at all. For example, bash comes with a bashbug script. One reasonable bug tracking system I found so
far is FreeBSD's send-pr (actually GNATS) to mail a problem report to the development team. For every report
I ever sent I got an instant reply and some time later a fix. You can inspect the bug database and see whether it
is already known and who is working on it. This is one reason why FreeBSD has become so stable over the years. An
open ear for bug reports, what a Big Win.
That's where I'm really bad at. In fact my C programming skills are so below average that I have won three
awards in the International Obfuscated C Code Contest in 1996. With
the first hat-trick in the thirteen year history of the IOCCC I have entered the Hall Of Shame.
I can hardly believe it myself. As of June 11 1999 I was informed that I won a second hat-trick. That's two
in a row. Why is it so hard to decide whether to be proud or embarrassed? Why am I a C programmer and not a
tennis star?
The saga continues. In the 2001 contest I was awarded a prize for the Best One-Liner.
After a long break and sometimes missing the deadline
See below for my uncensored original IOCCC entries.
As if this were not enough, I keep confusing C newbies and old farts in the newsgroups comp.lang.c, comp.lang.c.moderated, de.comp.lang.c (in
German) and comp.std.c with my uncalled-for
advice :-\
I have written a chess problem solver engine; it's designed to solve "White (or Black) mates in N
moves". The urge to write it came over me because no chess program whatsoever does what is needed. Namely,
understand en passant capturing, underpromotions, and possible castlings. Apart from that, no chess program
or computer I've seen gives me a complete answer, just the first move. The result of my engine is a move tree
showing all possible moves and answers leading to check mate, if any, or a move tree showing all escapes. You
could use it to check or debug your own problem compositions. No, it doesn't play chess at this time;
there's only a move generator and a simple position evaluator. The source is 100% ISO C89 with optional POSIX
extensions for timing measurements. For some reason I don't think it's ready for prime time and I give it only to
people asking me explicitly. Nevertheless I ran it against a 1001 problems database and feed it our local
newspaper's weekly problem. It performs excellent, IMHO.
The IOCCC |
An international C Programming contest
|
|
Why I like the IOCCC
It's a contest that doesn't require resources only a few people on earth can spend, like:
- heavy machinery (like you need for the fastest crossing of the Atlantic Ocean or travelling around the
world in a balloon). Just a small bitty box with a C compiler and I'm set.
- Loads of $$$ (see previous paragraph). Having a few good books handy, among them a C reference or
The Standard itself, is enough.
- Physical power (like going for the weight lifter world championship) or endurance (Ironman
Triathlon). Playing volleyball and doing some cycling every now and then seems to help, though, as my
case demonstrates...
- Perfection is reached not when there is nothing more to add, but when there is nothing more to remove.
The size limit encourages this philosophy in our world of bloat.
The other ingredients (besides C compilers [note plural!] and books) for a successful career as obfuscator
magnus are
- A creative mind. You want to boldly go where no programmer has gone before. Without imagination, you're
bound to run in circles or reinvent the wheel. If you wanted to become an inventor ever since your kindergarten
days, you're certainly on the right track.
- Time. IOCCC entries are rarely written at 1 KLOC/day, rather at 1 line of code per hour, if I include
everything, like overhauls, debugging and testing on various implementations. Programming is comparable to
doing science: the results you publish in a research journal are never those from your first measurements. The
experimental setup is tweaked time and again to get at a clean signal with as few noise as possible. In the
same way, the final program is never the one you had after the first successful compilation and run. Any
above average program has seen many hours of fine tuning.
Here are my three winning entries of the 1996 IOCCC along with their original and complete remarks.
Best Algorithm
A special purpose expression evaluator.
Best Utility
Determines the memory allocation honesty of your operating system.
Worst Abuse of the Preprocessor
Calculate Easter dates within the Gregorian Calendar.
In fact I submitted a fourth entry, which did not win. In other words, it was a
Loser
rot13 invariant multipurpose utility.
Well, three out of four ain't bad, I think.
The 1998 IOCCC
After my first hat-trick I began hacking on more wild and unseen C programs. I've licked blood and it tasted
too good. At first I was disappointed the 1997 IOCCC was cancelled due to Usenix lag but in hindsight it looks
like the extra year was ideal for my entries to mature even more.
Most erratic behavior
Yet another random number generator.
Most space efficient
Samefile - find identical files that waste disk space
Worst/Best (Ab)use of the Preprocessor
stdc - test your implementation's standard conformance
Note: this source contains some formfeeds and vertical tab characters. Your browser may not adequately
render those. The symptom is missing whitespace, e.g. the first line reads defineH(x) with no
characters between define and H(x) .
No Losers?
Yes, I submitted two losers. You won't see them here. They're just too good to waste them :-) You may
see them next year...
The 2001 IOCCC
Back to normal. Just one out of three entries won. I'm proud that it is in a new category: best one-liner.
Some might think one-liners are easy to obfuscate because they are so terse. Others might think they are hard to
obfuscate because there is not much you can do. Decide for yourself.
Best One-Liner
match - a shell glob pattern matcher
The 2015 IOCCC
Two submissions, one winner. Not bad.
collatz - Collatz Conjecture
Try out Splint, a freely available ISO C89
compatible lint for which I have written the POSIX library.
Write portably. Know your names and headers in ISO C and POSIX.
Test your C implementation's headers for standards conformance with my isomac.c
program.
I'm pleased to announce that the Internet Systems Consortium (ISC) has
added my samefile utility to its treasure of software gems. Samefile finds files with identical
contents (independent of the file name) and thus saves you many megabytes of wasted disk space. It comes with
a configure script and compiles on any POSIX system. Read more about this useful program on the Samefile Home Page or download my
latest version [2.14].
Need to write a manual page? Have a look at my Linux Man Page HOWTO. Also
available in italiano
For a good laugh, try my Swabian Compiler, a perl script translating text from
German to Swabian (a German dialect.) It doesn't care what the input language is and I highly recommend
feeding it your favorite man-page or love letter. Be sure to take a deep breath first, you will need
it.
A treatise, Wider die Sinnmacher, on
a certain philosophical dilettantism (in German only).
In April 2001 I became a FreeBSD Committer, which means I have write access to the source tree of God's Own Operating System. My interest is
conformance to various standards, primarily ISO, POSIX and IEEE.
There's more to life than programming. In fact, hacking is far from being the most important pursuit. I
am a human being living in a world with other human beings, near and far. It is important to realize our
responsibility for our fellow human beings.
I am an active member in our YMCA. We offer several sports groups for people of different ages. My part is
coaching our young girls volleyball team. We care for the fun part in our training lessons and maybe that is why
the team has grown to almost 20 over the time. Offering this kind of pursuit for young people keeps them off the
streets, is a good excercise in building team spirit, and it wouldn't be the YMCA if we didn't try to
transport the Christian idea of responsibility towards our fellow human beings to the next generation.
Let us never forget that there live people on this planet whose fate is much less fortunate than our very
own. For some of them even the word live could be considered a euphemism. Forlorn they rot in
dungeons, are ill-treated or even totured, or await their execution. As a member of amnesty international I write letters to kings and queens, presidents and
governors, ministers and generals, pointing them to the injustice done to the poor soul of a fellow human
being. Can you imagine the feeling when you are informed that such a fate has been changed? A prisoner released?
Torture ended? A death penalty converted? Yes, it really happens. "Everything you have done onto them you have
done onto me."
The following books are all on my book shelf. With the exception of C Traps (which is in my employer's
library) I have bought them myself and looking back I can assure you that every buck was worth spending. It may
surprise you but there is no book titled "Learn <random subject> in 21 Days", "Teach Yourself <random
language>" or "<Whatever> for Dummies" among them. If I have a choice I rather go for the hard facts,
in other words, a bible, standard or quasi-standard.
On C and UNIX (in random order):
Peter van der Linden, Expert C programming, Prentice Hall, ISBN 0-13-177429-8
Steve Summit, C Programming FAQs, Addison-Wesley, ISBN 0-201-84519-9
P.J. Plauger, Jim Brodie, Standard C - A Reference, Prentice Hall. ISBN 0-13-436411-2
Kernighan, Ritchie, The C Programming Language, 2nd ed.
Robert Sedgewick, Algorithms in C, Addison-Wesley, ISBN 0-201-51425-7
Andrew Koenig, C Traps and
Pitfalls, Addison-Wesley, ISBN 0-201-17928-8
Kernighan, Plauger, The Elements of Programming Style, 2nd ed, McGraw Hill, ISBN
0-07-034207-5
Donald Lewine, POSIX Programmer's Guide, O'Reilly, ISBN 0-937175-73-0
W. Richard Stevens, Advanced Programming in the UNIX Environment, Addison-Wesley, ISBN
0-201-56317-7
W. Richard Stevens, UNIX Network Programming, Networking APIs: Sockets and XTI,
Addison-Wesley, ISBN 0-13-490012-X
Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, John S. Quarterman, The Design and
Implementation of the 4.4 BSD Operating System, Addison-Wesley, ISBN 0-201-54979
International Standard, ISO/IEC 9899:1990 Programming Languages - C
International Standard, ISO/IEC 9899:1999 Programming Languages - C, aka C99, available as
a PDF file for about 18 US$ from Techstreet or from the ANSI Webstore.
International Standard, ISO/IEC 9945-1 (ANSI/IEEE Std 1003.1) Information Technology - Portable
Operating System Interface (POSIX) - Part 1: System Application Program Interface (API) [C Language],
Reference Number ISO/IEC 9945-1:1990(E) IEEE Std 1003.1-1990, IEEE, ISBN 1-55937-061-0
David R. Hanson, C Interfaces and Implementations, Addison-Wesley, 1996, ISBN
0-201-49841-3
John R. Levine, Tony Mason, Doug Brown, Lex & Yacc, 2nd ed, O'Reilly, ISBN
1-56592-000-7
On other programming languages:
Adobe Systems, PostScript Language Reference Manual, Addison-Wesley, ISBN 0-201-181274
Larry Wall, Randal Schwartz, Programming Perl, O'Reilly, ISBN 0-937175-64-1
Andrew Koenig, Barbara Moo, Ruminations on
C++, Addison-Wesley, ISBN 0-201-42339-1
Bjarne Stroustrup, The C++ Programming Language, 3rd Ed 1997, Addison-Wesley, ISBN
0-201-88954-4
Don Libes, Exploring Expect, O'Reilly, ISBN
1-56592-090-2
Norman Walsh, Making TeX Work, O'Reilly, ISBN 1-56592-051-1
Helmut Kopka, LaTeX Einführung, Band 1, Addison-Wesley, ISBN 3-89319-644-1
Helmut Kopka, LaTeX Ergänzungen, Band 2, Addison-Wesley, ISBN 3-89319-665-X
About computers in general:
Douglas R. Hofstadter, Gödel Escher Bach (German translation), Klett, Buch Nr. 03283
9
David G. Stork (Editor), Hal's Legacy - 2001's Computer as Dream and Reality, MIT Press, ISBN
0-262-19378-7
Everything else:
The Bible
Aho, Sethi, Ullman, Compilers; Principles, Techniques and Tools, (The Dragon Book),
Addison-Wesley, ISBN 0-201-10194-7
Simson Garfinkel, PGP - Pretty Good Privacy, O'Reilly, ISBN 1-56592-098-8
Craig Hunt, TCP/IP Network Administration, O'Reilly, ISBN 0-937175-82-X
Jul 22 2022 |
Bumped age |
Feb 22 2022 |
Use https where possible;
Deleted defunct alertbox link |
Jul 22 2021 |
Bumped age |
Jul 22 2020 |
Bumped age |
Feb 15 2020 |
Deleted defunct Altavista link |
Jul 22 2019 |
Bumped age |
Jul 22 2018 |
Bumped age |
Sep 09 2017 |
Fix issues found by checkbot |
Sep 05 2017 |
Bumped age; linkfix dmr |
Jul 22 2017 |
Bumped age |
Feb 21 2017 |
Delete dead link to book. Update shell preference. |
Jul 22 2016 |
Bumped age |
May 03 2016 |
Another IOCCC winning entry. Removed Book on C—not gonna happen. |
Jul 22 2015 |
Bumped age |
Jul 22 2014 |
Bumped age |
Jul 22 2013 |
Bumped age |
Jan 01 2013 |
New employment: Tesat Spacecom |
Jul 22 2012 |
Bumped age |
Jul 22 2011 |
Bumped age |
Jul 22 2010 |
Bumped age |
Jul 22 2009 |
Bumped age |
May 01 2009 |
New employment: Rohde & Schwarz |
Nov 01 2008 |
New employment: Sun Microsystems |
Jul 22 2008 |
Bumped age |
Jul 22 2007 |
Bumped age |
Jul 22 2006 |
Bumped age |
Jan 24 2006 |
Marconi -> Ericsson |
Nov 20 2005 |
Link to the samefile home page |
Sep 25 2005 |
The human being |
Jul 22 2005 |
Bumped age |
Jul 22 2004 |
Bumped age |
Apr 17 2004 |
Converted to XHTML 1.1 |
Sep 07 2003 |
Links to this page |
Jul 22 2003 |
Bumped age |
Oct 18 2002 |
HTML validation |
Aug 13 2002 |
More books; more about my book |
Jul 22 2002 |
Bumped age |
May 20 2002 |
Wider die Sinnmacher |
Mar 09 2002 |
Another IOCCC winning entry |
Jan 27 2002 |
Added: Public PGP key |
Jul 22 2001 |
Bumped age |
Apr 17 2001 |
FreeBSD committer |
Jan 01 2001 |
New employer, Marconi |
Jul 22 2000 |
Bumped age |
Feb 18 2000 |
Added: astronomy/astrology discussion pointers |
Sep 20 1999 |
Added: Ohne Erwiderung typeset in Fraktur |
Jul 22 1999 |
Bumped age |
Jun 11 1999 |
Added: Another IOCCC hat-trick |
Oct 15 1998 |
More poems |
Sep 06 1998 |
Added: Some poetry |
Aug 04 1998 |
Added: Swabian Compiler |
Jul 22 1998 |
Added: Chess Problem Solver; bumped age |
Jun 23 1998 |
Added: Original IOCCC entries |
May 28 1998 |
Added: The book I am writing |
May 20 1998 |
Added: Bonehead reply form |
|