Software
The Fortuna Random Number Generator
Contents
- Introduction
- Installation and Usage
- Example
- Testing
- A Call for Help
- Alternative Implementations
- References
Introduction
This page describes an implementation of the Fortuna random number generator in the Go programming language.
Fortuna is a
cryptographically strong
random number generator (RNG). The term cryptographically strong
indicates that even a very clever and active attacker, who knows some of
the random outputs of the RNG, cannot use this knowledge to predict future
or past outputs. This property allows, for example, to use the output of
the RNG to generate keys for encryption schemes, and to generate session
tokens for web pages.
Moon-buggy
Moon-buggy is a simple character graphics game where you drive some kind of car across the moon's surface. Unfortunately there are dangerous craters there. Fortunately your car can jump over them!
The game has some resemblance of the classic arcade game moon-patrol which was released in 1982. A clone of this game was relased for the Commodore C64 in 1983. The present, ASCII art version of moon-buggy was written many years later by Jochen Voss.
Wisent: a Python parser generator
Contents
Introduction
When writing a computer program, implementing methods to read data from input files with a complex structure can be surprisingly difficult. For example, if the input data comes from an untrusted source, errors in the input file often need to be dealt with very carefully. If your program is written in Python and if the input data is sufficiently structured (i.e., if the format can be described by a context free grammar), Wisent can help you to implement parts of the input processing of your program.
A Simple Tracing Framework for Go
The trace package provides a simple tracing framework for
the excellent Go programming language.
Code using this framework can emit diagnostic messages using the
trace.T() function. In normal operation, calls to
trace.T() have no effect and are very fast. When tracing is
enabled, in order to track down a problem or to explore the inner workings
of a program, listeners can be attached to record and display all trace
messages.
Main features:
The SHA-256d Hash for Go
The sha256d package provides an implementation of the SHA-256d hash algorithm (also known as "double SHA-256") for the Go programming language. SHA-256d is a cryptographic hash, first proposed by Ferguson and Schneier in the book "Practical Cryptography". The SHA-256d hash is used in the Bitcoin protocol and in the Fortuna random number generator.
The SHA-256d hash is obtained by applying the SHA-256 hash twice, i.e.by first applying SHA-256 to the data and then again to the resulting hash.
The JvJsDoc Documentation Generator
Contents
Introduction
JvJsDoc is a program to extract documentation from JavaScript source code and to present the collected information in a set of HTML pages. It is meant to be used together with the Google Closure Library and the Google Closure Compiler. Features of JvJsDoc include the following:
- Generates one HTML page with documentation per class/namespace.
- A search box in the HTML output allows to quickly find the documentation for any given symbol.
- Can optionally include the Closure Library documentation into the output to seamlessly document methods inherited from closure library-provided classes etc.
- JvJsDoc is written in Python and requires Python version 3.2 or newer to run.
The development of JvJsDoc is still at an early stage, and there are still several known shortcomings of the program (e.g. inline JSDoc comments are not yet handled), but it works well enought that it is already useful for day-to-day work.
jvqplot - a very simple data plotting program
Contents
Introduction
Jvqplot is a data plotting program, resembling a simplified version of gnuplot. It is very simple to use, but it can only plot simple data files. The format and scaling of the plot are automatically chosen and cannot be changed. One of the main features of jvqplot is that the plot is automatically updated whenever the data in the input file changes.
Usage
Jvqplot can plot data from files. The input file must consists of numbers, arranged in columns. The first column corresponds to the horizontal axis. For each of the remaining columns a line is plotted which displays the corresponding values on the vertical axis.
PSFile: Generate PostScript files with Python
Contents
- Introduction
- Download
- Documentation
- References
Figure 1. Output of the script from example 1, below.
new jvlisting release
jvlisting is a
LaTeX package which
provides an alternative to LaTeX's built-in verbatim
environment. The new release, version 0.5, fixes some bugs and cleans up
the TeX source code a bit.
jvlistingcan be downloaded from my webserver.- There is a nice Users' manual.
- The package is also available on CTAN in the directory /macros/latex/contrib/jvlisting/ (but it may take a day or so until the new version shows up there).
I hope you find this package useful. Bug reports and comments are very welcome!
Jvterm
Introduction
Jvterm is a terminal emulator, somewhat similar to the Linux text console or the XTerm terminal emulator. Usually it runs in fullscreen mode, so you can use it to make your X11 desktop look like a boring text console ;-)
Some distinctive features of jvterm are the following:
- Use of anti-aliased fonts via the freetype library.
- Eight different virtual terminals. Similar to the Linux console you can switch between different virtual terminals.
- Scrollback buffer. Each of the virtual terminals has a scrollback
buffer, accessible via the keyboard (using
S-PgUpandS-PgDown). The scrollback buffer is preserved while you switch between the virtual terminals. - Unicode support. You can choose a Unicode locale via the
-coption to get a terminal with full Unicode support. - Good terminfo/termcap support. The jvterm terminal emulator supports many text attributes like colors, bright and dim text, reverse display, and blinking text. These are readily accessible to programs via the curses or terminfo libraries.
- Selection support. Text from the display including the scrollback area can be selected via the keyboard and fed back into the input stream. This functionality is similar to what the gpm mouse server does.
- Built-in image viewer. The terminal emulator is accompanied by the jvterm-imview program, which can display a variety of image formats in the terminal. This is similar to the fbi image viewer on the Linux console.
Jvterm was implemented by Jochen Voss.
Jochen's Sliding Picture Puzzle
Contents
Introduction
Jochen's Sliding Picture Puzzle
is a puzzle game which you can
play in your web browser. It is implemented as an HTML5 app and requires a
modern web browser with good HTML5 support to play.
- If you simply want to try the game, you can go straight to the copy hosted on my server: play it now!
- Jochen's sliding picture puzzle is free software. Thus you can make your own version of the game, either just by including different images or maybe by making more ambitious enhancements like adding a high-score list. See the terms of the GNU Affero General Public License for details.
- You can study the program to learn about programming HTML5 Apps. Some things I learned while writing this program are presented in my tutorial on how to write an HTML5 App.
A screenshot of Jochen's Sliding Picture Puzzle
Programme
Für meine eigenen Programme verwende ich meistens die Programmiersprache C, manchmal auch C++ oder Python. Einige Programme, die ich im Lauf der Zeit geschrieben habe, finden sich auf dieser Seite. Vermutlich lassen sie sich nur auf Unix-Systemen compilieren. Über Kommentare oder Verbesserungsvorschläge zu den Programmen würde ich mich sehr freuen.
Mathe
- Fast-dm ist ein Programm zur Parameterschätzung für Ratcliff's Diffusionsmodell.
- Ich habe die Ziggurat-Methode zur Erzeugung von Normalverteilten Zufallszahlen implementiert.
- Die Bibliothek
jvrand
enthält einige Routinen zur Erzeugung von Zufallszahlen und zufälligen Permutationen in C-Programmen.- jvrand version 0.6.1, 2005-07-24
- archive: jvrand-0.6.1.tar.gz (379KB)
signature: jvrand-0.6.1.tar.gz.sig
sha1: d0c6e8e601bad43b3154bb210eeab546f008f31f
md5: 602fc7bb0cd859604d9953581086bbcc
- archive: jvrand-0.6.1.tar.gz (379KB)
- jvrand version 0.6, 2005-07-05
- archive: jvrand-0.6.tar.gz (374KB)
signature: jvrand-0.6.tar.gz.sig
sha1: 6f7b709f8f4c85cad2b00ebd1919c8d4a4dfd496
md5: ca9f1cbdbb89b73beda1ed8da567b97d
- archive: jvrand-0.6.tar.gz (374KB)
- Kommandos zur Erzeugung von Zufallszahlen beziehungsweise zufälligen
Permutationen. Die Kommandos sind als Hilfsmittel für die Programmierung
von Shell-Skripten gedacht. Das Packet benötigt die jvrand Bibliothek, die
es ebenfalls hier gibt.
- random-utils version 0.5.1, 2005-06-12
- archive: random-utils-0.5.1.tar.gz (177KB)
signature: random-utils-0.5.1.tar.gz.sig
sha1: b7bf0e0c1426cd98fb5db93b81613efd490b9dea
md5: 216fe2ca8dfc73e785cbc480ead77f6d
- archive: random-utils-0.5.1.tar.gz (177KB)
- random-utils version 0.5, 2002-10-13
- archive: random-utils-0.5.tar.gz (156KB)
signature: random-utils-0.5.tar.gz.sig
sha1: 049b2c8f9652790288d3ba93106dd08bf959ca67
md5: fea9601a955f39e8907fdf4ddc9180fc
- archive: random-utils-0.5.tar.gz (156KB)
- Das Programm XIsing simuliert ein stochastisches System, nämlich das Ising-Modell. Das Programm benötigt das X Window System.
- Das Programm graphcrypt implementiert als Spielzeug ein Verfahren der
Visuellen Kryptographie.
Es benötigt die Bibliotheken jvrand (von hier),
SDL und
SDL_image.
- graphcrypt version 0.2.1, 2005-05-30
- archive: graphcrypt-0.2.1.tar.gz (106KB)
signature: graphcrypt-0.2.1.tar.gz.sig
sha1: 9ceaafafae1c75a454ace27eeb588398a0ef5eb0
md5: cab57755183500d21c2e0bac00e600de
- archive: graphcrypt-0.2.1.tar.gz (106KB)
- graphcrypt version 0.2, 2001-09-18
- archive: graphcrypt-0.2.tar.gz (56KB)
signature: graphcrypt-0.2.tar.gz.sig
sha1: 27614c0e28782e44bcfc100a5cedb9b0292d557a
md5: 5b5edab171ccbd63bfa5b948c33083d3
- archive: graphcrypt-0.2.tar.gz (56KB)
TeX
- Ich habe einen TeX-Zeichensatz entworfen, der nur Symbole für die
natürlichen, ganzen, reellen und komplexen Zahlen enthält. Es gibt auch
ein Style-file um den Zeichensatz leicht unter LaTeX verwenden zu können.
- jvfonts version 0.4.2, 2004-07-01
- archive: jvfonts-0.4.2.tar.gz (59KB)
signature: jvfonts-0.4.2.tar.gz.sig
sha1: ac866006a83d4e74bbddea9be29e6996384b4726
md5: 8eaba3d0dcf1838634925a2b84b13309
- archive: jvfonts-0.4.2.tar.gz (59KB)
- jvfonts version 0.4, 2002-10-27
- archive: jvfonts-0.4.tar.gz (55KB)
signature: jvfonts-0.4.tar.gz.sig
sha1: 9e8cece9dd2b3f7be0476fc5d9b217e5c9d304b0
md5: 846604e030c9cf2348c0a86ecab594c0
- archive: jvfonts-0.4.tar.gz (55KB)
- Ich habe einen TeX-Zeichensatz entworfen, der nur aus den sechs
möglichen Augenzahlen eines Würfels besteht.
- dice version 1, 2007-05-27
- archive: dice-1.tar.gz (2KB)
signature: dice-1.tar.gz.sig
sha1: 8f0181864a410ec3307f9f6396d34a2d2acbb372
md5: 60bb9120e8ea0a9c40438c0d76677470
- archive: dice-1.tar.gz (2KB)
Spiele
- Das Programm
golist
enthält Scripte zum verwalten einer SQL Datenbank mit Go-Spielergebnissen. Es versucht dann, die Spielstärken der beiligten Spieler zu schätzen. Das Programm benötigt im Moment einen MySQL-Datenbankserver und die Python-Entwicklungsbibliotheken.- golist version 0.4, 2003-07-19
- archive: golist-0.4.tar.gz (24KB)
signature: golist-0.4.tar.gz.sig
sha1: 24771d0920759895425cab2e202ddf9974ccf194
md5: c5e7f467b3922b7aa6f5dd5f0d4525c4
- archive: golist-0.4.tar.gz (24KB)
- golist version 0.3, 2001-09-01
- archive: golist-0.3.tar.gz (343KB)
signature: golist-0.3.tar.gz.sig
sha1: 0fefc1f1c8fb9de0619524dac37bad33676010d6
md5: 47ee6df177e492d1e83b091dede0b6e5
- archive: golist-0.3.tar.gz (343KB)
- Das Spiel Moon-buggy wird auf der Moon-buggy download page beschrieben.
Sonstiges
- Wisent ist ein LR(1)-Parsergenerator für Python.
- Jvterm ist ein Terminal-Emulator, ähnlich der Linux-Textconsole oder dem Programm XTerm.
zettel
ist eine Mischung aus TODO-Liste und Terminkalender. Das Programm läuft im Text-Modus und ist in Python programmiert.- zettel version 0.2, 2005-05-29
- archive: zettel-0.2.tar.gz (61KB)
signature: zettel-0.2.tar.gz.sig
sha1: f463995c7ec99f70a54f5c7b5e4ee135364ca140
md5: 472589284adde45432fc368713d0e446
- archive: zettel-0.2.tar.gz (61KB)
- Das Programm SandUhr ist eine Art Wecker, der das X Window System und die GNOME Arbeitumgebung benötigt.
Parallel
Contents
Introduction
Most modern desktop machines have considerable computing power, provided by one or more multi-core CPUs. Parallel, the program described on this page, provides a simple way to use this parallelism in the case where just a number of independent programs needs to be run. Parallel has the following features:
- Parallel reads a list of commands from a file,
- it starts as many of these commands as there are CPU cores in the system, and
- as soon as one of the jobs finishes it starts a new command from the list until all jobs are processed.
Figure 1. This is an example of how 12 jobs could be scheduled over 3 cpus.
SandUhr
Introduction
SandUhr is an alarm clock, which is designed as an hourglass. The program uses the X Window System and the GNOME desktop environment. The alarm is delivered to you by either ringing the console bell, by playing a sound file, or by starting an external program of your choice.
The program is fully integrated into the GNOME application framework.
- It uses the GNOME help system to provide an extensive manual.
- Use of CORBA: The program features a full-grown CORBA interface. So you may control the SandUhr from within your own programs or plug in custom alarm actions.
- It has support for the GNOME window manager hints.
- Drag and drop: you may drop a color onto the timer to change the sand's visual appearance.
SandUhr was implemented by Jochen Voss.
new LaTeX package "jvlisting"
A while ago I finished my first home-made LaTeX package. The new package is called "jvlisting" and provides a replacement for LaTeX's verbatim environment.
This package provides the LaTeX environment listing, an
alternative to the built-in verbatim environment. The
listing environment is specially taylored for including
listings of computer program source code into documents. The main
advantages over the original verbatim environment are that
- The
listingenvironment automatically fixes leading whitespace so that the environment and program listing can be indented with the rest of the document source, and listingenvironments may easily be customised and extended.
You can download the package and its documentation from
my webserver or from the
jvlisting page at the
Common TeX Archive Network (CTAN). I'd be happy if you could give my
package a try. Comments about jvlisting
are very welcome!