  Programming environments have evolved from purely text based to using
graphical user interfaces, and now we see a move towards web based interfaces,
such as Jupyter. Web based interfaces allow for the creation of interactive
documents that consist of text and programs, as well as their output. The
output can be rendered using web technology as, e.g., text, tables, charts or
graphs. This approach is particularly suitable for capturing data analysis
workflows and creating interactive educational material. This article describes
SWISH, a web front-end for Prolog that consists of a web server implemented in
SWI-Prolog and a client web application written in JavaScript. SWISH provides a
web server where multiple users can manipulate and run the same material, and
it can be adapted to support Prolog extensions. In this paper we describe the
architecture of SWISH, and describe two case studies of extensions of Prolog,
namely Probabilistic Logic Programming (PLP) and Logic Production System (LPS),
which have used SWISH to provide tutorial sites.
