Comments or questions? E-mail: email@example.com
This collection of HTML pages is a place where I put some of my thoughts and experiments which I judged too precious to be forgotten. Also, they might find some application.
This is my private hobby.
I do not get any money for it
but I am pleased if you like it
and I will be even more pleased if I get some feedback.
I am not affiliated with any of the companies mentioned on this site.
Did I mention that I hate software patents? IMHO they contradict free science and only make lawyers and patent trolls rich but otherwise hinder progress and ruin companies; the original goal of rewarding inventors and pushing progress is almost never met.
I want the contents of this site to be presented commercial-free and free to use for everyone. Also I kept out all kinds of superfluous or potentially nagging stuff such as animated images, videos, sounds, (possibly time-consuming) scripts, cookies, social buttons, or automatically loading any contents from other sites ("third parties"). Tools like Adblock Plus and Ghostery should not show anything suspicious. It is exclusively pure HTML with CSS. PHP is used on few pages to generate such HTML to allow for redirection (on the main page) and to get my online source code generator for bit permutations running.
I have created all these pages manually, i.e. with simple text editors
(i.e. my ancient foldED
and without a design tool.
When you stumble over lines containing @/// or @\\\ you will know that this is folding information (headline and footer) from foldED. These lines may appear in almost any text files (e.g. html, pas, c, h, asm, bat, txt).
By the way, you can download all sources wth fold comments as well as the ones where the fold comment lines were converted to ordinary comments using a tool.
For the used programming languages I chose
C / C++,
Pascal (Delphi style),
x86 assembler (Intel style).
The Pascal programs generally have a corresponding version in C or C++. In order to ease keeping them in sync I have usually resisted to use language features which are difficult to translate such as classes, macros, or templates.
C / C++ appears to be ubiquitous.
I am not too fit in C / C++ and not really a fan of it for several reasons. However I must admit that e.g. GCC produces quite impressive machine code.
In most cases I have resisted to use C++ (classes and templates) and much #define stuff (e.g. for emulating Modula-style syntax). However for some the newest stuff on this site it has become necessary to use classes (methods for the access records) and templates (to ease string handling) or even C++0x or later features.
Pascal (Delphi dialect) is the programming language I use for work and hobby since 1983 (this was Turbo Pascal on an Apple II using a Z80 processor on an extra card). There is always a lot one wishes to change, and naturally Pascal is no exception.
Within Delphi there is an internal x86 assembler which is quite convenient to use. So it is natural for me to use x86 assembly language in Intel-style. I also use NASM as an external assembler and enjoy the advantages of macros Delphi is sourly missing. Also the latest CPU instructions (for example BMI2) are available this way since NASM is kept up-to-date.
are currently not really meant to be used directly.
Copy and adapt the parts you need.
I hope that some of this work has some influence on a future C++ standard. Currently I am working on a templated C++ version of my sources but I am unsure about the future of the Pascal version or a version in just another language.
I have kept these pages in (American) English because
I want the texts to be understood by many
("everybody's second choice"),
and I do not want to maintain several translations.
Also, English seems to be the only major language
without special characters such as accents or umlauts.
This makes writing HTML somewhat easier although I could easily use
English is not my mother tongue. If you see any errors (even minuscule ones such as misspellings) in my texts please do not hesitate to report them to me via e-mail: firstname.lastname@example.org.
I hereby apologize for my bad English.
While reading the book
I was impressed by all the bit hacks
I hunted for further hints in the Internet and found
several pages about counting bits and the like.
Finally I stumbled upon the articles of
I thought it must be possible to develop a bit parallel implementation
of the butterfly network and the generator routines…
In the meantime I have added several chapters and a lot of functions to the test programs. The world of bit permutations is much larger than I once thought, and this site is becoming kind of an encyclopedia thereof.
Since there is now a place for posting my stuff, I wonder what will come next. By now the site keeps growing. Unfortunately the feedback is about zero but at least there seems to be a very small but steady stream of visitors.
Since 2012-10-01 this site is hosted on "real" web space,
so I no longer use a redirection to
a quasi-static ip address of a private server.
You might bookmark each page with the displayed address; however you can - as you could do before - bookmark each page as e.g. http://programming.sirrida.de?backstage.html. With the latter method you are on the safe side.
I have used the ISO 8601 date format YYYY-MM-DD in this site since this is the most sensible and unambiguous format; most other alternatives are too easily mixed up. BTW: This is the date format used in Japan.
Sirrida is an ancient Chaldean moon goddess often depicted as a disk with 8 extending rays. The small "to top" icons beneath the headlines resemble this.
I have chosen Sirrida as the name
because I like its sound and its heritage.
BTW: Sirida (with a single "r") is also a variant of Sigrid.
The main logo is inspired by a symbol of the related god Shamash:
I found this image as well as some info about Sirrida in an article of the Gutenberg project.
Bit twiddling (1)
"1. (pejorative) An exercise in tuning (see tune) in which incredible amounts of time and effort go to produce little noticeable improvement, often with the result that the code becomes incomprehensible."
Bit twiddling (2)
"Programming at a very low level (manipulating the bits and bytes). Also may refer to spending excessive time on unimportant refinements. See hacker."
"There is much pleasure in useless knowledge"
My friends at YeaSoft describe me as being "the genial mad scientist of computer magics". :-)
for his patience and
for uncountable discussions and development hours.
Bernhard Helmes for hosting my pages from the beginning until 2012-10-01.
Harold Aptroot for pointing out errors and for giving hints.
Hans-Heinrich Hohl for spending numerous afternoons and guiding our small group through our first experiences with computers on a Wang 2200 B (an ancient predecessor of a PC) in BASIC around 1973/1974 at my school Otto-Hahn-Gymnasium in Bensberg and Interatom and our parents for sponsoring this computer which did cost a fortune at that time.