A few times in the past I asked Claude to come up with names for various characters. I noticed that there was very little variety in the generated names: names like “Elena Vasquez” and “Marcus Chen” came up over and over and over again. Funnily, one of the names that Claude generated repeatedly was my own surname, “Voss”. I first suspected that Claude somehow…
For the first time ever, I tried using AI to help with a non-exercise mathematical proof. I used Claude Opus 4.5, working through a mix of Claude Code and Anthropic’s new Cowork feature. The experiment was a success: We managed to close a gap in a proof, and Claude’s help made the process both faster and more pleasant than working alone would have been. Starting from old notes I…
After many, many years, I have released a new version of moon-buggy today. The new release fixes some minor bugs and contains some gentle modernisations of the source code. The previous release was nearly 20 years ago! github: seehuhn/moon-buggy Version Date Download Notes 1.1.0 2025-11-17 tar.gz (347 KB), sig , sha1 3d7f1055c33f305c9887a0ea77ffcdb87a2df885 stable version 1.0.51 2006-03-19 tar.gz…
Email voss@seehuhn.de ( PGP key information ) Work Affiliation School of Mathematics University of Leeds Leeds LS2 9JT United Kingdom For work-related matters, please visit my work homepage . Online BlueSky - @seehuhn.bsky.social GitHub - Open source projects
A few months ago, Claude Code helped me to finally convert my Python parser generator “Wisent” from the obsolete Python 2 to current versions of Python 3. This was not entirely trivial, because not only was the program written in Python 2, it was also generating Python 2 code. I had put off porting this for a long time, but with the help of Claude Code the process was then relatively…
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…
Introduction Features Installation Recommended: Install from PyPI Alternative: Install from Source Legacy Tarballs Bug Reports About the name References Introduction Reading input files with complex structure is surprisingly difficult in many programs. For example, programs must handle errors carefully when processing untrusted input data. If your program is written in Python and if the input data…
During many years of hiatus, some of the code which I had used to maintain my website had stopped working, and I had forgotten all details about how it was meant to work. Today I finally managed to resurrect my web page: Claude Code dug bravely through the old tooling, converted everything to a new, simpler system and (hopefully) recovered all existing content. I hope nothing got broken in the…
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…
Introduction go-pdf is a comprehensive Go library that provides support for reading and writing PDF files. The library is designed to handle various aspects of PDF manipulation, from basic document creation to advanced features like encryption and form handling. The library is under active development. The source code is hosted on GitHub and is released under the GPL-3.0 license. The API is not…
Introduction go-websocket is a GPL-licensed WebSocket server implementation written in Go. The library provides a simple HTTP handler that facilitates WebSocket connections, making it easy to add real-time bidirectional communication to Go applications. The project is available on GitHub and is released under the GPL-3.0 license. Features Simple API : Straightforward HTTP handler for initiating…
This section of my home page contains a few pages which do not fit readily into the other categories. I use GnuPG or PGP to communicate securely via email. I provide a page with information about my public keys . A description of how the Condorcet voting system is used in the Debian project. A country league table . A time line lists important events since the beginning of the universe.
Introduction go-ncurses is a Go package that wraps the ncurses library, enabling developers to access powerful terminal handling functions from Go applications. The library provides a bridge between Go’s simplicity and ncurses’ extensive terminal manipulation capabilities. The package is available on GitHub and is released under the GPL-3.0 license. Features The library provides…
Introduction MT19937 is a Go implementation of the Mersenne Twister pseudo-random number generator, developed by Takuji Nishimura and Makoto Matsumoto. The Mersenne Twister is one of the most widely used random number generators and is the default PRNG for many programming languages. This package provides the 64-bit version of the algorithm and is commonly used in Monte Carlo simulations and other…
This page contains some information about the program fast-dm. Please note that this is not the official homepage . Introduction Fast-dm is a program for fast parameter estimation in Ratcliff’s (1978) diffusion model. With a Diffusion model data analysis it is possible to analyse data from any fast binary decision task. A diffusion-model data analysis is based on the distributions of both…
I am happy to announce the release of fast-dm version 30.2. This release fixes some memory leaks found by Valgrind . You can download the program from the Fast-dm homepage .
A new paper, together with my PhD student Mark Webster and my colleague Stuart Barber, has been published today! S. Barber , J. Voss and M. Webster : The Rate of Convergence for Approximate Bayesian Computation . Electronic Journal of Statistics, vol. 9, pp. 80–105, 2015. DOI:10.1214/15-EJS988 , arXiv:1311.2038 , more… This paper took a long time to be published, but I think it is worth the wait.
Contents Introduction Installation and Usage Example Testing Comparison to the Python Cryptography Toolkit A Pseudorandom Number Sequence Test Program Dieharder Test Suite A Call for Help Alternative Implementations Go Python Java C References Introduction This page describes an implementation of the Fortuna random number generator in the Go programming language . Fortuna is a cryptographically…
Introduction The Ziggurat method for generating random numbers is a special case of the rejection method, where the density of the proposal distribution looks like the silhouette of a Ziggurat . The method can be used to produce very fast random number generators for distributions like the normal distribution or the exponential distribution. The main advantage comes from the fact that for a high…
I am very happy to announce that a very old (nearly forgotten?) article has finally appeared. We chose the journal because we had heard the rumour that they have a fast turnaround, but this plan didn't work out: the article was submitted 23 September 2011 and accepted on 21 February 2012. But then came a two year wait, and the article only has appeared just now: K.V. Mardia and J. Voss : Some…
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…
Do you want to do a PhD on Bayesian Uncertainty Quantification with me? Are you good with maths and computers? As part of the new, NERC funded , doctoral training centre I am advertising for a PhD position. Details can be found on the DTP web page , the deadline for applications is 24 January 2014, start of the PhD is October 2014.
I am very happy to report that after a long struggle we have finally finished (and submitted) a new paper today: S. Barber , J. Voss and M. Webster : The Rate of Convergence for Approximate Bayesian Computation . Electronic Journal of Statistics, vol. 9, pp. 80–105, 2015. DOI:10.1214/15-EJS988 , arXiv:1311.2038 , more… The paper studies the convergence of ABC estimates to the correct value. In…
I just tried to find out what the default random number generator of the Go programming language is. The source code for this RNG can be found in the file rng.go ; the only reference in the source code is the cryptic comment algorithm by DP Mitchell and JA Reeds . Does anybody have a reference for this, or can at least identify DP Mitchell or JA Reeds ? Some things I tried: I found one reference…
Hooray!!! I am very happy to report that my book has finally appeared. While the book officially is out for a few days already, it was only very recently that it appeared on Amazon. You can get your copy by clicking on the thingy below (if it shows; otherwise by clicking here ). The book is written as a text-book for postgraduate students and covers basic topics around the area of Monte Carlo…
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…
Today I got an email from a Dr. R. K. Dixit (HON) , bringing good news: I came across to your research paper titled "Upper and Lower Bounds in Exponential Tauberian Theorems" and feel that your research is having a very good impact. With a view to begin a long-term fruitful association with you, I invite you to submit your upcoming research articles / papers for publication in Global Journal of…
A while ago, the computer game Infinity Blade 2 was given away for free as part of some advertisement campaign and I got myself a copy at the time. One of the features in the game is a " gem forge ", where one can put in three gems and, after a few hours, gets a different gem in return. Gems have both financial value (gems can be sold) and practical value (gems can be used to enhance fighting…
During the last days I finished an implementation of the Fortuna random number generator in the Go programming language . The result can be found on the new Fortuna home page and on github.com . This is very different from the random number generators I usually deal with: Normally I am interested in random number generators for use in Monte Carlo simulations; this is, for example, the topic of my…
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…
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…
I have just published a small package for the excellent Go programming language : The new package, trace, implements a simple tracing framework. 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…
I am very happy to report that I have finished writing my first-ever book! The title is An Introduction to Statistical Computing and the book will be published by Wiley . This book is a textbook, mostly for postgraduate students, and it covers random number generation, Monte Carlo methods, and a few more advanced topics.
Today I submitted a new paper. Preparing this took forever, but it's finally out: M. Dashti , K.J.H. Law , A.M. Stuart and J. Voss : MAP Estimators and their Consistency in Bayesian Nonparametric Inverse Problems . Inverse Problems, vol. 29, no. 9, 2013. DOI:10.1088/0266-5611/29/9/095017 , arXiv:1303.4795 , more…
Contents Getting Started HTML CSS JavaScript Layout Screens Window Size Graphical Elements Rectangles Triangles Circles More General Shapes Animations JavaScript Movies Sound User Interaction Keyboard Input Mouse/Pointer Events Persistent Storage Debugging Deployment Examples Infinite Dragable Plane Timer with Persistent Storage Sliding Puzzle Game References Getting Started Before you can start…
This page gives a short summary of my mathematical interests. Conditional Path Sampling of SDEs Diffusion Processes Large Deviations Simulations and Numerical Analysis Miscellaneous Conditional Path Sampling of SDEs With Andrew Stuart and Martin Hairer I am exploring how infinite dimensional Langevin sampling can be used to sample from conditioned distributions of solutions of stochastic…
The Police and Crime Commissioner elections will take place on Thursday. The question is whom to vote for. Some thoughts: To me it seems that the persons standing for election (mostly local councillors) may not be the right persons to supervise the police. Wouldn't this be a much better job for the independent police complaints commission or the chair of the police authority or similar? So I wish…
For (my own) future reference, here are example commands to create a 3D (surface) plot in R: library("rgl") open3d(windowRect=c(50,50,800,800)) x <- seq(-10, 10, length=20) y <- seq(-10, 10, length=20) z <- outer(x,y, function(x,y) dnorm(x, 2, 3)*dnorm(y, 3, 7)) palette <- colorRampPalette(c("blue", "green", "yellow", "red")) col.table <- palette(256) col.ind <- cut(z, 256) persp3d(x, y, z,…
Following up on my recent blog entry about generating publication quality figures with R, here are some more hints, this time about setting the figure margins. An R figure consists of several regions. From the outside in, these are as follows: The device region . This region contains the figure region, surrounded by the outer margin . The device region may also contain text (for titles etc.). The…
I am happy to notice that one of my papers has been published, after a bit of a wait: J. Voss : The Effect of Finite Element Discretisation on the Stationary Distribution of SPDEs . Communications in Mathematical Sciences, vol. 10, no. 4, pp. 1143–1159, 2012. DOI:10.4310/CMS.2012.v10.n4.a6 , arXiv:1110.4653 , more… If you are interested in numerical solution of stochastics partial differential…
For one of my programming experiments, I want to compute timestamps by using the number of seconds since the beginning of 1970. The resulting value will be used for communication between a web browser and my web server. My aim is to find a method to get the very similar values for the timestamp in JavaScript code running on the web browser and in a Python program running on my web server.
I just learned a new trick: the "texdoc" program automatically finds and displays information for LaTeX packages. On my shiny Mac, using the MacTeX distribution , I can type commands like the following: texdoc geometry texdoc tikz texdoc jvlisting This shows the documentation for the corresponding package as a PDF file.
I am currently in the process of writing a book, and I plan to produce several figures for this project using the statistical computing package R . While R is generally quite good at creating scientific graphics, some adjustments help to create high-quality images for inclusion in another document. This blog entry gives some simple hints about the required steps. Including figures in LaTeX: My aim…
public key : 1024D/211B1025 fingerprint : F1DB 1FB5 FEA4 96CE 8F2E DF15 7FE8 83F3 211B 1025 PGP und GnuPG GnuPG und PGP sind Verschlüsselungsprogramme, die nach dem "public key"-Verfahren arbeiten. Damit kann man z.B. Emails verschlüsseln und signieren. Ich freue mich über signierte und verschlüsselte Emails. Meine Schlüssel kann man entweder auf einem Keyserver finden, oder von hier bekommen:…
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…
I am happy to announce release 0.6.2 of Wisent, the Python parser generator. This release fixes a few minor issues which have been found in the previous release of Wisent. The source code of Wisent 0.6.2 can be downloaded from the Wisent homepage or from github.com .
I am happy to announce release 0.2 of the jvqplot data plotting program. One of the main features of jvqplot is that the plot is automatically updated whenever the data in the input file changes. Changes in this release: Empty lines in the input file can now be used to separate datasets. This allows to create plots with disconnected components as in the picture below. The program source code has…